diff --git a/AGENTS.md b/AGENTS.md index 94395c4..9230927 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -34,6 +34,7 @@ This repository owns the published `elydora` package, its CLI, synchronous and a ## Code Quality - Keep the package, distribution, and CLI version in `elydora/_version.py`; build metadata must read that literal through Setuptools dynamic metadata. +- Ship `elydora/py.typed` in every wheel and verify public annotations from an installed-wheel consumer. - Support every Python version declared in `pyproject.toml`. - Keep production source files at or below 500 lines. - Keep functions focused on one ownership boundary. diff --git a/elydora/py.typed b/elydora/py.typed new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/elydora/py.typed @@ -0,0 +1 @@ + diff --git a/pyproject.toml b/pyproject.toml index cdeebad..fef010f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,5 +42,8 @@ dev = [ [tool.setuptools.packages.find] include = ["elydora*"] +[tool.setuptools.package-data] +elydora = ["py.typed"] + [tool.setuptools.dynamic] version = {attr = "elydora._version.__version__"} diff --git a/tests/test_typing_distribution.py b/tests/test_typing_distribution.py new file mode 100644 index 0000000..fcc6695 --- /dev/null +++ b/tests/test_typing_distribution.py @@ -0,0 +1,8 @@ +from importlib.resources import files + + +def test_package_declares_inline_type_information() -> None: + marker = files("elydora").joinpath("py.typed") + + assert marker.is_file() + assert marker.read_text(encoding="utf-8").strip() == ""