diff --git a/AGENTS.md b/AGENTS.md index bed5fe1..a410889 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -49,6 +49,7 @@ This repository publishes the open-source server, console, integration catalog, - Propagate unexpected errors to the CLI or request boundary. - Keep technical claims executable through tests or generated validation. - Keep the mirrored Python package, distribution, and CLI version in `sdks/python/elydora/_version.py`; Setuptools metadata must read that literal dynamically. +- Ship `sdks/python/elydora/py.typed` in every mirrored wheel and verify public annotations from an installed-wheel consumer. - Interpret Python SDK `max_retries` as retries after the initial attempt and reject negative or non-integer values. - Retry RFC-idempotent Python SDK requests automatically; retry non-idempotent requests only when the transport proves the request was never sent. - Honor valid `Retry-After` delay-seconds and HTTP-date values, and release retryable responses before sleeping. diff --git a/sdks/python/elydora/py.typed b/sdks/python/elydora/py.typed new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/sdks/python/elydora/py.typed @@ -0,0 +1 @@ + diff --git a/sdks/python/pyproject.toml b/sdks/python/pyproject.toml index cdeebad..fef010f 100644 --- a/sdks/python/pyproject.toml +++ b/sdks/python/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/sdks/python/tests/test_typing_distribution.py b/sdks/python/tests/test_typing_distribution.py new file mode 100644 index 0000000..fcc6695 --- /dev/null +++ b/sdks/python/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() == ""