Skip to content

Commit

Permalink
Merge branch 'main' into pre-commit-ci-update-config
Browse files Browse the repository at this point in the history
  • Loading branch information
dbast authored Sep 19, 2023
2 parents c72fe27 + 3ba167b commit bd67906
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 77 deletions.
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "pip"
directory: "/docs/"
schedule:
interval: "weekly"
allow:
# Allow only production updates for Sphinx
- dependency-name: "sphinx"
dependency-type: "production"
6 changes: 5 additions & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
version: 2

build:
os: "ubuntu-22.04"
tools:
python: "3.11"

python:
version: "3"
install:
- requirements: docs/requirements.txt

Expand Down
2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
linkify-it-py==1.0.1
myst-parser==0.15.2
Pillow==9.3.0
PyYAML==5.4.1
PyYAML==6.0.1
requests==2.31.0
ruamel.yaml==0.17.16
Sphinx==4.2.0
Expand Down
7 changes: 4 additions & 3 deletions docs/source/resources/define-metadata.rst
Original file line number Diff line number Diff line change
Expand Up @@ -992,9 +992,10 @@ words, a Python package would list ``python`` here and an R package would list

The PREFIX environment variable points to the host prefix. With respect to
activation during builds, both the host and build environments are activated.
The build prefix is activated before the host prefix so that the host prefix
has priority over the build prefix. Executables that don't exist in the host
prefix should be found in the build prefix.
The build prefix is activated *after* the host prefix so that the build prefix,
which always contains native executables for the running platform, has priority
over the host prefix, which is not guaranteed to provide native executables (e.g.
when cross-compiling).

As of conda-build 3.1.4, the build and host prefixes are always separate when
both are defined, or when ``{{ compiler() }}`` Jinja2 functions are used. The
Expand Down
160 changes: 88 additions & 72 deletions docs/source/resources/package-spec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ conda package is composed of the first 3 values, as in:
``<name>-<version>-<build>.tar.bz2`` or ``<name>-<version>-<build>.conda``.

.. list-table::
:widths: 15 15 70
:widths: 15 15 45

* - **Key**
- **Type**
Expand All @@ -76,8 +76,7 @@ conda package is composed of the first 3 values, as in:
* - version
- string
- The package version. May not contain "-". Conda
acknowledges `PEP 440
<https://www.python.org/dev/peps/pep-0440/>`_.
acknowledges `PEP 440 <https://www.python.org/dev/peps/pep-0440/>`_.

* - build
- string
Expand All @@ -96,15 +95,13 @@ conda package is composed of the first 3 values, as in:

* - build_number
- integer
- A non-negative integer representing the build number of
the package.
- A non-negative integer representing the build number of the package.

Unlike the build string, the ``build_number`` is inspected by
conda. Conda uses it to sort packages that have otherwise
identical names and versions to determine the latest one.
This is important because new builds that contain bug
fixes for the way a package is built may be added to a
repository.
Unlike the build string, the ``build_number`` is inspected by conda.

Conda uses it to sort packages that have otherwise identical names and versions to determine the latest one.

This is important because new builds that contain bug fixes for the way a package is built may be added to a repository.

* - depends
- list of strings
Expand All @@ -125,10 +122,12 @@ conda package is composed of the first 3 values, as in:

EXAMPLE: ``osx``

Conda currently does not use this key. Packages for a
specific architecture and platform are usually
distinguished by the repository subdirectory that contains
them---see :ref:`repo-si`.
Conda currently does not use this key.

Packages for a specific architecture and platform are usually distinguished by the repository subdirectory that contains
them.

See :ref:`repo-si`.

info/files
----------
Expand Down Expand Up @@ -284,85 +283,73 @@ parts:
* The first part is always the exact name of the package.

* The second part refers to the version and may contain special
characters:
characters. See table below.

* \| means OR.
* The third part is always the exact build string. When there are
three parts, the second part must be the exact version.

EXAMPLE: ``1.0|1.2`` matches version 1.0 or 1.2.
.. list-table:: Version Special Characters
:widths: 10, 40, 40
:header-rows: 1

* \* matches 0 or more characters in the version string. In
terms of regular expressions, it is the same as ``r'.*'``.
* - Symbol
- Meaning
- Example

EXAMPLE: 1.0|1.4* matches 1.0, 1.4 and 1.4.1b2, but not 1.2.
* - <, >, <=, >=
- Relational operators on versions,

* <, >, <=, >=, ==, and != are relational operators on versions,
which are compared using
`PEP-440 <https://www.python.org/dev/peps/pep-0440/>`_. For example,
``<=1.0`` matches ``0.9``, ``0.9.1``, and ``1.0``, but not ``1.0.1``.
``==`` and ``!=`` are exact equality.
which are compared using `PEP-440 <https://www.python.org/dev/peps/pep-0440/>`_.
- ``<=1.0`` matches 0.9, 0.9.1, and 1.0, but not 1.0.1.

Pre-release versioning is also supported such that ``>1.0b4`` will match
``1.0b5`` and ``1.0rc1`` but not ``1.0b4`` or ``1.0a5``.
* - ==, and !=
- Exact equality and not equalities.
- ``==0.5.1`` matches 0.5.1 and not anything else while ``!=0.5.1`` matches everything but.

EXAMPLE: <=1.0 matches 0.9, 0.9.1, and 1.0, but not 1.0.1.
* - ~=
- Compatibility Release
- ``~=0.5.3`` is equivalent to ``>=0.5.3, <0.6.0a``

