362 lines
11 KiB
JSON
362 lines
11 KiB
JSON
{
|
|
"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"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"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/extra_name"
|
|
},
|
|
"environment": {
|
|
"type": "string",
|
|
"$ref": "#/definitions/environment_marker"
|
|
},
|
|
"requires": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"$ref": "#/definitions/requirement"
|
|
}
|
|
}
|
|
},
|
|
"required": ["requires"],
|
|
"additionalProperties": false
|
|
},
|
|
"extensions": {
|
|
"type": "object",
|
|
"patternProperties": {
|
|
"^[A-Za-z][0-9A-Za-z_]*([.][0-9A-Za-z_]*)*$": {}
|
|
},
|
|
"properties": {
|
|
"python.details" : {
|
|
"description": "More information regarding the distribution.",
|
|
"type": "object",
|
|
"properties": {
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"python.project" : {
|
|
"description": "More information regarding the creation and maintenance of the distribution.",
|
|
"$ref": "#/definitions/project_or_integrator"
|
|
},
|
|
"python.integrator" : {
|
|
"description": "More information regarding the downstream redistributor of the distribution.",
|
|
"$ref": "#/definitions/project_or_integrator"
|
|
},
|
|
"python.commands" : {
|
|
"description": "Command line interfaces provided by this distribution",
|
|
"type": "object",
|
|
"$ref": "#/definitions/commands"
|
|
},
|
|
"python.exports" : {
|
|
"description": "Other exported interfaces provided by this distribution",
|
|
"type": "object",
|
|
"$ref": "#/definitions/exports"
|
|
}
|
|
},
|
|
"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
|
|
},
|
|
"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
|
|
},
|
|
"project_or_integrator" : {
|
|
"type": "object",
|
|
"properties" : {
|
|
"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"
|
|
}
|
|
}
|
|
},
|
|
"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]*)*$"
|
|
}
|
|
}
|
|
}
|