{ "id": "http://www.python.org/dev/peps/pep-0426/", "$schema": "http://json-schema.org/draft-04/schema#", "title": "Metadata for Python Software Packages 2.0", "type": "object", "properties": { "metadata_version": { "description": "Version of the file format", "type": "string", "pattern": "^(\\d+(\\.\\d+)*)$" }, "generator": { "description": "Name and version of the program that produced this file.", "type": "string", "pattern": "^[0-9A-Za-z]([0-9A-Za-z_.-]*[0-9A-Za-z])( \\(.*\\))?$" }, "name": { "description": "The name of the distribution.", "type": "string", "$ref": "#/definitions/distribution_name" }, "version": { "description": "The distribution's public version identifier", "type": "string", "pattern": "^(\\d+(\\.\\d+)*)((a|b|c|rc)(\\d+))?(\\.(post)(\\d+))?(\\.(dev)(\\d+))?$" }, "source_label": { "description": "A constrained identifying text string", "type": "string", "pattern": "^[0-9a-z_.-+]+$" }, "source_url": { "description": "A string containing a full URL where the source for this specific version of the distribution can be downloaded.", "type": "string", "format": "uri" }, "summary": { "description": "A one-line summary of what the distribution does.", "type": "string" }, "document_names": { "description": "Names of supporting metadata documents", "type": "object", "properties": { "description": { "type": "string", "$ref": "#/definitions/document_name" }, "changelog": { "type": "string", "$ref": "#/definitions/document_name" }, "license": { "type": "string", "$ref": "#/definitions/document_name" } }, "additionalProperties": false }, "keywords": { "description": "A list of additional keywords to be used to assist searching for the distribution in a larger catalog.", "type": "array", "items": { "type": "string" } }, "license": { "description": "A string indicating the license covering the distribution.", "type": "string" }, "classifiers": { "description": "A list of strings, with each giving a single classification value for the distribution.", "type": "array", "items": { "type": "string" } }, "contacts": { "description": "A list of contributor entries giving the recommended contact points for getting more information about the project.", "type": "array", "items": { "type": "object", "$ref": "#/definitions/contact" } }, "contributors": { "description": "A list of contributor entries for other contributors not already listed as current project points of contact.", "type": "array", "items": { "type": "object", "$ref": "#/definitions/contact" } }, "project_urls": { "description": "A mapping of arbitrary text labels to additional URLs relevant to the project.", "type": "object" }, "extras": { "description": "A list of optional sets of dependencies that may be used to define conditional dependencies in \"may_require\" and similar fields.", "type": "array", "items": { "type": "string", "$ref": "#/definitions/extra_name" } }, "meta_requires": { "description": "A list of subdistributions made available through this metadistribution.", "type": "array", "$ref": "#/definitions/dependencies" }, "run_requires": { "description": "A list of other distributions needed to run this distribution.", "type": "array", "$ref": "#/definitions/dependencies" }, "test_requires": { "description": "A list of other distributions needed when this distribution is tested.", "type": "array", "$ref": "#/definitions/dependencies" }, "build_requires": { "description": "A list of other distributions needed when this distribution is built.", "type": "array", "$ref": "#/definitions/dependencies" }, "dev_requires": { "description": "A list of other distributions needed when this distribution is developed.", "type": "array", "$ref": "#/definitions/dependencies" }, "provides": { "description": "A list of strings naming additional dependency requirements that are satisfied by installing this distribution. These strings must be of the form Name or Name (Version)", "type": "array", "items": { "type": "string", "$ref": "#/definitions/provides_declaration" } }, "modules": { "description": "A list of modules and/or packages available for import after installing this distribution.", "type": "array", "items": { "type": "string", "$ref": "#/definitions/qualified_name" } }, "namespaces": { "description": "A list of namespace packages this distribution contributes to", "type": "array", "items": { "type": "string", "$ref": "#/definitions/qualified_name" } }, "commands": { "description": "Command line interfaces provided by this distribution", "type": "object", "$ref": "#/definitions/commands" }, "exports": { "description": "Other exported interfaces provided by this distribution", "type": "object", "$ref": "#/definitions/exports" }, "obsoleted_by": { "description": "A string that indicates that this project is no longer being developed. The named project provides a substitute or replacement.", "type": "string", "$ref": "#/definitions/requirement" }, "supports_environments": { "description": "A list of strings specifying the environments that the distribution explicitly supports.", "type": "array", "items": { "type": "string", "$ref": "#/definitions/environment_marker" } }, "install_hooks": { "description": "The install_hooks field is used to define various operations that may be invoked on a distribution in a platform independent manner.", "type": "object", "properties": { "postinstall": { "type": "string", "$ref": "#/definitions/export_specifier" }, "preuninstall": { "type": "string", "$ref": "#/definitions/export_specifier" } } }, "extensions": { "description": "Extensions to the metadata may be present in a mapping under the 'extensions' key.", "type": "object", "$ref": "#/definitions/extensions" } }, "required": ["metadata_version", "name", "version", "summary"], "additionalProperties": false, "definitions": { "contact": { "type": "object", "properties": { "name": { "type": "string" }, "email": { "type": "string" }, "url": { "type": "string" }, "role": { "type": "string" } }, "required": ["name"], "additionalProperties": false }, "dependencies": { "type": "array", "items": { "type": "object", "$ref": "#/definitions/dependency" } }, "dependency": { "type": "object", "properties": { "extra": { "type": "string", "$ref": "#/definitions/valid_name" }, "environment": { "type": "string", "$ref": "#/definitions/environment_marker" }, "requires": { "type": "array", "items": { "type": "string", "$ref": "#/definitions/requirement" } } }, "required": ["requires"], "additionalProperties": false }, "commands": { "type": "object", "properties": { "wrap_console": { "type": "object", "$ref": "#/definitions/command_map" }, "wrap_gui": { "type": "object", "$ref": "#/definitions/command_map" }, "prebuilt": { "type": "array", "items": { "type": "string", "$ref": "#/definitions/relative_path" } } }, "additionalProperties": false }, "exports": { "type": "object", "patternProperties": { "^[A-Za-z][0-9A-Za-z_]*([.][0-9A-Za-z_]*)*$": { "type": "object", "patternProperties": { ".": { "type": "string", "$ref": "#/definitions/export_specifier" } }, "additionalProperties": false } }, "additionalProperties": false }, "extensions": { "type": "object", "patternProperties": { "^[A-Za-z][0-9A-Za-z_]*([.][0-9A-Za-z_]*)*$": {} }, "additionalProperties": false }, "command_map": { "type": "object", "patternProperties": { "^[0-9A-Za-z]([0-9A-Za-z_.-]*[0-9A-Za-z])?$": { "type": "string", "$ref": "#/definitions/export_specifier" } }, "additionalProperties": false }, "distribution_name": { "type": "string", "pattern": "^[0-9A-Za-z]([0-9A-Za-z_.-]*[0-9A-Za-z])?$" }, "requirement": { "type": "string" }, "provides_declaration": { "type": "string" }, "environment_marker": { "type": "string" }, "document_name": { "type": "string" }, "extra_name" : { "type": "string", "pattern": "^[0-9A-Za-z]([0-9A-Za-z_.-]*[0-9A-Za-z])?$" }, "relative_path" : { "type": "string" }, "export_specifier": { "type": "string", "pattern": "^([A-Za-z_][A-Za-z_0-9]*([.][A-Za-z_][A-Za-z_0-9]*)*)(:[A-Za-z_][A-Za-z_0-9]*([.][A-Za-z_][A-Za-z_0-9]*)*)?(\\[[0-9A-Za-z]([0-9A-Za-z_.-]*[0-9A-Za-z])?\\])?$" }, "qualified_name" : { "type": "string", "pattern": "^[A-Za-z_][A-Za-z_0-9]*([.][A-Za-z_][A-Za-z_0-9]*)*$" }, "prefixed_name" : { "type": "string", "pattern": "^[A-Za-z_][A-Za-z_0-9]*([.][A-Za-z_0-9]*)*$" } } }