Skip to content

Instantly share code, notes, and snippets.

@matthewfeickert
Last active September 29, 2026 23:28
Show Gist options
  • Select an option

  • Save matthewfeickert/90330c3448a7bba29cb9bd5fb11026d3 to your computer and use it in GitHub Desktop.

Select an option

Save matthewfeickert/90330c3448a7bba29cb9bd5fb11026d3 to your computer and use it in GitHub Desktop.
Survey of the version constraints that CRAN packages put on R itself (operators, repeated bounds, dash-separated versions), as a reproducible Pixi workspace. Supports prefix-dev/rattler-build PR 2759.
How to reproduce the CRAN numbers

With Pixi installed, save the two files below next to each other and run

$ pixi run snapshot 2026-09-29  # the CRAN index as archived by Posit Package Manager on that day
$ pixi run survey               # the CRAN index as it is right now

pixi.toml:

[workspace]
name = "cran-r-constraints"
description = "Survey the constraints that CRAN packages put on R itself"
channels = ["conda-forge"]
platforms = ["linux-64", "linux-aarch64", "osx-arm64", "win-64"]

[dependencies]
python = ">=3.14.7,<3.15"

[tasks.survey]
description = "The CRAN index as it is right now"
cmd = "python cran_r_constraints.py https://cloud.r-project.org/src/contrib/PACKAGES.gz"

[tasks.snapshot]
description = " The CRAN index as Posit Package Manager archived it on the given day, e.g. pixi run snapshot 2026-09-29"
args = ["date"]
cmd = "python cran_r_constraints.py https://packagemanager.posit.co/cran/{{ date }}/src/contrib/PACKAGES.gz"

[tasks.start]
depends-on = ["survey"]

cran_r_constraints.py:

"""Survey the constraints that CRAN packages put on R itself.

Reads a CRAN package index (the `Depends` field of every package) and reports
which operators are used, which packages bound R more than once, and which
write the R version in a form other than dot-separated numbers.

Usage:
    python cran_r_constraints.py <URL or path of a PACKAGES.gz>
"""

import collections
import gzip
import hashlib
import pathlib
import re
import sys
import urllib.request

# An entry of `Depends` that names R itself, e.g. "R (>= 4.1.0)" or "R"
R_ENTRY = re.compile(r"^\s*R\s*(?:\(\s*([<>=!]+)\s*([^)]*?)\s*\))?\s*$")


def read_index(source):
    """The bytes of the index at `source`, a URL or a local path."""
    if re.match(r"^https?://", source):
        with urllib.request.urlopen(source) as response:
            return response.read()
    return pathlib.Path(source).read_bytes()


def packages(index):
    """The fields of each record of a Debian-control-style index."""
    text = gzip.decompress(index).decode("utf-8", errors="replace")
    records = []
    for record in text.split("\n\n"):
        # Continuation lines start with whitespace
        record = re.sub(r"\n[ \t]+", " ", record)
        fields = dict(
            line.split(": ", 1) for line in record.split("\n") if ": " in line
        )
        if "Package" in fields:
            records.append(fields)
    return records


def r_constraints(fields):
    """The (operator, version) pairs that `Depends` puts on R."""
    constraints = []
    for entry in fields.get("Depends", "").split(","):
        match = R_ENTRY.match(entry)
        if match:
            constraints.append((match.group(1), match.group(2)))
    return constraints


def as_numbers(version):
    return tuple(int(number) for number in re.findall(r"\d+", version))


def main(source):
    index = read_index(source)
    records = packages(index)

    n_with_r = 0
    operators = collections.Counter()
    n_components = collections.Counter()
    several = []
    not_dotted = []
    not_at_least = []

    for fields in records:
        constraints = r_constraints(fields)
        if not constraints:
            continue
        n_with_r += 1
        if len(constraints) > 1:
            several.append((fields["Package"], constraints))
        for operator, version in constraints:
            operators[operator] += 1
            if operator is None:
                continue
            n_components[len(version.split("."))] += 1
            if not re.fullmatch(r"\d+(\.\d+)*", version):
                not_dotted.append((fields["Package"], operator, version))
            if operator != ">=":
                not_at_least.append((fields["Package"], operator, version))

    strictest_not_first = [
        (name, constraints)
        for name, constraints in several
        if all(operator in (">=", ">") for operator, _ in constraints)
        and as_numbers(constraints[0][1])
        < max(as_numbers(version) for _, version in constraints)
    ]

    print(f"index:  {source}")
    print(f"sha256: {hashlib.sha256(index).hexdigest()}")
    print()
    print(f"packages:                             {len(records)}")
    print(f"packages with R in Depends:           {n_with_r}")
    print(f"constraints on R:                     {sum(operators.values())}")
    print(f"constraints on R, by operator:        {dict(operators)}")
    print(f"constraints on R, by component count: {dict(sorted(n_components.items()))}")
    print(f"packages with several R entries:      {len(several)}")
    for name, constraints in several:
        print(f"    {name}: {constraints}")
    print(f"  of which strictest is not first:    {len(strictest_not_first)}")
    for name, constraints in strictest_not_first:
        print(f"    {name}: {constraints}")
    print(f"versions not dot-separated numbers:   {len(not_dotted)}")
    for name, operator, version in not_dotted:
        print(f"    {name}: {operator} {version}")
    print(f"operators other than '>=':            {len(not_at_least)}")
    for name, operator, version in not_at_least:
        print(f"    {name}: {operator} {version}")


if __name__ == "__main__":
    main(sys.argv[1])
