[tool.poetry] name = "notifications-api" package-mode = false version = "0.1.0" description = "Notify.gov backend" authors = ["Your Name "] readme = "README.md" [tool.poetry.dependencies] python = "^3.13.2" alembic = "==1.17.2" amqp = "==5.3.1" beautifulsoup4 = "==4.14.3" boto3 = "^1.38.27" botocore = "^1.38.27" cachetools = "==6.2.2" celery = {version = "==5.6.0", extras = ["redis"]} certifi = ">=2022.12.7" cffi = "==2.0.0" charset-normalizer = "^3.4.4" click = "==8.3.1" click-datetime = "==0.4.0" click-didyoumean = "==0.3.1" click-plugins = "==1.1.1.2" click-repl = "==0.3.0" deprecated = "==1.3.1" gevent = "==25.5.1" expiringdict = "==1.2.2" flask = "~=3.1" flask-bcrypt = "==1.0.1" flask-migrate = "==4.1.0" flask-redis = "==0.4.0" flask-sqlalchemy = "^3.1.1" gunicorn = {version = "==23.0.0", extras = ["gevent"]} iso8601 = "==2.1.0" jsonschema = {version = "==4.25.1", extras = ["format"]} lxml = "==6.0.2" marshmallow = "^4.1.0" marshmallow-sqlalchemy = "^1.4.2" newrelic = "^11.1.0" packaging = "==25.0" poetry-dotenv-plugin = "==0.2.0" psycopg2-binary = "==2.9.11" pyjwt = "==2.10.1" python-dotenv = "==1.2.1" sqlalchemy = "==2.0.44" werkzeug = "^3.1.4" faker = "^38.2.0" async-timeout = "^5.0.1" bleach = "^6.3.0" geojson = "^3.2.0" numpy = "^2.3.5" ordered-set = "^4.1.0" phonenumbers = "^9.0.20" python-json-logger = "^4.0.0" regex = "^2025.11.3" shapely = "^2.1.2" smartypants = "^2.0.1" mistune = "^3.1.4" blinker = "^1.9.0" cryptography = "^46.0.3" idna = "^3.11" jmespath = "^1.0.1" markupsafe = "^3.0.3" pycparser = "^2.23" python-dateutil = "^2.9.0.post0" pyyaml = "^6.0.3" s3transfer = "^0.13.1" six = "^1.16.0" urllib3 = "^2.6.0" webencodings = "^0.5.1" itsdangerous = "^2.2.0" jinja2 = "^3.1.6" redis = "^6.4.0" requests = "^2.32.5" virtualenv = "^20.35.4" marshmallow-enum = "^1.5.1" awscli = "^1.40.36" typing-extensions = "^4.15.0" aiohttp = "^3.13.2" pytest = "^9.0.1" [tool.poetry.group.dev.dependencies] awscli = "^1.33.32" bandit = "*" black = "^25.11.0" cyclonedx-python-lib = "^11.6.0" cloudfoundry-client = "*" exceptiongroup = "==1.3.1" flake8 = "^7.3.0" flake8-bugbear = "^25.11.29" freezegun = "^1.5.5" hypothesis = "^6.148.7" honcho = "*" isort = "^7.0.0" jinja2-cli = {version = "==0.8.2", extras = ["yaml"]} moto = "==5.1.18" pip-audit = "*" pre-commit = "^4.5.0" pytest = "^9.0.1" pytest-env = "^1.2.0" pytest-mock = "^3.15.1" pytest-cov = "^7.0.0" pytest-xdist = "^3.8.0" radon = "^6.0.1" requests-mock = "^1.11.0" setuptools = "^80.9.0" sqlalchemy-utils = "^0.41.2" vulture = "^2.10" detect-secrets = "^1.5.0" poetry-dotenv-plugin = "^0.2.0" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry.plugins."poetry.application.plugin"] dotenv = "poetry_dotenv_plugin.plugin:PoetryDotenvPlugin"