diff --git a/src/schemas/json/partial-pixi.json b/src/schemas/json/partial-pixi.json index b9cd9800d0e..9c9936257a3 100644 --- a/src/schemas/json/partial-pixi.json +++ b/src/schemas/json/partial-pixi.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/partial-pixi.json", - "$comment": "Generated from `pixi` v0.66.0", + "$comment": "Generated from `pixi` v0.81.0", "$defs": { "Activation": { "title": "Activation", @@ -70,6 +70,18 @@ "$ref": "#/$defs/BuildBackend", "description": "The build backend to instantiate" }, + "build-number": { + "title": "Build-Number", + "description": "The build number to record in the produced package", + "type": "integer", + "minimum": 0 + }, + "build-string-prefix": { + "title": "Build-String-Prefix", + "description": "An optional prefix to prepend to the auto-generated build string", + "type": "string", + "minLength": 1 + }, "channels": { "title": "Channels", "description": "The `conda` channels that are used to fetch the build backend from", @@ -97,6 +109,25 @@ "type": "object", "additionalProperties": true }, + "flags": { + "title": "Flags", + "description": "Plain string flags recorded on built packages for v3 package variant selection", + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-z0-9_]+(:[a-z0-9_]+)?$" + }, + "examples": [["cuda", "blas_openblas"]] + }, + "secrets": { + "title": "Secrets", + "description": "Names of environment variables to expose as secrets to the build script. Values are read from the host environment at build time; only the names live in the manifest. Forwarded to rattler-build's `build.script.secrets`.", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, "source": { "$ref": "#/$defs/SourceLocation", "description": "The source from which to build the package", @@ -157,12 +188,6 @@ "minLength": 1 } }, - "branch": { - "title": "Branch", - "description": "A git branch to use", - "type": "string", - "minLength": 1 - }, "build": { "title": "Build", "description": "The build string of the package", @@ -207,17 +232,29 @@ ] } }, + "extras": { + "title": "Extras", + "description": "Optional extra dependencies to select for the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, "file-name": { "title": "File-Name", "description": "The file name of the package", "type": "string", "minLength": 1 }, - "git": { - "title": "Git", - "description": "The git URL to the repo", - "type": "string", - "minLength": 1 + "flags": { + "title": "Flags", + "description": "Plain string flags used to select package variants", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } }, "license": { "title": "License", @@ -225,11 +262,11 @@ "type": "string", "minLength": 1 }, - "md5": { - "title": "Md5", - "description": "The md5 hash of the package", + "license-family": { + "title": "License-Family", + "description": "The license family of the package", "type": "string", - "pattern": "^[a-fA-F0-9]{32}$" + "minLength": 1 }, "name": { "title": "Name", @@ -237,53 +274,51 @@ "type": "string", "minLength": 1 }, - "path": { - "title": "Path", - "description": "The path to the package", - "type": "string", - "minLength": 1 - }, - "rev": { - "title": "Rev", - "description": "A git SHA revision to use", - "type": "string", - "minLength": 1 - }, - "sha256": { - "title": "Sha256", - "description": "The sha256 hash of the package", - "type": "string", - "pattern": "^[a-fA-F0-9]{64}$" - }, "subdir": { "title": "Subdir", "description": "The subdir of the package, also known as platform", "type": "string", "minLength": 1 }, - "subdirectory": { - "title": "Subdirectory", - "description": "A subdirectory to use in the repo", - "type": "string", - "minLength": 1 - }, - "tag": { - "title": "Tag", - "description": "A git tag to use", - "type": "string", - "minLength": 1 - }, - "url": { - "title": "Url", - "description": "The URL to the package", - "type": "string", - "minLength": 1 + "track-features": { + "title": "Track-Features", + "description": "The track features of the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } }, "version": { "title": "Version", "description": "The version of the package in [MatchSpec](https://github.com/conda/conda/blob/078e7ee79381060217e1ec7f9b0e9cf80ecc8f3f/conda/models/match_spec.py) format", "type": "string", "minLength": 1 + }, + "when": { + "title": "When", + "description": "The condition under which this match spec applies. Use a package string, `{ all = [...] }`, `{ any = [...] }`, or `{ package = ..., version = ..., build = ... }`.", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/WhenAll" + }, + { + "$ref": "#/$defs/WhenAny" + }, + { + "$ref": "#/$defs/WhenPackage" + } + ] + }, + "workspace": { + "title": "Workspace", + "description": "Inherit the backend version from `[workspace.dependencies]` using `name` as the lookup key. `version`, `path`, `git` and `url` are mutually exclusive with `workspace`.", + "type": "boolean", + "const": true } } }, @@ -323,6 +358,12 @@ } ] }, + "exclude-newer": { + "title": "Exclude-Newer", + "description": "Override the workspace-level `exclude-newer` cutoff for this channel only", + "type": "string", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})|\\d{4}-\\d{2}-\\d{2}|(\\d+\\s*[A-Za-z]+\\s*)+)$" + }, "priority": { "title": "Priority", "description": "The priority of the channel", @@ -334,7 +375,89 @@ "title": "ChannelPriority", "description": "The priority of the channel.", "type": "string", - "enum": ["disabled", "strict"] + "enum": ["disabled", "flexible", "strict"] + }, + "CondaPypiMapTable": { + "title": "CondaPypiMapTable", + "description": "The mapping configuration for one channel in `conda-pypi-map`.", + "type": "object", + "additionalProperties": false, + "properties": { + "location": { + "title": "Location", + "description": "The URL or path to a mapping file with `conda_name: pypi_name` entries", + "anyOf": [ + { + "type": "string", + "format": "uri", + "minLength": 1 + }, + { + "type": "string", + "minLength": 1 + } + ] + }, + "mapping": { + "title": "Mapping", + "description": "Inline `conda_name: pypi_name` entries; a list maps one conda package to several PyPI names, `false` marks a package as not available on PyPI. Inline entries override entries from `location`.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + { + "type": "boolean", + "const": false + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "mapping-mode": { + "title": "Mapping-Mode", + "description": "How the project mapping interacts with Pixi's default mapping data: `overlay` (default) applies it on top, `replace` uses it instead", + "type": "string", + "enum": ["overlay", "replace"] + }, + "same-name-heuristic": { + "title": "Same-Name-Heuristic", + "description": "Whether Pixi may assume the conda package name is also the PyPI package name when mapping data has no answer. Defaults to true for conda-forge and false for other channels.", + "type": "boolean" + } + } + }, + "CudaTable": { + "title": "CudaTable", + "description": "The grouped CUDA virtual-package table: `cuda = { driver, arch }`.\n\n`driver` maps to `__cuda` (equivalent to the bare `cuda = \"12.0\"` form);\n`arch` maps to `__cuda_arch` (GPU compute capability) and requires `driver`.", + "type": "object", + "required": ["driver"], + "additionalProperties": false, + "properties": { + "arch": { + "title": "Arch", + "description": "The `__cuda_arch` GPU compute capability, e.g. `8.6`. Requires `driver`.", + "type": "string", + "minLength": 1 + }, + "driver": { + "title": "Driver", + "description": "The `__cuda` driver version, e.g. `12.0`.", + "type": "string", + "minLength": 1 + } + } }, "DependsOn": { "title": "DependsOn", @@ -393,6 +516,85 @@ "type": "object", "additionalProperties": false, "properties": { + "activation": { + "$ref": "#/$defs/Activation", + "description": "The scripts used on the activation of this environment" + }, + "channel-priority": { + "$ref": "#/$defs/ChannelPriority", + "description": "The type of channel priority that is used in the solve.\n- 'strict': only take the package from the channel it exist in first.\n- 'flexible': exhaust the candidates of higher-priority channels before falling back to the next channel, regardless of the version.\n- 'disabled': group all dependencies together as if there is no channel difference.", + "examples": ["strict", "flexible", "disabled"] + }, + "channels": { + "title": "Channels", + "description": "The `conda` channels that can be considered when solving this environment", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "string", + "format": "uri", + "minLength": 1 + }, + { + "$ref": "#/$defs/ChannelInlineTable" + } + ] + } + }, + "constraints": { + "title": "Constraints", + "description": "The `conda` version constraints. These constrain the versions of packages that may be installed without explicitly requiring them. If the package is installed as a dependency of another package, it must satisfy these constraints.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/MatchspecTable" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "dependencies": { + "title": "Dependencies", + "description": "The `conda` dependencies, consisting of a package name and a requirement in [MatchSpec](https://github.com/conda/conda/blob/078e7ee79381060217e1ec7f9b0e9cf80ecc8f3f/conda/models/match_spec.py) format", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/MatchspecTable" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "dev": { + "title": "Dev", + "description": "Source packages whose dependencies should be installed without building the package itself. Useful for development environments.", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/SourceSpecTable" + }, + "propertyNames": { + "minLength": 1 + } + }, "features": { "title": "Features", "description": "The features that define the environment", @@ -408,11 +610,119 @@ "type": "boolean", "default": false }, + "platforms": { + "title": "Platforms", + "description": "The platforms that this environment supports. Each entry is either a conda subdir or the name of a workspace platform.", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "string", + "maxLength": 64, + "pattern": "^[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]$|^[a-zA-Z]$" + } + ] + } + }, + "pypi-dependencies": { + "title": "Pypi-Dependencies", + "description": "The PyPI dependencies of this environment", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/PyPIVersion" + }, + { + "$ref": "#/$defs/PyPIGitBranchRequirement" + }, + { + "$ref": "#/$defs/PyPIGitTagRequirement" + }, + { + "$ref": "#/$defs/PyPIGitRevRequirement" + }, + { + "$ref": "#/$defs/PyPIPathRequirement" + }, + { + "$ref": "#/$defs/PyPIUrlRequirement" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "pypi-options": { + "$ref": "#/$defs/PyPIOptions", + "description": "Options related to PyPI indexes for this environment" + }, "solve-group": { "title": "Solve-Group", "description": "The group name for environments that should be solved together", "type": "string", "minLength": 1 + }, + "solve-strategy": { + "$ref": "#/$defs/SolveStrategy", + "description": "The strategy that is used in the solve.\n- 'highest': solve all packages to the highest compatible version.\n- 'lowest': solve all packages to the lowest compatible version.\n- 'lowest-direct': solve direct dependencies to the lowest compatible version and transitive ones to the highest compatible version.", + "examples": ["lowest", "lowest-direct", "highest"] + }, + "target": { + "title": "Target", + "description": "Machine-specific aspects of this environment", + "type": "object", + "additionalProperties": { + "$ref": "#/$defs/Target" + }, + "propertyNames": { + "minLength": 1 + }, + "examples": [ + { + "linux": { + "dependencies": { + "python": "3.8" + } + } + } + ] + }, + "tasks": { + "title": "Tasks", + "description": "The tasks provided by this environment", + "type": "object", + "patternProperties": { + "^[^\\s\\$]+$": { + "anyOf": [ + { + "$ref": "#/$defs/TaskInlineTable" + }, + { + "type": "array", + "items": { + "$ref": "#/$defs/DependsOn" + } + }, + { + "type": "string", + "minLength": 1 + } + ] + } + }, + "propertyNames": { + "description": "A valid task name.", + "minLength": 1 + } } } }, @@ -437,7 +747,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -447,8 +757,8 @@ }, "channel-priority": { "$ref": "#/$defs/ChannelPriority", - "description": "The type of channel priority that is used in the solve.\n- 'strict': only take the package from the channel it exist in first.\n- 'disabled': group all dependencies together as if there is no channel difference.", - "examples": ["strict", "disabled"] + "description": "The type of channel priority that is used in the solve.\n- 'strict': only take the package from the channel it exist in first.\n- 'flexible': exhaust the candidates of higher-priority channels before falling back to the next channel, regardless of the version.\n- 'disabled': group all dependencies together as if there is no channel difference.", + "examples": ["strict", "flexible", "disabled"] }, "channels": { "title": "Channels", @@ -482,7 +792,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -501,7 +811,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -531,7 +841,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -546,10 +856,19 @@ }, "platforms": { "title": "Platforms", - "description": "The platforms that the feature supports: a union of all features combined in one environment is used for the environment.", + "description": "The platforms that the feature supports: a union of all features combined in one environment is used for the environment. Each entry is either a conda subdir or the name of a workspace platform.", "type": "array", "items": { - "$ref": "#/$defs/Platform" + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "string", + "maxLength": 64, + "pattern": "^[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]$|^[a-zA-Z]$" + } + ] } }, "pypi-dependencies": { @@ -679,6 +998,191 @@ } } }, + "InheritableMatchspecTable": { + "title": "InheritableMatchspecTable", + "description": "A spec that may inherit from `[workspace.dependencies]`.\n\nSetting `workspace = true` pulls the version (and any other unset fields)\nfrom the matching `[workspace.dependencies]` entry. Members may layer\nfurther attributes on top; restating `version` or the source location\n(`path`, `git`, `url`) alongside `workspace = true` is an error.", + "type": "object", + "additionalProperties": false, + "properties": { + "branch": { + "title": "Branch", + "description": "A git branch to use", + "type": "string", + "minLength": 1 + }, + "build": { + "title": "Build", + "description": "The build string of the package", + "type": "string", + "minLength": 1 + }, + "build-number": { + "title": "Build-Number", + "description": "The build number of the package, can be a spec like `>=1` or `<=10` or `1`", + "type": "string", + "minLength": 1 + }, + "channel": { + "title": "Channel", + "description": "The channel the packages needs to be fetched from", + "type": "string", + "minLength": 1, + "examples": [ + "conda-forge", + "pytorch", + "https://prefix.dev/conda-forge" + ] + }, + "extras": { + "title": "Extras", + "description": "Optional extra dependencies to select for the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "file-name": { + "title": "File-Name", + "description": "The file name of the package", + "type": "string", + "minLength": 1 + }, + "flags": { + "title": "Flags", + "description": "Plain string flags used to select package variants", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "git": { + "title": "Git", + "description": "The git URL to the repo", + "type": "string", + "minLength": 1 + }, + "lfs": { + "title": "Lfs", + "description": "If `true` Git LFS objects are fetched during the checkout", + "type": "boolean" + }, + "license": { + "title": "License", + "description": "The license of the package", + "type": "string", + "minLength": 1 + }, + "license-family": { + "title": "License-Family", + "description": "The license family of the package", + "type": "string", + "minLength": 1 + }, + "md5": { + "title": "Md5", + "description": "The md5 hash of the package", + "type": "string", + "pattern": "^[a-fA-F0-9]{32}$" + }, + "package": { + "$ref": "#/$defs/Package", + "description": "An inline package definition for this source dependency, instead of a separate `pixi.toml`. The package name is taken from the dependency key and the source is taken from this spec, so `name` and `build.source` are not set here.", + "examples": [ + { + "build": { + "backend": { + "name": "pixi-build-rust" + } + } + } + ] + }, + "path": { + "title": "Path", + "description": "The path to the package", + "type": "string", + "minLength": 1 + }, + "rev": { + "title": "Rev", + "description": "A git SHA revision to use", + "type": "string", + "minLength": 1 + }, + "sha256": { + "title": "Sha256", + "description": "The sha256 hash of the package", + "type": "string", + "pattern": "^[a-fA-F0-9]{64}$" + }, + "subdir": { + "title": "Subdir", + "description": "The subdir of the package, also known as platform", + "type": "string", + "minLength": 1 + }, + "subdirectory": { + "title": "Subdirectory", + "description": "A subdirectory to use in the repo", + "type": "string", + "minLength": 1 + }, + "tag": { + "title": "Tag", + "description": "A git tag to use", + "type": "string", + "minLength": 1 + }, + "track-features": { + "title": "Track-Features", + "description": "The track features of the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "url": { + "title": "Url", + "description": "The URL to the package", + "type": "string", + "minLength": 1 + }, + "version": { + "title": "Version", + "description": "The version of the package in [MatchSpec](https://github.com/conda/conda/blob/078e7ee79381060217e1ec7f9b0e9cf80ecc8f3f/conda/models/match_spec.py) format", + "type": "string", + "minLength": 1 + }, + "when": { + "title": "When", + "description": "The condition under which this match spec applies. Use a package string, `{ all = [...] }`, `{ any = [...] }`, or `{ package = ..., version = ..., build = ... }`.", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/WhenAll" + }, + { + "$ref": "#/$defs/WhenAny" + }, + { + "$ref": "#/$defs/WhenPackage" + } + ] + }, + "workspace": { + "title": "Workspace", + "description": "Inherit this spec from `[workspace.dependencies]`. Other fields on this table layer on top of the workspace base; `version`, `path`, `git` and `url` are mutually exclusive with `workspace`.", + "type": "boolean", + "const": true + } + } + }, "LibcFamily": { "title": "LibcFamily", "type": "object", @@ -741,30 +1245,72 @@ "https://prefix.dev/conda-forge" ] }, + "extras": { + "title": "Extras", + "description": "Optional extra dependencies to select for the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, "file-name": { "title": "File-Name", "description": "The file name of the package", "type": "string", "minLength": 1 }, + "flags": { + "title": "Flags", + "description": "Plain string flags used to select package variants", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, "git": { "title": "Git", "description": "The git URL to the repo", "type": "string", "minLength": 1 }, + "lfs": { + "title": "Lfs", + "description": "If `true` Git LFS objects are fetched during the checkout", + "type": "boolean" + }, "license": { "title": "License", "description": "The license of the package", "type": "string", "minLength": 1 }, + "license-family": { + "title": "License-Family", + "description": "The license family of the package", + "type": "string", + "minLength": 1 + }, "md5": { "title": "Md5", "description": "The md5 hash of the package", "type": "string", "pattern": "^[a-fA-F0-9]{32}$" }, + "package": { + "$ref": "#/$defs/Package", + "description": "An inline package definition for this source dependency, instead of a separate `pixi.toml`. The package name is taken from the dependency key and the source is taken from this spec, so `name` and `build.source` are not set here.", + "examples": [ + { + "build": { + "backend": { + "name": "pixi-build-rust" + } + } + } + ] + }, "path": { "title": "Path", "description": "The path to the package", @@ -801,6 +1347,15 @@ "type": "string", "minLength": 1 }, + "track-features": { + "title": "Track-Features", + "description": "The track features of the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, "url": { "title": "Url", "description": "The URL to the package", @@ -812,6 +1367,25 @@ "description": "The version of the package in [MatchSpec](https://github.com/conda/conda/blob/078e7ee79381060217e1ec7f9b0e9cf80ecc8f3f/conda/models/match_spec.py) format", "type": "string", "minLength": 1 + }, + "when": { + "title": "When", + "description": "The condition under which this match spec applies. Use a package string, `{ all = [...] }`, `{ any = [...] }`, or `{ package = ..., version = ..., build = ... }`.", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/WhenAll" + }, + { + "$ref": "#/$defs/WhenAny" + }, + { + "$ref": "#/$defs/WhenPackage" + } + ] } } }, @@ -859,7 +1433,24 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + } + ] + }, + "propertyNames": { + "minLength": 1 + } } ] }, @@ -894,6 +1485,55 @@ } ] }, + "extra-dependencies": { + "title": "Extra-Dependencies", + "description": "Extra groups that can be requested through MatchSpec extras. Each group uses the same conda package specification syntax as run-dependencies.", + "type": "object", + "patternProperties": { + "^[a-z0-9._+-]{1,64}$": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/MatchspecTable" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/MatchspecTable" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + }, + "examples": [ + { + "test": { + "hypothesis": "*", + "pytest": ">=8" + } + } + ] + }, "homepage": { "title": "Homepage", "description": "The URL of the homepage of the project. Can be a URL or { workspace = true } to inherit from workspace", @@ -919,7 +1559,30 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } } ] }, @@ -971,6 +1634,11 @@ } ] }, + "publish": { + "title": "Publish", + "description": "Whether a workspace-wide `pixi publish` publishes this package. Packages that do not opt in with `publish = true` are left out of the publish set.", + "type": "boolean" + }, "readme": { "title": "Readme", "description": "The path to the readme file of the project. Can be a path or { workspace = true } to inherit from workspace", @@ -998,9 +1666,9 @@ } ] }, - "run-dependencies": { - "title": "Run-Dependencies", - "description": "The `conda` dependencies required at runtime. See https://pixi.sh/latest/build/dependency_types/ for more information.", + "run-constraints": { + "title": "Run-Constraints", + "description": "The `conda` run-time version constraints. These constrain the versions of packages that may be installed in the run environment without explicitly requiring them. If the package is installed as a dependency of another package, it must satisfy these constraints. See https://pixi.sh/latest/build/dependency_types/ for more information.", "type": "object", "additionalProperties": { "anyOf": [ @@ -1009,7 +1677,24 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + } + ] + }, + "propertyNames": { + "minLength": 1 + } } ] }, @@ -1017,22 +1702,55 @@ "minLength": 1 } }, - "target": { - "title": "Target", - "description": "Machine-specific aspects of the package", + "run-dependencies": { + "title": "Run-Dependencies", + "description": "The `conda` dependencies required at runtime. See https://pixi.sh/latest/build/dependency_types/ for more information.", "type": "object", "additionalProperties": { - "$ref": "#/$defs/Target" + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] }, "propertyNames": { "minLength": 1 - }, + } + }, + "run-exports": { + "$ref": "#/$defs/RunExports", + "description": "The run-exports this package declares for its consumers, mirroring the conda run-exports mechanism. See https://pixi.sh/latest/build/dependency_types/ for more information.", "examples": [ { - "linux": { - "host-dependencies": { - "python": "3.8" - } + "weak": { + "libfoo": ">=1,<2" } } ] @@ -1058,6 +1776,83 @@ } } }, + "PinCompatibleSpec": { + "title": "PinCompatibleSpec", + "description": "Pin to a version compatible with the one resolved in the previous environment.\n\nMirrors rattler-build's `pin_compatible()`: a `pin-compatible` entry in\n`run-dependencies` resolves against the host environment, one in\n`host-dependencies` against the build environment.", + "type": "object", + "required": ["pin-compatible"], + "additionalProperties": false, + "properties": { + "pin-compatible": { + "title": "Pin-Compatible", + "description": "`true` uses the default bounds; a table configures them.", + "anyOf": [ + { + "type": "boolean", + "const": true + }, + { + "$ref": "#/$defs/PinTable" + } + ] + } + } + }, + "PinSubpackageSpec": { + "title": "PinSubpackageSpec", + "description": "Pin the package itself for its consumers.\n\nMirrors rattler-build's `pin_subpackage()`. Only valid in the\n`run-exports` tables, on an entry named after the package itself.", + "type": "object", + "required": ["pin-subpackage"], + "additionalProperties": false, + "properties": { + "pin-subpackage": { + "title": "Pin-Subpackage", + "description": "`true` uses the default bounds; a table configures them.", + "anyOf": [ + { + "type": "boolean", + "const": true + }, + { + "$ref": "#/$defs/PinTable" + } + ] + } + } + }, + "PinTable": { + "title": "PinTable", + "description": "The arguments of a pin, mirroring rattler-build's `pin_compatible`/`pin_subpackage`.\n\nBounds that are not given fall back to the defaults: `lower-bound = \"x.x.x.x.x.x\"`\n(pin to the exact resolved version) and `upper-bound = \"x\"` (next-major exclusive).", + "type": "object", + "additionalProperties": false, + "properties": { + "build": { + "title": "Build", + "description": "A build-string matcher to add to the pin, e.g. `mpi_mpich_*`.", + "type": "string", + "minLength": 1 + }, + "exact": { + "title": "Exact", + "description": "Pin the exact version and build string. Cannot be combined with the bounds or `build`.", + "type": "boolean" + }, + "lower-bound": { + "title": "Lower-Bound", + "description": "Lower bound of the pinned range: a pin expression like `x.x` (number of version segments to keep) or a literal version.", + "type": "string", + "minLength": 1, + "examples": ["x.x", "1.2.3"] + }, + "upper-bound": { + "title": "Upper-Bound", + "description": "Upper bound of the pinned range: a pin expression like `x` (the segment to bump, exclusive) or a literal version.", + "type": "string", + "minLength": 1, + "examples": ["x", "9.9"] + } + } + }, "Platform": { "title": "Platform", "description": "A supported operating system and processor architecture pair.", @@ -1111,6 +1906,11 @@ "type": "string", "minLength": 1 }, + "lfs": { + "title": "Lfs", + "description": "If `true` Git LFS objects are fetched during the checkout", + "type": "boolean" + }, "subdirectory": { "title": "Subdirectory", "description": "The subdirectory in the repo, a path from the root of the repo.", @@ -1139,6 +1939,11 @@ "type": "string", "minLength": 1 }, + "lfs": { + "title": "Lfs", + "description": "If `true` Git LFS objects are fetched during the checkout", + "type": "boolean" + }, "rev": { "title": "Rev", "description": "A `git` SHA revision to use", @@ -1173,6 +1978,11 @@ "type": "string", "minLength": 1 }, + "lfs": { + "title": "Lfs", + "description": "If `true` Git LFS objects are fetched during the checkout", + "type": "boolean" + }, "subdirectory": { "title": "Subdirectory", "description": "The subdirectory in the repo, a path from the root of the repo.", @@ -1261,20 +2071,8 @@ "index-strategy": { "title": "Index-Strategy", "description": "The strategy to use when resolving packages from multiple indexes", - "anyOf": [ - { - "type": "string", - "const": "first-index" - }, - { - "type": "string", - "const": "unsafe-first-match" - }, - { - "type": "string", - "const": "unsafe-best-match" - } - ], + "type": "string", + "enum": ["first-index", "unsafe-first-match", "unsafe-best-match"], "examples": ["first-index", "unsafe-first-match", "unsafe-best-match"] }, "index-url": { @@ -1338,27 +2136,13 @@ "prerelease-mode": { "title": "Prerelease-Mode", "description": "The strategy to use when considering pre-release versions", - "anyOf": [ - { - "type": "string", - "const": "disallow" - }, - { - "type": "string", - "const": "allow" - }, - { - "type": "string", - "const": "if-necessary" - }, - { - "type": "string", - "const": "explicit" - }, - { - "type": "string", - "const": "if-necessary-or-explicit" - } + "type": "string", + "enum": [ + "disallow", + "allow", + "if-necessary", + "explicit", + "if-necessary-or-explicit" ], "examples": [ "disallow", @@ -1444,18 +2228,266 @@ "type": "string", "minLength": 1 } - }, - "index": { - "title": "Index", - "description": "The index to fetch the package from", - "type": "string", - "minLength": 1 - }, - "version": { - "title": "Version", - "description": "The version of the package in [PEP 440](https://www.python.org/dev/peps/pep-0440/) format", - "type": "string", - "minLength": 1 + }, + "index": { + "title": "Index", + "description": "The index to fetch the package from", + "type": "string", + "minLength": 1 + }, + "version": { + "title": "Version", + "description": "The version of the package in [PEP 440](https://www.python.org/dev/peps/pep-0440/) format", + "type": "string", + "minLength": 1 + } + } + }, + "RunExports": { + "title": "RunExports", + "description": "The run-exports the package declares for its downstream consumers.", + "type": "object", + "additionalProperties": false, + "properties": { + "noarch": { + "title": "Noarch", + "description": "The only run-export bucket applied when the consuming output is `noarch`: added to the run dependencies of noarch consumers that depend on this package in `host-dependencies`.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "strong": { + "title": "Strong", + "description": "Added to the run dependencies of consumers that depend on this package in `build-dependencies` or `host-dependencies`.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "strong-constraints": { + "title": "Strong-Constraints", + "description": "Added to the run constraints of consumers that depend on this package in `build-dependencies` or `host-dependencies`. Constraints only restrict versions and cannot be source specs.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "weak": { + "title": "Weak", + "description": "Added to the run dependencies of consumers that depend on this package in `host-dependencies`.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } + }, + "weak-constraints": { + "title": "Weak-Constraints", + "description": "Added to the run constraints of consumers that depend on this package in `host-dependencies`. Constraints only restrict versions and cannot be source specs.", + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + }, + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/InheritableMatchspecTable" + }, + { + "$ref": "#/$defs/PinCompatibleSpec" + }, + { + "$ref": "#/$defs/PinSubpackageSpec" + } + ] + }, + "propertyNames": { + "minLength": 1 + } + } + ] + }, + "propertyNames": { + "minLength": 1 + } } } }, @@ -1705,7 +2737,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -1724,7 +2756,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -1743,7 +2775,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -1773,7 +2805,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -2058,6 +3090,154 @@ } } }, + "WhenAll": { + "title": "WhenAll", + "description": "All conditions must apply.", + "type": "object", + "required": ["all"], + "additionalProperties": false, + "properties": { + "all": { + "title": "All", + "description": "Conditions to combine with a logical AND", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/WhenAll" + }, + { + "$ref": "#/$defs/WhenAny" + }, + { + "$ref": "#/$defs/WhenPackage" + } + ] + }, + "minItems": 1 + } + } + }, + "WhenAny": { + "title": "WhenAny", + "description": "Any condition may apply.", + "type": "object", + "required": ["any"], + "additionalProperties": false, + "properties": { + "any": { + "title": "Any", + "description": "Conditions to combine with a logical OR", + "type": "array", + "items": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/WhenAll" + }, + { + "$ref": "#/$defs/WhenAny" + }, + { + "$ref": "#/$defs/WhenPackage" + } + ] + }, + "minItems": 1 + } + } + }, + "WhenPackage": { + "title": "WhenPackage", + "description": "Expanded package condition syntax.\n\nAccepts the same matchspec fields as a regular package dependency except\nfor `when` itself, `channel`, and source-location fields (`url`, `git`,\n`path`, `md5`, `sha256`, ...).", + "type": "object", + "required": ["package"], + "additionalProperties": false, + "properties": { + "build": { + "title": "Build", + "description": "Optional build string matcher", + "type": "string", + "minLength": 1 + }, + "build-number": { + "title": "Build-Number", + "description": "The build number of the package", + "type": "string", + "minLength": 1 + }, + "extras": { + "title": "Extras", + "description": "Optional extra dependencies to select for the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "file-name": { + "title": "File-Name", + "description": "The file name of the package", + "type": "string", + "minLength": 1 + }, + "flags": { + "title": "Flags", + "description": "Plain string flags used to select package variants", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "license": { + "title": "License", + "description": "The license of the package", + "type": "string", + "minLength": 1 + }, + "license-family": { + "title": "License-Family", + "description": "The license family of the package", + "type": "string", + "minLength": 1 + }, + "package": { + "title": "Package", + "description": "The package name to match", + "type": "string", + "minLength": 1 + }, + "subdir": { + "title": "Subdir", + "description": "The subdir of the package, also known as platform", + "type": "string", + "minLength": 1 + }, + "track-features": { + "title": "Track-Features", + "description": "The track features of the package", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "version": { + "title": "Version", + "description": "Optional version constraint", + "type": "string", + "minLength": 1 + } + } + }, "Workspace": { "title": "Workspace", "description": "The project's metadata information.", @@ -2100,8 +3280,8 @@ }, "channel-priority": { "$ref": "#/$defs/ChannelPriority", - "description": "The type of channel priority that is used in the solve.\n- 'strict': only take the package from the channel it exist in first.\n- 'disabled': group all dependencies together as if there is no channel difference.", - "examples": ["strict", "disabled"] + "description": "The type of channel priority that is used in the solve.\n- 'strict': only take the package from the channel it exist in first.\n- 'flexible': exhaust the candidates of higher-priority channels before falling back to the next channel, regardless of the version.\n- 'disabled': group all dependencies together as if there is no channel difference.", + "examples": ["strict", "flexible", "disabled"] }, "channels": { "title": "Channels", @@ -2126,21 +3306,64 @@ }, "conda-pypi-map": { "title": "Conda-Pypi-Map", - "description": "The `conda` to PyPI mapping configuration", + "description": "The `conda` to PyPI mapping configuration; `false` disables the mapping entirely", + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "format": "uri", + "minLength": 1 + }, + { + "type": "string", + "minLength": 1 + }, + { + "type": "boolean", + "const": false + }, + { + "$ref": "#/$defs/CondaPypiMapTable" + } + ] + } + }, + { + "type": "boolean", + "const": false + } + ] + }, + "dependencies": { + "title": "Dependencies", + "description": "Inheritable `conda` dependency pool. Members opt in by writing `{ workspace = true }` in any `[package.*-dependencies]` table (or in `[package.build.backend]`). Relative `path` specs resolve against this manifest and are re-anchored per consuming member.", "type": "object", "additionalProperties": { "anyOf": [ { "type": "string", - "format": "uri", "minLength": 1 }, { - "type": "string", - "minLength": 1 + "$ref": "#/$defs/MatchspecTable" } ] - } + }, + "propertyNames": { + "minLength": 1 + }, + "examples": [ + { + "boltons": { + "channel": "conda-forge", + "version": ">=24" + }, + "numpy": "1.*" + } + ] }, "description": { "title": "Description", @@ -2157,10 +3380,21 @@ }, "exclude-newer": { "title": "Exclude-Newer", - "description": "Exclude any package newer than this date", + "description": "Exclude any package newer than this timestamp or duration. Can be an absolute timestamp or a relative duration accepted by humantime (for example '0d', '1 week', '2w', '1 month', '1M', '72h', '72 hours', or '1h30m').", "type": "string", - "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2}))?$", - "examples": ["2023-11-03", "2023-11-03T03:33:12Z"] + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})|\\d{4}-\\d{2}-\\d{2}|(\\d+\\s*[A-Za-z]+\\s*)+)$", + "examples": [ + "2023-11-03T03:33:12Z", + "2026-04-01", + "0d", + "1 week", + "2w", + "1 month", + "1M", + "72h", + "72 hours", + "1h30m" + ] }, "homepage": { "title": "Homepage", @@ -2189,10 +3423,22 @@ }, "platforms": { "title": "Platforms", - "description": "The platforms that the project supports", + "description": "The platforms that the project supports. Each entry is either a conda subdir, the name of a workspace platform defined elsewhere, or an inline table describing a workspace platform (optional `name`, optional `platform`, plus virtual-package shortcut keys such as `cuda`, `archspec`, `glibc`, `linux`, `macos`/`osx`, `windows`).", "type": "array", "items": { - "$ref": "#/$defs/Platform" + "anyOf": [ + { + "$ref": "#/$defs/Platform" + }, + { + "type": "string", + "maxLength": 64, + "pattern": "^[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]$|^[a-zA-Z]$" + }, + { + "$ref": "#/$defs/WorkspacePlatform" + } + ] } }, "preview": { @@ -2291,6 +3537,91 @@ } } }, + "WorkspacePlatform": { + "title": "WorkspacePlatform", + "description": "A workspace platform: a conda subdir plus declared virtual-package\nguarantees, identified by a workspace-scoped name.", + "type": "object", + "additionalProperties": true, + "properties": { + "archspec": { + "title": "Archspec", + "description": "Declare a `__archspec` virtual package with the given microarchitecture, e.g. `x86_64_v3`.", + "type": "string", + "minLength": 1 + }, + "cuda": { + "title": "Cuda", + "description": "Declare a `__cuda` virtual package at the given version (e.g. `12.0`), or a `{ driver, arch }` table to also declare `__cuda_arch` (GPU compute capability).", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "$ref": "#/$defs/CudaTable" + } + ] + }, + "glibc": { + "title": "Glibc", + "description": "Declare a `__glibc` virtual package at the given version, e.g. `2.28`.", + "type": "string", + "minLength": 1 + }, + "linux": { + "title": "Linux", + "description": "Declare a `__linux` virtual package at the given kernel version, e.g. `5.10`.", + "type": "string", + "minLength": 1 + }, + "macos": { + "title": "Macos", + "description": "Declare a `__osx` virtual package at the given macOS version, e.g. `14.0`.", + "type": "string", + "minLength": 1 + }, + "name": { + "title": "Name", + "description": "The workspace-scoped name features reference this platform by. Defaults to a name auto-derived from `platform` plus the declared virtual packages when omitted.", + "type": "string", + "not": { + "enum": ["linux", "macos", "osx", "unix", "win"] + }, + "maxLength": 64, + "pattern": "^[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]$|^[a-zA-Z]$" + }, + "osx": { + "title": "Osx", + "description": "Alias for `macos`: declare a `__osx` virtual package at the given macOS version, e.g. `14.0`.", + "type": "string", + "minLength": 1 + }, + "platform": { + "$ref": "#/$defs/Platform", + "description": "The conda subdir this platform targets. Falls back to `name` parsed as a subdir when omitted." + }, + "windows": { + "title": "Windows", + "description": "Declare a `__win` virtual package at the given Windows version, e.g. `10`.", + "type": "string", + "minLength": 1 + } + }, + "anyOf": [ + { + "properties": { + "name": true + }, + "required": ["name"] + }, + { + "properties": { + "platform": true + }, + "required": ["platform"] + } + ] + }, "WorkspaceTarget": { "title": "WorkspaceTarget", "description": "Target-specific configuration for a workspace", @@ -2333,7 +3664,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -2352,7 +3683,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -2371,7 +3702,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -2411,6 +3742,18 @@ } } }, + "exclude-newer": { + "title": "Exclude-Newer", + "description": "Workspace-wide per-package `exclude-newer` overrides for conda packages", + "type": "object", + "additionalProperties": { + "type": "string", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})|\\d{4}-\\d{2}-\\d{2}|(\\d+\\s*[A-Za-z]+\\s*)+)$" + }, + "propertyNames": { + "minLength": 1 + } + }, "feature": { "title": "Feature", "description": "The features of the project", @@ -2433,7 +3776,7 @@ "minLength": 1 }, { - "$ref": "#/$defs/MatchspecTable" + "$ref": "#/$defs/InheritableMatchspecTable" } ] }, @@ -2488,6 +3831,18 @@ "minLength": 1 } }, + "pypi-exclude-newer": { + "title": "Pypi-Exclude-Newer", + "description": "Workspace-wide per-package `exclude-newer` overrides for PyPI packages", + "type": "object", + "additionalProperties": { + "type": "string", + "pattern": "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})|\\d{4}-\\d{2}-\\d{2}|(\\d+\\s*[A-Za-z]+\\s*)+)$" + }, + "propertyNames": { + "minLength": 1 + } + }, "pypi-options": { "$ref": "#/$defs/PyPIOptions", "description": "Options related to PyPI indexes, on the default feature" diff --git a/src/test/partial-pixi/exclude-newer.json b/src/test/partial-pixi/exclude-newer.json new file mode 100644 index 00000000000..66178f4fcd9 --- /dev/null +++ b/src/test/partial-pixi/exclude-newer.json @@ -0,0 +1,8 @@ +{ + "exclude-newer": { + "numpy": "2026-09-28" + }, + "pypi-exclude-newer": { + "example-package": "1 week" + } +}