[project] name = "charasheet" version = "0.0.1" requires-python = ">=3.13" classifiers = [ "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.13" ] dependencies = [ "django>=4.1", "django-anymail[mailgun]>=8.6", "django-bootstrap5>=22.1", "django-cleanup>=6", "django-environ>=0.9", "django-extensions>=3.1.5", "django-htmx>=1.12.2", "django-linear-migrations>=2.2", "django-registration>=3.3", "gunicorn>=20.1", "markdown>=3.2", "pillow>=9.3", "requests>=2.28.1", "selenium>=4.5", "whitenoise>=6.2", ] [dependency-groups] dev = [ "black>=22.12", "bpython>=0.22.1", "django-browser-reload>=1.6", "django-debug-toolbar>=3.2", "hypothesis>=6.56.4", "invoke>=2", "model-bakery>=1.3.1", "pre-commit>=2.1", "pytest>=6", "pytest-cov>=3", "pytest-django>=4.1", "pytest-selenium>=4", "ruff>=0.0.237", ] [tool.ruff] target-version = "py313" src = [ "src", ] lint.select = [ "ALL", ] lint.ignore = [ "ANN", # flake8-annotations "BLE", # flake8-blind-except "D1", # missing docstring "E501", # long lines "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` "TCH", # flake8-type-checking / TODO: revisit later ? "TRY003", # Avoid specifying long messages outside the exception class ] lint.per-file-ignores."**/tests/*" = [ "ARG001", # Unused function argument (mostly fixtures) "B011", # Do not call assert False since python -O removes these calls. "PLR2004", # Magic value used in comparison, consider replacing {value} with a constant variable "S101", # Use of assert detected. "S106", # Possible hardcoded password. "S311", # Standard pseudo-random generators are not suitable for cryptographic purposes. ] lint.per-file-ignores."src/character/management/commands/*" = [ "RUF001", # String contains ambiguous unicode character ] lint.per-file-ignores."src/conftest.py" = [ "INP001", ] lint.per-file-ignores."src/manage.py" = [ "INP001", ] # File {name} is part of an implicit namespace package. Add an `__init__.py`. lint.per-file-ignores."tasks.py" = [ "INP001", ] lint.unfixable = [ "RUF001", "RUF002", "RUF003", "T20", ] lint.mccabe.max-complexity = 10 # TODO remove "hash" ignore after issue is fixed: https://github.com/python-trio/trio/issues/3053 lint.pydocstyle.convention = "pep257" [tool.pytest.ini_options] addopts = """ --html=test_reports/pytest_result/pytest.html --color=yes --durations 20 --no-cov-on-fail --strict-markers --reuse-db --driver=Firefox -W error -W "ignore:The `hash` argument is deprecated in favor of `unsafe_hash` and will be removed in or after August 2025:DeprecationWarning" """ markers = [ ] minversion = "6.0" DJANGO_SETTINGS_MODULE = "charasheet.settings" junit_family = "xunit1" norecursedirs = [ ".*", "docker", "documentation", "static", "public", ] testpaths = [ "src", ] python_files = [ "test_*.py", "tests.py", ] [tool.uv] package = false ############################################################################### # ruff ###############################################################################