|
- {
- "$schema": "http://json-schema.org/draft-07/schema#",
-
- "$id": "https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html",
- "title": "``tool.setuptools`` table",
- "$$description": [
- "``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)."
- ],
-
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "platforms": {
- "type": "array",
- "items": {"type": "string"}
- },
- "provides": {
- "$$description": [
- "Package and virtual package names contained within this package",
- "**(not supported by pip)**"
- ],
- "type": "array",
- "items": {"type": "string", "format": "pep508-identifier"}
- },
- "obsoletes": {
- "$$description": [
- "Packages which this package renders obsolete",
- "**(not supported by pip)**"
- ],
- "type": "array",
- "items": {"type": "string", "format": "pep508-identifier"}
- },
- "zip-safe": {
- "$$description": [
- "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**)."
- ],
- "type": "boolean"
- },
- "script-files": {
- "$$description": [
- "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."
- ],
- "type": "array",
- "items": {"type": "string"},
- "$comment": "TODO: is this field deprecated/should be removed?"
- },
- "eager-resources": {
- "$$description": [
- "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**)."
- ],
- "type": "array",
- "items": {"type": "string"}
- },
- "packages": {
- "$$description": [
- "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."
- ],
- "oneOf": [
- {
- "title": "Array of Python package identifiers",
- "type": "array",
- "items": {"$ref": "#/definitions/package-name"}
- },
- {"$ref": "#/definitions/find-directive"}
- ]
- },
- "package-dir": {
- "$$description": [
- ":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."
- ],
- "type": "object",
- "additionalProperties": false,
- "propertyNames": {
- "anyOf": [{"const": ""}, {"$ref": "#/definitions/package-name"}]
- },
- "patternProperties": {
- "^.*$": {"type": "string" }
- }
- },
- "package-data": {
- "$$description": [
- "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>`_."
- ],
- "type": "object",
- "additionalProperties": false,
- "propertyNames": {
- "anyOf": [{"type": "string", "format": "python-module-name"}, {"const": "*"}]
- },
- "patternProperties": {
- "^.*$": {"type": "array", "items": {"type": "string"}}
- }
- },
- "include-package-data": {
- "$$description": [
- "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>`_."
- ],
- "type": "boolean"
- },
- "exclude-package-data": {
- "$$description": [
- "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>`_."
- ],
- "type": "object",
- "additionalProperties": false,
- "propertyNames": {
- "anyOf": [{"type": "string", "format": "python-module-name"}, {"const": "*"}]
- },
- "patternProperties": {
- "^.*$": {"type": "array", "items": {"type": "string"}}
- }
- },
- "namespace-packages": {
- "type": "array",
- "items": {"type": "string", "format": "python-module-name-relaxed"},
- "$comment": "https://setuptools.pypa.io/en/latest/userguide/package_discovery.html",
- "description": "**DEPRECATED**: use implicit namespaces instead (:pep:`420`)."
- },
- "py-modules": {
- "description": "Modules that setuptools will manipulate",
- "type": "array",
- "items": {"type": "string", "format": "python-module-name-relaxed"},
- "$comment": "TODO: clarify the relationship with ``packages``"
- },
- "ext-modules": {
- "description": "Extension modules to be compiled by setuptools",
- "type": "array",
- "items": {"$ref": "#/definitions/ext-module"}
- },
- "data-files": {
- "$$description": [
- "``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>`_."
- ],
- "type": "object",
- "patternProperties": {
- "^.*$": {"type": "array", "items": {"type": "string"}}
- }
- },
- "cmdclass": {
- "$$description": [
- "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.::\n\n",
- " cmdclass = {mycmd = \"pkg.subpkg.module.CommandClass\"}\n\n",
- "The command class should be a directly defined at the top-level of the",
- "containing module (no class nesting)."
- ],
- "type": "object",
- "patternProperties": {
- "^.*$": {"type": "string", "format": "python-qualified-identifier"}
- }
- },
- "license-files": {
- "type": "array",
- "items": {"type": "string"},
- "$$description": [
- "**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*']``"
- ],
- "$comment": "TODO: revise if PEP 639 is accepted. Probably ``project.license-files``?"
- },
- "dynamic": {
- "type": "object",
- "description": "Instructions for loading :pep:`621`-related metadata dynamically",
- "additionalProperties": false,
- "properties": {
- "version": {
- "$$description": [
- "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."
- ],
- "oneOf": [
- {"$ref": "#/definitions/attr-directive"},
- {"$ref": "#/definitions/file-directive"}
- ]
- },
- "classifiers": {"$ref": "#/definitions/file-directive"},
- "description": {"$ref": "#/definitions/file-directive"},
- "entry-points": {"$ref": "#/definitions/file-directive"},
- "dependencies": {"$ref": "#/definitions/file-directive-for-dependencies"},
- "optional-dependencies": {
- "type": "object",
- "propertyNames": {"type": "string", "format": "pep508-identifier"},
- "additionalProperties": false,
- "patternProperties": {
- ".+": {"$ref": "#/definitions/file-directive-for-dependencies"}
- }
- },
- "readme": {
- "type": "object",
- "anyOf": [
- {"$ref": "#/definitions/file-directive"},
- {
- "type": "object",
- "properties": {
- "content-type": {"type": "string"},
- "file": { "$ref": "#/definitions/file-directive/properties/file" }
- },
- "additionalProperties": false}
- ],
- "required": ["file"]
- }
- }
- }
- },
-
- "definitions": {
- "package-name": {
- "$id": "#/definitions/package-name",
- "title": "Valid package name",
- "description": "Valid package name (importable or :pep:`561`).",
- "type": "string",
- "anyOf": [
- {"type": "string", "format": "python-module-name-relaxed"},
- {"type": "string", "format": "pep561-stub-name"}
- ]
- },
- "ext-module": {
- "$id": "#/definitions/ext-module",
- "title": "Extension module",
- "description": "Parameters to construct a :class:`setuptools.Extension` object",
- "type": "object",
- "required": ["name", "sources"],
- "additionalProperties": false,
- "properties": {
- "name": {
- "type": "string",
- "format": "python-module-name-relaxed"
- },
- "sources": {
- "type": "array",
- "items": {"type": "string"}
- },
- "include-dirs":{
- "type": "array",
- "items": {"type": "string"}
- },
- "define-macros": {
- "type": "array",
- "items": {
- "type": "array",
- "items": [
- {"description": "macro name", "type": "string"},
- {"description": "macro value", "oneOf": [{"type": "string"}, {"type": "null"}]}
- ],
- "additionalItems": false
- }
- },
- "undef-macros": {
- "type": "array",
- "items": {"type": "string"}
- },
- "library-dirs": {
- "type": "array",
- "items": {"type": "string"}
- },
- "libraries": {
- "type": "array",
- "items": {"type": "string"}
- },
- "runtime-library-dirs": {
- "type": "array",
- "items": {"type": "string"}
- },
- "extra-objects": {
- "type": "array",
- "items": {"type": "string"}
- },
- "extra-compile-args": {
- "type": "array",
- "items": {"type": "string"}
- },
- "extra-link-args": {
- "type": "array",
- "items": {"type": "string"}
- },
- "export-symbols": {
- "type": "array",
- "items": {"type": "string"}
- },
- "swig-opts": {
- "type": "array",
- "items": {"type": "string"}
- },
- "depends": {
- "type": "array",
- "items": {"type": "string"}
- },
- "language": {"type": "string"},
- "optional": {"type": "boolean"},
- "py-limited-api": {"type": "boolean"}
- }
- },
- "file-directive": {
- "$id": "#/definitions/file-directive",
- "title": "'file:' directive",
- "description":
- "Value is read from a file (or list of files and then concatenated)",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "file": {
- "oneOf": [
- {"type": "string"},
- {"type": "array", "items": {"type": "string"}}
- ]
- }
- },
- "required": ["file"]
- },
- "file-directive-for-dependencies": {
- "title": "'file:' directive for dependencies",
- "allOf": [
- {
- "$$description": [
- "**BETA**: subset of the ``requirements.txt`` format",
- "without ``pip`` flags and options",
- "(one :pep:`508`-compliant string per line,",
- "lines that are blank or start with ``#`` are excluded).",
- "See `dynamic metadata",
- "<https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html#dynamic-metadata>`_."
- ]
- },
- {"$ref": "#/definitions/file-directive"}
- ]
- },
- "attr-directive": {
- "title": "'attr:' directive",
- "$id": "#/definitions/attr-directive",
- "$$description": [
- "Value is read from a module attribute. Supports callables and iterables;",
- "unsupported types are cast via ``str()``"
- ],
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "attr": {"type": "string", "format": "python-qualified-identifier"}
- },
- "required": ["attr"]
- },
- "find-directive": {
- "$id": "#/definitions/find-directive",
- "title": "'find:' directive",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "find": {
- "type": "object",
- "$$description": [
- "Dynamic `package discovery",
- "<https://setuptools.pypa.io/en/latest/userguide/package_discovery.html>`_."
- ],
- "additionalProperties": false,
- "properties": {
- "where": {
- "description":
- "Directories to be searched for packages (Unix-style relative path)",
- "type": "array",
- "items": {"type": "string"}
- },
- "exclude": {
- "type": "array",
- "$$description": [
- "Exclude packages that match the values listed in this field.",
- "Can container shell-style wildcards (e.g. ``'pkg.*'``)"
- ],
- "items": {"type": "string"}
- },
- "include": {
- "type": "array",
- "$$description": [
- "Restrict the found packages to just the ones listed in this field.",
- "Can container shell-style wildcards (e.g. ``'pkg.*'``)"
- ],
- "items": {"type": "string"}
- },
- "namespaces": {
- "type": "boolean",
- "$$description": [
- "When ``True``, directories without a ``__init__.py`` file will also",
- "be scanned for :pep:`420`-style implicit namespaces"
- ]
- }
- }
- }
- }
- }
- }
- }
|