Type object
Schema URL https://catalog.lintel.tools/schemas/schemastore/pyproject/_shared/latest--partial-setuptools.json
Parent schema pyproject
Type: object

setuptools-specific configurations that can be set by users that require customization. These configurations are completely optional and probably can be skipped when creating simple packages. They are equivalent to some of the Keywords <https://setuptools.pypa.io/en/latest/references/keywords.html>_ used by the setup.py file, and can be set via the tool.setuptools table. It considers only setuptools parameters <https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html#setuptools-specific-configuration>_ that are not covered by :pep:621; and intentionally excludes dependency_links and setup_requires (incompatible with modern workflows/standards).

Properties

platforms string[]
provides string[]

Package and virtual package names contained within this package (not supported by pip)

obsoletes string[]

Packages which this package renders obsolete (not supported by pip)

zip-safe boolean

Whether the project can be safely installed and run from a zip file. OBSOLETE: only relevant for pkg_resources, easy_install and setup.py install in the context of eggs (DEPRECATED).

script-files string[]

Legacy way of defining scripts (entry-points are preferred). Equivalent to the script keyword in setup.py (it was renamed to avoid confusion with entry-point based project.scripts defined in :pep:621). DISCOURAGED: generic script wrappers are tricky and may not work properly. Whenever possible, please use project.scripts instead.

eager-resources string[]

Resources that should be extracted together, if any of them is needed, or if any C extensions included in the project are imported. OBSOLETE: only relevant for pkg_resources, easy_install and setup.py install in the context of eggs (DEPRECATED).

Packages that should be included in the distribution. It can be given either as a list of package identifiers or as a dict-like structure with a single key find which corresponds to a dynamic call to setuptools.config.expand.find_packages function. The find key is associated with a nested dict-like structure that can contain where, include, exclude and namespaces keys, mimicking the keyword arguments of the associated function.

package-dir object

:class:dict-like structure mapping from package names to directories where their code can be found. The empty string (as key) means that all packages are contained inside the given directory will be included in the distribution.

package-data object

Mapping from package names to lists of glob patterns. Usually this option is not needed when using include-package-data = true For more information on how to include data files, check setuptools docs <https://setuptools.pypa.io/en/latest/userguide/datafiles.html>_.

include-package-data boolean

Automatically include any data files inside the package directories that are specified by MANIFEST.in For more information on how to include data files, check setuptools docs <https://setuptools.pypa.io/en/latest/userguide/datafiles.html>_.

exclude-package-data object

Mapping from package names to lists of glob patterns that should be excluded For more information on how to include data files, check setuptools docs <https://setuptools.pypa.io/en/latest/userguide/datafiles.html>_.

namespace-packages string[]

DEPRECATED: use implicit namespaces instead (:pep:420).

py-modules string[]

Modules that setuptools will manipulate

data-files object

dict-like structure where each key represents a directory and the value is a list of glob patterns that should be installed in them. DISCOURAGED: please notice this might not work as expected with wheels. Whenever possible, consider using data files inside the package directories (or create a new namespace package that only contains data files). See data files support <https://setuptools.pypa.io/en/latest/userguide/datafiles.html>_.

cmdclass object

Mapping of distutils-style command names to setuptools.Command subclasses which in turn should be represented by strings with a qualified class name (i.e., "dotted" form with module), e.g.::

 cmdclass = {mycmd = "pkg.subpkg.module.CommandClass"}

The command class should be a directly defined at the top-level of the containing module (no class nesting).

license-files string[]

PROVISIONAL: list of glob patterns for all license files being distributed. (likely to become standard with :pep:639). By default: ['LICEN[CS]E*', 'COPYING*', 'NOTICE*', 'AUTHORS*']

dynamic object

Instructions for loading :pep:621-related metadata dynamically

7 nested properties

A version dynamically loaded via either the attr: or file: directives. Please make sure the given file or attribute respects :pep:440. Also ensure to set project.dynamic accordingly.

classifiers object

Value is read from a file (or list of files and then concatenated)

1 nested properties
file string | string[] required
description object

Value is read from a file (or list of files and then concatenated)

1 nested properties
file string | string[] required
entry-points object

Value is read from a file (or list of files and then concatenated)

1 nested properties
file string | string[] required
dependencies
All of: variant, 'file:' directive object
optional-dependencies object
readme object
Any of: 'file:' directive object, object object

Definitions

package-name string

Valid package name (importable or :pep:561).

file-directive object

Value is read from a file (or list of files and then concatenated)

file string | string[] required
file-directive-for-dependencies
attr-directive object

Value is read from a module attribute. Supports callables and iterables; unsupported types are cast via str()

attr string required
format=python-qualified-identifier
find-directive object
find object

Dynamic package discovery <https://setuptools.pypa.io/en/latest/userguide/package_discovery.html>_.

4 nested properties
where string[]

Directories to be searched for packages (Unix-style relative path)

exclude string[]

Exclude packages that match the values listed in this field. Can container shell-style wildcards (e.g. 'pkg.*')

include string[]

Restrict the found packages to just the ones listed in this field. Can container shell-style wildcards (e.g. 'pkg.*')

namespaces boolean

When True, directories without a __init__.py file will also be scanned for :pep:420-style implicit namespaces