# Keep the build context small. NOTE: .git MUST be included because
# setuptools_scm derives the version from git tags during `pip install .`.
# README.md and LICENSE must also stay: pyproject.toml references them at
# build time.
.venv
.venv314
.tox
.mypy_cache
.ruff_cache
.pytest_cache
dist
build
*.egg-info
__pycache__
*.pyc

# None of this is needed to build the package, so it's excluded to shrink
# the build context.
# pyinstaller/ is NOT excluded: its Makefile builds with the repo root as
# the context (`docker build -f Dockerfile ..`), so this file governs that
# build too, and the image runs `pyinstaller pyinstaller/cronstable.spec`
# from the copied tree; excluding the directory broke that build outright.
.claude
.github
docker
# except the shared requirement-extraction helper, which every Dockerfile
# COPYs into its dependency layer beside pyproject.toml (the negation must
# follow the exclusion it carves out)
!docker/extract_deps.py
example
scripts
target
tests
.editorconfig
.gitignore

# Documentation, website assets and side trees. None of these reach the wheel
# (`packages` in pyproject.toml lists three package directories, all under
# cronstable/), and none of the eight Dockerfiles or the pyinstaller build
# reads them. docs/ alone is ~45 MB of screenshots and diagrams, which every
# `docker build` uploaded to the daemon and every layer-cache key hashed:
# a screenshot edit invalidated the COPY layer and everything under it in all
# 36 emulated platform builds. The two files the SHIPPED test suite reads from
# docs/ (openapi.yaml, demo/index.html) matter to the sdist, not to any image:
# tests/ is excluded here already, so nothing in an image build wants them.
docs
wiki
benchmarks
packaging
pro
HISTORY.md
coverage.xml
