# euler-content: the published content as a data-only wheel (docs/package-guide.md § 4.1).## Not built from here directly: `scripts/content/stage.py` copies this folder to a scratch# directory, lays the public tree into `euler_content/tree/` (tracked files only, never# `solutions/private`) and stamps `euler_content/_version.py` from `packages/solver/solver/version.py` —# lockstep with the code (§ 5.2). The public site (`euler-site`) serves from the installed copy.[build-system]requires=["setuptools>=77"]build-backend="setuptools.build_meta"[project]name="euler-content"description="The published Project Euler Solver content: guides, blogs, public solutions."requires-python=">=3.14"license="MIT"dynamic=["version"][tool.setuptools.dynamic]version={attr="euler_content._version.__version__"}[tool.setuptools]packages=["euler_content"]# The tree ships through `package-data` below, which needs no manifest. With# `include-package-data = true` setuptools also reads the files off the manifest, sees that# directories like `tree/solutions/public/p0042` are importable (they hold `.py` files) yet not# listed in `packages`, and warns "Package would be ignored" once per directory (182 times)# when pip shows build output. The wheel's file list is identical either way.include-package-data=false[tool.setuptools.package-data]euler_content=["tree/**/*"]