diff --git a/docs/guides/libraries.rst b/docs/guides/libraries.rst index d2a14027..a799af62 100644 --- a/docs/guides/libraries.rst +++ b/docs/guides/libraries.rst @@ -82,26 +82,13 @@ A typical directory structure would look like: .. code-block:: text - setup.py + pyproject.toml my_great_package/ __init__.py stuff.py py.typed -It's important to ensure that the ``py.typed`` marker file is included in the -distributed package. If using ``setuptools``, this can be achieved like so: - -.. code-block:: python - - from setuptools import setup - - setup( - name="my_great_distribution", - version="0.1", - package_data={"my_great_package": ["py.typed"]}, - packages=["my_great_package"], - ) - +Note the py.typed should be located inside the package, along with ``__init__.py``. Type stub files included in the package ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -113,27 +100,13 @@ directory structure would look like: .. code-block:: text - setup.py + pyproject.toml my_great_package/ __init__.py stuff.py stuff.pyi py.typed -If using ``setuptools``, we can ensure the ``.pyi`` and ``py.typed`` files are -included like so: - -.. code-block:: python - - from setuptools import setup - - setup( - name="my_great_distribution", - version="0.1", - package_data={"my_great_package": ["py.typed", "stuff.pyi"]}, - packages=["my_great_package"], - ) - The presence of ``.pyi`` files does not affect the Python interpreter at runtime in any way. However, static type checkers will only look at the ``.pyi`` file and ignore the corresponding ``.py`` file. @@ -150,41 +123,25 @@ For example: .. code-block:: text - setup.py + pyproject.toml my_great_package-stubs/ __init__.pyi stuff.pyi +.. code-block:: toml -.. code-block:: python - - from setuptools import setup - - setup( - name="my_great_package-stubs", - version="0.1", - package_data={"my_great_package-stubs": ["__init__.pyi", "stuff.pyi"]}, - packages=["my_great_package-stubs"] - ) + [project] + name = "my-great-package-stubs" + version = "0.1.0" + requires-python = ">=3.10" + [build-system] + requires = ["uv_build>=0.9.18,<0.10.0"] + build-backend = "uv_build" Users are then able to install the stubs-only package separately to provide types for the original library. -Inclusion in sdist -^^^^^^^^^^^^^^^^^^ - -Note that to ensure inclusion of ``.pyi`` and ``py.typed`` files in an sdist -(.tar.gz archive), you may also need to modify the inclusion rules in your -``MANIFEST.in`` (see the -`packaging guide `__ -for more details on ``MANIFEST.in``). For example: - -.. code-block:: text - - global-include *.pyi - global-include py.typed - .. _type_completeness: How much of my library needs types?