###
 # Pipenv Package Declarations.
 # This file is what Pipenv commands build off of.
 ##
[[source]]
name = "pypi"
url = "https://pypi.python.org/simple"
verify_ssl = true


###
 # Python version declaration.
 ##
[requires]
python_version = "3.11"


###
 # General packages, installed via `pipenv sync`.
 ##
[packages]
# General Django dependencies.
django = "*"                    # Core Django package.


###
 # Development and testing packages, installed via `pipenv sync --dev`.
 ##
[dev-packages]
# Syntax-checking dependencies.
autopep8 = "*"                  # Auto-formats files for pep8 recommendations. See `setup.cfg` for our exceptions.
flake8 = "*"                    # Wrapper for autopep8 that allows extra configuration, etc.
pylint = "*"                    # Linter for Python syntax. Must be run in console via "pylint" command.
pylint-django = "*"             # Improves code analysis for Django projects.
pylint-plugin-utils = "*"       # Additional pylint functionality for things like Django and Celery.

# Testing/Pytest dependencies.
beautifulsoup4 = "*"            # Allows easier HTML parsing.
coverage = "*"                  # Outputs testing coverage data.
coverage_enable_subprocess = "*"    # Required to run coverage in pytest while muti-threaded.
pytest = "*"                    # Base Pytest package. Current preferred testing method.
pytest-asyncio = "*"            # Additional Pytest logic for asyncio support.
pytest-cov = "*"                # Additional Pytest logic for multithreaded coverage support.
pytest-django = "*"             # Additional Pytest logic for Django support.
pytest-subtests = "*"           # Additional Pytest logic for SubTest support.
pytest-watcher = "*"            # Additional Pytest logic for watching files and running tests on update.
pytest-xdist = "*"              # Additional Pytest features, such as multithreading and looping.

# Docs build dependencies.
sphinx = "*"                    # Core package to build project docs.
sphinx-autobuild = "*"          # Additional Sphinx logic to autobuild from project code documentation.
sphinx-rtd-theme = "*"          # Additional Sphinx logic for building with standard ReadTheDocs theme.

# Project pypi dependencies.
build = "*"                     # For building packages according to PEP 517 standards (for PyPi deployment).
pip-tools = "*"                 # Management of Package dependencies and building.
twine = "*"                     # For pushing/publishing packages.


###
 # Optional packages.
 # Technically not supported by Pipfile, so they need manual installation.
 # This section is mostly only present for reference.
 #
 # These are dependencies that this package can take advantage of, but are not required for use.
 # When not present, certain functionality will be disabled, but the project as a whole should still be functional.
 ##
[optional-packages]
# Selenium dependencies.
channels = "*"                  # Django websocket/background-task dependencies.
colorama = "*"                  # Console coloring package.
daphne = "*"                    # Django websocket/background-task dependencies.
selenium = "*"                  # Allows using Django to launch selenium live-server brower instances.