Skip to content

Instantly share code, notes, and snippets.

@zevisert
Created September 26, 2020 04:17
Show Gist options
  • Save zevisert/086638d2145d937a33bf570ace8cba4a to your computer and use it in GitHub Desktop.
Save zevisert/086638d2145d937a33bf570ace8cba4a to your computer and use it in GitHub Desktop.
pyproject.toml json-schema including poetry definitions
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"poetry-authors": {
"type": "array",
"description": "List of authors that contributed to the package. This is typically the main maintainers, not the full list.",
"items": {
"type": "string",
"pattern": "^(?:\\S+?\\s)+?(?:<(?:[a-z\\d!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z\\d!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z\\d](?:[a-z\\d-]*[a-z\\d])?\\.)+[a-z\\d](?:[a-z\\d-]*[a-z\\d])?|\\[(?:(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?)\\.){3}(?:25[0-5]|2[0-4][\\d]|[01]?[\\d][\\d]?|[a-z\\d-]*[a-z\\d]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])>)?$"
}
},
"poetry-maintainers": {
"type": "array",
"description": "List of maintainers, other than the original author(s), that upkeep the package.",
"items": {
"type": "string"
}
},
"poetry-dependencies": {
"type": "object",
"patternProperties": {
"^[a-zA-Z-_.0-9]+$": {
"oneOf": [
{
"$ref": "#/definitions/poetry-dependency"
},
{
"$ref": "#/definitions/poetry-long-dependency"
},
{
"$ref": "#/definitions/poetry-git-dependency"
},
{
"$ref": "#/definitions/poetry-file-dependency"
},
{
"$ref": "#/definitions/poetry-path-dependency"
},
{
"$ref": "#/definitions/poetry-url-dependency"
},
{
"$ref": "#/definitions/poetry-multiple-constraints-dependency"
}
]
}
}
},
"poetry-dependency": {
"type": "string",
"description": "The constraint of the dependency.",
"pattern": "v?(?:(?:(?:[0-9]+)!)?(?:[0-9]+(?:\\.[0-9]+)*)(?:[-_\\.]?(?:(a|b|c|rc|alpha|beta|pre|preview))[-_\\.]?(?:[0-9]+)?)?(?:(?:-(?:[0-9]+))|(?:[-_\\.]?(?:post|rev|r)[-_\\.]?(?:[0-9]+)?))?(?:[-_\\.]?(?:dev)[-_\\.]?(?:[0-9]+)?)?)(?:\\+(?:[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?"
},
"poetry-long-dependency": {
"type": "object",
"required": ["version"],
"additionalProperties": false,
"properties": {
"version": {
"type": "string",
"description": "The constraint of the dependency.",
"pattern": "v?(?:(?:(?:[0-9]+)!)?(?:[0-9]+(?:\\.[0-9]+)*)(?:[-_\\.]?(?:(a|b|c|rc|alpha|beta|pre|preview))[-_\\.]?(?:[0-9]+)?)?(?:(?:-(?:[0-9]+))|(?:[-_\\.]?(?:post|rev|r)[-_\\.]?(?:[0-9]+)?))?(?:[-_\\.]?(?:dev)[-_\\.]?(?:[0-9]+)?)?)(?:\\+(?:[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?"
},
"python": {
"type": "string",
"description": "The python versions for which the dependency should be installed."
},
"platform": {
"type": "string",
"description": "The platform(s) for which the dependency should be installed."
},
"markers": {
"type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed."
},
"allow-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"allows-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"optional": {
"type": "boolean",
"description": "Whether the dependency is optional or not."
},
"extras": {
"type": "array",
"description": "The required extras for this dependency.",
"items": {
"type": "string"
}
},
"source": {
"type": "string",
"description": "The exclusive source used to search for this dependency."
}
}
},
"poetry-git-dependency": {
"type": "object",
"required": ["git"],
"additionalProperties": false,
"properties": {
"git": {
"type": "string",
"description": "The url of the git repository.",
"format": "uri"
},
"branch": {
"type": "string",
"description": "The branch to checkout."
},
"tag": {
"type": "string",
"description": "The tag to checkout."
},
"rev": {
"type": "string",
"description": "The revision to checkout."
},
"python": {
"type": "string",
"description": "The python versions for which the dependency should be installed."
},
"platform": {
"type": "string",
"description": "The platform(s) for which the dependency should be installed."
},
"markers": {
"type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed."
},
"allow-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"allows-prereleases": {
"type": "boolean",
"description": "Whether the dependency allows prereleases or not."
},
"optional": {
"type": "boolean",
"description": "Whether the dependency is optional or not."
},
"extras": {
"type": "array",
"description": "The required extras for this dependency.",
"items": {
"type": "string"
}
}
}
},
"poetry-file-dependency": {
"type": "object",
"required": ["file"],
"additionalProperties": false,
"properties": {
"file": {
"type": "string",
"description": "The path to the file."
},
"python": {
"type": "string",
"description": "The python versions for which the dependency should be installed."
},
"platform": {
"type": "string",
"description": "The platform(s) for which the dependency should be installed."
},
"markers": {
"type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed."
},
"optional": {
"type": "boolean",
"description": "Whether the dependency is optional or not."
},
"extras": {
"type": "array",
"description": "The required extras for this dependency.",
"items": {
"type": "string"
}
}
}
},
"poetry-path-dependency": {
"type": "object",
"required": ["path"],
"additionalProperties": false,
"properties": {
"path": {
"type": "string",
"description": "The path to the dependency."
},
"python": {
"type": "string",
"description": "The python versions for which the dependency should be installed."
},
"platform": {
"type": "string",
"description": "The platform(s) for which the dependency should be installed."
},
"markers": {
"type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed."
},
"optional": {
"type": "boolean",
"description": "Whether the dependency is optional or not."
},
"extras": {
"type": "array",
"description": "The required extras for this dependency.",
"items": {
"type": "string"
}
},
"develop": {
"type": "boolean",
"description": "Whether to install the dependency in development mode."
}
}
},
"poetry-url-dependency": {
"type": "object",
"required": ["url"],
"additionalProperties": false,
"properties": {
"url": {
"type": "string",
"description": "The url to the file."
},
"python": {
"type": "string",
"description": "The python versions for which the dependency should be installed."
},
"platform": {
"type": "string",
"description": "The platform(s) for which the dependency should be installed."
},
"markers": {
"type": "string",
"description": "The PEP 508 compliant environment markers for which the dependency should be installed."
},
"optional": {
"type": "boolean",
"description": "Whether the dependency is optional or not."
},
"extras": {
"type": "array",
"description": "The required extras for this dependency.",
"items": {
"type": "string"
}
}
}
},
"poetry-multiple-constraints-dependency": {
"type": "array",
"minItems": 1,
"items": {
"oneOf": [
{
"$ref": "#/definitions/poetry-dependency"
},
{
"$ref": "#/definitions/poetry-long-dependency"
},
{
"$ref": "#/definitions/poetry-git-dependency"
},
{
"$ref": "#/definitions/poetry-file-dependency"
},
{
"$ref": "#/definitions/poetry-path-dependency"
},
{
"$ref": "#/definitions/poetry-url-dependency"
}
]
}
},
"poetry-scripts": {
"type": "object",
"patternProperties": {
"^[a-zA-Z-_.0-9]+$": {
"oneOf": [
{
"$ref": "#/definitions/poetry-script"
},
{
"$ref": "#/definitions/poetry-extra-script"
}
]
}
}
},
"poetry-script": {
"type": "string",
"description": "A simple script pointing to a callable object."
},
"poetry-extra-script": {
"type": "object",
"description": "A script that should be installed only if extras are activated.",
"additionalProperties": false,
"properties": {
"callable": {
"$ref": "#/definitions/poetry-script"
},
"extras": {
"type": "array",
"description": "The required extras for this script.",
"items": {
"type": "string"
}
}
}
},
"poetry-repository": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "The name of the repository"
},
"url": {
"type": "string",
"description": "The url of the repository",
"format": "uri"
},
"default": {
"type": "boolean",
"description": "Make this repository the default (disable PyPI)"
},
"secondary": {
"type": "boolean",
"description": "Declare this repository as secondary, i.e. it will only be looked up last for packages."
}
}
},
"BuildSystem": {
"title": "Build System",
"type": "object",
"evenBetterToml": {
"links": {
"key": "https://www.python.org/dev/peps/pep-0518/#build-system-table"
}
},
"description": "Build-related data.\n",
"required": ["requires"],
"properties": {
"requires": {
"description": "A list of strings representing [PEP 508](https://www.python.org/dev/peps/pep-0508) dependencies required to execute the build system.\n",
"type": "array",
"items": {
"type": "string"
},
"evenBetterToml": {
"links": {
"key": "https://www.python.org/dev/peps/pep-0518/#build-system-table"
}
}
},
"build-backend": {
"description": "The build backend for the package.\n",
"type": "string",
"evenBetterToml": {
"links": {
"key": "https://www.python.org/dev/peps/pep-0517/"
}
}
}
}
}
},
"type": "object",
"properties": {
"build-system": {
"$ref": "#/definitions/BuildSystem"
},
"tool": {
"type": "object",
"description": "A table for tool configurations.\n\nEvery tool that is used by the project can have its own sub-table for its configuration.\n",
"additionalProperties": true,
"evenBetterToml": {
"links": {
"key": "https://www.python.org/dev/peps/pep-0518/#id28"
}
},
"properties": {
"poetry": {
"name": "Package",
"type": "object",
"additionalProperties": false,
"required": ["name", "version", "description"],
"properties": {
"name": {
"type": "string",
"description": "Package name."
},
"version": {
"type": "string",
"description": "Package version.",
"pattern": "v?(?:(?:(?:[0-9]+)!)?(?:[0-9]+(?:\\.[0-9]+)*)(?:[-_\\.]?(?:(a|b|c|rc|alpha|beta|pre|preview))[-_\\.]?(?:[0-9]+)?)?(?:(?:-(?:[0-9]+))|(?:[-_\\.]?(?:post|rev|r)[-_\\.]?(?:[0-9]+)?))?(?:[-_\\.]?(?:dev)[-_\\.]?(?:[0-9]+)?)?)(?:\\+(?:[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?"
},
"description": {
"type": "string",
"description": "Short package description."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"description": "A tag/keyword that this package relates to."
}
},
"homepage": {
"type": "string",
"description": "Homepage URL for the project.",
"format": "uri"
},
"repository": {
"type": "string",
"description": "Repository URL for the project.",
"format": "uri"
},
"documentation": {
"type": "string",
"description": "Documentation URL for the project.",
"format": "uri"
},
"license": {
"type": "string",
"description": "License name."
},
"authors": {
"$ref": "#/definitions/poetry-authors"
},
"maintainers": {
"$ref": "#/definitions/poetry-maintainers"
},
"readme": {
"type": "string",
"description": "The path to the README file"
},
"classifiers": {
"type": "array",
"description": "A list of trove classifers."
},
"packages": {
"type": "array",
"description": "A list of packages to include in the final distribution.",
"items": {
"type": "object",
"description": "Information about where the package resides.",
"additionalProperties": false,
"required": ["include"],
"properties": {
"include": {
"type": "string",
"description": "What to include in the package."
},
"from": {
"type": "string",
"description": "Where the source directory of the package resides."
},
"format": {
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "The format(s) for which the package must be included."
}
}
}
},
"include": {
"type": "array",
"description": "A list of files and folders to include."
},
"exclude": {
"type": "array",
"description": "A list of files and folders to exclude."
},
"dependencies": {
"type": "object",
"description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.",
"required": ["python"],
"properties": {
"python": {
"type": "string",
"description": "The Python versions the package is compatible with."
}
},
"$ref": "#/definitions/poetry-dependencies",
"additionalProperties": false
},
"dev-dependencies": {
"type": "object",
"description": "This is a hash of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).",
"$ref": "#/definitions/poetry-dependencies",
"additionalProperties": false
},
"extras": {
"type": "object",
"patternProperties": {
"^[a-zA-Z-_.0-9]+$": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"build": {
"type": "string",
"description": "The file used to build extensions."
},
"source": {
"type": "array",
"description": "A set of additional repositories where packages can be found.",
"additionalProperties": {
"$ref": "#/definitions/poetry-repository"
},
"items": {
"$ref": "#/definitions/poetry-repository"
}
},
"scripts": {
"type": "object",
"description": "A hash of scripts to be installed.",
"items": {
"type": "string"
}
},
"plugins": {
"type": "object",
"description": "A hash of hashes representing plugins",
"patternProperties": {
"^[a-zA-Z-_.0-9]+$": {
"type": "object",
"patternProperties": {
"^[a-zA-Z-_.0-9]+$": {
"type": "string"
}
}
}
}
},
"urls": {
"type": "object",
"patternProperties": {
"^.+$": {
"type": "string",
"description": "The full url of the custom url."
}
}
}
}
}
}
}
},
"additionalProperties": true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment