{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/partial-setuptools-scm.json",
  "title": "setuptools-scm configuration in pyproject.toml",
  "description": "Schema for the [tool.setuptools_scm] section in pyproject.toml",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "root": {
      "type": "string",
      "description": "Relative path to the SCM root, defaults to `.` and is relative to the file path passed in `relative_to`.",
      "markdownDescription": "Relative path to the SCM root, defaults to `.` and is relative to the file path passed in `relative_to`.",
      "x-intellij-html-description": "Relative path to the SCM root, defaults to <code>.</code> and is relative to the file path passed in <code>relative_to</code>."
    },
    "version_scheme": {
      "type": "string",
      "description": "An entrypoint name; configures how the local version number is constructed."
    },
    "local_scheme": {
      "type": "string",
      "description": "An entrypoint name; configures how the local component of the version is constructed."
    },
    "version_file": {
      "type": "string",
      "description": "A path to a file that gets replaced with a file containing the current version. It is ideal for creating a `_version.py` file within the package, typically used to avoid using `pkg_resources.get_distribution` (which adds some overhead). Only files with `.py` and `.txt` extensions have builtin templates, for other file types it is necessary to provide version_file_template.",
      "markdownDescription": "A path to a file that gets replaced with a file containing the current version. It is ideal for creating a `_version.py` file within the package, typically used to avoid using `pkg_resources.get_distribution` (which adds some overhead). Only files with `.py` and `.txt` extensions have builtin templates, for other file types it is necessary to provide version_file_template.",
      "x-intellij-html-description": "A path to a file that gets replaced with a file containing the current version. It is ideal for creating a <code>_version.py</code> file within the package, typically used to avoid using <code>pkg_resources.get_distribution</code> (which adds some overhead). Only files with <code>.py</code> and <code>.txt</code> extensions have builtin templates, for other file types it is necessary to provide version_file_template."
    },
    "version_file_template": {
      "type": "string",
      "description": "A new-style format string taking `version`, `scm_version` and `version_tuple` as parameters. `version` is the generated next_version as string, `version_tuple` is a tuple of split numbers/strings and `scm_version` is the `ScmVersion` instance the current `version` was rendered from.",
      "markdownDescription": "A new-style format string taking `version`, `scm_version` and `version_tuple` as parameters. `version` is the generated next_version as string, `version_tuple` is a tuple of split numbers/strings and `scm_version` is the `ScmVersion` instance the current `version` was rendered from.",
      "x-intellij-html-description": "A new-style format string taking <code>version</code>, <code>scm_version</code> and <code>version_tuple</code> as parameters. <code>version</code> is the generated next_version as string, <code>version_tuple</code> is a tuple of split numbers/strings and <code>scm_version</code> is the <code>ScmVersion</code> instance the current <code>version</code> was rendered from."
    },
    "write_to": {
      "type": "string",
      "description": "Create a version file relative to the scm root; deprecated in favor of use `version_file` instead.",
      "markdownDescription": "Create a version file relative to the scm root; deprecated in favor of use `version_file` instead.",
      "x-intellij-html-description": "Create a version file relative to the scm root; deprecated in favor of use <code>version_file</code> instead.",
      "deprecated": true
    },
    "relative_to": {
      "type": "string",
      "description": "A file/directory from which the root can be resolved. Typically called by a script or module that is not in the root of the repository to point `setuptools_scm` at the root of the repository by supplying `__file__`.",
      "markdownDescription": "A file/directory from which the root can be resolved. Typically called by a script or module that is not in the root of the repository to point `setuptools_scm` at the root of the repository by supplying `__file__`.",
      "x-intellij-html-description": "A file/directory from which the root can be resolved. Typically called by a script or module that is not in the root of the repository to point <code>setuptools_scm</code> at the root of the repository by supplying <code>__file__</code>.",
      "default": "pyproject.toml"
    },
    "tag_regex": {
      "type": "string",
      "description": "A Python regex string to extract the version part from any SCM tag. The regex needs to contain either a single match group, or a group named `version`, that captures the actual version information.",
      "markdownDescription": "A Python regex string to extract the version part from any SCM tag. The regex needs to contain either a single match group, or a group named `version`, that captures the actual version information.",
      "x-intellij-html-description": "A Python regex string to extract the version part from any SCM tag. The regex needs to contain either a single match group, or a group named <code>version</code>, that captures the actual version information.",
      "default": "^(?:[\\w-]+-)?(?P<version>[vV]?\\d+(?:\\.\\d+){0,2}[^\\+]*)(?:\\+.*)?$"
    },
    "parentdir_prefix_version": {
      "type": "string",
      "description": "If the normal methods for detecting the version (SCM version, sdist metadata) fail, and the parent directory name starts with `parentdir_prefix_version`, then this prefix is stripped and the rest of the parent directory name is matched with `tag_regex` to get a version string.  If this parameter is unset (the default), then this fallback is not used.\n\nThis was intended to cover GitHub's \"release tarballs\", which extract into directories named `projectname-tag/` (in which case `parentdir_prefix_version` can be set e.g. to `projectname-`).",
      "markdownDescription": "If the normal methods for detecting the version (SCM version, sdist metadata) fail, and the parent directory name starts with `parentdir_prefix_version`, then this prefix is stripped and the rest of the parent directory name is matched with `tag_regex` to get a version string.  If this parameter is unset (the default), then this fallback is not used.\n\nThis was intended to cover GitHub's \"release tarballs\", which extract into directories named `projectname-tag/` (in which case `parentdir_prefix_version` can be set e.g. to `projectname-`).",
      "x-intellij-html-description": "If the normal methods for detecting the version (SCM version, sdist metadata) fail, and the parent directory name starts with <code>parentdir_prefix_version</code>, then this prefix is stripped and the rest of the parent directory name is matched with <code>tag_regex</code> to get a version string.  If this parameter is unset (the default), then this fallback is not used.\n\nThis was intended to cover GitHub&#39;s &quot;release tarballs&quot;, which extract into directories named <code>projectname-tag/</code> (in which case <code>parentdir_prefix_version</code> can be set e.g. to <code>projectname-</code>)."
    },
    "fallback_version": {
      "type": "string",
      "description": "A version string that will be used if no other method for detecting the version worked (e.g., when using a tarball with no metadata). If this is unset (the default), `setuptools-scm` will error if it fails to detect the version.",
      "markdownDescription": "A version string that will be used if no other method for detecting the version worked (e.g., when using a tarball with no metadata). If this is unset (the default), `setuptools-scm` will error if it fails to detect the version.",
      "x-intellij-html-description": "A version string that will be used if no other method for detecting the version worked (e.g., when using a tarball with no metadata). If this is unset (the default), <code>setuptools-scm</code> will error if it fails to detect the version."
    },
    "git_describe_command": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "This command will be used instead the default `git describe --long` command.",
      "markdownDescription": "This command will be used instead the default `git describe --long` command.",
      "x-intellij-html-description": "This command will be used instead the default <code>git describe --long</code> command.",
      "default": [
        "git",
        "describe",
        "--dirty",
        "--tags",
        "--long",
        "--match",
        "*[0-9]*"
      ]
    },
    "normalize": {
      "type": "boolean",
      "description": "A boolean flag indicating if the version string should be normalized.",
      "default": true
    },
    "version_cls": {
      "type": "string",
      "description": "Qualified name of an optional class used to parse, verify and possibly normalize the version string. Its constructor should receive a single string argument, and its `str` should return the normalized version string to use.",
      "markdownDescription": "Qualified name of an optional class used to parse, verify and possibly normalize the version string. Its constructor should receive a single string argument, and its `str` should return the normalized version string to use.",
      "x-intellij-html-description": "Qualified name of an optional class used to parse, verify and possibly normalize the version string. Its constructor should receive a single string argument, and its <code>str</code> should return the normalized version string to use.",
      "default": "packaging.version.Version"
    }
  }
}