* , means AND.
* - \|
- OR
- ``1.0|1.2`` matches version 1.0 or 1.2.

EXAMPLE: >=2,<3 matches all packages in the 2 series. 2.0,
2.1, and 2.9 all match, but 3.0 and 1.0 do not.
* - \*
- Matches 0 or more characters in the version string.

* , has higher precedence than \|, so >=1,<2|>3 means greater
than or equal to 1 AND less than 2 or greater than 3, which
matches 1, 1.3 and 3.0, but not 2.2.
In terms of regular expressions, it is the same as ``r'.*'``.
- ``1.0|1.4*`` matches 1.0, 1.4 and 1.4.1b2, but not 1.2.

Conda parses the version by splitting it into parts separated
by \|. If the part begins with <, >, =, or !, it is parsed as a
relational operator. Otherwise, it is parsed as a version,
possibly containing the "*" operator.
* - ,
- AND
- ``>=2,<3`` matches all packages in the 2 series.

* The third part is always the exact build string. When there are
3 parts, the second part must be the exact version.
2.0, 2.1, and 2.9 all match, but 3.0 and 1.0 do not.

.. hint::
``,`` has higher precedence than \|, so >=1,<2|>3 means greater than or equal to 1 AND less than 2 or greater than 3, which matches 1, 1.3 and 3.0, but not 2.2.

.. note::
For package match specifications, pre-release versioning is also supported such that ``>1.0b4`` will match ``1.0b5`` and ``1.0rc1`` but not ``1.0b4`` or ``1.0a5``.

Conda parses the version by splitting it into parts separated
by \|. If the part begins with <, >, =, or !, it is parsed as a
relational operator. Otherwise, it is parsed as a version,
possibly containing the "*" operator.

Remember that the version specification cannot contain spaces,
as spaces are used to delimit the package, version, and build
string in the whole match specification. ``python >= 2.7`` is an
invalid match specification. However, ``"python >= 2.7"`` (with double or single quotes) is
matched as any version of a package named ``python>=2.7``.

When using the command line, put double or single quotes around any package
version specification that contains the space character or any of
the following characters: <, >, \*, or \|.

EXAMPLE::

conda install numpy=1.11
conda install numpy==1.11
conda install "numpy>1.11"
conda install "numpy=1.11.1|1.11.3"
conda install "numpy>=1.8,<2"

Examples of Package Specs
-------------------------

Examples
--------

The OR constraint "numpy=1.11.1|1.11.3" matches with 1.11.1 or
1.11.3.

The AND constraint "numpy>=1.8,<2" matches with 1.8 and 1.9 but
not 2.0.

The fuzzy constraint numpy=1.11 matches 1.11, 1.11.0, 1.11.1,
1.11.2, 1.11.18, and so on.

The exact constraint numpy==1.11 matches 1.11, 1.11.0, 1.11.0.0,
and so on.

The build string constraint "numpy=1.11.2=*nomkl*" matches the
NumPy 1.11.2 packages without MKL but not the normal MKL NumPy
The build string constraint "numpy=1.11.2=*nomkl*" matches the NumPy 1.11.2 packages without MKL, but not the normal MKL NumPy
1.11.2 packages.

The build string constraint "numpy=1.11.1|1.11.3=py36_0" matches
NumPy 1.11.1 or 1.11.3 built for Python 3.6 but not any versions
The build string constraint "numpy=1.11.1|1.11.3=py36_0" matches NumPy 1.11.1 or 1.11.3 built for Python 3.6, but not any versions
of NumPy built for Python 3.5 or Python 2.7.

The following are all valid match specifications for
Expand All @@ -378,3 +365,32 @@ numpy-1.8.1-py27_0:
* numpy >=1.8,<2|1.9
* numpy 1.8.1 py27_0
* numpy=1.8.1=py27_0

Command Line Match Spec Examples
--------------------------------

When using the command line, put double or single quotes around any package
version specification that contains the space character or any of
the following characters: <, >, \*, or \|.

.. list-table:: Examples
:widths: 30 60
:header-rows: 1

* - Example
- Meaning

* - conda install numpy=1.11
- The fuzzy constraint numpy=1.11 matches 1.11, 1.11.0, 1.11.1, 1.11.2, 1.11.18, and so on.

* - conda install numpy==1.11
- The exact constraint numpy==1.11 matches 1.11, 1.11.0, 1.11.0.0, and so on.

* - conda install "numpy=1.11.1|1.11.3"
- The OR constraint "numpy=1.11.1|1.11.3" matches with 1.11.1 or 1.11.3.

* - conda install "numpy>1.11"
- Any numpy version 1.12.0a or greater.

* - conda install "numpy>=1.8,<2"
- The AND constraint "numpy>=1.8,<2" matches with 1.8 and 1.9 but not 2.0.
3 changes: 3 additions & 0 deletions news/4553-document-compatibility-release-operator
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Docs

* Document `~=` (compatibility release) match spec. (#4553)
19 changes: 19 additions & 0 deletions news/4942-docs-prefix-activation
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### Enhancements

* <news item>

### Bug fixes

* <news item>

### Deprecations

* <news item>

### Docs

* Clarify that the `build` prefix is activated _after_ the `host` prefix. (#4942)

### Other

* <news item>

0 comments on commit bd67906

Please sign in to comment.