[tool.poetry] name = "activate_account" version = "0.16.0" description = "" authors = [ ] readme = "README.md" package-mode = false [[tool.poetry.source]] name = "uis-devops" url = "https://gitlab.developers.cam.ac.uk/api/v4/groups/5/-/packages/pypi/simple" priority = "explicit" [tool.poetry.dependencies] python = "^3.11" django = ">=4.2.0,<4.3.0" django-cors-headers = "^4.1.0" django-crispy-forms = "^2.0" django-filter = "^23.2" django-structlog = "^5.1.0" djangorestframework = "^3.14.0" djangorestframework-camel-case = "^1.4.2" drf-spectacular = "^0.26.3" gunicorn = "^23.0.0" pyyaml = "^6.0" proxyprefix = "^0.1.3" whitenoise = "^6.5.0" setuptools = "^73.0.1" factory-boy = "^3.3.1" django-rest-knox = "^5.0.2" requests = "^2.32.3" requests-mock = "^1.12.1" tenacity = "^9.0.0" [tool.poetry.dependencies.externalsettings] version = "^1.0.2" source = "uis-devops" [tool.poetry.dependencies.psycopg] extras = [ "binary" ] version = "^3.1.9" [tool.poetry.group.dev.dependencies] better-exceptions = "^0.3.3" django-debug-toolbar = "^4.1.0" faker = "^18.11.1" ipython = "^8.14.0" pre-commit = "^3.3.3" pytest = "^7.4.0" pytest-django = "^4.5.2" pytest-docker-tools = "^3.1.3" pytest-env = "^0.8.2" tox = "4.14.1" openapi-spec-validator = "^0.7.1" pyyaml = "^6.0.2" [tool.poetry.group.dev.dependencies.coverage] extras = [ "toml" ] version = "^7.2.7" [tool.poetry.group.docs.dependencies] mkdocs = "^1.6.1" mkdocs-material = "^9.5.47" mkdocs-gen-files = "^0.5.0" mkdocs-literate-nav = "^0.6.1" gitignorefile = "^1.1.2" black = "^24.10.0" mkdocs-section-index = "^0.3.9" [tool.poetry.group.docs.dependencies.mkdocstrings] extras = [ "python" ] version = "^0.27.0" [tool.poe.tasks.up] help = "Start the application in local development mode" cmd = "docker compose up --build" [tool.poe.tasks.up.env] COMPOSE_PROFILES = "development" [tool.poe.tasks.fix] help = "Run pre-commit checks to fix formatting errors" cmd = "pre-commit run --all-files" [tool.poe.tasks.tox] help = "Run the Python test suite via tox" cmd = "docker compose run --build --rm tox" [tool.poe.tasks.down] help = "Stop any running containers" cmd = "docker compose down" [tool.poe.tasks.down.env] COMPOSE_PROFILES = "development,production,utilities" [tool.poe.tasks.manage] help = "Run Django management commands" cmd = "docker compose run --build --rm manage" [tool.poe.tasks.init-mock-data] help = "Initialize mock data using factory-boy" cmd = "docker compose run --build --rm manage init_mock_data" [tool.poe.tasks."up:production"] help = "Start the application running in the production container" cmd = "docker compose up --build" [tool.poe.tasks."up:production".env] COMPOSE_PROFILES = "production" [tool.poe.tasks."down:hard"] help = "Stop any running containers, remove any dangling containers and remove any persistent data volumes" cmd = "docker compose down --remove-orphans --volumes" [tool.poe.tasks."down:hard".env] COMPOSE_PROFILES = "development,production,utilities" [tool.poe.tasks."compose:build"] help = "Build or rebuild all container images" cmd = "docker compose build" [tool.poe.tasks."compose:build".env] COMPOSE_PROFILES = "development,production,utilities" [tool.poe.tasks."compose:pull"] help = "Pull any upstream container images" cmd = "docker compose pull --ignore-buildable --ignore-pull-failures" [tool.poe.tasks."compose:pull".env] COMPOSE_PROFILES = "development,production,utilities" [tool.poe.tasks."tox:local"] help = "Run the Python test suite via tox using the locally installed Python version" cmd = "tox" [tool.poe.tasks."pytest:local"] help = "Run the Python test suite via pytest using the locally installed Python version" cmd = "pytest" [tool.poe.tasks.generate-schema] help = "Generate OpenAPI schema using drf-spectacular" cmd = "docker compose run --build --rm manage spectacular --fail-on-warn --file openapi.yaml" [tool.pytest.ini_options] env = [ "DJANGO_SETTINGS_MODULE=activate_account_project.settings.testing", "D:R:EXTERNAL_SETTING_DATABASES={\"default\":{}}", "D:EXTERNAL_SETTING_SECRET_KEY=fake-secret-key", "D:EXTERNAL_SETTING_DATA_MANAGER_ENABLED=1", "D:EXTERNAL_SETTING_DATA_MANAGER_READ_ONLY=0", "D:EXTERNAL_SETTING_PASSWORD_APP_RESET_TOKEN_URL=http://placeholder/", "D:EXTERNAL_SETTING_PASSWORD_APP_TOKEN=fake", "D:DANGEROUS_DISABLE_HTTPS_REDIRECT=1" ] python_files = "tests.py test_*.py *_tests.py" filterwarnings = [ "ignore:.*pkg_resources.*:DeprecationWarning", "ignore::DeprecationWarning:.*google.*" ] [tool.mypy] ignore_missing_imports = true [[tool.mypy.overrides]] module = [ "requests.*" ] ignore_missing_imports = true [tool.black] line-length = 99 [tool.coverage.run] omit = [ ".tox/*", "setup.py", "manage.py", "gunicorn.conf.py", "*/test/*", "*/tests/*", "*/migrations/*", "activate_account_project/settings/*", "activate_account_project/wsgi.py" ] [tool.isort] profile = "black" [build-system] requires = [ "poetry-core>=1.8.2" ] build-backend = "poetry.core.masonry.api"