[project] name = "infrasynth-base" version = "1.0.0" description = "InfraSynth Base — reusable Django infrastructure kit" requires-python = ">=3.12" license = { text = "MIT" } dependencies = [ "django>=5.2,<6.0", "djangorestframework>=3.16,<4.0", "django-cors-headers>=4.7", "djangorestframework-simplejwt>=5.5", "django-filter>=25.1", "psycopg2-binary>=2.9", "python-dotenv>=1.0", "cryptography>=44.0", "pydantic>=2.0", "pyotp>=2.10", "qrcode[pil]>=8.1", "celery[redis]>=5.4", "django-celery-results>=2.5", "django-celery-beat>=2.7", "boto3>=1.35", "django-storages>=1.14", "Pillow>=11.0", "twilio>=9.0", "stripe>=10.0", "mercadopago>=3.0", "requests>=2.32", "flower>=2.0", "gunicorn>=23.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-django>=4.8", "pytest-cov>=5.0", "factory-boy>=3.3", "faker>=28.0", "ruff>=0.6", "mypy>=1.11", "pre-commit>=3.8", "django-stubs[compatible-mypy]>=5.2", "djangorestframework-stubs[compatible-mypy]>=3.16", "types-requests", ] [tool.setuptools.packages.find] include = ["infrasynth*"] [tool.setuptools.package-data] infrasynth = ["**/*.py", "**/migrations/*.py"] [tool.ruff] target-version = "py312" line-length = 120 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] [tool.ruff.lint.per-file-ignores] "**/migrations/*.py" = ["E501"] "config/settings/*.py" = ["F403", "F405"] [tool.ruff.format] quote-style = "double" [tool.mypy] python_version = "3.12" plugins = ["mypy_django_plugin.main"] strict_equality = true no_implicit_optional = true disallow_untyped_defs = false disallow_any_generics = false disallow_subclassing_any = false disallow_untyped_calls = false disallow_untyped_decorators = false disallow_incomplete_defs = false check_untyped_defs = false no_implicit_reexport = true warn_redundant_casts = true warn_return_any = false warn_unused_ignores = false disable_error_code = ["var-annotated", "no-any-return", "import-untyped"] [[tool.mypy.overrides]] module = [ "mercadopago.*", "mercadopago", "twilio.*", "twilio", "stripe.*", "stripe", "cloudinary.*", "cloudinary", "storages.*", "rest_framework_simplejwt.*", ] ignore_missing_imports = true [[tool.mypy.overrides]] module = "infrasynth.billing.gateways.stripe" disable_error_code = ["attr-defined"] [tool.django-stubs] django_settings_module = "config.settings.test" [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "config.settings.test" testpaths = ["tests"] python_files = ["test_*.py"]