From 865a5bfd442ff0e11366196b186ddf79c2f59268 Mon Sep 17 00:00:00 2001 From: Marius van Niekerk Date: Wed, 11 Oct 2023 17:45:30 -0400 Subject: [PATCH 1/4] Alphabetize the lockfile --- conda_lock/conda_lock.py | 1 - conda_lock/lockfile/__init__.py | 8 ++++++-- conda_lock/lockfile/v2prelim/models.py | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/conda_lock/conda_lock.py b/conda_lock/conda_lock.py index 239e909c7..45d701228 100644 --- a/conda_lock/conda_lock.py +++ b/conda_lock/conda_lock.py @@ -56,7 +56,6 @@ is_micromamba, ) from conda_lock.lockfile import ( - UnknownLockfileVersion, parse_conda_lock_file, write_conda_lock_file, ) diff --git a/conda_lock/lockfile/__init__.py b/conda_lock/lockfile/__init__.py index 65977d853..d1990ceb7 100644 --- a/conda_lock/lockfile/__init__.py +++ b/conda_lock/lockfile/__init__.py @@ -142,11 +142,15 @@ def parse_conda_lock_file(path: pathlib.Path) -> Lockfile: content = yaml.safe_load(f) version = content.pop("version", None) if version == 1: - return lockfile_v1_to_v2(LockfileV1.parse_obj(content)) + lockfile = lockfile_v1_to_v2(LockfileV1.parse_obj(content)) + elif version == 2: + lockfile = Lockfile.parse_obj(content) elif version is None: raise MissingLockfileVersion(f"{path} is missing a version") else: raise UnknownLockfileVersion(f"{path} has unknown version {version}") + lockfile.toposort_inplace() + return lockfile def write_conda_lock_file( @@ -155,7 +159,7 @@ def write_conda_lock_file( metadata_choices: Optional[Collection[MetadataOption]], include_help_text: bool = True, ) -> None: - content.toposort_inplace() + content.alphasort_inplace() with path.open("w") as f: if include_help_text: categories = set(p.category for p in content.package) diff --git a/conda_lock/lockfile/v2prelim/models.py b/conda_lock/lockfile/v2prelim/models.py index 2cc35c26a..2b446f538 100644 --- a/conda_lock/lockfile/v2prelim/models.py +++ b/conda_lock/lockfile/v2prelim/models.py @@ -73,6 +73,9 @@ def __ror__(self, other: "Optional[Lockfile]") -> "Lockfile": def toposort_inplace(self) -> None: self.package = self._toposort(self.package) + def alphasort_inplace(self) -> None: + self.package.sort(key=lambda d: d.key()) + @staticmethod def _toposort( package: List[LockedDependency], update: bool = False From d1a1c9c09fe18b6541c97db20ca26c49a4dc297e Mon Sep 17 00:00:00 2001 From: Ben Mares Date: Mon, 20 Nov 2023 09:56:42 +0100 Subject: [PATCH 2/4] Add test that explicit lockfiles are toposorted --- tests/test_conda_lock.py | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tests/test_conda_lock.py b/tests/test_conda_lock.py index 440da233b..402fa8b0e 100644 --- a/tests/test_conda_lock.py +++ b/tests/test_conda_lock.py @@ -42,6 +42,7 @@ extract_input_hash, main, make_lock_spec, + render_lockfile_for_platform, run_lock, ) from conda_lock.conda_solver import extract_json_object, fake_conda_environment @@ -980,6 +981,62 @@ def test_parse_poetry_invalid_optionals(pyproject_optional_toml: Path): ) +def test_explicit_toposorted() -> None: + """Verify that explicit lockfiles are topologically sorted. + + We write unified lockfiles in alphabetical order. This is okay because we store + the dependency information in the lockfile, so we have the necessary information + to perform topological sorting. However, explicit lockfiles do not store dependency + information, and thus need to be written in topological order. + + Verifying topological ordering is very easy: we just need to make sure that each + package is written after all of its dependencies. + """ + lockfile = parse_conda_lock_file(TEST_DIR / "test-toposort" / "conda-lock.yml") + + # These are the individual lines as they appear in an explicit lockfile file + lines = render_lockfile_for_platform( + lockfile=lockfile, + kind="explicit", + platform="linux-64", + include_dev_dependencies=False, + extras=[], + ) + + # Packages are listed by URL, but we want to check by name. + url_to_name = {package.url: package.name for package in lockfile.package} + # For each package name we need the names of its dependencies + name_to_deps = { + package.name: set(package.dependencies.keys()) for package in lockfile.package + } + + # We do a simulated installation run, and keep track of the packages + # that have been installed so far in installed_names + installed_names = set() + + # Simulate installing each package in the order it appears in the lockfile. + # Verify that each package is installed after all of its dependencies. + for n, line in enumerate(lines): + if not line or line.startswith("#") or line.startswith("@EXPLICIT"): + continue + # Line should have the format url#hash + url = line.split("#")[0] + name = url_to_name[url] + deps = name_to_deps[name] + + # Verify that all dependencies have been simulated-installed + for dep in deps: + if dep.startswith("__"): + # This is a virtual package, so we don't need to check it + continue + assert ( + dep in installed_names + ), f"{n=}, {line=}, {name=}, {dep=}, {installed_names=}" + + # Simulate installing the package + installed_names.add(name) + + def test_run_lock( monkeypatch: "pytest.MonkeyPatch", zlib_environment: Path, conda_exe: str ): From 04cf04c0b00b67f62e32f20d0f4aeaedb4c20f75 Mon Sep 17 00:00:00 2001 From: Ben Mares Date: Mon, 20 Nov 2023 10:02:06 +0100 Subject: [PATCH 3/4] Fix mypy error --- tests/test_conda_lock.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_conda_lock.py b/tests/test_conda_lock.py index 402fa8b0e..30aec861e 100644 --- a/tests/test_conda_lock.py +++ b/tests/test_conda_lock.py @@ -14,7 +14,7 @@ from glob import glob from pathlib import Path -from typing import Any, ContextManager, Dict, List, Tuple, Union +from typing import Any, ContextManager, Dict, List, Set, Tuple, Union from unittest.mock import MagicMock from urllib.parse import urldefrag, urlsplit @@ -1000,7 +1000,7 @@ def test_explicit_toposorted() -> None: kind="explicit", platform="linux-64", include_dev_dependencies=False, - extras=[], + extras=set(), ) # Packages are listed by URL, but we want to check by name. @@ -1012,7 +1012,7 @@ def test_explicit_toposorted() -> None: # We do a simulated installation run, and keep track of the packages # that have been installed so far in installed_names - installed_names = set() + installed_names: Set[str] = set() # Simulate installing each package in the order it appears in the lockfile. # Verify that each package is installed after all of its dependencies. From bb6c7d15df08381215202d6b494630861a8fa93a Mon Sep 17 00:00:00 2001 From: Ben Mares Date: Mon, 20 Nov 2023 12:07:49 +0100 Subject: [PATCH 4/4] Add missing lockfile --- tests/test-explicit-toposorted/conda-lock.yml | 1876 +++++++++++++++++ .../test-explicit-toposorted/environment.yml | 11 + tests/test_conda_lock.py | 4 +- 3 files changed, 1890 insertions(+), 1 deletion(-) create mode 100644 tests/test-explicit-toposorted/conda-lock.yml create mode 100644 tests/test-explicit-toposorted/environment.yml diff --git a/tests/test-explicit-toposorted/conda-lock.yml b/tests/test-explicit-toposorted/conda-lock.yml new file mode 100644 index 000000000..ea244a5f8 --- /dev/null +++ b/tests/test-explicit-toposorted/conda-lock.yml @@ -0,0 +1,1876 @@ +# This lock file was generated by conda-lock (https://github.com/conda/conda-lock). DO NOT EDIT! +# +# A "lock file" contains a concrete list of package versions (with checksums) to be installed. Unlike +# e.g. `conda env create`, the resulting environment will not change as new package versions become +# available, unless you explicitly update the lock file. +# +# Install this environment as "YOURENV" with: +# conda-lock install -n YOURENV --file conda-lock.yml +# To update a single package to the latest version compatible with the version constraints in the source: +# conda-lock lock --lockfile conda-lock.yml --update PACKAGE +# To re-solve the entire environment, e.g. after changing a version constraint in the source file: +# conda-lock -f environment.yml --lockfile conda-lock.yml +version: 1 +metadata: + content_hash: + linux-64: cdf8d679a7bf335690de731d1e9ba558ca2144f51a11bfed31db5c6c991705de + channels: + - url: conda-forge + used_env_vars: [] + platforms: + - linux-64 + sources: + - environment.yml +package: +- name: __glibc + version: '2.17' + manager: conda + platform: linux-64 + dependencies: {} + url: file:///tmp/tmp1z4ph5xs/linux-64/__glibc-2.17-0.tar.bz2 + hash: + md5: '' + category: main + optional: false +- name: _libgcc_mutex + version: '0.1' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + hash: + md5: d7c89558ba9fa0495403155b64376d81 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + category: main + optional: false +- name: _openmp_mutex + version: '4.5' + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + libgomp: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + hash: + md5: 73aaf86a425cc6e73fcf236a5a46396d + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + category: main + optional: false +- name: blosc + version: 1.21.5 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + lz4-c: '>=1.9.3,<1.10.0a0' + snappy: '>=1.1.10,<2.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda + hash: + md5: 009521b7ed97cca25f8f997f9e745976 + sha256: e2b15b017775d1bda8edbb1bc48e545e45364edefa4d926732fc5488cc600731 + category: main + optional: false +- name: bzip2 + version: 1.0.8 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda + hash: + md5: 69b8b6202a07720f448be700e300ccf4 + sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8 + category: main + optional: false +- name: c-ares + version: 1.21.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda + hash: + md5: c06fa0440048270817b9e3142cc661bf + sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1 + category: main + optional: false +- name: ca-certificates + version: 2023.11.17 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda + hash: + md5: 01ffc8d36f9eba0ce0b3c1955fa780ee + sha256: fb4b9f4b7d885002db0b93e22f44b5b03791ef3d4efdc9d0662185a0faafd6b6 + category: main + optional: false +- name: cairo + version: 1.18.0 + manager: conda + platform: linux-64 + dependencies: + fontconfig: '>=2.14.2,<3.0a0' + fonts-conda-ecosystem: '' + freetype: '>=2.12.1,<3.0a0' + icu: '>=73.2,<74.0a0' + libgcc-ng: '>=12' + libglib: '>=2.78.0,<3.0a0' + libpng: '>=1.6.39,<1.7.0a0' + libstdcxx-ng: '>=12' + libxcb: '>=1.15,<1.16.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + pixman: '>=0.42.2,<1.0a0' + xorg-libice: '>=1.1.1,<2.0a0' + xorg-libsm: '>=1.2.4,<2.0a0' + xorg-libx11: '>=1.8.6,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' + xorg-libxrender: '>=0.9.11,<0.10.0a0' + zlib: '' + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda + hash: + md5: f907bb958910dc404647326ca80c263e + sha256: 142e2639a5bc0e99c44d76f4cc8dce9c6a2d87330c4beeabb128832cd871a86e + category: main + optional: false +- name: cfitsio + version: 4.3.0 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libcurl: '>=8.2.0,<9.0a0' + libgcc-ng: '>=12' + libgfortran-ng: '' + libgfortran5: '>=12.3.0' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.0-hbdc6101_0.conda + hash: + md5: 797554b8b7603011e8677884381fbcc5 + sha256: c74938f1ade9b8f37b9fa8cc98a5b9262b325506f41d7492ad1d00146e0f1d08 + category: main + optional: false +- name: expat + version: 2.5.0 + manager: conda + platform: linux-64 + dependencies: + libexpat: 2.5.0 + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda + hash: + md5: 8b9b5aca60558d02ddaa09d599e55920 + sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f + category: main + optional: false +- name: font-ttf-dejavu-sans-mono + version: '2.37' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + hash: + md5: 0c96522c6bdaed4b1566d11387caaf45 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + category: main + optional: false +- name: font-ttf-inconsolata + version: '3.000' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + hash: + md5: 34893075a5c9e55cdafac56607368fc6 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + category: main + optional: false +- name: font-ttf-source-code-pro + version: '2.038' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + hash: + md5: 4d59c254e01d9cde7957100457e2d5fb + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + category: main + optional: false +- name: font-ttf-ubuntu + version: '0.83' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2 + hash: + md5: 19410c3df09dfb12d1206132a1d357c5 + sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e + category: main + optional: false +- name: fontconfig + version: 2.14.2 + manager: conda + platform: linux-64 + dependencies: + expat: '>=2.5.0,<3.0a0' + freetype: '>=2.12.1,<3.0a0' + libgcc-ng: '>=12' + libuuid: '>=2.32.1,<3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + hash: + md5: 0f69b688f52ff6da70bccb7ff7001d1d + sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83 + category: main + optional: false +- name: fonts-conda-ecosystem + version: '1' + manager: conda + platform: linux-64 + dependencies: + fonts-conda-forge: '' + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + hash: + md5: fee5683a3f04bd15cbd8318b096a27ab + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + category: main + optional: false +- name: fonts-conda-forge + version: '1' + manager: conda + platform: linux-64 + dependencies: + font-ttf-dejavu-sans-mono: '' + font-ttf-inconsolata: '' + font-ttf-source-code-pro: '' + font-ttf-ubuntu: '' + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + hash: + md5: f766549260d6815b0c52253f1fb1bb29 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + category: main + optional: false +- name: freetype + version: 2.12.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libpng: '>=1.6.39,<1.7.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + hash: + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + category: main + optional: false +- name: freexl + version: 2.0.0 + manager: conda + platform: linux-64 + dependencies: + libexpat: '>=2.5.0,<3.0a0' + libgcc-ng: '>=12' + libiconv: '>=1.17,<2.0a0' + minizip: '>=4.0.1,<5.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h743c826_0.conda + hash: + md5: 12e6988845706b2cfbc3bc35c9a61a95 + sha256: 9213f60ba710ecfd3632ce47e036775c9f15ce80a6682ff63cbf12d9dddd5382 + category: main + optional: false +- name: gdal + version: 3.8.0 + manager: conda + platform: linux-64 + dependencies: + hdf5: '>=1.14.2,<1.14.3.0a0' + libgcc-ng: '>=12' + libgdal: 3.8.0 + libstdcxx-ng: '>=12' + libxml2: '>=2.11.5,<2.12.0a0' + numpy: '>=1.26.0,<2.0a0' + openssl: '>=3.1.4,<4.0a0' + python: '>=3.12,<3.13.0a0' + python_abi: 3.12.* + url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.0-py312ha5e4baf_4.conda + hash: + md5: d6ae95a57c5030a804dab2849dda40e0 + sha256: fbac0c4cf600d473ecce09443043e33aab64bdaaf12b27597031a87954364e14 + category: main + optional: false +- name: geos + version: 3.12.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.0-h59595ed_0.conda + hash: + md5: 3fdf79ef322c8379ae83be491d805369 + sha256: c80ff0ed71db0d56567ee87df28bc442b596330ac241ab86f488e3139f0e2cae + category: main + optional: false +- name: geotiff + version: 1.7.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libstdcxx-ng: '>=12' + libtiff: '>=4.6.0,<4.7.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + proj: '>=9.3.0,<9.3.1.0a0' + zlib: '' + url: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hf074850_14.conda + hash: + md5: 1d53ee057d8481bd2b4c2c34c8e92aac + sha256: b00958767cb5607bdb3bbcec0b2056b3e48c0f9e34c31ed8ac01c9bd36704dab + category: main + optional: false +- name: gettext + version: 0.21.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2 + hash: + md5: 14947d8770185e5153fdd04d4673ed37 + sha256: 4fcfedc44e4c9a053f0416f9fc6ab6ed50644fca3a761126dbd00d09db1f546a + category: main + optional: false +- name: giflib + version: 5.2.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda + hash: + md5: 96f3b11872ef6fad973eac856cd2624f + sha256: 41ec165704ccce2faa0437f4f53c03c06261a2cc9ff7614828e51427d9261f4b + category: main + optional: false +- name: hdf4 + version: 4.2.15 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda + hash: + md5: bd77f8da987968ec3927990495dc22e4 + sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 + category: main + optional: false +- name: hdf5 + version: 1.14.2 + manager: conda + platform: linux-64 + dependencies: + libaec: '>=1.0.6,<2.0a0' + libcurl: '>=8.2.1,<9.0a0' + libgcc-ng: '>=12' + libgfortran-ng: '' + libgfortran5: '>=12.3.0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.2,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda + hash: + md5: 2de6a9bc8083b49f09b2f6eb28d3ba3c + sha256: f70f18291f912ba019cbb736bb87b6487021154733cd109147a6d9672790b6b8 + category: main + optional: false +- name: icu + version: '73.2' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + hash: + md5: cc47e1facc155f91abd89b11e48e72ff + sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8 + category: main + optional: false +- name: json-c + version: '0.17' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h7ab15ed_0.conda + hash: + md5: 9961b1f100c3b6852bd97c9233d06979 + sha256: 5646496ca07dfa1486d27ed07282967007811dfc63d6394652e87f94166ecae3 + category: main + optional: false +- name: kealib + version: 1.5.2 + manager: conda + platform: linux-64 + dependencies: + hdf5: '>=1.14.2,<1.14.3.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.2-hcd42e92_1.conda + hash: + md5: b04c039f0bd511533a0d8bc8a7b6835e + sha256: 1278aaba7bfd9a143a58a2d5e13296702b6bd77f7b43f6ecace555a55579bdad + category: main + optional: false +- name: keyutils + version: 1.6.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=10.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + hash: + md5: 30186d27e2c9fa62b45fb1476b7200e3 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + category: main + optional: false +- name: krb5 + version: 1.21.2 + manager: conda + platform: linux-64 + dependencies: + keyutils: '>=1.6.1,<2.0a0' + libedit: '>=3.1.20191231,<4.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + openssl: '>=3.1.2,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda + hash: + md5: cd95826dbd331ed1be26bdf401432844 + sha256: 259bfaae731989b252b7d2228c1330ef91b641c9d68ff87dae02cbae682cb3e4 + category: main + optional: false +- name: lcms2 + version: '2.15' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libtiff: '>=4.6.0,<4.7.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hb7c19ff_3.conda + hash: + md5: e96637dd92c5f340215c753a5c9a22d7 + sha256: cc0b2ddab52b20698b26fe8622ebe37e0d462d8691a1f324e7b00f7d904765e3 + category: main + optional: false +- name: ld_impl_linux-64 + version: '2.40' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda + hash: + md5: 7aca3059a1729aa76c597603f10b0dd3 + sha256: f6cc89d887555912d6c61b295d398cff9ec982a3417d38025c45d5dd9b9e79cd + category: main + optional: false +- name: lerc + version: 4.0.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + hash: + md5: 76bbff344f0134279f225174e9064c8f + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + category: main + optional: false +- name: libabseil + version: '20230802.1' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230802.1-cxx17_h59595ed_0.conda + hash: + md5: 2785ddf4cb0e7e743477991d64353947 + sha256: 8729021a93e67bb93b4e73ef0a132499db516accfea11561b667635bcd0507e7 + category: main + optional: false +- name: libaec + version: 1.1.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.2-h59595ed_1.conda + hash: + md5: 127b0be54c1c90760d7fe02ea7a56426 + sha256: fdde15e74dc099ab1083823ec0f615958e53d9a8fae10405af977de251668bea + category: main + optional: false +- name: libarchive + version: 3.7.2 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libgcc-ng: '>=12' + libxml2: '>=2.11.5,<2.12.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + lz4-c: '>=1.9.3,<1.10.0a0' + lzo: '>=2.10,<3.0a0' + openssl: '>=3.1.2,<4.0a0' + xz: '>=5.2.6,<6.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h039dbb9_0.conda + hash: + md5: 611d6c83d1130ea60c916531adfb11db + sha256: b82b9f4a1515877ea65416bf7fd9cc77cae77d7b5977eada2b999ee525a0d5c9 + category: main + optional: false +- name: libblas + version: 3.9.0 + manager: conda + platform: linux-64 + dependencies: + libopenblas: '>=0.3.24,<1.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda + hash: + md5: 420f4e9be59d0dc9133a0f43f7bab3f3 + sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce + category: main + optional: false +- name: libboost-headers + version: 1.82.0 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.82.0-ha770c72_6.conda + hash: + md5: a943dcb8fd22cf23ce901ac84f6538c2 + sha256: c996950b85808115ea833e577a0af2969dbb0378c299560c2b945401a7770823 + category: main + optional: false +- name: libcblas + version: 3.9.0 + manager: conda + platform: linux-64 + dependencies: + libblas: 3.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda + hash: + md5: d12374af44575413fbbd4a217d46ea33 + sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a + category: main + optional: false +- name: libcrc32c + version: 1.1.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.4.0' + libstdcxx-ng: '>=9.4.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + hash: + md5: c965a5aa0d5c1c37ffc62dff36e28400 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + category: main + optional: false +- name: libcurl + version: 8.4.0 + manager: conda + platform: linux-64 + dependencies: + krb5: '>=1.21.2,<1.22.0a0' + libgcc-ng: '>=12' + libnghttp2: '>=1.52.0,<2.0a0' + libssh2: '>=1.11.0,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.3,<4.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda + hash: + md5: 1158ac1d2613b28685644931f11ee807 + sha256: 25f4b6a8827d7b17a66e0bd9b5d194bf9a9e4a46fb14e2ef472fdad4b39426a6 + category: main + optional: false +- name: libdeflate + version: '1.19' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda + hash: + md5: 1635570038840ee3f9c71d22aa5b8b6d + sha256: 985ad27aa0ba7aad82afa88a8ede6a1aacb0aaca950d710f15d85360451e72fd + category: main + optional: false +- name: libedit + version: 3.1.20191231 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=7.5.0' + ncurses: '>=6.2,<7.0.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + hash: + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + category: main + optional: false +- name: libev + version: '4.33' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 + hash: + md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3 + sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9 + category: main + optional: false +- name: libexpat + version: 2.5.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + hash: + md5: 6305a3dd2752c76335295da4e581f2fd + sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3 + category: main + optional: false +- name: libffi + version: 3.4.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.4.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + hash: + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + category: main + optional: false +- name: libgcc-ng + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + _openmp_mutex: '>=4.5' + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda + hash: + md5: 23fdf1fef05baeb7eadc2aed5fb0011f + sha256: 5e88f658e07a30ab41b154b42c59f079b168acfa9551a75bdc972099453f4105 + category: main + optional: false +- name: libgdal + version: 3.8.0 + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + blosc: '>=1.21.5,<2.0a0' + cfitsio: '>=4.3.0,<4.3.1.0a0' + freexl: '>=2.0.0,<3.0a0' + geos: '>=3.12.0,<3.12.1.0a0' + geotiff: '>=1.7.1,<1.8.0a0' + giflib: '>=5.2.1,<5.3.0a0' + hdf4: '>=4.2.15,<4.2.16.0a0' + hdf5: '>=1.14.2,<1.14.3.0a0' + json-c: '>=0.17,<0.18.0a0' + kealib: '>=1.5.2,<1.6.0a0' + lerc: '>=4.0.0,<5.0a0' + libaec: '>=1.1.2,<2.0a0' + libarchive: '>=3.7.2,<3.8.0a0' + libcurl: '>=8.4.0,<9.0a0' + libdeflate: '>=1.19,<1.20.0a0' + libexpat: '>=2.5.0,<3.0a0' + libgcc-ng: '>=12' + libiconv: '>=1.17,<2.0a0' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libkml: '>=1.3.0,<1.4.0a0' + libnetcdf: '>=4.9.2,<4.9.3.0a0' + libpng: '>=1.6.39,<1.7.0a0' + libpq: '>=16.1,<17.0a0' + libspatialite: '>=5.1.0,<5.2.0a0' + libsqlite: '>=3.44.0,<4.0a0' + libstdcxx-ng: '>=12' + libtiff: '>=4.6.0,<4.7.0a0' + libuuid: '>=2.38.1,<3.0a0' + libwebp-base: '>=1.3.2,<2.0a0' + libxml2: '>=2.11.5,<2.12.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + lz4-c: '>=1.9.3,<1.10.0a0' + openjpeg: '>=2.5.0,<3.0a0' + openssl: '>=3.1.4,<4.0a0' + pcre2: '>=10.42,<10.43.0a0' + poppler: '>=23.11.0,<23.12.0a0' + postgresql: '' + proj: '>=9.3.0,<9.3.1.0a0' + tiledb: '>=2.16,<2.17.0a0' + xerces-c: '>=3.2.4,<3.3.0a0' + xz: '>=5.2.6,<6.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.0-h12dd931_4.conda + hash: + md5: 6c55ed78178c9f6b49a5f69d2b39e1f4 + sha256: fb22df87932dae21ee78abfd09d1b1ff75e9649f69ebd58284e0e07ea938b717 + category: main + optional: false +- name: libgfortran-ng + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + libgfortran5: 13.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda + hash: + md5: 73031c79546ad06f1fe62e57fdd021bc + sha256: 5b918950b84605b6865de438757f507b1eff73c96fd562f7022c80028b088c14 + category: main + optional: false +- name: libgfortran5 + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=13.2.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda + hash: + md5: c714d905cdfa0e70200f68b80cc04764 + sha256: 0084a1d29a4f8ee3b8edad80eb6c42e5f0480f054f28cf713fb314bebb347a50 + category: main + optional: false +- name: libglib + version: 2.78.1 + manager: conda + platform: linux-64 + dependencies: + gettext: '>=0.21.1,<1.0a0' + libffi: '>=3.4,<4.0a0' + libgcc-ng: '>=12' + libiconv: '>=1.17,<2.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + pcre2: '>=10.42,<10.43.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda + hash: + md5: 70052d6c1e84643e30ffefb21ab6950f + sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b + category: main + optional: false +- name: libgomp + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: + _libgcc_mutex: '0.1' + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda + hash: + md5: 7124cbb46b13d395bdde68f2d215c989 + sha256: 6ebedee39b6bbbc969715d0d7fa4b381cce67e1139862604ffa393f821c08e81 + category: main + optional: false +- name: libgoogle-cloud + version: 2.12.0 + manager: conda + platform: linux-64 + dependencies: + libabseil: '>=20230802.1,<20230803.0a0' + libcrc32c: '>=1.1.2,<1.2.0a0' + libcurl: '>=8.4.0,<9.0a0' + libgcc-ng: '>=12' + libgrpc: '>=1.59.2,<1.60.0a0' + libprotobuf: '>=4.24.4,<4.24.5.0a0' + libstdcxx-ng: '>=12' + openssl: '>=3.1.4,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-h5206363_4.conda + hash: + md5: b5eb63d2683102be45d17c55021282f6 + sha256: 82a7d211d0df165b073f9e8ba6d789c4b1c7c4882d546ca12d40f201fc3496fc + category: main + optional: false +- name: libgrpc + version: 1.59.3 + manager: conda + platform: linux-64 + dependencies: + c-ares: '>=1.21.0,<2.0a0' + libabseil: '>=20230802.1,<20230803.0a0' + libgcc-ng: '>=12' + libprotobuf: '>=4.24.4,<4.24.5.0a0' + libre2-11: '>=2023.6.2,<2024.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.4,<4.0a0' + re2: '' + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.3-hd6c4280_0.conda + hash: + md5: 896c137eaf0c22f2fef58332eb4a4b83 + sha256: 3f95a2792e565b628cb284de92017a37a1cddc4a3f83453b8f75d9adc9f8cfdd + category: main + optional: false +- name: libiconv + version: '1.17' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=10.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 + hash: + md5: b62b52da46c39ee2bc3c162ac7f1804d + sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7 + category: main + optional: false +- name: libjpeg-turbo + version: 3.0.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + hash: + md5: ea25936bb4080d843790b586850f82b8 + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + category: main + optional: false +- name: libkml + version: 1.3.0 + manager: conda + platform: linux-64 + dependencies: + libboost-headers: '' + libexpat: '>=2.5.0,<3.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + uriparser: '>=0.9.7,<1.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda + hash: + md5: 3eb5f16bcc8a02892199aa63555c731f + sha256: f67fc0be886c7eac14dbce858bfcffbc90a55b598e897e513f0979dd2caad750 + category: main + optional: false +- name: liblapack + version: 3.9.0 + manager: conda + platform: linux-64 + dependencies: + libblas: 3.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda + hash: + md5: 9f100edf65436e3eabc2a51fc00b2c37 + sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878 + category: main + optional: false +- name: libnetcdf + version: 4.9.2 + manager: conda + platform: linux-64 + dependencies: + blosc: '>=1.21.4,<2.0a0' + bzip2: '>=1.0.8,<2.0a0' + hdf4: '>=4.2.15,<4.2.16.0a0' + hdf5: '>=1.14.2,<1.14.3.0a0' + libaec: '>=1.0.6,<2.0a0' + libcurl: '>=8.2.1,<9.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libxml2: '>=2.11.5,<2.12.0a0' + libzip: '>=1.10.1,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.2,<4.0a0' + zlib: '' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h80fb2b6_112.conda + hash: + md5: a19fa6cacf80c8a366572853d5890eb4 + sha256: 305ffc3ecaffce10754e4d057daa9803e8dc86d68b14524a791c7dc5598c1d2f + category: main + optional: false +- name: libnghttp2 + version: 1.58.0 + manager: conda + platform: linux-64 + dependencies: + c-ares: '>=1.21.0,<2.0a0' + libev: '>=4.33,<4.34.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.4,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + hash: + md5: 9b13d5ee90fc9f09d54fd403247342b4 + sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca + category: main + optional: false +- name: libnsl + version: 2.0.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + hash: + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + category: main + optional: false +- name: libopenblas + version: 0.3.24 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libgfortran-ng: '' + libgfortran5: '>=12.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda + hash: + md5: 6e4ef6ca28655124dcde9bd500e44c32 + sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 + category: main + optional: false +- name: libpng + version: 1.6.39 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda + hash: + md5: e1c890aebdebbfbf87e2c917187b4416 + sha256: a32b36d34e4f2490b99bddbc77d01a674d304f667f0e62c89e02c961addef462 + category: main + optional: false +- name: libpq + version: '16.1' + manager: conda + platform: linux-64 + dependencies: + krb5: '>=1.21.2,<1.22.0a0' + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.4,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-hfc447b1_0.conda + hash: + md5: 2b7f1893cf40b4ccdc0230bcd94d5ed9 + sha256: 8c92a8cce329a83cc9e94b19d18200c661957c00cfb464f26237d24730864585 + category: main + optional: false +- name: libprotobuf + version: 4.24.4 + manager: conda + platform: linux-64 + dependencies: + libabseil: '>=20230802.1,<20230803.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.4-hf27288f_0.conda + hash: + md5: 1a0287ab734591ad63603734f923016b + sha256: 3e0f6454190abb27edd2aeb724688ee440de133edb02cbb17d5609ba36aa8be0 + category: main + optional: false +- name: libre2-11 + version: 2023.06.02 + manager: conda + platform: linux-64 + dependencies: + libabseil: '>=20230802.1,<20230803.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.06.02-h7a70373_0.conda + hash: + md5: c0e7eacd9694db3ef5ef2979a7deea70 + sha256: 22b0b2169c80b65665ba0d6418bd5d3d4c7d89915ee0f9613403efe871c27db8 + category: main + optional: false +- name: librttopo + version: 1.1.0 + manager: conda + platform: linux-64 + dependencies: + geos: '>=3.12.0,<3.12.1.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb58d41b_14.conda + hash: + md5: 264f9a3a4ea52c8f4d3e8ae1213a3335 + sha256: a87307e9c8fb446eb7a1698d9ab40e590ba7e55de669b59f5751c48c2b320827 + category: main + optional: false +- name: libspatialite + version: 5.1.0 + manager: conda + platform: linux-64 + dependencies: + freexl: '>=2.0.0,<3.0a0' + geos: '>=3.12.0,<3.12.1.0a0' + libgcc-ng: '>=12' + librttopo: '>=1.1.0,<1.2.0a0' + libsqlite: '>=3.44.0,<4.0a0' + libstdcxx-ng: '>=12' + libxml2: '>=2.11.5,<2.12.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + proj: '>=9.3.0,<9.3.1.0a0' + sqlite: '' + zlib: '' + url: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h090f1da_1.conda + hash: + md5: 9a2d6acaa8ce6d53a150248e7b11165e + sha256: c00eb70e8cf3778bffd04a9551e205e399d16e83a04f55ec392c3163b93d4feb + category: main + optional: false +- name: libsqlite + version: 3.44.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda + hash: + md5: b58e6816d137f3aabf77d341dd5d732b + sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 + category: main + optional: false +- name: libssh2 + version: 1.11.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.1,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + hash: + md5: 1f5a58e686b13bcfde88b93f547d23fe + sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d + category: main + optional: false +- name: libstdcxx-ng + version: 13.2.0 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda + hash: + md5: 937eaed008f6bf2191c5fe76f87755e9 + sha256: 6c6c49efedcc5709a66f19fb6b26b69c6a5245310fd1d9a901fd5e38aaf7f882 + category: main + optional: false +- name: libtiff + version: 4.6.0 + manager: conda + platform: linux-64 + dependencies: + lerc: '>=4.0.0,<5.0a0' + libdeflate: '>=1.19,<1.20.0a0' + libgcc-ng: '>=12' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libstdcxx-ng: '>=12' + libwebp-base: '>=1.3.2,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + xz: '>=5.2.6,<6.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-ha9c0a0a_2.conda + hash: + md5: 55ed21669b2015f77c180feb1dd41930 + sha256: 45158f5fbee7ee3e257e6b9f51b9f1c919ed5518a94a9973fe7fa4764330473e + category: main + optional: false +- name: libuuid + version: 2.38.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + hash: + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + category: main + optional: false +- name: libwebp-base + version: 1.3.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_0.conda + hash: + md5: 30de3fd9b3b602f7473f30e684eeea8c + sha256: 68764a760fa81ef35dacb067fe8ace452bbb41476536a4a147a1051df29525f0 + category: main + optional: false +- name: libxcb + version: '1.15' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + pthread-stubs: '' + xorg-libxau: '' + xorg-libxdmcp: '' + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda + hash: + md5: 33277193f5b92bad9fdd230eb700929c + sha256: a670902f0a3173a466c058d2ac22ca1dd0df0453d3a80e0212815c20a16b0485 + category: main + optional: false +- name: libxml2 + version: 2.11.6 + manager: conda + platform: linux-64 + dependencies: + icu: '>=73.2,<74.0a0' + libgcc-ng: '>=12' + libiconv: '>=1.17,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + xz: '>=5.2.6,<6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.6-h232c23b_0.conda + hash: + md5: 427a3e59d66cb5d145020bd9c6493334 + sha256: e6183d5e57ee48cc1fc4340477c31a6bd8be4d3ba5dded82cbca0d5280591086 + category: main + optional: false +- name: libzip + version: 1.10.1 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.2,<4.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda + hash: + md5: ac79812548e7e8cf61f7b0abdef01d3b + sha256: 84e93f189072dcfcbe77744f19c7e4171523fbecfaba7352e5a23bbe014574c7 + category: main + optional: false +- name: libzlib + version: 1.2.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda + hash: + md5: f36c115f1ee199da648e0597ec2047ad + sha256: 370c7c5893b737596fd6ca0d9190c9715d89d888b8c88537ae1ef168c25e82e4 + category: main + optional: false +- name: lz4-c + version: 1.9.4 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + hash: + md5: 318b08df404f9c9be5712aaa5a6f0bb0 + sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f + category: main + optional: false +- name: lzo + version: '2.10' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2 + hash: + md5: bb14fcb13341b81d5eb386423b9d2bac + sha256: 25d16e6aaa3d0b450e61d0c4fadd7c9fd17f16e2fef09b34507209342d63c9f6 + category: main + optional: false +- name: minizip + version: 4.0.3 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libgcc-ng: '>=12' + libiconv: '>=1.17,<2.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.4,<4.0a0' + xz: '>=5.2.6,<6.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.3-h0ab5242_0.conda + hash: + md5: 3f9b5f4400be3cee11b426a8cd653b7c + sha256: cf33c24fa8375d17fad4e1da631b4c2e8ed9a109480fa45c82fbfa2a7c5bdd41 + category: main + optional: false +- name: ncurses + version: '6.4' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda + hash: + md5: 7dbaa197d7ba6032caf7ae7f32c1efa0 + sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e + category: main + optional: false +- name: nspr + version: '4.35' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda + hash: + md5: da0ec11a6454ae19bff5b02ed881a2b1 + sha256: 8fadeebb2b7369a4f3b2c039a980d419f65c7b18267ba0c62588f9f894396d0c + category: main + optional: false +- name: nss + version: '3.94' + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc-ng: '>=12' + libsqlite: '>=3.43.0,<4.0a0' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + nspr: '>=4.35,<5.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.94-h1d7d5a4_0.conda + hash: + md5: 7caef74bbfa730e014b20f0852068509 + sha256: c9b7910fc554c6550905b9150f4c8230e973ca63f41b42f2c18a49e8aa458e78 + category: main + optional: false +- name: numpy + version: 1.26.0 + manager: conda + platform: linux-64 + dependencies: + libblas: '>=3.9.0,<4.0a0' + libcblas: '>=3.9.0,<4.0a0' + libgcc-ng: '>=12' + liblapack: '>=3.9.0,<4.0a0' + libstdcxx-ng: '>=12' + python: '>=3.12.0rc3,<3.13.0a0' + python_abi: 3.12.* + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py312heda63a1_0.conda + hash: + md5: 9b4f35e4d83e2a8b17868b65beb438d9 + sha256: 83c8770959c096639973dd91dae7001adf8ec4cea374c125388c22314e92cf3a + category: main + optional: false +- name: openjpeg + version: 2.5.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libpng: '>=1.6.39,<1.7.0a0' + libstdcxx-ng: '>=12' + libtiff: '>=4.6.0,<4.7.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda + hash: + md5: 128c25b7fe6a25286a48f3a6a9b5b6f3 + sha256: 9fe91b67289267de68fda485975bb48f0605ac503414dc663b50d8b5f29bc82a + category: main + optional: false +- name: openssl + version: 3.1.4 + manager: conda + platform: linux-64 + dependencies: + ca-certificates: '' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda + hash: + md5: 412ba6938c3e2abaca8b1129ea82e238 + sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 + category: main + optional: false +- name: pcre2 + version: '10.42' + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda + hash: + md5: 679c8961826aa4b50653bce17ee52abe + sha256: 3ca54ff0abcda964af7d4724d389ae20d931159ae1881cfe57ad4b0ab9e6a380 + category: main + optional: false +- name: pip + version: 23.3.1 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + setuptools: '' + wheel: '' + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda + hash: + md5: 2400c0b86889f43aa52067161e1fb108 + sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 + category: main + optional: false +- name: pixman + version: 0.42.2 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda + hash: + md5: 700edd63ccd5fc66b70b1c028cea9a68 + sha256: ae917851474eb3b08812b02c9e945d040808523ec53f828aa74a90b0cdf15f57 + category: main + optional: false +- name: poppler + version: 23.11.0 + manager: conda + platform: linux-64 + dependencies: + cairo: '>=1.18.0,<2.0a0' + fontconfig: '>=2.14.2,<3.0a0' + fonts-conda-ecosystem: '' + freetype: '>=2.12.1,<3.0a0' + lcms2: '>=2.15,<3.0a0' + libcurl: '>=8.4.0,<9.0a0' + libgcc-ng: '>=12' + libglib: '>=2.78.0,<3.0a0' + libiconv: '>=1.17,<2.0a0' + libjpeg-turbo: '>=3.0.0,<4.0a0' + libpng: '>=1.6.39,<1.7.0a0' + libstdcxx-ng: '>=12' + libtiff: '>=4.6.0,<4.7.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + nspr: '>=4.35,<5.0a0' + nss: '>=3.94,<4.0a0' + openjpeg: '>=2.5.0,<3.0a0' + poppler-data: '' + url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.11.0-h590f24d_0.conda + hash: + md5: 671439d8eca2084bb5a75561fff23a85 + sha256: 8050002e01be124efcb82e32e740676f5ed7dfe852f335408554e6dc3b060ad9 + category: main + optional: false +- name: poppler-data + version: 0.4.12 + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda + hash: + md5: d8d7293c5b37f39b2ac32940621c6592 + sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf + category: main + optional: false +- name: postgresql + version: '16.1' + manager: conda + platform: linux-64 + dependencies: + krb5: '>=1.21.2,<1.22.0a0' + libgcc-ng: '>=12' + libpq: '16.1' + libxml2: '>=2.11.5,<2.12.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + openssl: '>=3.1.4,<4.0a0' + readline: '>=8.2,<9.0a0' + tzcode: '' + tzdata: '' + zlib: '' + url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_0.conda + hash: + md5: 1e9ab0760262044fa00814088667e451 + sha256: 74dfb5793a00a0a9e85296ce0944d8af0f71758574b7c8f9e7d5590250441e24 + category: main + optional: false +- name: proj + version: 9.3.0 + manager: conda + platform: linux-64 + dependencies: + libcurl: '>=8.4.0,<9.0a0' + libgcc-ng: '>=12' + libsqlite: '>=3.43.2,<4.0a0' + libstdcxx-ng: '>=12' + libtiff: '>=4.6.0,<4.7.0a0' + sqlite: '' + url: https://conda.anaconda.org/conda-forge/linux-64/proj-9.3.0-h1d62c97_2.conda + hash: + md5: b5e57a0c643da391bef850922963eece + sha256: 252f6c31101719e3d524679e69ae81e6323b93b143e1360169bf50e89386bf24 + category: main + optional: false +- name: pthread-stubs + version: '0.4' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=7.5.0' + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + hash: + md5: 22dad4df6e8630e8dff2428f6f6a7036 + sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff + category: main + optional: false +- name: python + version: 3.12.0 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + ld_impl_linux-64: '>=2.36.1' + libexpat: '>=2.5.0,<3.0a0' + libffi: '>=3.4,<4.0a0' + libgcc-ng: '>=12' + libnsl: '>=2.0.0,<2.1.0a0' + libsqlite: '>=3.43.0,<4.0a0' + libuuid: '>=2.38.1,<3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + ncurses: '>=6.4,<7.0a0' + openssl: '>=3.1.3,<4.0a0' + readline: '>=8.2,<9.0a0' + tk: '>=8.6.13,<8.7.0a0' + tzdata: '' + xz: '>=5.2.6,<6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda + hash: + md5: 7f97faab5bebcc2580f4f299285323da + sha256: 5398ebae6a1ccbfd3f76361eac75f3ac071527a8072627c4bf9008c689034f48 + category: main + optional: false +- name: python_abi + version: '3.12' + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + hash: + md5: dccc2d142812964fcc6abdc97b672dff + sha256: 182a329de10a4165f6e8a3804caf751f918f6ea6176dd4e5abcdae1ed3095bf6 + category: main + optional: false +- name: re2 + version: 2023.06.02 + manager: conda + platform: linux-64 + dependencies: + libre2-11: 2023.06.02 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.06.02-h2873b5e_0.conda + hash: + md5: bb2d5e593ef13fe4aff0bc9440f945ae + sha256: 3e0bfb04b6d43312d711c5b49dbc3c7660b2e6e681ed504b1b322794462a1bcd + category: main + optional: false +- name: readline + version: '8.2' + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + hash: + md5: 47d31b792659ce70f470b5c82fdfb7a4 + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + category: main + optional: false +- name: setuptools + version: 68.2.2 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda + hash: + md5: fc2166155db840c634a1291a5c35a709 + sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7 + category: main + optional: false +- name: snappy + version: 1.1.10 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda + hash: + md5: e6d228cd0bb74a51dd18f5bfce0b4115 + sha256: 02219f2382b4fe39250627dade087a4412d811936a5a445636b7260477164eac + category: main + optional: false +- name: sqlite + version: 3.44.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libsqlite: 3.44.0 + libzlib: '>=1.2.13,<1.3.0a0' + ncurses: '>=6.4,<7.0a0' + readline: '>=8.2,<9.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda + hash: + md5: df56c636df4a98990462d66ac7be2330 + sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb + category: main + optional: false +- name: tiledb + version: 2.16.3 + manager: conda + platform: linux-64 + dependencies: + bzip2: '>=1.0.8,<2.0a0' + libabseil: '>=20230802.0,<20230803.0a0' + libgcc-ng: '>=12' + libgoogle-cloud: '>=2.12.0,<2.13.0a0' + libstdcxx-ng: '>=12' + libxml2: '>=2.11.5,<2.12.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + lz4-c: '>=1.9.3,<1.10.0a0' + openssl: '>=3.1.2,<4.0a0' + zstd: '>=1.5.5,<1.6.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda + hash: + md5: 7de728789b0aba16018f726dc5ddbec2 + sha256: f021df4b9cfd1a54aac87a6c0bac604edc8ffb36d5b2c4aa20bf2d759ae04a11 + category: main + optional: false +- name: tk + version: 8.6.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + hash: + md5: d453b98d9c83e71da0741bb0ff4d76bc + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + category: main + optional: false +- name: tzcode + version: 2023c + manager: conda + platform: linux-64 + dependencies: + __glibc: '>=2.17,<3.0.a0' + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023c-h0b41bf4_0.conda + hash: + md5: 0c0533894f21c3d35697cb8378d390e2 + sha256: 62b0d3eee4260d310f578015305834b8a588377f796e5e290ec267da8a51a027 + category: main + optional: false +- name: tzdata + version: 2023c + manager: conda + platform: linux-64 + dependencies: {} + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda + hash: + md5: 939e3e74d8be4dac89ce83b20de2492a + sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 + category: main + optional: false +- name: uriparser + version: 0.9.7 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-hcb278e6_1.conda + hash: + md5: 2c46deb08ba9b10e90d0a6401ad65deb + sha256: bc7670384fc3e519b376eab25b2c747afe392b243f17e881075231f4a0f2e5a0 + category: main + optional: false +- name: wheel + version: 0.41.3 + manager: conda + platform: linux-64 + dependencies: + python: '>=3.7' + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda + hash: + md5: 3fc026b9c87d091c4b34a6c997324ae8 + sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d + category: main + optional: false +- name: xerces-c + version: 3.2.4 + manager: conda + platform: linux-64 + dependencies: + icu: '>=73.2,<74.0a0' + libcurl: '>=8.2.1,<9.0a0' + libgcc-ng: '>=12' + libnsl: '>=2.0.0,<2.1.0a0' + libstdcxx-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.4-hac6953d_3.conda + hash: + md5: 297e6a75dc1b6a440cd341a85eab8a00 + sha256: faf1c8f0e625466efec442e987737057ca304f1fcf79055da4d9e93e49f14ffa + category: main + optional: false +- name: xorg-kbproto + version: 1.0.7 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + hash: + md5: 4b230e8381279d76131116660f5a241a + sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1 + category: main + optional: false +- name: xorg-libice + version: 1.1.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + hash: + md5: b462a33c0be1421532f28bfe8f4a7514 + sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236 + category: main + optional: false +- name: xorg-libsm + version: 1.2.4 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libuuid: '>=2.38.1,<3.0a0' + xorg-libice: '>=1.1.1,<2.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + hash: + md5: 93ee23f12bc2e684548181256edd2cf6 + sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1 + category: main + optional: false +- name: xorg-libx11 + version: 1.8.7 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libxcb: '>=1.15,<1.16.0a0' + xorg-kbproto: '' + xorg-xextproto: '>=7.3.0,<8.0a0' + xorg-xproto: '' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda + hash: + md5: 49e482d882669206653b095f5206c05b + sha256: 7a02a7beac472ae2759498550b5fc5261bf5be7a9a2b4648a3f67818a7bfefcf + category: main + optional: false +- name: xorg-libxau + version: 1.0.11 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + hash: + md5: 2c80dc38fface310c9bd81b17037fee5 + sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4 + category: main + optional: false +- name: xorg-libxdmcp + version: 1.1.3 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + hash: + md5: be93aabceefa2fac576e971aef407908 + sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77 + category: main + optional: false +- name: xorg-libxext + version: 1.3.4 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + xorg-libx11: '>=1.7.2,<2.0a0' + xorg-xextproto: '' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + hash: + md5: 82b6df12252e6f32402b96dacc656fec + sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249 + category: main + optional: false +- name: xorg-libxrender + version: 0.9.11 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + xorg-libx11: '>=1.8.6,<2.0a0' + xorg-renderproto: '' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + hash: + md5: ed67c36f215b310412b2af935bf3e530 + sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7 + category: main + optional: false +- name: xorg-renderproto + version: 0.11.1 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + hash: + md5: 06feff3d2634e3097ce2fe681474b534 + sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034 + category: main + optional: false +- name: xorg-xextproto + version: 7.3.0 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + hash: + md5: bce9f945da8ad2ae9b1d7165a64d0f87 + sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743 + category: main + optional: false +- name: xorg-xproto + version: 7.0.31 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=9.3.0' + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + hash: + md5: b4a4381d54784606820704f7b5f05a15 + sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d + category: main + optional: false +- name: xz + version: 5.2.6 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + hash: + md5: 2161070d867d1b1204ea749c8eec4ef0 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + category: main + optional: false +- name: zlib + version: 1.2.13 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libzlib: 1.2.13 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda + hash: + md5: 68c34ec6149623be41a1933ab996a209 + sha256: 9887a04d7e7cb14bd2b52fa01858f05a6d7f002c890f618d9fcd864adbfecb1b + category: main + optional: false +- name: zstd + version: 1.5.5 + manager: conda + platform: linux-64 + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda + hash: + md5: 04b88013080254850d6c01ed54810589 + sha256: 607cbeb1a533be98ba96cf5cdf0ddbb101c78019f1fda063261871dad6248609 + category: main + optional: false +- name: annotated-types + version: 0.6.0 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/28/78/d31230046e58c207284c6b2c4e8d96e6d3cb4e52354721b944d3e1ee4aa5/annotated_types-0.6.0-py3-none-any.whl + hash: + sha256: 0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 + category: main + optional: false +- name: pydantic + version: 2.5.1 + manager: pip + platform: linux-64 + dependencies: + annotated-types: '>=0.4.0' + pydantic-core: 2.14.3 + typing-extensions: '>=4.6.1' + url: https://files.pythonhosted.org/packages/e2/2c/9906b7abc337b0250a5634de5396e2f3cb1b837af0616424c2225a65aa80/pydantic-2.5.1-py3-none-any.whl + hash: + sha256: dc5244a8939e0d9a68f1f1b5f550b2e1c879912033b1becbedb315accc75441b + category: main + optional: false +- name: pydantic-core + version: 2.14.3 + manager: pip + platform: linux-64 + dependencies: + typing-extensions: '>=4.6.0,<4.7.0 || >4.7.0' + url: https://files.pythonhosted.org/packages/ef/1e/2875a94ab0c303b5852359c224f8693c809fe3e050b28576767af3acb715/pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + hash: + sha256: f8fc652c354d3362e2932a79d5ac4bbd7170757a41a62c4fe0f057d29f10bebb + category: main + optional: false +- name: typing-extensions + version: 4.8.0 + manager: pip + platform: linux-64 + dependencies: {} + url: https://files.pythonhosted.org/packages/24/21/7d397a4b7934ff4028987914ac1044d3b7d52712f30e2ac7a2ae5bc86dd0/typing_extensions-4.8.0-py3-none-any.whl + hash: + sha256: 8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 + category: main + optional: false diff --git a/tests/test-explicit-toposorted/environment.yml b/tests/test-explicit-toposorted/environment.yml new file mode 100644 index 000000000..d714fa008 --- /dev/null +++ b/tests/test-explicit-toposorted/environment.yml @@ -0,0 +1,11 @@ +# Run conda-lock on this to pre-generate the alphabetized lockfile +# on which we will test toposort. While we include a pip section here for +# good measure, we won't actually test it since pip does its own toposort. +channels: + - conda-forge +platforms: + - linux-64 +dependencies: + - gdal + - pip: + - pydantic diff --git a/tests/test_conda_lock.py b/tests/test_conda_lock.py index 79e2200c4..482d645d3 100644 --- a/tests/test_conda_lock.py +++ b/tests/test_conda_lock.py @@ -1003,7 +1003,9 @@ def test_explicit_toposorted() -> None: Verifying topological ordering is very easy: we just need to make sure that each package is written after all of its dependencies. """ - lockfile = parse_conda_lock_file(TEST_DIR / "test-toposort" / "conda-lock.yml") + lockfile = parse_conda_lock_file( + TEST_DIR / "test-explicit-toposorted" / "conda-lock.yml" + ) # These are the individual lines as they appear in an explicit lockfile file lines = render_lockfile_for_platform(