# # People package # [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] name = "people" version = "1.14.1" authors = [{ "name" = "DINUM", "email" = "dev@mail.numerique.gouv.fr" }] classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Framework :: Django :: 5", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", ] description = "An application to handle contacts and teams." keywords = ["Django", "Contacts", "Teams", "RBAC"] license = { file = "LICENSE" } readme = "README.md" requires-python = ">=3.11" dependencies = [ "Brotli==1.1.0", "PyJWT==2.10.1", "boto3==1.37.13", "celery[redis]==5.4.0", "django-celery-beat==2.7.0", "django-celery-results==2.5.1", "django-configurations==2.5.1", "django-cors-headers==4.7.0", "django-countries==7.6.1", "django-oauth-toolkit==3.0.1", "django-parler==2.3", "django-redis==5.4.0", "django-storages==1.14.5", "django-timezone-field>=5.1", "django-treebeard==4.7.1", "django==5.1.7", "djangorestframework==3.15.2", "dockerflow==2024.4.2", "drf_spectacular==0.28.0", "drf_spectacular[sidecar]==0.28.0", "easy_thumbnails==2.10", "factory_boy==3.3.3", "flower==2.0.1", "gunicorn==23.0.0", "joserfc==1.0.4", "jsonschema==4.23.0", "mozilla-django-oidc==4.0.1", "nested-multipart-parser==1.5.0", "psycopg[binary]==3.2.6", "redis==5.2.1", "requests==2.32.3", "sentry-sdk[django]==2.22.0", "whitenoise==6.9.0", ] [project.urls] "Bug Tracker" = "https://github.com/suitenumerique/people/issues/new" "Changelog" = "https://github.com/suitenumerique/people/blob/main/CHANGELOG.md" "Homepage" = "https://github.com/suitenumerique/people" "Repository" = "https://github.com/suitenumerique/people" [project.optional-dependencies] dev = [ "django-extensions==3.2.3", "drf-spectacular-sidecar==2025.3.1", "ipdb==0.13.13", "ipython==9.0.2", "jq==1.8.0", "pyfakefs==5.8.0", "pylint-django==2.6.1", "pylint==3.3.5", "pytest-cov==6.0.0", "pytest-django==4.10.0", "pytest==8.3.5", "pytest-icdiff==0.9", "pytest-xdist==3.6.1", "responses==0.25.7", "ruff==0.11.0", "types-requests==2.32.0.20250306", "freezegun==1.5.1", ] [tool.setuptools] packages = { find = { where = ["."], exclude = ["tests"] } } zip-safe = true [tool.distutils.bdist_wheel] universal = true [tool.ruff] exclude = [ ".git", ".venv", "build", "venv", "__pycache__", "*/migrations/*", ] line-length = 88 [tool.ruff.lint] select = [ "B", # flake8-bugbear "BLE", # flake8-blind-except "C4", # flake8-comprehensions "DJ", # flake8-django "I", # isort "PLC", # pylint-convention "PLE", # pylint-error "PLR", # pylint-refactoring "PLW", # pylint-warning "RUF100", # Ruff unused-noqa "RUF200", # Ruff check pyproject.toml "S", # flake8-bandit "SLF", # flake8-self "T20", # flake8-print "D1", # pydocstyle ] ignore= ["DJ001", "PLR2004", "D105", "D106"] [tool.ruff.lint.isort] section-order = ["future","standard-library","django","third-party","people","first-party","local-folder"] sections = { people=["core"], django=["django"] } [tool.ruff.lint.per-file-ignores] "**/tests/*" = ["S", "SLF"] [tool.pytest.ini_options] addopts = [ "-v", "--cov-report", "term-missing", # Allow test files to have the same name in different directories. "--import-mode=importlib", ] python_files = [ "test_*.py", "tests.py", ] filterwarnings = [ # This one can be removed when upgrading to Django 6.0 'ignore:The FORMS_URLFIELD_ASSUME_HTTPS transitional setting is deprecated.', # This one can be removed after upgrading DRF to 3.16 "ignore:Converter 'drf_format_suffix'" ] [tool.coverage.run] branch = true omit = [ "*/admin.py", "*/migrations/*", "*/tests/*", "*/urls.py", "manage.py", "celery_app.py", "wsgi.py", ] [tool.coverage.report] show_missing = true skip_empty = true [tool.coverage.json] pretty_print = true