"""Survey the constraints that CRAN packages put on R itself.
Reads a CRAN package index (the `Depends` field of every package) and reports
which operators are used, which packages bound R more than once, and which
write the R version in a form other than dot-separated numbers.
Usage:
python cran_r_constraints.py <URL or path of a PACKAGES.gz>
"""
import collections
import gzip
import hashlib
import pathlib
import re
import sys
import urllib.request
# An entry of `Depends` that names R itself, e.g. "R (>= 4.1.0)" or "R"
R_ENTRY = re.compile(r"^\s*R\s*(?:\(\s*([<>=!]+)\s*([^)]*?)\s*\))?\s*$")
def read_index(source):
"""The bytes of the index at `source`, a URL or a local path."""
if re.match(r"^https?://", source):
with urllib.request.urlopen(source) as response:
return response.read()
return pathlib.Path(source).read_bytes()
def packages(index):
"""The fields of each record of a Debian-control-style index."""
text = gzip.decompress(index).decode("utf-8", errors="replace")
records = []
for record in text.split("\n\n"):
# Continuation lines start with whitespace
record = re.sub(r"\n[ \t]+", " ", record)
fields = dict(
line.split(": ", 1) for line in record.split("\n") if ": " in line
)
if "Package" in fields:
records.append(fields)
return records
def r_constraints(fields):
"""The (operator, version) pairs that `Depends` puts on R."""
constraints = []
for entry in fields.get("Depends", "").split(","):
match = R_ENTRY.match(entry)
if match:
constraints.append((match.group(1), match.group(2)))
return constraints
def as_numbers(version):
return tuple(int(number) for number in re.findall(r"\d+", version))
def main(source):
index = read_index(source)
records = packages(index)
n_with_r = 0
operators = collections.Counter()
n_components = collections.Counter()
several = []
not_dotted = []
not_at_least = []
for fields in records:
constraints = r_constraints(fields)
if not constraints:
continue
n_with_r += 1
if len(constraints) > 1:
several.append((fields["Package"], constraints))
for operator, version in constraints:
operators[operator] += 1
if operator is None:
continue
n_components[len(version.split("."))] += 1
if not re.fullmatch(r"\d+(\.\d+)*", version):
not_dotted.append((fields["Package"], operator, version))
if operator != ">=":
not_at_least.append((fields["Package"], operator, version))
strictest_not_first = [
(name, constraints)
for name, constraints in several
if all(operator in (">=", ">") for operator, _ in constraints)
and as_numbers(constraints[0][1])
< max(as_numbers(version) for _, version in constraints)
]
print(f"index: {source}")
print(f"sha256: {hashlib.sha256(index).hexdigest()}")
print()
print(f"packages: {len(records)}")
print(f"packages with R in Depends: {n_with_r}")
print(f"constraints on R: {sum(operators.values())}")
print(f"constraints on R, by operator: {dict(operators)}")
print(f"constraints on R, by component count: {dict(sorted(n_components.items()))}")
print(f"packages with several R entries: {len(several)}")
for name, constraints in several:
print(f" {name}: {constraints}")
print(f" of which strictest is not first: {len(strictest_not_first)}")
for name, constraints in strictest_not_first:
print(f" {name}: {constraints}")
print(f"versions not dot-separated numbers: {len(not_dotted)}")
for name, operator, version in not_dotted:
print(f" {name}: {operator} {version}")
print(f"operators other than '>=': {len(not_at_least)}")
for name, operator, version in not_at_least:
print(f" {name}: {operator} {version}")
if __name__ == "__main__":
main(sys.argv[1])
version: 7
platforms:
- name: linux-64
virtual-packages:
- __unix=0=0
- __linux=4.18
- __glibc=2.28
- __archspec=0=x86_64
- name: linux-aarch64
virtual-packages:
- __unix=0=0
- __linux=4.18
- __glibc=2.28
- __archspec=0=aarch64
- name: osx-arm64
virtual-packages:
- __unix=0=0
- __osx=13.0
- __archspec=0=m1
- name: win-64
virtual-packages:
- __win=10.0
- __archspec=0=x86_64
environments:
default:
channels:
- url: https://conda.anaconda.org/conda-forge/
packages:
linux-64:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.5-hd2095e1_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.14.7-hdc7f604_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.4-hcfc3c73_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.7-hcd007b5_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda
linux-aarch64:
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-py311h3512406_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.5-h4154aff_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.7.0-hdaad0be_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpython-3.14.7-hc71fabe_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h399dd60_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_7.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.4-hd6fdeab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.4-he6ad1d5_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.7-hbec3b18_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-ha7194a6_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_hf03c496_4.conda
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h9d15635_7.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda
osx-arm64:
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h4e30115_10.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-py310h579977c_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-23.1.2-h55c6f16_0.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.5-h6111c0a_0.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.7.0-h47dc5ef_1.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_1.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpython-3.14.7-h4311e70_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.4-hca69786_1.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_3.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-he64c551_1.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.4-h55eecbc_0.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.7-h0ae1c2c_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h8b90a29_1.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-hbeba79b_4.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hf451053_7.conda
win-64:
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-h4c7d964_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_10.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.5-hac47afa_0.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.7.0-h3d046cb_1.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_1.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_2.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libpython-3.14.7-h4f90d01_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.4-hf5d6505_1.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_3.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.4-hf411b9b_0.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.7-h53f6dd8_106_cp314.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h967ab96_4.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.5-ha367084_41.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.51.36247-habf1de7_41.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36247-habf1de7_41.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_7.conda
packages:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
build_number: 20
sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9
md5: a9f577daf3de00bca7c3c76c0ecbd1de
depends:
- __glibc >=2.17,<3.0.a0
- libgomp >=7.5.0
constrains:
- openmp_impl <0.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
strong:
- _openmp_mutex >=4.5
size: 28948
timestamp: 1770939786096
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda
sha256: 1a0d382c515ebf55f8ee1f38c8b81bc95af5c2acc42ad53b66bc5df932032f96
md5: e675fabcf81499adc7edf58124fb1e01
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
license: bzip2-1.0.6
license_family: BSD
run_exports:
weak:
- bzip2 >=1.0.8,<2.0a0
size: 257808
timestamp: 1785906269155
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda
sha256: 9f07834f0c546ab14d885ce0366285f61f44e326c0edd1fc63b8294e113ae432
md5: 72a381cbad04f24b1c2a43ef707f45b4
depends:
- __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
license: MIT
license_family: MIT
run_exports:
weak:
- icu >=78.3,<79.0a0
size: 14459115
timestamp: 1786545741408
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda
sha256: 27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1adec
md5: 449500f2c089da11c40f5c21312e3e07
depends:
- __glibc >=2.17,<3.0.a0
- zstd >=1.5.7,<1.6.0a0
constrains:
- binutils_impl_linux-64 2.46.1
license: GPL-3.0-only
license_family: GPL
run_exports: {}
size: 745303
timestamp: 1784214507189
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.5-hd2095e1_0.conda
sha256: 6de73033a7c5f712c9c5a54124e4581e025691029835e5bceaf10a333a7e7bc0
md5: 72cfd2b95b0540247220b42f58a148d7
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=15
constrains:
- expat 2.8.5.*
license: MIT
license_family: MIT
run_exports: {}
size: 77893
timestamp: 1790346247149
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda
sha256: c8c7583ef063bc3c430f1d48298e5ad24f796a35c22ed5b14183325825a61106
md5: 6525a0b06aa4fd390795f0740636a9dd
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=15
license: MIT
license_family: MIT
run_exports:
weak:
- libffi >=3.7.0,<3.8.0a0
size: 68004
timestamp: 1787753412298
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_7.conda
sha256: e031634c3a928f9594eba868bc46ef5230d6571a364a0c63215b06c4563bfcea
md5: 735629b400b70eeab21a2ba8f5b1c2ce
depends:
- __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
constrains:
- libgcc-ng ==16.2.0=*_7
- libgomp 16.2.0 he0feb66_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports: {}
size: 1058444
timestamp: 1790303109576
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_7.conda
sha256: 92a0bb350c7be6a4eedcb4e111c60aefd176018e6b1c009a6e025dbe9bbcd758
md5: d904c7ddd95e026254b4b80808ee9e12
depends:
- __glibc >=2.17,<3.0.a0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports:
strong:
- _openmp_mutex >=4.5
size: 640566
timestamp: 1790303046034
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda
sha256: 9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab
md5: 1390b7c5ac0b1d8e447bc5efa6d3c8c2
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
constrains:
- xz 5.8.3.*
license: 0BSD
run_exports:
weak:
- liblzma >=5.8.3,<6.0a0
size: 112995
timestamp: 1786348617826
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda
sha256: 46820b4a835e175940ae20bec00fdddaff804cda27a1408ab1b95e77a2196437
md5: fcfed1dc5053eb1901b66e7b1fc32588
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
license: BSD-2-Clause
license_family: BSD
run_exports: {}
size: 92759
timestamp: 1786650399772
- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.14.7-hdc7f604_106_cp314.conda
build_number: 106
sha256: 5f879892bd439c3d94f4a97b06c214b9a19c4b92f74d84f0305c6ca1b2b239b2
md5: 28af2158bb8dbb62e55b0af3b44f9d4a
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=15
- libstdcxx >=15
license: Python-2.0
run_exports: {}
size: 10520530
timestamp: 1788383918299
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda
sha256: f20d70da54e5b31dd4a51fb1efeaafafd5ab6dd8d7ac9d1438eaa2526ac4ed3d
md5: e72bbec309c2b0f37823ee7d4fabfcd3
depends:
- __glibc >=2.17,<3.0.a0
- icu >=78.3,<79.0a0
- libgcc >=15
- libzlib >=1.3.2,<2.0a0
license: blessing
run_exports:
weak:
- libsqlite >=3.53.4,<4.0a0
size: 974348
timestamp: 1787051145557
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_7.conda
sha256: fa7018298629fc429971fffd6ecba3d27a7b02e4e890d6a93ea01ffebe8cb745
md5: 9b6707e0caca917fa6ea9ee473f37a5d
depends:
- __glibc >=2.17,<3.0.a0
- libgcc 16.2.0 ha9f2e26_7
constrains:
- libstdcxx-ng ==16.2.0=*_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports: {}
size: 6615436
timestamp: 1790303132935
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.4-hcfc3c73_0.conda
sha256: f34b8d1de9a2bf62476d8608057d9b8a918d97444236dc53a47128f2fae79041
md5: 54a948337e66706380ff24d6b5fde63f
depends:
- libgcc >=15
- __glibc >=2.17,<3.0.a0
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- libuuid >=2.42.4,<3.0a0
size: 34442
timestamp: 1790121449161
- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda
sha256: eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736
md5: 0de0122d9570a8ab637c6b73db268389
depends:
- __glibc >=2.17,<3.0.a0
constrains:
- zlib 1.3.2 *_3
license: Zlib
license_family: Other
run_exports:
weak:
- libzlib >=1.3.2,<2.0a0
size: 63713
timestamp: 1785362952714
- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda
sha256: 5d46557214ed184381dafe835b7c94a474a1c3b307a08a250b1ea4779b44ffb3
md5: ee6c0cd80a60961a1f48aa3e0b91f986
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
license: X11 AND BSD-3-Clause
run_exports:
weak:
- ncurses >=6.6,<7.0a0
size: 911196
timestamp: 1786355078102
- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda
sha256: 4747b2d6a8336f52343bceb8a1ebf41a9e6e665b9d2e3f989972de53a310599e
md5: 16e3034a330cc625f2c685edec60cf4e
depends:
- __glibc >=2.17,<3.0.a0
- ca-certificates
- libgcc >=15
license: Apache-2.0
license_family: Apache
run_exports:
weak:
- openssl >=3.6.4,<4.0a0
size: 3202955
timestamp: 1787698780103
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.7-hcd007b5_106_cp314.conda
build_number: 106
sha256: 4cd05407d6b07d00fd5b6cc78bd2f60ae5e21f777eb26ead82be2e3751c610a1
md5: 56ee91e118243e46bfc0c41e4030d354
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-64 >=2.36.1
- libexpat >=2.8.1,<3.0a0
- libffi >=3.7.0,<3.8.0a0
- libgcc >=15
- liblzma >=5.8.3,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- libpython 3.14.7 hdc7f604_106_cp314
- libsqlite >=3.53.4,<4.0a0
- libuuid >=2.42.3,<3.0a0
- libzlib >=1.3.2,<2.0a0
- ncurses >=6.6,<7.0a0
- openssl >=3.5.8,<4.0a0
- python_abi 3.14.* *_cp314
- readline >=8.3,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
- zstd >=1.5.7,<1.6.0a0
license: Python-2.0
run_exports:
weak:
- python_abi 3.14.* *_cp314
noarch:
- python
size: 26484459
timestamp: 1788383955577
python_site_packages_path: lib/python3.14/site-packages
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda
sha256: 01b3fe073a66e321970d09e04b388708f8cbdca5cdfbfcb7c9eeb470ad10383d
md5: 69c01c781e7c8190bbdaf79e3848c5ca
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=15
- ncurses >=6.6,<7.0a0
license: GPL-3.0-only
license_family: GPL
run_exports:
weak:
- readline >=8.3,<9.0a0
size: 348899
timestamp: 1787033801506
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda
build_number: 104
sha256: a1a241d172c1ccab067ba245206dd048bc3c2d1b84504b53c9468e99adfc16a1
md5: 676a2f9b1c4fcf57b70aa5c65f6c60d0
depends:
- libgcc >=15
- __glibc >=2.17,<3.0.a0
- libzlib >=1.3.2,<2.0a0
constrains:
- xorg-libx11 >=1.8.13,<2.0a0
license: TCL
run_exports:
weak:
- tk >=8.6.13,<8.7.0a0
size: 3566806
timestamp: 1787272857910
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda
sha256: 47d682b9f6d6ec9eb1a6e6c3e75ea6273e899e78fb7fc59f81d39745009fbc60
md5: aa459086047c0e5e27023ab19f8cb86a
depends:
- __glibc >=2.17,<3.0.a0
- libzlib >=1.3.2,<2.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- zstd >=1.5.7,<1.6.0a0
size: 601301
timestamp: 1786599621503
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda
build_number: 20
sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068
md5: 468fd3bb9e1f671d36c2cbc677e56f1d
depends:
- libgomp >=7.5.0
constrains:
- openmp_impl <0.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
strong:
- _openmp_mutex >=4.5
size: 28926
timestamp: 1770939656741
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda
sha256: 24eacc8a20fd7c4616566178562bef7f9344eb4a8700cfc3180fa75a6ff9d39f
md5: fd544ef1c672d645bf78e5819cbb8f91
depends:
- libgcc >=14
license: bzip2-1.0.6
license_family: BSD
run_exports:
weak:
- bzip2 >=1.0.8,<2.0a0
size: 194694
timestamp: 1785906301397
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-py311h3512406_2.conda
sha256: 54d921defd947adb58a90e10203d3bfe6c1f209f5f1a1ad2c6a9f7617f2fb59e
md5: b35bbb1b957440ed742f35fb96eb7f1c
depends:
- libgcc >=14
- libstdcxx >=14
license: MIT
license_family: MIT
run_exports:
weak:
- icu >=78.3,<79.0a0
size: 14688525
timestamp: 1786545779464
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda
sha256: 2c4901f4227b0850328ed0c69f958b30ad2cd18982f7a31c7c1f911827004d08
md5: 489444d0acb2a579d2a002d85a08c059
depends:
- zstd >=1.5.7,<1.6.0a0
constrains:
- binutils_impl_linux-aarch64 2.46.1
license: GPL-3.0-only
license_family: GPL
run_exports: {}
size: 905305
timestamp: 1784214534868
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.5-h4154aff_0.conda
sha256: d155b9ee74abac0865095a66ebb008be967937a6deea6e7666ba01ead4a155fc
md5: e5a973222327d9183c25eddfc3a80828
depends:
- libgcc >=15
constrains:
- expat 2.8.5.*
license: MIT
license_family: MIT
run_exports: {}
size: 79463
timestamp: 1790346233159
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.7.0-hdaad0be_1.conda
sha256: b1879d78b622c5f4817fd6d77fe7ae3ab7b501542e3c2f4ac77198c54c62c189
md5: f9e5b3e446b526b34a7e25ecec08efd9
depends:
- libgcc >=15
license: MIT
license_family: MIT
run_exports:
weak:
- libffi >=3.7.0,<3.8.0a0
size: 63137
timestamp: 1787753382033
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.2.0-h205dda4_7.conda
sha256: eae7a3449d5a3b5351c5427137c076cc3fc826645c7bfc42dc10772b783826f1
md5: 489d5c9dc62265b3f6a57f9a106f1caf
depends:
- _openmp_mutex >=4.5
constrains:
- libgcc-ng ==16.2.0=*_7
- libgomp 16.2.0 h8acb6b2_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports: {}
size: 627793
timestamp: 1790302345214
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.2.0-h8acb6b2_7.conda
sha256: 4406fd67c5beeb99b9372f9bf07aa3e40ca141e337eceebac3ff64aa72799494
md5: 259ded79ac497cfbcf5434540e8b81b6
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports:
strong:
- _openmp_mutex >=4.5
size: 617342
timestamp: 1790302273072
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda
sha256: f760669fd1cea27f689f411c0d5488e26ce50e382c9b63e4ad348f959850124a
md5: e0e6411a60d00186eec7c73f4118ab67
depends:
- libgcc >=14
constrains:
- xz 5.8.3.*
license: 0BSD
run_exports:
weak:
- liblzma >=5.8.3,<6.0a0
size: 125578
timestamp: 1786348561649
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_2.conda
sha256: 5d6621a2229777824386164b40c67ff804fe98dd4165354cf73ee73e282a2adf
md5: eaaaec4776cd8a7b987c4b1782220141
depends:
- libgcc >=14
license: BSD-2-Clause
license_family: BSD
run_exports: {}
size: 113885
timestamp: 1786650485380
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpython-3.14.7-hc71fabe_106_cp314.conda
build_number: 106
sha256: 59abbd9f7980242f80a0e111376f4b5d4e3defebe1aca5d0b36d2e04c9a5c85f
md5: eeb3bec9c10509463d6d5d90ed98fd7c
depends:
- libgcc >=15
- libstdcxx >=15
license: Python-2.0
run_exports: {}
size: 9683680
timestamp: 1788383990335
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h399dd60_1.conda
sha256: fae75e68e9dbc3c90dcf93d4bae6315f1330c95aaf1404a721e8468266c23475
md5: 27e16aa1f45c787aa181549be6f209f4
depends:
- icu >=78.3,<79.0a0
- libgcc >=15
- libzlib >=1.3.2,<2.0a0
license: blessing
run_exports:
weak:
- libsqlite >=3.53.4,<4.0a0
size: 972932
timestamp: 1787051100646
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.2.0-hef695bb_7.conda
sha256: b241a3acfa9cdb1359112864a1241225533c92642de3000d52ae65ef5d3a9786
md5: 6c823668e78160957d1b061ceec15c2c
depends:
- libgcc 16.2.0 h205dda4_7
constrains:
- libstdcxx-ng ==16.2.0=*_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
run_exports: {}
size: 6236630
timestamp: 1790302364054
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.4-hd6fdeab_0.conda
sha256: 4d94770cc7c47eb4a0d7b92f16d7a450506d1a82406d63c987d6208ab2fb8a16
md5: 9d63e86dc027166aaaeb0c99a0a90fd7
depends:
- libgcc >=15
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- libuuid >=2.42.4,<3.0a0
size: 36296
timestamp: 1790121454455
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda
sha256: 76efa6cc9d7e6f5ee3bbca0939f64054af2bdfb3c3632531f8e633cf6c2ea41e
md5: bd534c2fbe56d8c2ea3b2d8f5e12bca8
constrains:
- zlib 1.3.2 *_3
license: Zlib
license_family: Other
run_exports:
weak:
- libzlib >=1.3.2,<2.0a0
size: 70108
timestamp: 1785276540870
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda
sha256: d69a04914139627f0a6bfd19412d6c7f1e37edc896af84a6011e07e8bc1e69fa
md5: c3b4349171ca987ff33a1de61f7b3f96
depends:
- libgcc >=14
license: X11 AND BSD-3-Clause
run_exports:
weak:
- ncurses >=6.6,<7.0a0
size: 955422
timestamp: 1786355019431
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.4-he6ad1d5_0.conda
sha256: a70c05a9baba9b1ce17c7e8b9479029372069b3bf402dbf200bc03696c531bed
md5: 4aa504e081d16263e90c335df5499b4d
depends:
- ca-certificates
- libgcc >=15
license: Apache-2.0
license_family: Apache
run_exports:
weak:
- openssl >=3.6.4,<4.0a0
size: 3712923
timestamp: 1787698545024
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.7-hbec3b18_106_cp314.conda
build_number: 106
sha256: 39af053b358d0a6d53549c8cb7fa33b03da4f8a39e966e12a84d1235bdc7023f
md5: 1005503abb4660c19b44701f92f9e023
depends:
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-aarch64 >=2.36.1
- libexpat >=2.8.1,<3.0a0
- libffi >=3.7.0,<3.8.0a0
- libgcc >=15
- liblzma >=5.8.3,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- libpython 3.14.7 hc71fabe_106_cp314
- libsqlite >=3.53.4,<4.0a0
- libuuid >=2.42.3,<3.0a0
- libzlib >=1.3.2,<2.0a0
- ncurses >=6.6,<7.0a0
- openssl >=3.5.8,<4.0a0
- python_abi 3.14.* *_cp314
- readline >=8.3,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
- zstd >=1.5.7,<1.6.0a0
license: Python-2.0
run_exports:
weak:
- python_abi 3.14.* *_cp314
noarch:
- python
size: 25455002
timestamp: 1788384022687
python_site_packages_path: lib/python3.14/site-packages
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-ha7194a6_1.conda
sha256: 80167dcf73a96b6d0c1bb2298d7b8b9bc21b27cc5bf56979f9c548b49a4d1722
md5: 5b399a7afa10098f2a6b02263181426e
depends:
- libgcc >=15
- ncurses >=6.6,<7.0a0
license: GPL-3.0-only
license_family: GPL
run_exports:
weak:
- readline >=8.3,<9.0a0
size: 364344
timestamp: 1787033761576
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_hf03c496_4.conda
build_number: 104
sha256: a1aa0d0f0b3d539644ff992e6dd0facf950c79df58fc37590ce5be84ff5e3f22
md5: ebaded4b4b74c2cc43a754ded4eed76f
depends:
- libgcc >=15
- libzlib >=1.3.2,<2.0a0
constrains:
- xorg-libx11 >=1.8.13,<2.0a0
license: TCL
run_exports:
weak:
- tk >=8.6.13,<8.7.0a0
size: 3664220
timestamp: 1787272859143
- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h9d15635_7.conda
sha256: 427fd14bcb3b8659796fecc682716617409350fb5a98e5b7b47558a10d1a2fc7
md5: d942e34ac3920ba83f8b2d0169570187
depends:
- libzlib >=1.3.2,<2.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- zstd >=1.5.7,<1.6.0a0
size: 615477
timestamp: 1786599613561
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-h4c7d964_0.conda
sha256: 95e8e74062a5fe5f870ac8c90302b6e89945165fdaed7810606e84ddee6aac12
md5: e27d2ac27b096dc51fedfcf775a53f9b
depends:
- __win
license: ISC
run_exports: {}
size: 132136
timestamp: 1784754918886
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda
sha256: 0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24da6
md5: 0f51e2391ade309db462a55611263e9c
depends:
- __unix
license: ISC
run_exports: {}
size: 131780
timestamp: 1784754889428
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda
build_number: 9
sha256: e7f8e965bbfb98e08feb2365cacdad8bb218fa5b5a0a2752f747287f425f213c
md5: 350d89b50d7de805abf2e63e29dee451
constrains:
- python 3.14.* *_cp314
license: BSD-3-Clause
license_family: BSD
run_exports: {}
size: 6791
timestamp: 1788302824440
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda
sha256: b928c30ddcb0e3f544c6eade8352737e6e610e263276b90232db6a578ef899d8
md5: fcb489df604d100968b737f2cb6076c6
license: LicenseRef-Public-Domain
run_exports: {}
size: 118849
timestamp: 1784250406640
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h4e30115_10.conda
sha256: 8ec22f0ba25cbfc2e64d70cf29459eccd7ffdf6436f6a6ff15bbfef799f7d4f6
md5: b50612e7d190b8061ab4e7dc119cf4d5
depends:
- __osx >=11.0
license: bzip2-1.0.6
license_family: BSD
run_exports:
weak:
- bzip2 >=1.0.8,<2.0a0
size: 124965
timestamp: 1785906749812
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-py310h579977c_2.conda
sha256: 6cdb5dee54c72e56ab189fb3ad33cb28533553d42590e7e831160248f4416a43
md5: a5efc0b42bb8b42e97d0a29ae3e3c187
depends:
- __osx >=11.0
license: MIT
license_family: MIT
run_exports:
weak:
- icu >=78.3,<79.0a0
size: 14070242
timestamp: 1786545847761
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-23.1.2-h55c6f16_0.conda
sha256: 087a610bacee7901d259ef72c6f060d795ab26831bd7541ba75ced786a5a63f9
md5: 01af3f03d850cbab9ae9b86d726a9921
depends:
- __osx >=11.0
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
run_exports: {}
size: 579372
timestamp: 1790163402114
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.5-h6111c0a_0.conda
sha256: 50aa761b83fc7a116ca88fe0cb4cefce5abababb10a926bf8afbafd5c298d102
md5: 5383c550b785bdaafcc4eaf638071a7c
depends:
- __osx >=11.0
constrains:
- expat 2.8.5.*
license: MIT
license_family: MIT
run_exports: {}
size: 69565
timestamp: 1790370026495
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.7.0-h47dc5ef_1.conda
sha256: 2783389a7b9dda04c62cc54c6bbeb03dd3cef24b3fc642715d02a3fa19464a9a
md5: 216bbcc23c11e9695b3db4a8771d76eb
depends:
- __osx >=11.0
license: MIT
license_family: MIT
run_exports:
weak:
- libffi >=3.7.0,<3.8.0a0
size: 43637
timestamp: 1787753403688
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_1.conda
sha256: 23d0630046a3e8b164d8f80f2b74ed2605af2e7050ab9913018056402fae4311
md5: 8ab10323068b107661a4b9a4af84f3b5
depends:
- __osx >=11.0
constrains:
- xz 5.8.3.*
license: 0BSD
run_exports:
weak:
- liblzma >=5.8.3,<6.0a0
size: 91720
timestamp: 1786348695846
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_2.conda
sha256: 04cc136c5a956a73aa14e0a160b5822b0b29714e67b299fa1b1fd16dbcba5366
md5: ff33a4dbd93abc8a798cc4e0e7c8136d
depends:
- __osx >=11.0
license: BSD-2-Clause
license_family: BSD
run_exports: {}
size: 73289
timestamp: 1786651074391
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpython-3.14.7-h4311e70_106_cp314.conda
build_number: 106
sha256: b239028180e1ba2f7daff4053c89e41f7c0f1a3c21bb82f6dcb09384d123ec1f
md5: 4d7a303343eff82e8b92d52c5fd3991a
depends:
- __osx >=11.0
- libcxx >=20
license: Python-2.0
run_exports: {}
size: 1875368
timestamp: 1788383432953
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.4-hca69786_1.conda
sha256: 839b31d4830e896b4d315b551d27f2bb08026bc946df04bcc360d8627c3ba2cd
md5: fde96d40ebe9a9cb34e4122380189ddb
depends:
- __osx >=11.0
- icu >=78.3,<79.0a0
- libzlib >=1.3.2,<2.0a0
license: blessing
run_exports:
weak:
- libsqlite >=3.53.4,<4.0a0
size: 942754
timestamp: 1787051243846
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_3.conda
sha256: a18fa5d5bac452401459f966cf0d872224e8080c4ff93c77e168d43ab42ef9d7
md5: f39288f0ea63ae962e1a2e4f355a0d75
depends:
- __osx >=11.0
constrains:
- zlib 1.3.2 *_3
license: Zlib
license_family: Other
run_exports:
weak:
- libzlib >=1.3.2,<2.0a0
size: 47822
timestamp: 1785277049190
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-he64c551_1.conda
sha256: 7024a48c8c0d0114ed4ab53c76bf9275d50e91ba7cea367a9aead638d3c29c68
md5: 3dfa0d0316dc246cd44937a557de4501
depends:
- __osx >=11.0
license: X11 AND BSD-3-Clause
run_exports:
weak:
- ncurses >=6.6,<7.0a0
size: 804298
timestamp: 1786355189145
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.4-h55eecbc_0.conda
sha256: f23239eacd75c4c50705e68fae1aa3292da473e6a3a4abe2330f1e6afa680704
md5: ae71ab40048c19a389a7dcccb86c2481
depends:
- __osx >=11.0
- ca-certificates
license: Apache-2.0
license_family: Apache
run_exports:
weak:
- openssl >=3.6.4,<4.0a0
size: 3110142
timestamp: 1787698648639
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.7-h0ae1c2c_106_cp314.conda
build_number: 106
sha256: 5ffc8349ca089ec5ac39ad36a095323ad177ebe05cbfc690c1e135560cfd68b7
md5: 5fd37c78250b4f57c2bcf9ad2e54beb1
depends:
- __osx >=11.0
- bzip2 >=1.0.8,<2.0a0
- libexpat >=2.8.1,<3.0a0
- libffi >=3.7.0,<3.8.0a0
- liblzma >=5.8.3,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- libpython 3.14.7 h4311e70_106_cp314
- libsqlite >=3.53.4,<4.0a0
- libzlib >=1.3.2,<2.0a0
- ncurses >=6.6,<7.0a0
- openssl >=3.5.8,<4.0a0
- python_abi 3.14.* *_cp314
- readline >=8.3,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
- zstd >=1.5.7,<1.6.0a0
license: Python-2.0
run_exports:
weak:
- python_abi 3.14.* *_cp314
noarch:
- python
size: 12223441
timestamp: 1788383470498
python_site_packages_path: lib/python3.14/site-packages
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h8b90a29_1.conda
sha256: d6782b430e6dce4fe8c7ac118cd988d5a193eb4a7f60741edfaede58016b6110
md5: 9347fd56a002e6b58946831d48fe62f6
depends:
- __osx >=11.0
- ncurses >=6.6,<7.0a0
license: GPL-3.0-only
license_family: GPL
run_exports:
weak:
- readline >=8.3,<9.0a0
size: 314395
timestamp: 1787033878899
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-hbeba79b_4.conda
sha256: 857d89087ae7f2c328cf256728affcb7343031a148b4af847334d248a9cf564c
md5: 90a01bf394d1c594e0eb9258f967d828
depends:
- __osx >=11.0
- libzlib >=1.3.2,<2.0a0
license: TCL
run_exports:
weak:
- tk >=8.6.13,<8.7.0a0
size: 3342183
timestamp: 1787272852357
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hf451053_7.conda
sha256: da867f5092eb0cb746d353694f0098031fd9817a4ce7d5743121209ae0f406ca
md5: 4ec2684c73812cc2c3d78379384a39cc
depends:
- __osx >=11.0
- libzlib >=1.3.2,<2.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- zstd >=1.5.7,<1.6.0a0
size: 433687
timestamp: 1786599629846
- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_10.conda
sha256: 04767466ee9227c9c57ab2c6503e0149177d34111c7418d2f420297acb1eb229
md5: c3301c058362f340100d91cd8be0393f
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: bzip2-1.0.6
license_family: BSD
run_exports:
weak:
- bzip2 >=1.0.8,<2.0a0
size: 55919
timestamp: 1785906343696
- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.5-hac47afa_0.conda
sha256: 70c73d9fd24ad996f2821d1501adae2ca70984b4e2d8faed76227f348ce86078
md5: 4969128c45f9e71adbb6a1696679ce7f
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
constrains:
- expat 2.8.5.*
license: MIT
license_family: MIT
run_exports: {}
size: 72107
timestamp: 1790346254561
- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.7.0-h3d046cb_1.conda
sha256: 613e8077c5cca5df7fe84ade7d5050301bee3c6c4c450ffe61d34a349ab4f11c
md5: ceb38b0ba900847d8da4289c3c8e5708
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: MIT
license_family: MIT
run_exports:
weak:
- libffi >=3.7.0,<3.8.0a0
size: 49992
timestamp: 1787753517346
- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_1.conda
sha256: d36c4a1e1f80fd08e18a407e03622ff2f34dfdd022da6488ad19603dea19e6d5
md5: 880a0c8549479b198af21ba5dc49b109
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
constrains:
- xz 5.8.3.*
license: 0BSD
run_exports:
weak:
- liblzma >=5.8.3,<6.0a0
size: 105809
timestamp: 1786348717883
- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_2.conda
sha256: f07e451de3db1836b87f7aedf95c8e65cdb06c0e6105329ba24bb5f7b5c75e2a
md5: 5ae92fd6614edd024576e14069d7ad4c
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: BSD-2-Clause
license_family: BSD
run_exports: {}
size: 89109
timestamp: 1786650384519
- conda: https://conda.anaconda.org/conda-forge/win-64/libpython-3.14.7-h4f90d01_106_cp314.conda
build_number: 106
sha256: 95b7bd6fec10031b44b20276e57c11d71cd1095f966aa84c1bba5ece0eea64d2
md5: 2d48db2a15a7b768bb563d2675c99b2c
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: Python-2.0
run_exports: {}
size: 51250
timestamp: 1788384361391
- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.4-hf5d6505_1.conda
sha256: 0a45d7c0f20146fff787a106f8fa187872e309c70975ff8f0936e188914c26ad
md5: a72d495965b144bb7da033642d389047
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: blessing
run_exports:
weak:
- libsqlite >=3.53.4,<4.0a0
size: 1314919
timestamp: 1787051140039
- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_3.conda
sha256: 0629c2cc0404d3bb29d6baa7b4ba62da80797015e86de050db81ea5a07050527
md5: 5d2ff29d465097458cc3ff6569151991
depends:
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
constrains:
- zlib 1.3.2 *_3
license: Zlib
license_family: Other
run_exports:
weak:
- libzlib >=1.3.2,<2.0a0
size: 58529
timestamp: 1785276664143
- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.4-hf411b9b_0.conda
sha256: 9dddb559ba49744d5d94092d8d13cb0567f5c3b3f439f3acf28433d1f4256acc
md5: 73cb1783f47c452be4c309430fbef89f
depends:
- ca-certificates
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
license: Apache-2.0
license_family: Apache
run_exports:
weak:
- openssl >=3.6.4,<4.0a0
size: 9474879
timestamp: 1787699876495
- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.7-h53f6dd8_106_cp314.conda
build_number: 106
sha256: 9fdcb8a5018d91a22484e67ac6c5ae9116f082f953328f43ed4421418740dfb1
md5: df0b471269a379db0262256e332c1e7c
depends:
- bzip2 >=1.0.8,<2.0a0
- libexpat >=2.8.1,<3.0a0
- libffi >=3.7.0,<3.8.0a0
- liblzma >=5.8.3,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- libpython 3.14.7 h4f90d01_106_cp314
- libsqlite >=3.53.4,<4.0a0
- libzlib >=1.3.2,<2.0a0
- openssl >=3.5.8,<4.0a0
- python_abi 3.14.* *_cp314
- tk >=8.6.13,<8.7.0a0
- tzdata
- ucrt >=10.0.20348.0
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
- zstd >=1.5.7,<1.6.0a0
license: Python-2.0
run_exports:
weak:
- python_abi 3.14.* *_cp314
noarch:
- python
size: 18377601
timestamp: 1788384478011
python_site_packages_path: Lib/site-packages
- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h967ab96_4.conda
sha256: f19618a3a82cc483dacf1c70a30367ee7b0c7e71b90f1f80e14feff44fbd3688
md5: dd9eb33c99d352b6356f86964d6040f7
depends:
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
- ucrt >=10.0.20348.0
license: TCL
run_exports:
weak:
- tk >=8.6.13,<8.7.0a0
size: 3782376
timestamp: 1787272860855
- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda
sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5
md5: 71b24316859acd00bdb8b38f5e2ce328
constrains:
- vc14_runtime >=14.29.30037
- vs2015_runtime >=14.29.30037
license: LicenseRef-MicrosoftWindowsSDK10
run_exports: {}
size: 694692
timestamp: 1756385147981
- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.5-ha367084_41.conda
sha256: 35444c55a92e2f7f7ba26bc70f81e56e52344f7d064c0fd4b40a46a58517b79c
md5: aa805b5522c2a98fa286e551a1f48546
depends:
- vc14_runtime >=14.51.36247
track_features:
- vc14
license: BSD-3-Clause
license_family: BSD
run_exports: {}
size: 21383
timestamp: 1785359368566
- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.51.36247-habf1de7_41.conda
sha256: 4e4cb599cdc41bf2109d1464c127b5bcbddf548ce3e322e612afb691338b48f8
md5: ac5333bb3d429361f23adf704cc49a78
depends:
- ucrt >=10.0.20348.0
- vcomp14 14.51.36247 habf1de7_41
constrains:
- vs2015_runtime 14.51.36247.* *_41
license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime
license_family: Proprietary
run_exports: {}
size: 767955
timestamp: 1785359364369
- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36247-habf1de7_41.conda
sha256: 731e043390c9457299484d39e427221fc868a9249540a498a5a4f6456c7744d1
md5: 350bb67a5c8e5f1c53347ac544ab6600
depends:
- ucrt >=10.0.20348.0
constrains:
- vs2015_runtime 14.51.36247.* *_41
license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime
license_family: Proprietary
run_exports:
strong:
- vcomp14 >=14.51.36247
size: 155910
timestamp: 1785359349999
- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_7.conda
sha256: ca7daae4f218a11fab82cc2857f0ea518ec3f46acec60490485347a4c22c6b3e
md5: e4ac308c39d6d0e131154976da67cf3b
depends:
- vc >=14.3,<15
- vc14_runtime >=14.44.35208
- ucrt >=10.0.20348.0
- libzlib >=1.3.2,<2.0a0
license: BSD-3-Clause
license_family: BSD
run_exports:
weak:
- zstd >=1.5.7,<1.6.0a0
size: 387535
timestamp: 1786599623274
[workspace]
name = "cran-r-constraints"
description = "Survey the constraints that CRAN packages put on R itself"
channels = ["conda-forge"]
platforms = ["linux-64", "linux-aarch64", "osx-arm64", "win-64"]
[dependencies]
python = ">=3.14.7,<3.15"
[tasks.survey]
description = "The CRAN index as it is right now"
cmd = "python cran_r_constraints.py https://cloud.r-project.org/src/contrib/PACKAGES.gz"
[tasks.snapshot]
description = " The CRAN index as Posit Package Manager archived it on the given day, e.g. pixi run snapshot 2026-09-29"
args = ["date"]
cmd = "python cran_r_constraints.py https://packagemanager.posit.co/cran/{{ date }}/src/contrib/PACKAGES.gz"
[tasks.start]
depends-on = ["survey"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment