summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/setuptools.rst28
-rw-r--r--docs/userguide/datafiles.rst41
2 files changed, 53 insertions, 16 deletions
diff --git a/docs/setuptools.rst b/docs/setuptools.rst
index d0fb9a9c..53cf54b2 100644
--- a/docs/setuptools.rst
+++ b/docs/setuptools.rst
@@ -21,8 +21,9 @@ Feature Highlights:
individually in setup.py
* Automatically include all relevant files in your source distributions,
- without needing to create a ``MANIFEST.in`` file, and without having to force
- regeneration of the ``MANIFEST`` file when your source tree changes.
+ without needing to create a |MANIFEST.in|_ file, and without having to force
+ regeneration of the ``MANIFEST`` file when your source tree changes
+ [#manifest]_.
* Automatically generate wrapper scripts or Windows (console and GUI) .exe
files for any number of "main" functions in your project. (Note: this is not
@@ -211,3 +212,26 @@ set of steps to reproduce.
.. _GitHub Discussions: https://github.com/pypa/setuptools/discussions
.. _setuptools bug tracker: https://github.com/pypa/setuptools/
+
+
+----
+
+
+.. [#manifest] For the most common use cases, ``setuptools`` will automatically
+ find out which files are necessary for distributing the package.
+ This includes all pure Python modules in the ``py_modules`` or ``packages``
+ configuration and all C sources listed as part of extensions
+ (it doesn't catch C headers, though).
+
+ More complex packages (e.g. packages that include non-Python files, or that
+ need to use custom C headers), might still need to specify |MANIFEST.in|_ or
+ use a plugin like :pypi:`setuptools-scm` or :pypi:`setuptools-svn`
+ to automatically include files tracked by your Revision Control System.
+
+ Please note that only files **inside the package directory** are included in
+ the final wheel distribution, by default. See :doc:`userguide/datafiles` for
+ more information.
+
+
+.. |MANIFEST.in| replace:: ``MANIFEST.in``
+.. _MANIFEST.in: https://packaging.python.org/en/latest/guides/using-manifest-in/
diff --git a/docs/userguide/datafiles.rst b/docs/userguide/datafiles.rst
index 69cf36e6..28faa84f 100644
--- a/docs/userguide/datafiles.rst
+++ b/docs/userguide/datafiles.rst
@@ -5,11 +5,11 @@ Data Files Support
The distutils have traditionally allowed installation of "data files", which
are placed in a platform-specific location. However, the most common use case
for data files distributed with a package is for use *by* the package, usually
-by including the data files in the package directory.
+by including the data files **inside the package directory**.
-Setuptools offers three ways to specify data files to be included in your
-packages. First, you can simply use the ``include_package_data`` keyword,
-e.g.::
+Setuptools offers three ways to specify this most common type of data files to
+be included in your packages [#datafiles]_.
+First, you can simply use the ``include_package_data`` keyword, e.g.::
from setuptools import setup, find_packages
setup(
@@ -18,9 +18,10 @@ e.g.::
)
This tells setuptools to install any data files it finds in your packages.
-The data files must be specified via the distutils' ``MANIFEST.in`` file.
+The data files must be specified via the distutils' |MANIFEST.in|_ file.
(They can also be tracked by a revision control system, using an appropriate
-plugin. See the section below on :ref:`Adding Support for Revision
+plugin such as :pypi:`setuptools-scm` or :pypi:`setuptools-svn`.
+See the section below on :ref:`Adding Support for Revision
Control Systems` for information on how to write such plugins.)
If you want finer-grained control over what files are included (for example,
@@ -87,12 +88,11 @@ When building an ``sdist``, the datafiles are also drawn from the
``package_name.egg-info/SOURCES.txt`` file, so make sure that this is removed if
the ``setup.py`` ``package_data`` list is updated before calling ``setup.py``.
-(Note: although the ``package_data`` argument was previously only available in
-``setuptools``, it was also added to the Python ``distutils`` package as of
-Python 2.4; there is `some documentation for the feature`__ available on the
-python.org website. If using the setuptools-specific ``include_package_data``
-argument, files specified by ``package_data`` will *not* be automatically
-added to the manifest unless they are listed in the MANIFEST.in file.)
+.. note::
+ If using the ``include_package_data`` argument, files specified by
+ ``package_data`` will *not* be automatically added to the manifest unless
+ they are listed in the |MANIFEST.in|_ file or by a plugin like
+ :pypi:`setuptools-scm` or :pypi:`setuptools-svn`.
__ https://docs.python.org/3/distutils/setupscript.html#installing-package-data
@@ -125,11 +125,13 @@ included as a result of using ``include_package_data``.
In summary, the three options allow you to:
``include_package_data``
- Accept all data files and directories matched by ``MANIFEST.in``.
+ Accept all data files and directories matched by |MANIFEST.in|_ or added by
+ a :ref:`<plugin> Adding Support for Revision Control Systems`.
``package_data``
Specify additional patterns to match files that may or may
- not be matched by ``MANIFEST.in`` or found in source control.
+ not be matched by ``MANIFEST.in`` or added by
+ a :ref:`<plugin> Adding Support for Revision Control Systems`.
``exclude_package_data``
Specify patterns for data files and directories that should *not* be
@@ -175,3 +177,14 @@ no supported facility to reliably retrieve these resources.
Instead, the PyPA recommends that any data files you wish to be accessible at
run time be included in the package.
+
+
+----
+
+.. [#datafiles] ``setuptools`` consider a *package data file* any non-Python
+ file **inside the package directory** (i.e., that co-exists in the same
+ location as the regular ``.py`` files being distributed).
+
+
+.. |MANIFEST.in| replace:: ``MANIFEST.in``
+.. _MANIFEST.in: https://packaging.python.org/en/latest/guides/using-manifest-in/