# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
3env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
html/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# ...except this package's own catalogs, which are source, not build output.
# This negation is load-bearing twice over: hatchling honours .gitignore when
# it builds, so an ignored catalog is also an UNSHIPPED one -- Django then
# finds no locale directory in the installed package and every string falls
# back to English with nothing in the logs to say why. django.pot hit exactly
# that and was caught by test_packaging.py.
#
# .mo is un-ignored for the same reason, ahead of need: no compiled catalog
# ships today (every translation is still a fuzzy machine draft), and
# test_i18n.py fails if one appears. When a language is reviewed and its
# fuzzy flags come off, its .mo has to be committed to reach users.
!django_mfa/locale/django.pot
!django_mfa/locale/*/LC_MESSAGES/*.mo

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/
.idea/
db.sqlite3
media/
*~
*.swp
*.swo

# uv / packaging
# NOTE: uv.lock is deliberately NOT ignored. It pins the DEV toolchain
# (ruff, coverage, build) so CI and every contributor resolve the same
# versions. It has no effect on projects that install django-mfa: consumers
# resolve against the loose ranges in pyproject.toml's [project.dependencies],
# never against this lock.
.venv/
*.egg-info/
