From 1eb09858b6749b505f142e01b9c35b4847a8273f Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Mon, 12 Feb 2024 10:40:10 -0800 Subject: [PATCH 01/31] chore: bump version to 1.2.10.dev0 (#155) * update workflows to include develop branch --- .github/workflows/main.yml | 1 + .github/workflows/pymake-gcc.yml | 1 + .github/workflows/pymake-linting-install.yml | 2 +- .github/workflows/pymake-requests.yml | 1 + .github/workflows/pymake-rtd.yml | 1 + README.md | 2 +- pymake/config.py | 4 ++-- 7 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 20d107a..84a0f0b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - master + - develop jobs: pymakeCI-os-intel: diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml index 68af526..9b4d909 100644 --- a/.github/workflows/pymake-gcc.yml +++ b/.github/workflows/pymake-gcc.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - master + - develop jobs: pymakeCI-os-gcc: diff --git a/.github/workflows/pymake-linting-install.yml b/.github/workflows/pymake-linting-install.yml index 2c79b7b..fdd66be 100644 --- a/.github/workflows/pymake-linting-install.yml +++ b/.github/workflows/pymake-linting-install.yml @@ -6,7 +6,7 @@ on: push: pull_request: branches: - - master + - develop jobs: diff --git a/.github/workflows/pymake-requests.yml b/.github/workflows/pymake-requests.yml index e889fbc..7418fcc 100644 --- a/.github/workflows/pymake-requests.yml +++ b/.github/workflows/pymake-requests.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - master + - develop jobs: pymakeCI-requests: diff --git a/.github/workflows/pymake-rtd.yml b/.github/workflows/pymake-rtd.yml index 49e6f8d..65907cc 100644 --- a/.github/workflows/pymake-rtd.yml +++ b/.github/workflows/pymake-rtd.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - master + - develop jobs: pymake_rtd: diff --git a/README.md b/README.md index e0daf37..5f732e0 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Python package for building MODFLOW-based programs from source files. -### Version 1.2.9.dev0 +### Version 1.2.10.dev0 [![PyPI Version](https://img.shields.io/pypi/v/mfpymake.png)](https://pypi.python.org/pypi/mfpymake) [![Anaconda Version](https://anaconda.org/conda-forge/mfpymake/badges/version.svg)](https://anaconda.org/conda-forge/mfpymake) diff --git a/pymake/config.py b/pymake/config.py index b1f377a..e54f09b 100644 --- a/pymake/config.py +++ b/pymake/config.py @@ -1,6 +1,6 @@ __author__ = "Joseph D. Hughes" -__date__ = "February 11, 2024" -__version__ = "1.2.9" +__date__ = "February 12, 2024" +__version__ = "1.2.10.dev0" __maintainer__ = "Joseph D. Hughes" __email__ = "jdhughes@usgs.gov" __status__ = "Production" From 71427c30dc966c254333012d31a1c9767a1f8c11 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Tue, 13 Feb 2024 17:32:18 -0600 Subject: [PATCH 02/31] update(mf6): v6.4.4 (#157) --- pymake/utils/_usgs_src_update.py | 2 ++ pymake/utils/usgsprograms.txt | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pymake/utils/_usgs_src_update.py b/pymake/utils/_usgs_src_update.py index 0bca9ac..6a6f666 100644 --- a/pymake/utils/_usgs_src_update.py +++ b/pymake/utils/_usgs_src_update.py @@ -887,6 +887,8 @@ def _update_mf6_external_dependencies( "Distributed/MpiRunControl.F90", "Distributed/MpiWorld.f90", "Solution/ParallelSolution.f90", + "Distributed/MpiUnitCache.f90", + "Distributed/MpiMessageCache.f90", ) for file in parallel_files: path = srcdir / file diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index 4af573d..2ba0795 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -1,7 +1,7 @@ target , version, current, url , dirname , srcdir , standard_switch, double_switch, shared_object -mf6 , 6.4.3 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.3/mf6.4.3_linux.zip , mf6.4.3_linux , src , True , False , False -zbud6 , 6.4.3 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.3/mf6.4.3_linux.zip , mf6.4.3_linux , utils/zonebudget/src, True , False , False -libmf6 , 6.4.3 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.3/mf6.4.3_linux.zip , mf6.4.3_linux , srcbmi , True , False , True +mf6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , src , True , False , False +zbud6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , utils/zonebudget/src, True , False , False +libmf6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , srcbmi , True , False , True mp7 , 7.2.001, True , https://water.usgs.gov/water-resources/software/MODPATH/modpath_7_2_001.zip , modpath_7_2_001 , source , True , False , False mt3dms , 5.3.0 , True , https://github.com/MODFLOW-USGS/mt3dms/releases/download/2.0/mt3dms-2.0.zip , mt3dms-2.0 , true-binary , True , False , False mt3dusgs , 1.1.0 , True , https://water.usgs.gov/water-resources/software/MT3D-USGS/mt3dusgs1.1.0.zip , mt3dusgs1.1.0 , src , True , False , False From 3ab2ddc0c9c9f3ec9dd44b892ee0d55766d9b671 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Tue, 13 Feb 2024 20:22:47 -0600 Subject: [PATCH 03/31] feat(cli): add --double option to make-program (#156) --- autotest/test_cli_cmds.py | 15 +++++++++++++++ docs/build_apps.md | 33 +++++++++++++++++---------------- pymake/cmds/build.py | 33 ++++++++++++++------------------- pymake/pymake_build_apps.py | 29 ++++++++++++++--------------- pymake/utils/usgsprograms.py | 4 ++-- 5 files changed, 62 insertions(+), 52 deletions(-) diff --git a/autotest/test_cli_cmds.py b/autotest/test_cli_cmds.py index b82aaf4..661bd72 100644 --- a/autotest/test_cli_cmds.py +++ b/autotest/test_cli_cmds.py @@ -53,6 +53,21 @@ def test_make_program(function_tmpdir, target: str) -> None: run_cli_cmd(cmd) +@flaky(max_runs=RERUNS) +@pytest.mark.dependency(name="make_program") +@pytest.mark.base +def test_make_program_double(function_tmpdir) -> None: + cmd = [ + "make-program", + "mf2005", + "--double", + "--verbose", + "--appdir", + str(function_tmpdir), + ] + run_cli_cmd(cmd) + + @pytest.mark.dependency(name="make_program_all") @pytest.mark.schedule def test_make_program_all(module_tmpdir) -> None: diff --git a/docs/build_apps.md b/docs/build_apps.md index 12b15b9..62b89df 100644 --- a/docs/build_apps.md +++ b/docs/build_apps.md @@ -7,33 +7,31 @@ and options can be determined by executing: ```console $ make-program --help -usage: make-program [-h] [--release_precision] - [-fc {ifort,mpiifort,gfortran,none}] - [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] [-dr] - [-ff FFLAGS] [-cf CFLAGS] [-ad APPDIR] [-v] [--keep] - [--zip ZIP] [--meson] +usage: make-program [-h] [-fc {ifort,mpiifort,gfortran,none}] + [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] + [-dbl] [-dr] [-ff FFLAGS] [-cf CFLAGS] [-ad APPDIR] [-v] + [--keep] [--zip ZIP] [--meson] targets Download and build USGS MODFLOW and related programs. positional arguments: - targets Program(s) to build. Options: crt, gridgen, libmf6, - mf2000, mf2005, mf6, mflgr, mfnwt, mfusg, mfusg_gsi, - mp6, mp7, mt3dms, mt3dusgs, sutra, swtv4, triangle, - vs2dt, zbud6, zonbud3, zonbudusg, :. Specifying the - target to be ':' will build all of the programs. + targets Program(s) to build. Options: crt, gridgen, gsflow, + libmf6, mf2000, mf2005, mf6, mflgr, mfnwt, mfusg, + mfusg_gsi, mp6, mp7, mt3dms, mt3dusgs, sutra, swtv4, + triangle, vs2dt, zbud6, zonbud3, zonbudusg, :. + Specifying the target to be ':' will build all of the + programs. Multiple targets can be specified by + separating individual targets by a comma (i.e., + mf6,zbud6). -optional arguments: +options: -h, --help show this help message and exit - --release_precision If release_precision is False, then the release - precision version will be compiled along with a double - precision version of the program for programs where - the standard_switch and double_switch in - usgsprograms.txt is True. default is True. -fc {ifort,mpiifort,gfortran,none} Fortran compiler to use. (default is gfortran) -cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none} C/C++ compiler to use. (default is gcc) + -dbl, --double Force double precision. (default is False) -dr, --dryrun Do not actually compile. Files will be deleted, if --makeclean is used. Does not work yet for ifort. (default is False) @@ -64,6 +62,9 @@ Examples: Download and compile triangle in the ./temp subdirectory: $ make-program triangle --appdir temp + Download and compile double precision versions of mf2005 and mfusg + $ make-program mf2005,mfusg --double + Download and compile all programs in the ./temp subdirectory: $ make-program : --appdir temp diff --git a/pymake/cmds/build.py b/pymake/cmds/build.py index 7d2a723..297674d 100755 --- a/pymake/cmds/build.py +++ b/pymake/cmds/build.py @@ -17,27 +17,33 @@ "targets", "appdir", "verbose", - "release_precision", "fc", "cc", "fflags", "cflags", + "double", "verbose", "zip", "keep", "dryrun", "meson", ) + +# command arguments (sys.argv) to pop from ARGS COM_ARG_KEYS = ( "fc", "cc", "fflags", "cflags", + "double", "zip", "keep", "dryrun", ) +# ARGS to keep and pass to build_apps() +KEEP_ARG_KEYS = ("double",) + def main() -> None: """Command line interface @@ -60,6 +66,9 @@ def main() -> None: Download and compile triangle in the ./temp subdirectory: $ {prog} triangle --appdir temp + Download and compile double precision versions of mf2005 and mfusg + $ {prog} mf2005,mfusg --double + Download and compile all programs in the ./temp subdirectory: $ {prog} : --appdir temp """ @@ -75,16 +84,8 @@ def main() -> None: "Program(s) to build. Options:\n " + ", ".join(all_targets) + ". Specifying the target to be ':' will " - + "build all of the programs." - ) - - release_precision_help = ( - "If release_precision is False, then the " - + "release precision version will be compiled " - + "along with a double precision version of " - + "the program for programs where the standard_" - + "switch and double_switch in " - + "usgsprograms.txt is True. default is True." + + "build all of the programs. Multiple targets can be specified " + + "by separating individual targets by a comma (i.e., mf6,zbud6)." ) # command line arguments specific to make-program @@ -96,13 +97,6 @@ def main() -> None: "choices": None, "action": None, }, - "release_precision": { - "tag": ("--release_precision",), - "help": release_precision_help, - "default": False, - "choices": None, - "action": "store_true", - }, } # add standard command line arguments to parser dictionary for make-program @@ -138,7 +132,8 @@ def main() -> None: # delete arguments that are used by Pymake() class in build_apps for key in arg_key_pop: - del args[key] + if key not in KEEP_ARG_KEYS: + del args[key] # remove args from command line arguments for key in com_arg_pop: diff --git a/pymake/pymake_build_apps.py b/pymake/pymake_build_apps.py index a76e526..95e48ee 100644 --- a/pymake/pymake_build_apps.py +++ b/pymake/pymake_build_apps.py @@ -41,7 +41,7 @@ def build_apps( download_dir=None, appdir=None, verbose=None, - release_precision=True, + double=False, meson=False, mesondir=".", clean=True, @@ -52,19 +52,15 @@ def build_apps( ---------- targets : str or list of str targets to build. If targets is None, all current targets will - be build. Default is None + be built. Default is None pymake_object : Pymake() Pymake object created outside of build_apps download_dir : str download directory path appdir : str target path - release_precision : bool - boolean indicating if only the release precision version should be - build. If release_precision is False, then the release precision - version will be compiled along with a double precision version of - the program for programs where the standard_switch and double_switch - in usgsprograms.txt is True. default is True. + double : bool + force double precision. (default is False) meson : bool boolean indicating that the executable should be built using the meson build system. (default is False) @@ -92,7 +88,7 @@ def build_apps( targets = usgs_program_data.get_keys(current=True) else: if isinstance(targets, str): - targets = [targets] + targets = targets.split(",") code_dict = {} @@ -221,16 +217,19 @@ def build_apps( ) # determine if single, double, or both should be built - precision = usgs_program_data.get_precision(target) + prog_precision = usgs_program_data.get_precision(target) # just build the first precision in precision list if - # standard_precision is True - if release_precision: - precision = precision[0:1] + # reset prog_precision if double + if double: + prog_precision = ["double"] - for double in precision: + for precision_str in prog_precision: # set double flag - pmobj.double = double + if precision_str == "double": + pmobj.double = True + else: + pmobj.double = False # determine if the target should be built build_target = pmobj.set_build_target_bool( diff --git a/pymake/utils/usgsprograms.py b/pymake/utils/usgsprograms.py index 23bfba6..792149c 100644 --- a/pymake/utils/usgsprograms.py +++ b/pymake/utils/usgsprograms.py @@ -248,9 +248,9 @@ def get_precision(key): target = usgs_program_data().get_target(key) precision = [] if target.standard_switch: - precision.append(False) + precision.append("default") if target.double_switch: - precision.append(True) + precision.append("double") return precision @staticmethod From 7c3f779d3859b6f5b117e24c7b75ff52bf49a333 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 14 Feb 2024 16:42:09 -0500 Subject: [PATCH 04/31] fix(_usgs_src_update.py): fix function lookup in _build_replace() (#158) * replace functions are keyed by name as appears in usgsprograms.txt * lookup did not account for 'dbl' or 'd' appended to program name --- pymake/utils/_usgs_src_update.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pymake/utils/_usgs_src_update.py b/pymake/utils/_usgs_src_update.py index 6a6f666..0850ea4 100644 --- a/pymake/utils/_usgs_src_update.py +++ b/pymake/utils/_usgs_src_update.py @@ -10,6 +10,8 @@ import types from typing import Union +from ..utils.usgsprograms import usgs_program_data + def _get_function_names(module, select_name=None): """Get a dictionary of functions available in a user-specified source file. @@ -63,9 +65,13 @@ def _build_replace(targets): if isinstance(targets, str): targets = [targets] - # remove exe extension from targets + # remove exe extension from targets, as well as + # d (debug) and dbl (double precision) suffixes for idx, target in enumerate(targets): - targets[idx] = pl.Path(target).with_suffix("").name + tgt = pl.Path(target).with_suffix("").name.replace("dbl", "") + if tgt.endswith("d") and tgt[:-1] in usgs_program_data.get_keys(): + tgt = tgt[:-1] + targets[idx] = tgt # get a dictionary of update functions funcs = _get_function_names(sys.modules[__name__], select_name="_update_") From e229973230b81aca4f76cc42d9045bf3fdeb2e05 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Wed, 14 Feb 2024 16:57:22 -0600 Subject: [PATCH 05/31] feat(zip): allow appending to an existing zip file using --keep (#159) --- pymake/pymake.py | 35 +++++++++++++++++++--------- pymake/utils/download.py | 50 ++++++++++++++++++++++++++++------------ 2 files changed, 59 insertions(+), 26 deletions(-) diff --git a/pymake/pymake.py b/pymake/pymake.py index ac84737..22ab447 100644 --- a/pymake/pymake.py +++ b/pymake/pymake.py @@ -54,6 +54,7 @@ import argparse import os +import pathlib as pl import shutil import sys import time @@ -256,29 +257,41 @@ def compress_targets(self): targets.append(target) # add code.json - if "code.json" not in targets: - targets.append("code.json") + if pl.Path("code.json").exists(): + if "code.json" not in targets: + targets.append("code.json") # delete the zip file if it exists if os.path.exists(zip_pth): - if self.verbose: - msg = f"Deleting existing zipfile '{zip_pth}'" - print(msg) - os.remove(zip_pth) + if self.keep: + if self.verbose: + print( + "Appending files to existing " + + f"zipfile '{zip_pth}'" + ) + else: + if self.verbose: + print(f"Deleting existing zipfile '{zip_pth}'") + os.remove(zip_pth) # print a message describing the zip process if self.verbose: - msg = ( + print( f"Compressing files in '{appdir}' " + f"directory to zip file '{zip_pth}'" ) - print(msg) for idx, target in enumerate(targets): - msg = f" {idx + 1:>3d}. adding " + f"'{target}' to zipfile" - print(msg) + print( + f" {idx + 1:>3d}. adding " + f"'{target}' to zipfile" + ) # compress the compiled executables - if not zip_all(zip_pth, dir_pths=appdir, patterns=targets): + if not zip_all( + zip_pth, + dir_pths=appdir, + patterns=targets, + append=self.keep, + ): self.returncode = 1 return diff --git a/pymake/utils/download.py b/pymake/utils/download.py index c11df28..ea6d921 100644 --- a/pymake/utils/download.py +++ b/pymake/utils/download.py @@ -95,7 +95,13 @@ def extractall(self, path=None, members=None, pwd=None): self.extract(zipinfo, path, pwd) @staticmethod - def compressall(path, file_pths=None, dir_pths=None, patterns=None): + def compressall( + path, + file_pths=None, + dir_pths=None, + patterns=None, + append=False, + ): """Compress selected files or files in selected directories. Parameters @@ -108,6 +114,9 @@ def compressall(path, file_pths=None, dir_pths=None, patterns=None): directory paths to include in the output zip file (default is None) patterns : str or list of str file patterns to include in the output zip file (default is None) + append : bool + boolean indicating if file paths should be appended to an existing + zip file Returns ------- @@ -159,21 +168,19 @@ def compressall(path, file_pths=None, dir_pths=None, patterns=None): tlist.append(file_pth) file_pths = tlist - # write the zipfile + if append and pl.Path(path).exists(): + mode = "a" + else: + mode = "w" + success = True if len(file_pths) > 0: - zf = ZipFile(path, "w", ZIP_DEFLATED) - - # write files to zip file - for file_pth in file_pths: - arcname = os.path.basename(file_pth) - zf.write(file_pth, arcname=arcname) - - # close the zip file - zf.close() + with ZipFile(path, mode=mode, compression=ZIP_DEFLATED) as zf: + for file_pth in file_pths: + arcname = os.path.basename(file_pth) + zf.write(file_pth, arcname=arcname) else: - msg = "No files to add to the zip file" - print(msg) + print("No files to add to the zip file") success = False return success @@ -471,7 +478,13 @@ def download_and_unzip( return success -def zip_all(path, file_pths=None, dir_pths=None, patterns=None): +def zip_all( + path, + file_pths=None, + dir_pths=None, + patterns=None, + append=False, +): """Compress all files in the user-provided list of file paths and directory paths that match the provided file patterns. @@ -487,13 +500,20 @@ def zip_all(path, file_pths=None, dir_pths=None, patterns=None): patterns : str or list file pattern or list of file patterns s to match to when creating a list of files that will be compressed + append : bool + boolean indicating if file paths should be appended to an existing + zip file Returns ------- """ return pymakeZipFile.compressall( - path, file_pths=file_pths, dir_pths=dir_pths, patterns=patterns + path, + file_pths=file_pths, + dir_pths=dir_pths, + patterns=patterns, + append=append, ) From a913477c52cb664b2d82ad4076af0c3eacff5088 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Thu, 15 Feb 2024 11:12:24 -0600 Subject: [PATCH 06/31] readme: update readme and installation.md (#160) --- .github/workflows/main.yml | 6 ++++++ .github/workflows/pymake-gcc.yml | 6 ++++++ .github/workflows/pymake-linting-install.yml | 1 + .github/workflows/pymake-requests.yml | 6 ++++++ README.md | 6 +++--- docs/installation.md | 6 +++--- 6 files changed, 25 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 84a0f0b..8c81ad3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,10 +4,16 @@ on: schedule: - cron: '0 7 * * *' # run at 7 AM UTC every day push: + paths-ignore: + - 'README.md' + - 'docs/*.md' pull_request: branches: - master - develop + paths-ignore: + - 'README.md' + - 'docs/*.md' jobs: pymakeCI-os-intel: diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml index 9b4d909..81d2a82 100644 --- a/.github/workflows/pymake-gcc.yml +++ b/.github/workflows/pymake-gcc.yml @@ -4,10 +4,16 @@ on: schedule: - cron: '0 7 * * *' # run at 7 AM UTC every day push: + paths-ignore: + - 'README.md' + - 'docs/*.md' pull_request: branches: - master - develop + paths-ignore: + - 'README.md' + - 'docs/*.md' jobs: pymakeCI-os-gcc: diff --git a/.github/workflows/pymake-linting-install.yml b/.github/workflows/pymake-linting-install.yml index fdd66be..dca94a2 100644 --- a/.github/workflows/pymake-linting-install.yml +++ b/.github/workflows/pymake-linting-install.yml @@ -6,6 +6,7 @@ on: push: pull_request: branches: + - master - develop jobs: diff --git a/.github/workflows/pymake-requests.yml b/.github/workflows/pymake-requests.yml index 7418fcc..e1bdc1c 100644 --- a/.github/workflows/pymake-requests.yml +++ b/.github/workflows/pymake-requests.yml @@ -4,10 +4,16 @@ on: schedule: - cron: '0 7 * * *' # run at 7 AM UTC every day push: + paths-ignore: + - 'README.md' + - 'docs/*.md' pull_request: branches: - master - develop + paths-ignore: + - 'README.md' + - 'docs/*.md' jobs: pymakeCI-requests: diff --git a/README.md b/README.md index 5f732e0..6351c29 100644 --- a/README.md +++ b/README.md @@ -230,14 +230,14 @@ To install pymake using conda type: conda install -c conda-forge mfpymake ``` -To install pymake directly from the git repository type: +To install the latest pymake release directly from the git repository type: ``` pip install https://github.com/modflowpy/pymake/zipball/master ``` -To update your version of pymake with the latest from the git repository type: +To update your version of pymake with the latest development version from the git repository type: ``` -pip install https://github.com/modflowpy/pymake/zipball/master --upgrade +pip install https://github.com/modflowpy/pymake/zipball/develop --upgrade ``` diff --git a/docs/installation.md b/docs/installation.md index ad7f101..6775b1f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -6,13 +6,13 @@ To install a stable version from PyPI: pip install mfpymake ``` -To install pymake directly from the git repository type: +To install the latest pymake release directly from the git repository type: ``` pip install https://github.com/modflowpy/pymake/zipball/master ``` -To update your version of pymake with the latest from the git repository type: +To update your version of pymake with the latest development version from the git repository type: ``` -pip install https://github.com/modflowpy/pymake/zipball/master --upgrade +pip install https://github.com/modflowpy/pymake/zipball/develop --upgrade From 0685bc81fd4b47965ef853754d09f95681902664 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Thu, 15 Feb 2024 14:00:30 -0600 Subject: [PATCH 07/31] refactor(pymake): limit zip file targets to new targets with --keep (#161) * remove ifort switches that issue warnings * write absolute zip file path if using --zip argument --- pymake/pymake.py | 21 ++++++++++++++++++--- pymake/utils/_compiler_switches.py | 3 --- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/pymake/pymake.py b/pymake/pymake.py index 22ab447..0c85933 100644 --- a/pymake/pymake.py +++ b/pymake/pymake.py @@ -58,6 +58,7 @@ import shutil import sys import time +from zipfile import ZipFile from .config import __description__ from .pymake_base import main @@ -267,18 +268,32 @@ def compress_targets(self): if self.verbose: print( "Appending files to existing " - + f"zipfile '{zip_pth}'" + + f"zipfile '{pl.Path(zip_pth).resolve()}'" ) + with ZipFile( + zip_pth, + mode="r", + ) as zf: + available_file_paths = zf.namelist() + pop_list = [] + for target in targets: + if target in available_file_paths: + pop_list.append(target) + for target in pop_list: + targets.remove(target) else: if self.verbose: - print(f"Deleting existing zipfile '{zip_pth}'") + print( + "Deleting existing zipfile " + + f"'{pl.Path(zip_pth).resolve()}'" + ) os.remove(zip_pth) # print a message describing the zip process if self.verbose: print( f"Compressing files in '{appdir}' " - + f"directory to zip file '{zip_pth}'" + + f"directory to zip file '{pl.Path(zip_pth).resolve()}'" ) for idx, target in enumerate(targets): print( diff --git a/pymake/utils/_compiler_switches.py b/pymake/utils/_compiler_switches.py index 21c7ad7..975d862 100644 --- a/pymake/utils/_compiler_switches.py +++ b/pymake/utils/_compiler_switches.py @@ -339,9 +339,6 @@ def _get_fortran_flags( "fpe:0", "traceback", "nologo", - "Qdiag-disable:7416", - "Qdiag-disable:7025", - "Qdiag-disable:5268", ] if debug: flags += ["debug:full", "Zi"] From 22756c54ab20f1f0b2f250c6477ea4dff35fbfcd Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Fri, 16 Feb 2024 12:04:37 -0600 Subject: [PATCH 08/31] feat(double): restore double switch in usgsprograms.txt (#162) * make direct evaluation of target names --- pymake/pymake.py | 6 ++++-- pymake/utils/usgsprograms.txt | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pymake/pymake.py b/pymake/pymake.py index 0c85933..05206aa 100644 --- a/pymake/pymake.py +++ b/pymake/pymake.py @@ -277,8 +277,10 @@ def compress_targets(self): available_file_paths = zf.namelist() pop_list = [] for target in targets: - if target in available_file_paths: - pop_list.append(target) + for temp_path in available_file_paths: + if target == temp_path: + pop_list.append(target) + break for target in pop_list: targets.remove(target) else: diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index 2ba0795..190241c 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -11,15 +11,15 @@ gridgen , 1.0.02 , True , https://water.usgs.gov/water-resources/software crt , 1.3.1 , True , https://water.usgs.gov/ogw/CRT/CRT_1.3.1.zip , CRT_1.3.1 , SOURCE , True , False , False sutra , 3.0 , True , https://water.usgs.gov/water-resources/software/sutra/SUTRA_3_0_0.zip , SutraSuite , SUTRA_3_0/source , True , False , False mf2000 , 1.19.01, True , https://water.usgs.gov/nrp/gwsoftware/modflow2000/mf2k1_19_01.tar.gz , mf2k.1_19 , src , True , False , False -mf2005 , 1.12.00, True , https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip , MF2005.1_12u , src , True , False , False -mfusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src , True , False , False +mf2005 , 1.12.00, True , https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip , MF2005.1_12u , src , True , True , False +mfusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src , True , True , False zonbudusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src/zonebudusg , True , False , False swtv4 , 4.00.05, True , https://water.usgs.gov/water-resources/software/SEAWAT/swt_v4_00_05.zip , swt_v4_00_05 , source , False , True , False mp6 , 6.0.1 , True , https://water.usgs.gov/water-resources/software/MODPATH/modpath.6_0_01.zip , modpath.6_0 , src , True , False , False -mflgr , 2.0.0 , True , https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip , mflgr.2_0 , src , True , False , False +mflgr , 2.0.0 , True , https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip , mflgr.2_0 , src , True , True , False zonbud3 , 3.01 , True , https://water.usgs.gov/water-resources/software/ZONEBUDGET/zonbud3_01.exe , Zonbud.3_01 , Src , True , False , False mfnwt1.1.4 , 1.1.4 , False , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.1.4.zip , MODFLOW-NWT_1.1.4 , src , True , False , False -mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , False , False +mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , True , False mfusg_gsi , 2.2.2 , True , https://www.gsienv.com/wp-content/uploads/2023/11/USG-Transport_Version-2.2.2.zip , USGT-v2-2-2-Source , . , True , False , False gsflow , 2.2.1 , True , https://water.usgs.gov/water-resources/software/gsflow/gsflow_2.2.1_linux.zip , gsflow_2.2.1 , src , True , False , False mf6dev , 6.5.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False From 5f1064a7878ff0b41360fd99e0f7ef3969ee8279 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Fri, 16 Feb 2024 16:56:28 -0600 Subject: [PATCH 09/31] feat(code.json): add features to control code.json output (#163) * feat(code.json): add capability to control code.json output * remove implicit double_switch for mf2005, mfnwt, mflgr, and mfusg * add capability to limit code.json to executables in appdir (--partial_json) * add capability to zip generated code.json (--zip ZIP) * add capability to update double_switch based on executable names in appdir --- docs/build_apps.md | 2 +- pymake/cmds/createjson.py | 23 ++++++++++++++- pymake/pymake_parser.py | 2 +- pymake/utils/usgsprograms.py | 54 +++++++++++++++++++++++++++++++++-- pymake/utils/usgsprograms.txt | 8 +++--- 5 files changed, 80 insertions(+), 9 deletions(-) diff --git a/docs/build_apps.md b/docs/build_apps.md index 62b89df..820c0ce 100644 --- a/docs/build_apps.md +++ b/docs/build_apps.md @@ -51,7 +51,7 @@ options: (default is None) -v, --verbose Verbose output to terminal. (default is False) --keep Keep existing executable. (default is False) - --zip ZIP Zip built executable. (default is False) + --zip ZIP Zip built executable. (default is None) --meson Use meson to build executable. (default is False) Examples: diff --git a/pymake/cmds/createjson.py b/pymake/cmds/createjson.py index e82c948..4e76376 100755 --- a/pymake/cmds/createjson.py +++ b/pymake/cmds/createjson.py @@ -96,12 +96,29 @@ def main() -> None: "choices": None, "action": "store_true", }, + "partial_json": { + "tag": ("--partial_json",), + "help": "Create a partial code.json based on targets in the " + + "parent path for the code.json file (FPTH). " + + "Default is False.", + "default": False, + "choices": None, + "action": "store_true", + }, + "zip": { + "tag": ("--zip",), + "help": "Zip code.json into ZIP. (default is None)", + "default": None, + "choices": None, + "action": None, + "type": (str, Path), + }, "verbose": { "tag": ( "-v", "--verbose", ), - "help": "boolean for verbose output to terminal. Default is True.", + "help": "Verbose output to terminal. Default is False.", "default": False, "choices": None, "action": "store_true", @@ -116,6 +133,10 @@ def main() -> None: # define args args = vars(parser_args) + # clean up zip argument in args + args["zip_path"] = args["zip"] + del args["zip"] + # run build_apps try: usgs_program_data.export_json(**args) diff --git a/pymake/pymake_parser.py b/pymake/pymake_parser.py index a9425ba..33f1b12 100644 --- a/pymake/pymake_parser.py +++ b/pymake/pymake_parser.py @@ -232,7 +232,7 @@ def _get_standard_arg_dict(): }, "zip": { "tag": ("--zip",), - "help": "Zip built executable. (default is False)", + "help": "Zip built executable. (default is None)", "default": None, "choices": None, "action": None, diff --git a/pymake/utils/usgsprograms.py b/pymake/utils/usgsprograms.py index 792149c..f8d3e29 100644 --- a/pymake/utils/usgsprograms.py +++ b/pymake/utils/usgsprograms.py @@ -25,7 +25,7 @@ import pathlib as pl import sys -from .download import _request_header +from .download import _request_header, zip_all class dotdict(dict): @@ -302,6 +302,8 @@ def export_json( current=False, update=True, write_markdown=False, + partial_json=False, + zip_path=None, verbose=False, ): """Export USGS program data as a json file. @@ -326,6 +328,11 @@ def export_json( If True, write markdown file that includes the target name, version, and the last-modified date of the download asset (url). Default is False. + partial_json : bool + Create a partial code.json based on targets in the parent path + for the code.json file. Default is False. + zip_path : str + Zip code.json into zip_path. (default is None) verbose : bool boolean for verbose output to terminal @@ -405,7 +412,36 @@ def export_json( ] = datetime_str break - # export file + if partial_json: + # find targets in appdir + found_targets = [] + for appdir_file in pl.Path(appdir).iterdir(): + temp_target = appdir_file.stem + if temp_target.endswith("dbl"): + temp_target = temp_target.replace("dbl", "") + if temp_target in prog_data.keys(): + if temp_target not in found_targets: + found_targets.append(temp_target) + + # determine which targets to remove + pop_list = [] + for target in prog_data.keys(): + if target not in found_targets: + pop_list.append(target) + + # remove unused targets + for target in pop_list: + del prog_data[target] + + # update double_switch based on executables in appdir + for appdir_file in pl.Path(appdir).iterdir(): + temp_target = appdir_file.stem + if temp_target.endswith("dbl"): + temp_target = temp_target.replace("dbl", "") + if temp_target in prog_data.keys(): + prog_data[temp_target]["double_switch"] = True + + # export program data to a json file try: with open(file_name, "w") as file_obj: json.dump(prog_data, file_obj, indent=4, sort_keys=True) @@ -440,6 +476,20 @@ def export_json( line += "\n" file_obj.write(line) + # zip code.json + if prog_data is not None and zip_path is not None: + if verbose: + print( + "Compressing code.json to " + + f"zipfile '{pl.Path(zip_path).resolve()}'" + ) + zip_all( + zip_path, + dir_pths=appdir, + patterns=["code.json"], + append=True, + ) + return @staticmethod diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index 190241c..900c56b 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -11,15 +11,15 @@ gridgen , 1.0.02 , True , https://water.usgs.gov/water-resources/software crt , 1.3.1 , True , https://water.usgs.gov/ogw/CRT/CRT_1.3.1.zip , CRT_1.3.1 , SOURCE , True , False , False sutra , 3.0 , True , https://water.usgs.gov/water-resources/software/sutra/SUTRA_3_0_0.zip , SutraSuite , SUTRA_3_0/source , True , False , False mf2000 , 1.19.01, True , https://water.usgs.gov/nrp/gwsoftware/modflow2000/mf2k1_19_01.tar.gz , mf2k.1_19 , src , True , False , False -mf2005 , 1.12.00, True , https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip , MF2005.1_12u , src , True , True , False -mfusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src , True , True , False +mf2005 , 1.12.00, True , https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip , MF2005.1_12u , src , True , False , False +mfusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src , True , False , False zonbudusg , 1.5 , True , https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip , mfusg1_5 , src/zonebudusg , True , False , False swtv4 , 4.00.05, True , https://water.usgs.gov/water-resources/software/SEAWAT/swt_v4_00_05.zip , swt_v4_00_05 , source , False , True , False mp6 , 6.0.1 , True , https://water.usgs.gov/water-resources/software/MODPATH/modpath.6_0_01.zip , modpath.6_0 , src , True , False , False -mflgr , 2.0.0 , True , https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip , mflgr.2_0 , src , True , True , False +mflgr , 2.0.0 , True , https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip , mflgr.2_0 , src , True , False , False zonbud3 , 3.01 , True , https://water.usgs.gov/water-resources/software/ZONEBUDGET/zonbud3_01.exe , Zonbud.3_01 , Src , True , False , False mfnwt1.1.4 , 1.1.4 , False , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.1.4.zip , MODFLOW-NWT_1.1.4 , src , True , False , False -mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , True , False +mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , False , False mfusg_gsi , 2.2.2 , True , https://www.gsienv.com/wp-content/uploads/2023/11/USG-Transport_Version-2.2.2.zip , USGT-v2-2-2-Source , . , True , False , False gsflow , 2.2.1 , True , https://water.usgs.gov/water-resources/software/gsflow/gsflow_2.2.1_linux.zip , gsflow_2.2.1 , src , True , False , False mf6dev , 6.5.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False From 4b1563d0957c64c8c7e985fa0ee362421305ba4f Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Fri, 16 Feb 2024 20:50:08 -0600 Subject: [PATCH 10/31] feat(export_json): add appdir kwarg (#164) * add appdir kwarg to be consistent with make-program * add --appdir option to make-code-json cli to be consistent with make-program --- pymake/cmds/createjson.py | 8 ++++++++ pymake/utils/usgsprograms.py | 29 +++++++++++++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/pymake/cmds/createjson.py b/pymake/cmds/createjson.py index 4e76376..248486f 100755 --- a/pymake/cmds/createjson.py +++ b/pymake/cmds/createjson.py @@ -55,6 +55,14 @@ def main() -> None: "choices": None, "action": None, }, + "appdir": { + "tag": ("-ad", "--appdir"), + "help": "code.json path that overides FPTH defined path, " + + "Default is None.", + "default": None, + "choices": None, + "action": None, + }, "prog_data": { "tag": ("--prog_data",), "help": "User-specified program database. If prog_data is None, " diff --git a/pymake/utils/usgsprograms.py b/pymake/utils/usgsprograms.py index f8d3e29..3bce981 100644 --- a/pymake/utils/usgsprograms.py +++ b/pymake/utils/usgsprograms.py @@ -298,6 +298,7 @@ def list_targets(current=False): @staticmethod def export_json( fpth="code.json", + appdir=None, prog_data=None, current=False, update=True, @@ -312,6 +313,9 @@ def export_json( ---------- fpth : str Path for the json file to be created. Default is "code.json" + appdir : str + path for code.json. Overides code.json path defined in fpth. + Default is None. prog_data : dict User-specified program database. If prog_data is None, it will be created from the USGS program database @@ -357,15 +361,20 @@ def export_json( print(f" {idx + 1:>2d}: {key}") # process the passed file path into appdir and file_name - appdir = pl.Path(".") - file_name = pl.Path(fpth) - if file_name.parent != str(appdir): - appdir = file_name.parent - file_name = file_name.name + if appdir is None: + appdir = pl.Path(".") + file_name = pl.Path(fpth) + if file_name.parent != str(appdir): + appdir = file_name.parent + file_name = file_name.name + else: + for idx, argv in enumerate(sys.argv): + if argv in ("--appdir", "-ad"): + appdir = pl.Path(sys.argv[idx + 1]) else: - for idx, argv in enumerate(sys.argv): - if argv in ("--appdir", "-ad"): - appdir = pl.Path(sys.argv[idx + 1]) + if isinstance(appdir, str): + appdir = pl.Path(appdir) + file_name = pl.Path(fpth).name if str(appdir) != ".": appdir.mkdir(parents=True, exist_ok=True) @@ -441,7 +450,7 @@ def export_json( if temp_target in prog_data.keys(): prog_data[temp_target]["double_switch"] = True - # export program data to a json file + # write code.json to root directory - used by executables CI try: with open(file_name, "w") as file_obj: json.dump(prog_data, file_obj, indent=4, sort_keys=True) @@ -449,7 +458,7 @@ def export_json( msg = f'could not export json file "{file_name}"' raise IOError(msg) - # write code.json + # write code.json if appdir is not the root directory if str(appdir) != ".": dst = appdir / file_name with open(dst, "w") as file_obj: From 77a159e38cf49362b1c8c1a9eddb71df18257a88 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Fri, 8 Mar 2024 14:06:06 -0500 Subject: [PATCH 11/31] chore(dependencies): restrict yanked pytest version 8.1.0 (#165) * also use fortran-lang/setup-fortran@main to get the latest gcc fix --- .github/workflows/pymake-gcc.yml | 6 +++++- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml index 81d2a82..f6163ce 100644 --- a/.github/workflows/pymake-gcc.yml +++ b/.github/workflows/pymake-gcc.yml @@ -58,13 +58,17 @@ jobs: pip install ".[test]" - name: Setup GNU Fortran - uses: fortran-lang/setup-fortran@v1 + uses: fortran-lang/setup-fortran@main with: compiler: gcc version: ${{ matrix.gcc }} - name: Download examples for pytest runs run: .github/common/download-examples.sh + + - name: Install make + if: runner.os == 'Windows' + run: choco install make - name: Run pytest working-directory: ./autotest diff --git a/pyproject.toml b/pyproject.toml index 5b30fda..83cc097 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,7 @@ test = [ "coverage", "flaky", "filelock", - "pytest", + "pytest!=8.1.0", "pytest-benchmark", "pytest-cov", "pytest-dependency", From b8c5588d7f3d54cbc61f42a82802a1c447eb688f Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 31 Mar 2024 20:28:44 -0400 Subject: [PATCH 12/31] chore(formatting): switch to ruff (#166) * replace isort/black/pylint/flake8 * keep settings mostly identical * run ruff check --select NPY201, no changes needed --- .flake8 | 29 -------------- .github/workflows/pymake-linting-install.yml | 33 +++------------- .gitignore | 5 ++- pymake/cmds/build.py | 1 + pymake/cmds/createjson.py | 1 + pymake/cmds/mfpymakecli.py | 1 + pymake/utils/_Popen_wrapper.py | 4 +- pymake/utils/_compiler_language_files.py | 3 +- pymake/utils/usgsprograms.py | 6 +-- pyproject.toml | 40 ++++++++++++-------- 10 files changed, 42 insertions(+), 81 deletions(-) delete mode 100644 .flake8 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index fdfc7cc..0000000 --- a/.flake8 +++ /dev/null @@ -1,29 +0,0 @@ -[flake8] -exclude = - .git - __pycache__ - build - dist - examples - autotest -ignore = - # https://flake8.pycqa.org/en/latest/user/error-codes.html - F401, - # https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes - # Indentation - E121, E122, E126, E127, E128, - # Whitespace - E203, E221, E222, E226, E231, E241, - # Import - E402, - # Line length - E501, E502, - # Statement - E722, E741, - # Whitespace warning - W291, W292, W293, - # Blank line warning - W391, - # Line break warning - W503, W504 -statistics = True \ No newline at end of file diff --git a/.github/workflows/pymake-linting-install.yml b/.github/workflows/pymake-linting-install.yml index dca94a2..ca256e9 100644 --- a/.github/workflows/pymake-linting-install.yml +++ b/.github/workflows/pymake-linting-install.yml @@ -29,34 +29,13 @@ jobs: uses: ts-graphviz/setup-graphviz@v2 - name: Install packages - run: | - pip install requests pydotplus appdirs numpy matplotlib - pip install https://github.com/modflowpy/flopy/zipball/develop - pip install pylint flake8 black + run: pip install ".[lint]" - - name: Run isort - run: | - echo "if isort check fails update isort using" - echo " pip install isort --upgrade" - echo "and run" - echo " isort ./flopy" - echo "and then commit the changes." - isort --verbose --check --diff ./pymake - - - name: Run black - run: | - echo "if black check fails update black using" - echo " pip install black --upgrade" - echo "and run" - echo " black ./flopy" - echo "and then commit the changes." - black --check --diff ./pymake - - - name: Run flake8 - run: flake8 --count --show-source --exit-zero ./pymake - - - name: Run pylint - run: pylint --jobs=2 --errors-only --exit-zero ./pymake + - name: Lint + run: ruff check . + + - name: Check format + run: ruff format . --check pymake_setup: name: standard installation diff --git a/.gitignore b/.gitignore index 437620c..79b8dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -78,4 +78,7 @@ docs/source/ venv/ # mac files -**/.DS_Store \ No newline at end of file +**/.DS_Store + +# environment files +**.env \ No newline at end of file diff --git a/pymake/cmds/build.py b/pymake/cmds/build.py index 297674d..3a8a82a 100755 --- a/pymake/cmds/build.py +++ b/pymake/cmds/build.py @@ -4,6 +4,7 @@ This script originates from pymake: https://github.com/modflowpy/pymake It requires Python 3.6 or later, and has no dependencies. """ + import sys from pathlib import Path diff --git a/pymake/cmds/createjson.py b/pymake/cmds/createjson.py index 248486f..97d1343 100755 --- a/pymake/cmds/createjson.py +++ b/pymake/cmds/createjson.py @@ -4,6 +4,7 @@ This script originates from pymake: https://github.com/modflowpy/pymake It requires Python 3.6 or later, and has no dependencies. """ + import sys from pathlib import Path diff --git a/pymake/cmds/mfpymakecli.py b/pymake/cmds/mfpymakecli.py index 3ec5fd0..bd2150c 100755 --- a/pymake/cmds/mfpymakecli.py +++ b/pymake/cmds/mfpymakecli.py @@ -4,6 +4,7 @@ This script originates from pymake: https://github.com/modflowpy/pymake It requires Python 3.6 or later, and has no dependencies. """ + import sys from pathlib import Path diff --git a/pymake/utils/_Popen_wrapper.py b/pymake/utils/_Popen_wrapper.py index e9d2a15..18eb8df 100644 --- a/pymake/utils/_Popen_wrapper.py +++ b/pymake/utils/_Popen_wrapper.py @@ -1,6 +1,4 @@ -"""Private functions for running pymake commands using Popen - -""" +"""Private functions for running pymake commands using Popen""" import sys from subprocess import PIPE, STDOUT, Popen diff --git a/pymake/utils/_compiler_language_files.py b/pymake/utils/_compiler_language_files.py index bc51088..c2d3fe2 100644 --- a/pymake/utils/_compiler_language_files.py +++ b/pymake/utils/_compiler_language_files.py @@ -1,5 +1,4 @@ -"""Private functions for processing c/c++ and fortran files -""" +"""Private functions for processing c/c++ and fortran files""" import os diff --git a/pymake/utils/usgsprograms.py b/pymake/utils/usgsprograms.py index 3bce981..9e6f6ba 100644 --- a/pymake/utils/usgsprograms.py +++ b/pymake/utils/usgsprograms.py @@ -416,9 +416,9 @@ def export_json( tzinfo=datetime.timezone.utc ) datetime_str = datetime_obj_utc.strftime("%m/%d/%Y") - prog_data[target][ - "url_download_asset_date" - ] = datetime_str + prog_data[target]["url_download_asset_date"] = ( + datetime_str + ) break if partial_json: diff --git a/pyproject.toml b/pyproject.toml index 83cc097..436b4e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,11 +41,8 @@ dependencies = [ dynamic = ["version", "readme"] [project.optional-dependencies] lint = [ - "black", "cffconvert", - "flake8", - "isort", - "pylint", + "ruff", ] test = [ "mfpymake[lint]", @@ -90,18 +87,29 @@ include = ["pymake", "pymake.*"] [tool.setuptools.package-data] "pymake.utils" = ["usgsprograms.txt"] -[tool.black] -line-length = 79 -target_version = ["py38"] +[tool.setuptools_scm] +fallback_version = "999" -[tool.flynt] +[tool.ruff] line-length = 79 -verbose = true - -[tool.isort] -profile = "black" -src_paths = ["pymake", "autotest", "examples"] -line_length = 79 +target-version = "py38" +include = [ + "pyproject.toml", + "pymake/**/*.py", + "autotest/**/*.py", + "docs/**/*.py", +] -[tool.setuptools_scm] -fallback_version = "999" +[tool.ruff.lint] +ignore = [ + "E402", # module level import not at top of file + "E712", # Avoid equality comparisons to `True` + "E722", # do not use bare `except` + "E741", # ambiguous variable name + "F401", # unused import + "F403", # unable to detect undefined names (star imports) + "F524", # `.format` missing argument(s) for placeholder(s) + "F811", # Redefinition of unused variable + "F821", # undefined name TODO FIXME + "F841", # local variable assigned but never used +] From 5a727a11a1411adb4db8aa4e119053692572b962 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Thu, 4 Apr 2024 16:04:15 -0400 Subject: [PATCH 13/31] chore(format): update rules, split long comment lines (#167) * update rules in pyproject.toml, add import sorting rule * split or ignore comment lines where needed for E501 --- pymake/pymake_base.py | 3 +-- pymake/utils/_usgs_src_update.py | 4 ++-- pyproject.toml | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pymake/pymake_base.py b/pymake/pymake_base.py index 1a1a282..08da481 100644 --- a/pymake/pymake_base.py +++ b/pymake/pymake_base.py @@ -1192,8 +1192,7 @@ def _create_win_batch( # open the batch file f = open(batchfile, "w") - # only write the compilervars batch command to batchfile if env vars aren't already configured - # https://www.intel.com/content/www/us/en/develop/documentation/oneapi-programming-guide/top/oneapi-development-environment-setup/use-the-setvars-script-with-windows.html + # only write the command to batchfile if env vars aren't already configured if os.environ.get("SETVARS_COMPLETED") != "1": line = "call " + intel_setvars + "\n" f.write(line) diff --git a/pymake/utils/_usgs_src_update.py b/pymake/utils/_usgs_src_update.py index 0850ea4..989efd5 100644 --- a/pymake/utils/_usgs_src_update.py +++ b/pymake/utils/_usgs_src_update.py @@ -346,14 +346,14 @@ def _update_mfusg_gsi_files(srcdir, fc, cc, arch, double): """ tags = { - "FMTARG = 'BINARY'": "FMTARG = 'UNFORMATTED'\n ACCARG = 'STREAM'", + "FMTARG = 'BINARY'": "FMTARG = 'UNFORMATTED'\n ACCARG = 'STREAM'", # noqa: E501 ",SHARED,ACCESS='SEQUENTIAL'": ",ACCESS='SEQUENTIAL'", "FORM=FMTARG,SHARED,": "FORM=FMTARG,", ",BUFFERED='YES',": ",", ", BUFFERED='NO')": ")", ",SHARE = 'DENYNONE'": ",", ", SHARE = 'DENYNONE',": ",", - "FORM='FORMATTED',ACCESS='SEQUENTIAL',": "FORM='FORMATTED',ACCESS='SEQUENTIAL'", + "FORM='FORMATTED',ACCESS='SEQUENTIAL',": "FORM='FORMATTED',ACCESS='SEQUENTIAL'", # noqa: E501 } fpth = pl.Path(srcdir) / "glo2basu1.f" diff --git a/pyproject.toml b/pyproject.toml index 436b4e4..a83c756 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,6 +101,7 @@ include = [ ] [tool.ruff.lint] +select = ["F", "E", "I001"] ignore = [ "E402", # module level import not at top of file "E712", # Avoid equality comparisons to `True` From 44d3d7a932e93ade69bbc61a8298a845b0cc8d22 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Fri, 3 May 2024 09:52:20 -0400 Subject: [PATCH 14/31] ci(release): add automated release workflow (#168) --- .github/workflows/release.yml | 173 ++++++++++++++++++++++++++++++++++ autotest/pytest.ini | 1 + 2 files changed, 174 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..753fca4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,173 @@ +name: Release +on: + push: + branches: + - master + - v[0-9]+.[0-9]+.[0-9]+* + release: + types: + - published +jobs: + prep: + name: Prepare release + runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' && github.ref_name != 'master' }} + permissions: + contents: write + pull-requests: write + defaults: + run: + shell: bash + steps: + + - name: Checkout release branch + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + cache: 'pip' + cache-dependency-path: pyproject.toml + + - name: Install Python dependencies + run: | + pip install --upgrade pip + pip install build twine + pip install . + + - name: Make code.md + run: make-code-json + + - name: Upload code.md + uses: actions/upload-artifact@v3 + with: + name: code.md + path: code.md + + - name: Update version + id: version + run: | + ref="${{ github.ref_name }}" + version="${ref#"v"}" + python scripts/update_version.py -v "$version" + python -c "import pymake; print('Version: ', pymake.__version__)" + echo "version=$version" >> $GITHUB_OUTPUT + + - name: Lint + run: ruff check . + + - name: Format + run: ruff format . + + - name: Push release branch + env: + GITHUB_TOKEN: ${{ github.token }} + run: | + ver="${{ steps.version.outputs.version }}" + + # commit and push changes + git config core.sharedRepository true + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add pymake + git commit -m "ci(release): set version to ${{ steps.version.outputs.version }}" + git push origin "${{ github.ref_name }}" + + title="Release $ver" + body=' + # Release '$ver' + + The release can be approved by merging this pull request into `master`. This will trigger a job to publish the release to PyPI. + ' + gh pr create -B "master" -H "${{ github.ref_name }}" --title "$title" --draft --body "$body" + + release: + name: Draft release + # runs only when changes are merged to master + if: ${{ github.event_name == 'push' && github.ref_name == 'master' }} + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + + - name: Checkout repo + uses: actions/checkout@v3 + with: + ref: master + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python dependencies + run: | + pip install --upgrade pip + pip install . + pip install ".[test]" + + - name: Download artifacts + uses: dawidd6/action-download-artifact@v2 + + - name: Draft release + env: + GITHUB_TOKEN: ${{ github.token }} + run: | + version=$(python scripts/update_version.py -g) + title="pymake $version" + notes=$(cat code.md) + gh release create "$version" \ + --target master \ + --title "$title" \ + --notes "$notes" \ + --draft \ + --latest + + publish: + name: Publish package + # runs only after release is published (manually promoted from draft) + if: github.event_name == 'release' && github.repository_owner == 'modflowpy' + runs-on: ubuntu-22.04 + permissions: + contents: write + pull-requests: write + id-token: write + environment: # requires a 'release' environment in repo settings + name: release + url: https://pypi.org/p/mfpymake + steps: + + - name: Checkout master branch + uses: actions/checkout@v3 + with: + ref: master + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python dependencies + run: | + pip install --upgrade pip + pip install build twine + pip install . + + - name: Build package + run: python -m build + + - name: Check package + run: twine check --strict dist/* + + - name: Upload package + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/autotest/pytest.ini b/autotest/pytest.ini index 00fcab6..950aeb6 100644 --- a/autotest/pytest.ini +++ b/autotest/pytest.ini @@ -1,4 +1,5 @@ [pytest] +addopts = --color=yes markers = base: base tests dependency: tests that depend on other tests (via pytest-dependency) From 25e98ee6c7735dc8423fb6b484abe7ed13ac0e75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:53:41 -0400 Subject: [PATCH 15/31] build(deps): bump actions/checkout from 3 to 4 (#169) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 753fca4..45b69d3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout release branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 @@ -95,7 +95,7 @@ jobs: steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: master @@ -142,7 +142,7 @@ jobs: steps: - name: Checkout master branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: master From 51313b02276723dcca2d4e6fa48f76b630f778be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 10:54:44 -0400 Subject: [PATCH 16/31] build(deps): bump actions/setup-python from 4 to 5 (#170) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 45b69d3..a532bc5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: fetch-depth: 0 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 cache: 'pip' @@ -100,7 +100,7 @@ jobs: ref: master - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 @@ -147,7 +147,7 @@ jobs: ref: master - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.9 From a0c53888335fa73e280aba88af6616e7706348a8 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Sun, 26 May 2024 14:17:17 -0400 Subject: [PATCH 17/31] fix(mac/gcc/g++): use classic linker with gnu compilers on c/c++ files (#173) --- autotest/test_build.py | 16 ++++++++++++++-- autotest/test_gridgen.py | 8 +++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/autotest/test_build.py b/autotest/test_build.py index 75e602e..67315b2 100644 --- a/autotest/test_build.py +++ b/autotest/test_build.py @@ -1,10 +1,11 @@ import os import sys import time +from platform import system import pytest from flaky import flaky -from modflow_devtools.misc import get_ostag, set_dir +from modflow_devtools.misc import get_ostag, set_dir, set_env import pymake @@ -65,9 +66,15 @@ def build_with_makefile(target, path, fc): @pytest.mark.parametrize("target", targets) def test_build(function_tmpdir, target: str) -> None: with set_dir(function_tmpdir): + pm = pymake.Pymake(verbose=True) + pm.target = target + pm.inplace = True + if system() == "Darwin": + pm.syslibs = "-Wl,-ld_classic" assert ( pymake.build_apps( target, + pm, verbose=True, clean=False, ) @@ -79,7 +86,10 @@ def test_build(function_tmpdir, target: str) -> None: @flaky(max_runs=RERUNS) @pytest.mark.parametrize("target", targets_meson) def test_meson_build(function_tmpdir, target: str) -> None: - with set_dir(function_tmpdir): + kwargs = {} + if system() == "Darwin": + kwargs["LDFLAGS"] = "-Wl,-ld_classic" + with set_dir(function_tmpdir), set_env(**kwargs): assert ( pymake.build_apps( target, @@ -103,6 +113,8 @@ def test_makefile_build(function_tmpdir, target: str) -> None: pm.inplace = True pm.dryrun = True pm.makeclean = False + if system() == "Darwin": + pm.syslibs = "-Wl,-ld_classic" with set_dir(function_tmpdir): pm.download_target(target) diff --git a/autotest/test_gridgen.py b/autotest/test_gridgen.py index ef1365c..6dbb1b3 100644 --- a/autotest/test_gridgen.py +++ b/autotest/test_gridgen.py @@ -1,6 +1,6 @@ -import os import pathlib as pl import subprocess +from os import environ from platform import system import pytest @@ -30,8 +30,10 @@ def pm(module_tmpdir, target) -> pymake.Pymake: pm = pymake.Pymake(verbose=True) pm.target = str(target) pm.appdir = str(module_tmpdir) - pm.cc = os.environ.get("CXX", "g++") - pm.fc = os.environ.get("FC", "gfortran") + pm.cc = environ.get("CXX", "g++") + pm.fc = environ.get("FC", "gfortran") + if system() == "Darwin": + pm.syslibs = "-Wl,-ld_classic" pm.inplace = True pm.makeclean = True yield pm From 200cf7d1fa68d066836c74a286bdadc0bfc70e6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 14:57:56 -0400 Subject: [PATCH 18/31] build(deps): bump dawidd6/action-download-artifact from 2 to 5 (#175) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a532bc5..4d76f67 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -111,7 +111,7 @@ jobs: pip install ".[test]" - name: Download artifacts - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v5 - name: Draft release env: From 44603111db447012e9c4eac782ec327e6a4e2f1e Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Sun, 9 Jun 2024 10:41:52 -0400 Subject: [PATCH 19/31] update(mf6): update mf6 version (#174) * update zbud6 extra files * update mf6examples * merging with failures --- autotest/ci_setup.py | 23 +++-------------------- pymake/pymake.py | 1 + pymake/utils/usgsprograms.txt | 12 ++++++------ 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/autotest/ci_setup.py b/autotest/ci_setup.py index e77b66d..268fb28 100644 --- a/autotest/ci_setup.py +++ b/autotest/ci_setup.py @@ -2,6 +2,8 @@ import pathlib as pl import shutil +from modflow_devtools.misc import get_model_paths + import pymake temp_pth = pl.Path("temp") @@ -54,27 +56,8 @@ def examples_list(verbose=False): "sagehen", "ex-gwt-keating", ) - src_folders = [] - - for dirName, subdirList, fileList in os.walk(mf6_exdir): - useModel = True - for exclude in exclude_models: - if exclude in dirName: - useModel = False - break - if useModel: - for exclude in exclude_examples: - if exclude in dirName: - useModel = False - break - if useModel: - for file_name in fileList: - if file_name.lower() == "mfsim.nam": - if verbose: - print(f"Found directory: {dirName}") - src_folders.append(dirName) - src_folders = sorted(src_folders) + src_folders = get_model_paths(mf6_exdir) fpth = os.path.join(mf6_exdir, "mf6examples.txt") f = open(fpth, "w") for idx, folder in enumerate(src_folders): diff --git a/pymake/pymake.py b/pymake/pymake.py index 05206aa..b715a96 100644 --- a/pymake/pymake.py +++ b/pymake/pymake.py @@ -622,6 +622,7 @@ def _set_extrafiles(self): if extrafiles is None: if self._get_base_target() in ("zbud6",): extrafiles = [ + "../../../src/Utilities/CharString.f90", "../../../src/Utilities/ArrayHandlers.f90", "../../../src/Utilities/ArrayReaders.f90", "../../../src/Utilities/BlockParser.f90", diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index 900c56b..a4414d3 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -1,7 +1,7 @@ target , version, current, url , dirname , srcdir , standard_switch, double_switch, shared_object -mf6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , src , True , False , False -zbud6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , utils/zonebudget/src, True , False , False -libmf6 , 6.4.4 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.4.4/mf6.4.4_linux.zip , mf6.4.4_linux , srcbmi , True , False , True +mf6 , 6.5.0 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip , mf6.5.0_linux , src , True , False , False +zbud6 , 6.5.0 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip , mf6.5.0_linux , utils/zonebudget/src, True , False , False +libmf6 , 6.5.0 , True , https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip , mf6.5.0_linux , srcbmi , True , False , True mp7 , 7.2.001, True , https://water.usgs.gov/water-resources/software/MODPATH/modpath_7_2_001.zip , modpath_7_2_001 , source , True , False , False mt3dms , 5.3.0 , True , https://github.com/MODFLOW-USGS/mt3dms/releases/download/2.0/mt3dms-2.0.zip , mt3dms-2.0 , true-binary , True , False , False mt3dusgs , 1.1.0 , True , https://water.usgs.gov/water-resources/software/MT3D-USGS/mt3dusgs1.1.0.zip , mt3dusgs1.1.0 , src , True , False , False @@ -22,6 +22,6 @@ mfnwt1.1.4 , 1.1.4 , False , https://water.usgs.gov/water-resources/software mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , False , False mfusg_gsi , 2.2.2 , True , https://www.gsienv.com/wp-content/uploads/2023/11/USG-Transport_Version-2.2.2.zip , USGT-v2-2-2-Source , . , True , False , False gsflow , 2.2.1 , True , https://water.usgs.gov/water-resources/software/gsflow/gsflow_2.2.1_linux.zip , gsflow_2.2.1 , src , True , False , False -mf6dev , 6.5.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False -zbud6dev , 6.5.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , utils/zonebudget/src, True , False , False -libmf6dev , 6.5.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , srcbmi , True , False , True \ No newline at end of file +mf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False +zbud6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , utils/zonebudget/src, True , False , False +libmf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , srcbmi , True , False , True \ No newline at end of file From 3948fabe6ee72881d1728c652c328cf7c625211b Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Sun, 9 Jun 2024 12:39:30 -0400 Subject: [PATCH 20/31] fix(gsflow): remove gsflow as a possible target (#176) gsflow (and prms) cause continual problems trying to include them as prebuilt executables. New versions require additional work to filter out extraneous source files and object files. The build process uses specific compiler flags. In short, supporting gsflow (and prms) requires more support each time we are ready to make a executables release or when a new version is released. * merge with failure - in process of resolving --- README.md | 76 ++++++-------------- autotest/test_gsflow.py | 83 ---------------------- docs/build_apps.md | 35 +++------- docs/index.rst | 2 +- pymake/pymake.py | 2 - pymake/pymake_build_apps.py | 5 -- pymake/utils/_compiler_switches.py | 34 --------- pymake/utils/_usgs_src_update.py | 108 ----------------------------- pymake/utils/usgsprograms.txt | 1 - 9 files changed, 33 insertions(+), 313 deletions(-) delete mode 100644 autotest/test_gsflow.py diff --git a/README.md b/README.md index 6351c29..47b236f 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,8 @@ The help message identifies required positional arguments and optional arguments default values. ``` -usage: mfpymake [-h] [-fc {ifort,mpiifort,gfortran,none}] - [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] - [-ar {ia32,ia32_intel64,intel64}] [-mc] [-dbl] [-dbg] [-e] - [-dr] [-sd] [-ff FFLAGS] [-cf CFLAGS] [-sl {-lc,-lm}] [-mf] - [-md] [-cs COMMONSRC] [-ef EXTRAFILES] [-exf EXCLUDEFILES] - [-so] [-ad APPDIR] [-v] [--keep] [--zip ZIP] [--inplace] - [--networkx] [--meson] [--mesondir] +usage: mfpymake [-h] [-fc {ifort,mpiifort,gfortran,none}] [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] [-ar {ia32,ia32_intel64,intel64}] [-mc] [-dbl] [-dbg] [-e] [-dr] [-sd] [-ff FFLAGS] + [-cf CFLAGS] [-sl {-lc,-lm}] [-mf] [-md] [-cs COMMONSRC] [-ef EXTRAFILES] [-exf EXCLUDEFILES] [-so] [-ad APPDIR] [-v] [--keep] [--zip ZIP] [--inplace] [--networkx] [--meson] [--mesondir] srcdir target This is the pymake program for compiling fortran, c, and c++ source @@ -73,70 +68,45 @@ positional arguments: srcdir Path source directory. target Name of target to create. (can include path) -optional arguments: +options: -h, --help show this help message and exit -fc {ifort,mpiifort,gfortran,none} Fortran compiler to use. (default is gfortran) -cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none} C/C++ compiler to use. (default is gcc) -ar {ia32,ia32_intel64,intel64}, --arch {ia32,ia32_intel64,intel64} - Architecture to use for Intel and Microsoft compilers - on Windows. (default is intel64) - -mc, --makeclean Clean temporary object, module, and source files when - done. (default is False) + Architecture to use for Intel and Microsoft compilers on Windows. (default is intel64) + -mc, --makeclean Clean temporary object, module, and source files when done. (default is False) -dbl, --double Force double precision. (default is False) -dbg, --debug Create debug version. (default is False) - -e, --expedite Only compile out of date source files. Clean must not - have been used on previous build. (default is False) - -dr, --dryrun Do not actually compile. Files will be deleted, if - --makeclean is used. Does not work yet for ifort. - (default is False) - -sd, --subdirs Include source files in srcdir subdirectories. - (default is None) + -e, --expedite Only compile out of date source files. Clean must not have been used on previous build. (default is False) + -dr, --dryrun Do not actually compile. Files will be deleted, if --makeclean is used. Does not work yet for ifort. (default is False) + -sd, --subdirs Include source files in srcdir subdirectories. (default is None) -ff FFLAGS, --fflags FFLAGS - Additional Fortran compiler flags. Fortran compiler - flags should be enclosed in quotes and start with a - blank space or separated from the name (-ff or - --fflags) with a equal sign (-ff='-O3'). (default is - None) + Additional Fortran compiler flags. Fortran compiler flags should be enclosed in quotes and start with a blank space or separated from the name (-ff or --fflags) with a equal sign + (-ff='-O3'). (default is None) -cf CFLAGS, --cflags CFLAGS - Additional C/C++ compiler flags. C/C++ compiler flags - should be enclosed in quotes and start with a blank - space or separated from the name (-cf or --cflags) - with a equal sign (-cf='-O3'). (default is None) + Additional C/C++ compiler flags. C/C++ compiler flags should be enclosed in quotes and start with a blank space or separated from the name (-cf or --cflags) with a equal sign + (-cf='-O3'). (default is None) -sl {-lc,-lm}, --syslibs {-lc,-lm} - Linker system libraries. Linker libraries should be - enclosed in quotes and start with a blank space or - separated from the name (-sl or --syslibs) with a - equal sign (-sl='-libgcc'). (default is None) + Linker system libraries. Linker libraries should be enclosed in quotes and start with a blank space or separated from the name (-sl or --syslibs) with a equal sign (-sl='-libgcc'). + (default is None) -mf, --makefile Create a GNU make makefile. (default is False) -md, --makefiledir GNU make makefile directory. (default is '.') -cs COMMONSRC, --commonsrc COMMONSRC - Additional directory with common source files. - (default is None) + Additional directory with common source files. (default is None) -ef EXTRAFILES, --extrafiles EXTRAFILES - List of extra source files to include in the - compilation. extrafiles can be either a list of files - or the name of a text file that contains a list of - files. (default is None) + List of extra source files to include in the compilation. extrafiles can be either a list of files or the name of a text file that contains a list of files. (default is None) -exf EXCLUDEFILES, --excludefiles EXCLUDEFILES - List of extra source files to exclude from the - compilation. excludefiles can be either a list of - files or the name of a text file that contains a list - of files. (default is None) - -so, --sharedobject Create shared object or dll on Windows. (default is - False) + List of extra source files to exclude from the compilation. excludefiles can be either a list of files or the name of a text file that contains a list of files. (default is None) + -so, --sharedobject Create shared object or dll on Windows. (default is False) -ad APPDIR, --appdir APPDIR - Target path that overides path defined target path - (default is None) + Target path that overides path defined target path (default is None) -v, --verbose Verbose output to terminal. (default is False) --keep Keep existing executable. (default is False) - --zip ZIP Zip built executable. (default is False) - --inplace Source files in srcdir are used directly. (default is - False) - --networkx Use networkx package to build Directed Acyclic Graph - use to determine the order source files are compiled - in. (default is False) + --zip ZIP Zip built executable. (default is None) + --inplace Source files in srcdir are used directly. (default is False) + --networkx Use networkx package to build Directed Acyclic Graph use to determine the order source files are compiled in. (default is False) --meson Use meson to build executable. (default is False) --mesondir meson directory. (default is '.') @@ -203,7 +173,7 @@ python mymf6script.py -fc ifort -cc icc When pymake is installed, a `make-program` (or `make-program.exe` for Windows) program is installed. `make-program` can be used to build MODFLOW 6, MODFLOW-2005, MODFLOW-NWT, MODFLOW-USG, MODFLOW-LGR, MODFLOW-2000, MODPATH 6, MODPATH 7, -GSFLOW, VS2DT, MT3DMS, MT3D-USGS, SEAWAT, GSFLOW, PRMS, and SUTRA. Utility programs CRT, Triangle, and GRIDGEN can also +GSFLOW, VS2DT, MT3DMS, MT3D-USGS, SEAWAT, and SUTRA. Utility programs CRT, Triangle, and GRIDGEN can also be built. `make-program` downloads the distribution file (requires an internet connection), unzips the file, sets the pymake settings required to build the program, and compiles the program from the source files. Optional pymake command line arguments can be used to customize the build (`-fc`, `-cc`, `--fflags`, etc.). For example, MODFLOW 6 could be diff --git a/autotest/test_gsflow.py b/autotest/test_gsflow.py deleted file mode 100644 index 414e59e..0000000 --- a/autotest/test_gsflow.py +++ /dev/null @@ -1,83 +0,0 @@ -import os -from pathlib import Path -from platform import system - -import flopy -import pytest - -import pymake - -# set fpth based on current path -if os.path.basename(os.path.normpath(os.getcwd())) == "autotest": - fpth = Path("temp") -else: - fpth = Path("autotest/temp") -fpth = (fpth / "gsflowexamples/gsflowexamples.txt").resolve() -if fpth.is_file(): - with open(fpth) as f: - lines = f.read().splitlines() - sim_dirs = [line for line in lines if len(line) > 0] -else: - sim_dirs = [] - - -@pytest.fixture(scope="module") -def target(module_tmpdir) -> Path: - name = "gsflow" - ext = ".exe" if system() == "Windows" else "" - return module_tmpdir / f"{name}{ext}" - - -@pytest.fixture(scope="module") -def prog_data(target) -> dict: - return pymake.usgs_program_data.get_target(target.name) - - -@pytest.fixture(scope="module") -def workspace(module_tmpdir, prog_data) -> Path: - return module_tmpdir / prog_data.dirname - - -@pytest.fixture(scope="module") -def pm(module_tmpdir, target) -> pymake.Pymake: - pm = pymake.Pymake(verbose=True) - pm.target = str(target) - pm.appdir = module_tmpdir - pm.makefile = True - pm.makeclean = True - pm.makefiledir = module_tmpdir - pm.inplace = True - pm.networkx = True - pm.verbose = True - yield pm - pm.finalize() - - -@pytest.mark.dependency(name="download") -@pytest.mark.base -def test_download(pm, module_tmpdir, target): - pm.download_target(target, download_path=module_tmpdir) - assert pm.download, f"could not download {target} distribution" - - -@pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base -def test_compile(pm, target): - assert pm.build() == 0, f"could not compile {target}" - - -@pytest.mark.dependency(name="test", depends=["build"]) -@pytest.mark.regression -@pytest.mark.parametrize("ws", sim_dirs) -def test_gsflow(ws, target): - success, _ = flopy.run_model( - target, - "gsflow.control", - model_ws=ws, - silent=False, - normal_msg=[ - "normal termination", - "Normal completion of GSFLOW", - ], - ) - assert success, f"could not run {ws}" diff --git a/docs/build_apps.md b/docs/build_apps.md index 820c0ce..f5c329a 100644 --- a/docs/build_apps.md +++ b/docs/build_apps.md @@ -7,23 +7,14 @@ and options can be determined by executing: ```console $ make-program --help -usage: make-program [-h] [-fc {ifort,mpiifort,gfortran,none}] - [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] - [-dbl] [-dr] [-ff FFLAGS] [-cf CFLAGS] [-ad APPDIR] [-v] - [--keep] [--zip ZIP] [--meson] +usage: make-program [-h] [-fc {ifort,mpiifort,gfortran,none}] [-cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none}] [-dbl] [-dr] [-ff FFLAGS] [-cf CFLAGS] [-ad APPDIR] [-v] [--keep] [--zip ZIP] [--meson] targets Download and build USGS MODFLOW and related programs. positional arguments: - targets Program(s) to build. Options: crt, gridgen, gsflow, - libmf6, mf2000, mf2005, mf6, mflgr, mfnwt, mfusg, - mfusg_gsi, mp6, mp7, mt3dms, mt3dusgs, sutra, swtv4, - triangle, vs2dt, zbud6, zonbud3, zonbudusg, :. - Specifying the target to be ':' will build all of the - programs. Multiple targets can be specified by - separating individual targets by a comma (i.e., - mf6,zbud6). + targets Program(s) to build. Options: crt, gridgen, libmf6, mf2000, mf2005, mf6, mflgr, mfnwt, mfusg, mfusg_gsi, mp6, mp7, mt3dms, mt3dusgs, sutra, swtv4, triangle, vs2dt, zbud6, zonbud3, + zonbudusg, :. Specifying the target to be ':' will build all of the programs. Multiple targets can be specified by separating individual targets by a comma (i.e., mf6,zbud6). options: -h, --help show this help message and exit @@ -32,23 +23,15 @@ options: -cc {gcc,clang,clang++,icc,icl,mpiicc,g++,cl,none} C/C++ compiler to use. (default is gcc) -dbl, --double Force double precision. (default is False) - -dr, --dryrun Do not actually compile. Files will be deleted, if - --makeclean is used. Does not work yet for ifort. - (default is False) + -dr, --dryrun Do not actually compile. Files will be deleted, if --makeclean is used. Does not work yet for ifort. (default is False) -ff FFLAGS, --fflags FFLAGS - Additional Fortran compiler flags. Fortran compiler - flags should be enclosed in quotes and start with a - blank space or separated from the name (-ff or - --fflags) with a equal sign (-ff='-O3'). (default is - None) + Additional Fortran compiler flags. Fortran compiler flags should be enclosed in quotes and start with a blank space or separated from the name (-ff or --fflags) with a equal sign + (-ff='-O3'). (default is None) -cf CFLAGS, --cflags CFLAGS - Additional C/C++ compiler flags. C/C++ compiler flags - should be enclosed in quotes and start with a blank - space or separated from the name (-cf or --cflags) - with a equal sign (-cf='-O3'). (default is None) + Additional C/C++ compiler flags. C/C++ compiler flags should be enclosed in quotes and start with a blank space or separated from the name (-cf or --cflags) with a equal sign + (-cf='-O3'). (default is None) -ad APPDIR, --appdir APPDIR - Target path that overides path defined target path - (default is None) + Target path that overides path defined target path (default is None) -v, --verbose Verbose output to terminal. (default is False) --keep Keep existing executable. (default is False) --zip ZIP Zip built executable. (default is None) diff --git a/docs/index.rst b/docs/index.rst index 2e520c8..9fa2d6d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -17,7 +17,7 @@ programs released by the USGS. pymake includes example scripts for building MODFLOW 6, MODFLOW-2005, MODFLOW-NWT, MODFLOW-USG, MODFLOW-LGR, MODFLOW-2000, MODPATH 6, MODPATH 7, -GSFLOW, VS2DT, MT3DMS, MT3D-USGS, SEAWAT, and SUTRA. Example scripts for +VS2DT, MT3DMS, MT3D-USGS, SEAWAT, and SUTRA. Example scripts for creating the utility programs CRT, Triangle, and GRIDGEN are also included. The scripts download the distribution file from the USGS (and other organizations) and compile the source into a binary executable. diff --git a/pymake/pymake.py b/pymake/pymake.py index b715a96..31d9829 100644 --- a/pymake/pymake.py +++ b/pymake/pymake.py @@ -503,8 +503,6 @@ def _set_include_subdirs(self): "libmf6", "gridgen", "mf6beta", - "gsflow", - "prms", ): self.include_subdirs = True else: diff --git a/pymake/pymake_build_apps.py b/pymake/pymake_build_apps.py index 95e48ee..2feb231 100644 --- a/pymake/pymake_build_apps.py +++ b/pymake/pymake_build_apps.py @@ -205,11 +205,6 @@ def build_apps( download_verify = True timeout = 30 - # reset meson - if target in ("prms",): - pmobj.meson = True - pmobj.inplace = True - # set target and srcdir pmobj.target = target.replace("dev", "") pmobj.srcdir = os.path.join( diff --git a/pymake/utils/_compiler_switches.py b/pymake/utils/_compiler_switches.py index 975d862..0b1dfa6 100644 --- a/pymake/utils/_compiler_switches.py +++ b/pymake/utils/_compiler_switches.py @@ -781,25 +781,6 @@ def _set_fflags(target, fc="gfortran", argv=True, osname=None, verbose=False): if target == "mp7": if fc == "gfortran": fflags.append("-ffree-line-length-512") - elif target in ("gsflow", "prms"): - if fc == "ifort": - if osname == "win32": - fflags += [ - "-fp:source", - "-names:lowercase", - "-assume:underscore", - ] - else: - pass - elif fc == "gfortran": - fflags += ["-O1", "-fno-second-underscore"] - opt = "-fallow-argument-mismatch" - if _check_gnu_switch_available( - opt, compiler=fc, verbose=verbose - ): - fflags += [ - opt, - ] elif target in ( "mf2000", "mt3dms", @@ -899,17 +880,6 @@ def _set_cflags(target, cc="gcc", argv=True, osname=None, verbose=False): cflags += ["-lm"] else: cflags += ["-DNO_TIMER"] - elif target in ( - "gsflow", - "prms", - ): - if cc in ["icc", "icpl", "icl"]: - if osname == "win32": - cflags += ["-D_CRT_SECURE_NO_WARNINGS"] - else: - cflags += ["-D_UF"] - elif cc == "gcc": - cflags += ["-O1"] # add additional cflags from the command line if argv: @@ -1013,10 +983,6 @@ def _set_syslibs( lcc = True if lfc and lcc: syslibs += ["-lm"] - elif target in ("gsflow", "prms"): - if "win32" not in osname: - if "ifort" in fc: - syslibs += ["-nofor_main"] # add additional syslibs from the command line if argv: diff --git a/pymake/utils/_usgs_src_update.py b/pymake/utils/_usgs_src_update.py index 989efd5..fbd1752 100644 --- a/pymake/utils/_usgs_src_update.py +++ b/pymake/utils/_usgs_src_update.py @@ -468,114 +468,6 @@ def _update_mfnwt_files(srcdir, fc, cc, arch, double): _update_swi(srcdir, double) -def _update_prms_files(srcdir, fc, cc, arch, double): - """Update PRMS source files - - Parameters - ---------- - srcdir : str - path to directory with source files - fc : str - fortran compiler - cc : str - c/c++ compiler - arch : str - architecture - double : bool - boolean indicating if compiler switches are used to build a - double precision target - - Returns - ------- - - """ - # remove existing *.mod, *.o, and *.a (if any are left) files - dpths = [ - os.path.join(srcdir, o) - for o in os.listdir(srcdir) - if os.path.isdir(os.path.join(srcdir, o)) - ] - - for dpth in dpths: - for f in os.listdir(dpth): - ext = os.path.splitext(f)[1] - fpth = os.path.join(dpth, f) - if ext in [".mod", ".o", ".a"]: - os.remove(fpth) - - # remove specific files - fpths = ( - os.path.join(srcdir, "prms", "gsflow_module.f90"), - os.path.join(srcdir, "prms", "gsflow_prms.f90"), - ) - for fpth in fpths: - if os.path.isfile(fpth): - os.remove(fpth) - - return - - -def _update_gsflow_files(srcdir, fc, cc, arch, double): - """Update GSFLOW source files - - Parameters - ---------- - srcdir : str - path to directory with source files - fc : str - fortran compiler - cc : str - c/c++ compiler - arch : str - architecture - double : bool - boolean indicating if compiler switches are used to build a - double precision target - - Returns - ------- - - """ - # update utl7.f - _update_utl7(srcdir) - - # update gwf2swt7.f - _update_swt(srcdir) - - # update gwf2swi27.f or gwf2swi27.fpp - _update_swi(srcdir, double) - - # remove merge and lib directories - pths = [os.path.join(srcdir, "merge"), os.path.join(srcdir, "lib")] - for pth in pths: - if os.path.isdir(pth): - shutil.rmtree(pth) - - # remove existing *.mod, *.o, and *.a (if any are left) files - dpths = [ - os.path.join(srcdir, o) - for o in os.listdir(srcdir) - if os.path.isdir(os.path.join(srcdir, o)) - ] - - for dpth in dpths: - for f in os.listdir(dpth): - ext = os.path.splitext(f)[1] - fpth = os.path.join(dpth, f) - if ext in [".mod", ".o", ".a"]: - os.remove(fpth) - - # remove specific files - fpths = [ - os.path.join(srcdir, "modflow", "gwf2ag1_NWT_rsr.f"), - ] - for fpth in fpths: - if os.path.isfile(fpth): - os.remove(fpth) - - return - - def _update_mf2000_files(srcdir, fc, cc, arch, double): """Update MODFLOW-2000 source files diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index a4414d3..a1ae40a 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -21,7 +21,6 @@ zonbud3 , 3.01 , True , https://water.usgs.gov/water-resources/software mfnwt1.1.4 , 1.1.4 , False , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.1.4.zip , MODFLOW-NWT_1.1.4 , src , True , False , False mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , False , False mfusg_gsi , 2.2.2 , True , https://www.gsienv.com/wp-content/uploads/2023/11/USG-Transport_Version-2.2.2.zip , USGT-v2-2-2-Source , . , True , False , False -gsflow , 2.2.1 , True , https://water.usgs.gov/water-resources/software/gsflow/gsflow_2.2.1_linux.zip , gsflow_2.2.1 , src , True , False , False mf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False zbud6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , utils/zonebudget/src, True , False , False libmf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , srcbmi , True , False , True \ No newline at end of file From 9251505fdef691fa85680ba4d5586606573a34d7 Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Tue, 11 Jun 2024 18:23:42 -0400 Subject: [PATCH 21/31] ci: add pixi to CI workflow (#177) * add pymake function to add syslibs option for Darwin + gcc toolchain + CLT > 14.* --- .github/workflows/main.yml | 38 +- .github/workflows/pymake-gcc.yml | 51 +- .github/workflows/pymake-linting-install.yml | 17 +- .gitignore | 3 + autotest/ci_setup.py | 80 - autotest/test_build.py | 10 +- autotest/test_cli_cmds.py | 14 +- autotest/test_gridgen.py | 4 +- autotest/test_mf6_existing_meson.py | 14 +- pixi.lock | 10491 +++++++++++++++++ pixi.toml | 51 + pymake/__init__.py | 1 + pymake/utils/_compiler_switches.py | 74 +- pyproject.toml | 2 +- 14 files changed, 10692 insertions(+), 158 deletions(-) create mode 100644 pixi.lock create mode 100644 pixi.toml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8c81ad3..12a80f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,10 +19,13 @@ jobs: pymakeCI-os-intel: name: pymake CI intel on different OSs runs-on: ${{ matrix.os }} + env: + FC: intel-classic + FC_V: "2021.7" strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-2019] + os: [ubuntu-latest, macos-13, windows-2019] defaults: run: shell: bash @@ -31,53 +34,50 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Setup Intel Fortran Classic + - name: Setup ${{ env.FC }} ${{ env.FC_V }} uses: fortran-lang/setup-fortran@v1 with: - compiler: intel-classic - version: "2021.7" + compiler: ${{ env.FC }} + version: ${{ env.FC_V }} - name: Setup Graphviz if: runner.os == 'Linux' uses: ts-graphviz/setup-graphviz@v2 - - name: Set up Python - uses: actions/setup-python@v5 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 with: - python-version: "3.12" + pixi-version: v0.19.1 + manifest-path: "pixi.toml" - - name: Install python packages + - name: pixi post-install + working-directory: pymake run: | - python -m pip install --upgrade pip - pip install ".[test]" + pixi run postinstall - name: Download examples for pytest runs run: | - .github/common/download-examples.sh + pixi run download-examples - name: test on Linux if: runner.os == 'Linux' - working-directory: ./autotest run: | - pytest -v -n=auto --dist=loadfile -m="base or regression" --durations=0 --cov=pymake --cov-report=xml + pixi run autotest - name: test on MacOS if: runner.os == 'macOS' - working-directory: ./autotest run: | - pytest -v -n=auto --dist=loadfile -m="base" --durations=0 --cov=pymake --cov-report=xml + pixi run autotest-base - name: test on Windows if: runner.os == 'Windows' - working-directory: ./autotest shell: cmd run: | - pytest -v -m="base" --durations=0 --cov=pymake --cov-report=xml --basetemp=pytest_temp + pixi run autotest-Windows - name: Print coverage report before upload - working-directory: ./autotest run: | - coverage report + pixi run coverage-report - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml index f6163ce..206607f 100644 --- a/.github/workflows/pymake-gcc.yml +++ b/.github/workflows/pymake-gcc.yml @@ -24,17 +24,12 @@ jobs: matrix: include: # test latest gcc and python - - {os: ubuntu-latest, gcc: 13, python: "3.12"} - - {os: windows-latest, gcc: 13, python: "3.12"} - - {os: macos-latest, gcc: 13, python: "3.12"} - # test latest gcc and previous python - - {os: ubuntu-latest, gcc: 13, python: "3.11"} - - {os: ubuntu-latest, gcc: 13, python: "3.10"} - - {os: ubuntu-latest, gcc: 13, python: 3.9} - - {os: ubuntu-latest, gcc: 13, python: 3.8} + - {os: ubuntu-latest, gcc: 13} + - {os: windows-latest, gcc: 13} + - {os: macos-latest, gcc: 13} # test latest python and previous gcc - - {os: ubuntu-latest, gcc: 12, python: "3.12"} - - {os: ubuntu-latest, gcc: 11, python: "3.12"} + - {os: ubuntu-latest, gcc: 12} + - {os: ubuntu-latest, gcc: 11} defaults: run: shell: bash @@ -47,15 +42,16 @@ jobs: if: runner.os == 'Linux' uses: ts-graphviz/setup-graphviz@v2 - - name: Setup Python - uses: actions/setup-python@v5 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 with: - python-version: ${{ matrix.python }} + pixi-version: v0.19.1 + manifest-path: "pixi.toml" - - name: Install python packages + - name: pixi post-install + working-directory: pymake run: | - python -m pip install --upgrade pip - pip install ".[test]" + pixi run postinstall - name: Setup GNU Fortran uses: fortran-lang/setup-fortran@main @@ -64,24 +60,27 @@ jobs: version: ${{ matrix.gcc }} - name: Download examples for pytest runs - run: .github/common/download-examples.sh + run: | + pixi run download-examples - name: Install make if: runner.os == 'Windows' run: choco install make - - name: Run pytest - working-directory: ./autotest + - name: Run pytest on Linux and MacOS + if: runner.os != 'Windows' run: | - markers="base" - if [[ ${{ matrix.gcc }} == 13 ]]; then - markers="base or regression" - fi - pytest -v --dist=loadfile -n=auto --durations=0 --basetemp=pytest_temp --cov=pymake --cov-report=xml --cov-append -m "$markers" + pixi run autotest-base + + - name: test on Windows + if: runner.os == 'Windows' + shell: pwsh + run: | + pixi run autotest-Windows - name: Print coverage report before upload - working-directory: ./autotest - run: coverage report + run: | + pixi run coverage-report - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 diff --git a/.github/workflows/pymake-linting-install.yml b/.github/workflows/pymake-linting-install.yml index ca256e9..feafe89 100644 --- a/.github/workflows/pymake-linting-install.yml +++ b/.github/workflows/pymake-linting-install.yml @@ -20,22 +20,17 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 with: - python-version: "3.12" - - - name: Setup Graphviz - uses: ts-graphviz/setup-graphviz@v2 - - - name: Install packages - run: pip install ".[lint]" + pixi-version: v0.19.1 + manifest-path: "pixi.toml" - name: Lint - run: ruff check . + run: pixi run check-lint - name: Check format - run: ruff format . --check + run: pixi run check-format pymake_setup: name: standard installation diff --git a/.gitignore b/.gitignore index 79b8dbb..f700a60 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,9 @@ var/ .installed.cfg *.egg +# pixi +.pixi/ + # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. diff --git a/autotest/ci_setup.py b/autotest/ci_setup.py index 268fb28..7eac513 100644 --- a/autotest/ci_setup.py +++ b/autotest/ci_setup.py @@ -12,9 +12,6 @@ mf6_exdir = temp_pth / "mf6examples" if mf6_exdir.is_dir(): shutil.rmtree(mf6_exdir) -gsflow_exdir = temp_pth / "gsflowexamples" -if gsflow_exdir.is_dir(): - shutil.rmtree(gsflow_exdir) def download_mf6_examples(verbose=False): @@ -71,83 +68,6 @@ def examples_list(verbose=False): return -def download_gsflow_examples(verbose=False): - """Download gsflow examples and return location of folder""" - - examples_dirs = ( - "sagehen", - "acfb_dyn_params", - "acfb_water_use", - ) - - target = "gsflow" - pm = pymake.Pymake(verbose=True) - pm.target = target - - # download the gsflow release - pm.download_target(target, download_path=temp_pth) - assert pm.download, f"could not download {target} distribution" - - # get program dictionary - prog_dict = pymake.usgs_program_data.get_target(target) - - # set path to example - temp_download_dir = temp_pth / prog_dict.dirname - temp_dir = temp_download_dir / "data" - - print(f"copying files to...{gsflow_exdir}") - shutil.copytree(temp_dir, gsflow_exdir) - - # create list of examples to test and edit files if necessary - src_folders = [] - for ex_dir in examples_dirs: - out_path = gsflow_exdir / ex_dir - - if "sagehen" in ex_dir: - out_path = out_path / "linux" - modify_gsflow_sagehen(out_path) - elif "acfb" in ex_dir: - shutil.copy( - out_path / "control/control", out_path / "gsflow.control" - ) - - # add final example path to src_folders list - src_folders.append(out_path) - - print(f"removing...{temp_download_dir} directory") - shutil.rmtree(temp_download_dir) - - # create a list of gsflow examples - fpth = gsflow_exdir / "gsflowexamples.txt" - f = open(fpth, "w") - for idx, folder in enumerate(src_folders): - if verbose: - if idx == 0: - print(f"\n\nGSFLOW examples:\n{78 * '-'}") - print(f"{idx + 1:>3d}: {folder}") - f.write(f"{os.path.abspath(folder)}\n") - f.close() - - return gsflow_exdir.resolve() - - -def modify_gsflow_sagehen(temp_pth): - fpth = temp_pth / "gsflow.control" - with open(fpth) as f: - lines = f.readlines() - with open(fpth, "w") as f: - idx = 0 - while idx < len(lines): - line = lines[idx] - if "end_time" in line: - line += "6\n1\n1981\n" - idx += 3 - f.write(line) - idx += 1 - return - - if __name__ == "__main__": mf6pth = download_mf6_examples(verbose=True) examples_list(verbose=True) - gsflowpth = download_gsflow_examples(verbose=True) diff --git a/autotest/test_build.py b/autotest/test_build.py index 67315b2..1e02c2e 100644 --- a/autotest/test_build.py +++ b/autotest/test_build.py @@ -69,8 +69,7 @@ def test_build(function_tmpdir, target: str) -> None: pm = pymake.Pymake(verbose=True) pm.target = target pm.inplace = True - if system() == "Darwin": - pm.syslibs = "-Wl,-ld_classic" + fc = os.environ.get("FC", "gfortran") assert ( pymake.build_apps( target, @@ -87,8 +86,9 @@ def test_build(function_tmpdir, target: str) -> None: @pytest.mark.parametrize("target", targets_meson) def test_meson_build(function_tmpdir, target: str) -> None: kwargs = {} - if system() == "Darwin": - kwargs["LDFLAGS"] = "-Wl,-ld_classic" + cc = os.environ.get("CC", "gcc") + fc = os.environ.get("FC", "gfortran") + pymake.linker_update_environment(cc=cc, fc=fc) with set_dir(function_tmpdir), set_env(**kwargs): assert ( pymake.build_apps( @@ -113,8 +113,6 @@ def test_makefile_build(function_tmpdir, target: str) -> None: pm.inplace = True pm.dryrun = True pm.makeclean = False - if system() == "Darwin": - pm.syslibs = "-Wl,-ld_classic" with set_dir(function_tmpdir): pm.download_target(target) diff --git a/autotest/test_cli_cmds.py b/autotest/test_cli_cmds.py index 661bd72..f31e0a3 100644 --- a/autotest/test_cli_cmds.py +++ b/autotest/test_cli_cmds.py @@ -1,10 +1,13 @@ import os import pathlib as pl import subprocess +from platform import system import pytest from flaky import flaky -from modflow_devtools.misc import set_dir +from modflow_devtools.misc import set_dir, set_env + +from pymake import linker_update_environment RERUNS = 3 @@ -106,10 +109,15 @@ def test_mfpymake(function_tmpdir, meson: bool) -> None: "--verbose", "-fc", ] + fc = "gfortran" if os.environ.get("FC") is None: - cmd.append("gfortran") + cmd.append(fc) else: - cmd.append(os.environ.get("FC")) + fc = os.environ.get("FC") + cmd.append(fc) + + linker_update_environment(fc=fc) + if meson: cmd.append("--meson") run_cli_cmd(cmd) diff --git a/autotest/test_gridgen.py b/autotest/test_gridgen.py index 6dbb1b3..1c69312 100644 --- a/autotest/test_gridgen.py +++ b/autotest/test_gridgen.py @@ -31,9 +31,7 @@ def pm(module_tmpdir, target) -> pymake.Pymake: pm.target = str(target) pm.appdir = str(module_tmpdir) pm.cc = environ.get("CXX", "g++") - pm.fc = environ.get("FC", "gfortran") - if system() == "Darwin": - pm.syslibs = "-Wl,-ld_classic" + pm.fc = None pm.inplace = True pm.makeclean = True yield pm diff --git a/autotest/test_mf6_existing_meson.py b/autotest/test_mf6_existing_meson.py index a3bfd89..26cd762 100644 --- a/autotest/test_mf6_existing_meson.py +++ b/autotest/test_mf6_existing_meson.py @@ -1,24 +1,21 @@ import os import sys from pathlib import Path +from platform import system from typing import List import pytest +from modflow_devtools.ostags import get_binary_suffixes import pymake +from pymake import linker_update_environment @pytest.fixture(scope="module") def targets() -> List[Path]: target = "mf6" - ext = "" - shared_ext = ".so" + ext, shared_ext = get_binary_suffixes() executables = [target, "zbud6", "mf5to6", "libmf6"] - if sys.platform.lower() == "win32": - ext = ".exe" - shared_ext = ".dll" - elif sys.platform.lower() == "darwin": - shared_ext = ".dylib" for idx, _ in enumerate(executables[:3]): executables[idx] += ext executables[3] += shared_ext @@ -40,6 +37,7 @@ def pm(workspace, targets) -> pymake.Pymake: pm = pymake.Pymake(verbose=True) pm.target = str(targets[0]) pm.appdir = str(workspace / "bin") + pm.fc = os.environ.get("FC", "gfortran") pm.meson = True pm.makeclean = True pm.mesondir = str(workspace) @@ -83,6 +81,8 @@ def test_build_with_existing_meson(pm, module_tmpdir, workspace, targets): pm.download_target(targets[0], download_path=module_tmpdir) assert pm.download, f"could not download {targets[0]} distribution" + linker_update_environment(cc=cc, fc=fc) + # make modflow 6 with existing meson.build file returncode = pymake.meson_build( workspace, diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000..692465a --- /dev/null +++ b/pixi.lock @@ -0,0 +1,10491 @@ +version: 4 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py39h3d6467e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.6.2-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py39h7633fee_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.3-py39hd3abc70_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.0-py39hd3abc70_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-h59595ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.2-hf974151_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.2-hb6ce0ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.50.0-h78e8752_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.24.4-h9ad1361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.24.4-haf2f30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.7-default_h087397f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h77fa898_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-hca663fb_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.2-hf974151_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h77fa898_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.49-h4f305b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.7-hb77312f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_h413a1c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.0-hadf69e7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.3-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-hc0a3c3a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.4.0-h2c329e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h662e7e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.4-py39hf3d152e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.4-py39h10d1fc8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.6-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py39h474f0d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py39hfc16268_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.52.2-ha41ecd1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py39h90c7501_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py39h52134e7_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py39h3d6467e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.9.19-h0755675_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-4_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc9dc06e_21.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.4.8-py39hac31393_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py39h3d6467e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py39hd3abc70_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py39hd1e30aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.42-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-h8ee46fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.1.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py39h387a81e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h31becfc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.6.2-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-ha13f110_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.2.1-py39hd16970a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.5.3-py39ha3e8b56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.2-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.14.2-ha9a116f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.53.0-py39he257ee7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.10-hb9de7d4_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.42.12-ha61d561_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-2.50.0-h65e8cce_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk2-2.24.33-h0d7db29_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-8.5.0-h9812418_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-73.2-h787c7f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.5-py39had2cf8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h9fc2d93_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-22_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-22_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.20-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-he277a41_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-hcd22fd5_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-13.2.0-he9431aa_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-13.2.0-h87d9d71_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.80.2-h34bac0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-he277a41_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-22_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.27-pthreads_h5a5ec62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.43-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.58.0-h010368b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.45.3-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h3f4de04_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-hf980d43_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.4.0-h8b4e01b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.15-h2a766a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.12.7-h49dc7a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h68df207_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.8.4-py39ha65689a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.8.4-py39hf44f4b6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-h0425590_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.12.1-h70be974_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py39h91c28bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.1-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py39h60c7704_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.52.2-h11ef544_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.43-hd0f9c67_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py39h71661b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.19-h4ac3b42_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.9-4_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.4.8-py39h009b497_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py39ha3e8b56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-15.1.0-py39h898b7ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-kbproto-1.0.7-h3557bc0_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h7935292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-h5a01bc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-h055a233_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.4-h2a766a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h7935292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-renderproto-0.11.1-h3557bc0_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xextproto-7.3.0-h2a766a3_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xproto-7.0.31-h3557bc0_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h68df207_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py39h840bb9f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h10d778d_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.6.2-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h99e66fa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.1-py39h0ca7971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.5.3-py39hded5825_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.53.0-py39hded5825_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-tools-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-2.50.0-h8671558_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h8ca4665_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-8.5.0-h053f038_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-73.2-hf5e326d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.5-py39h8ee36c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-17.0.6-h88467a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.20-h49d49c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h0dceb68_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-devel-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.2-h0f68cf7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_hfef2a42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.0-h7b06fc5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.45.3-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h129831d_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.4.0-hc207709_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-h3e169fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.7-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.8.4-py39h6e9494a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.8.4-py39hfca4cae_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py39h28c39a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py39hbb604f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.52.2-h7f2093b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.43-h0ad2156_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.3.0-py39h9dabb2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.9.19-h7a9c478_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-4_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.4.8-py39h4dd7705_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py39hded5825_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.1.0-py39hdc70f33_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py39hb198ff7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h93a5062_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.6.2-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hd1e100b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.1-py39h48c5dd5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.5.3-py39hfea33bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.53.0-py39hfea33bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-2.50.0-h54e2d63_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h7895bb2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-8.5.0-h1836168_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.5-py39hbd775c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-17.0.6-h5f092b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.20-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hfdf3952_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.2-h535f939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h6c19121_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.0-hb3d354b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.45.3-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-h07db509_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-1.4.0-h54798ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.15-hf346824_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-ha661575_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.7-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.8.4-py39hdf13c20_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.4-py39h15359f4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py39h7aa2656_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py39h998126f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.52.2-hb067d4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.43-h26f9a81_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py39h3352c98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.9.19-hd7ebdb9_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.9-4_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.4.8-py39hb586919_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py39hfea33bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-15.1.0-py39h0f82c59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py39h99910a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-hcfcfb64_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.6.2-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h1fef639_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.2.1-py39h1f6ef14_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.5.3-py39ha55e580_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.53.0-py39ha55e580_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.2-h0df6a38_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.2-h2f9d560_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-2.50.0-hb5dec95_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.24.4-hba88be7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.24.4-h5006eae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-8.5.0-h81778c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-73.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.1.0-h57928b3_966.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.5-py39h1f6ef14_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.2-heb0366b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-22_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-22_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-18.1.7-default_h97ce8ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.20-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h312136b_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.2-h0df6a38_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.10.0-default_h8125262_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-22_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.4-h8ffe710_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.45.3-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hddb2be6_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-1.4.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.15-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h283a6d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.8.4-py39hcbf5309_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.8.4-py39he1095e7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_692.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py39hddb5d58_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py39h2366fc2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.52.2-h07c897b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.43-h17e33f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.3.0-py39h9ee4981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.9-py39hb77abff_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.12.2-py39h99910a6_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.9.19-h4de0772_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.9-4_cp39.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.8-hcef0176_21.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.4.8-py39hda83faa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sip-6.7.12-py39h99910a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py39ha55e580_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-15.1.0-py39ha55989b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-hefa74cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- kind: conda + name: alsa-lib + version: 1.2.11 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda + sha256: 0e2b75b9834a6e520b13db516f7cf5c9cea8f0bbc9157c978444173dacb98fec + md5: 0bb492cca54017ea314b809b1ee3a176 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + license_family: GPL + size: 554699 + timestamp: 1709396557528 +- kind: conda + name: appdirs + version: 1.4.4 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 + sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111 + md5: 5f095bc6454094e96f146491fd03633b + depends: + - python + license: MIT + license_family: MIT + size: 12840 + timestamp: 1603108499239 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: h04ea711_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e + md5: f730d54ba9cd543666d7220c9f7ed563 + depends: + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libstdcxx-ng >=12 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 355900 + timestamp: 1713896169874 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: h4bec284_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + sha256: a5972a943764e46478c966b26be61de70dcd7d0cfda4bd0b0c46916ae32e0492 + md5: d9684247c943d492d9aac8687bc5db77 + depends: + - __osx >=10.9 + - libcxx >=16 + - libglib >=2.80.0,<3.0a0 + - libintl >=0.22.5,<1.0a0 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 349989 + timestamp: 1713896423623 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: hd03087b_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1 + md5: 57301986d02d30d6805fdce6c99074ee + depends: + - __osx >=11.0 + - libcxx >=16 + - libglib >=2.80.0,<3.0a0 + - libintl >=0.22.5,<1.0a0 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 347530 + timestamp: 1713896411580 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: hedc4a1f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda + sha256: 69f70048a1a915be7b8ad5d2cbb7bf020baa989b5506e45a676ef4ef5106c4f0 + md5: 9308557e2328f944bd5809c5630761af + depends: + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libstdcxx-ng >=12 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 358327 + timestamp: 1713898303194 +- kind: conda + name: attr + version: 2.5.1 + build: h166bdaf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- kind: conda + name: brotli + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h0dc2134_1.conda + sha256: 4bf66d450be5d3f9ebe029b50f818d088b1ef9666b1f19e90c85479c77bbdcde + md5: 9272dd3b19c4e8212f8542cefd5c3d67 + depends: + - brotli-bin 1.1.0 h0dc2134_1 + - libbrotlidec 1.1.0 h0dc2134_1 + - libbrotlienc 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 19530 + timestamp: 1695990310168 +- kind: conda + name: brotli + version: 1.1.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.1.0-h31becfc_1.conda + sha256: 1e1e46a4d16936d1bd1a605767b4cc36cf8fd3180ad776b5ba9e4c8ce64859bf + md5: e41f5862ac746428407f3fd44d2ed01f + depends: + - brotli-bin 1.1.0 h31becfc_1 + - libbrotlidec 1.1.0 h31becfc_1 + - libbrotlienc 1.1.0 h31becfc_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 19586 + timestamp: 1695990171649 +- kind: conda + name: brotli + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hb547adb_1.conda + sha256: 62d1587deab752fcee07adc371eb20fcadc09f72c0c85399c22b637ca858020f + md5: a33aa58d448cbc054f887e39dd1dfaea + depends: + - brotli-bin 1.1.0 hb547adb_1 + - libbrotlidec 1.1.0 hb547adb_1 + - libbrotlienc 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 19506 + timestamp: 1695990588610 +- kind: conda + name: brotli + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hcfcfb64_1.conda + sha256: b927c95121c5f3d82fe084730281739fb04621afebf2d9f05711a0f42d27e326 + md5: f47f6db2528e38321fb00ae31674c133 + depends: + - brotli-bin 1.1.0 hcfcfb64_1 + - libbrotlidec 1.1.0 hcfcfb64_1 + - libbrotlienc 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 19772 + timestamp: 1695990547936 +- kind: conda + name: brotli + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda + sha256: f2d918d351edd06c55a6c2d84b488fe392f85ea018ff227daac07db22b408f6b + md5: f27a24d46e3ea7b70a1f98e50c62508f + depends: + - brotli-bin 1.1.0 hd590300_1 + - libbrotlidec 1.1.0 hd590300_1 + - libbrotlienc 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 19383 + timestamp: 1695990069230 +- kind: conda + name: brotli-bin + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h0dc2134_1.conda + sha256: 7ca3cfb4c5df314ed481301335387ab2b2ee651e2c74fbb15bacc795c664a5f1 + md5: ece565c215adcc47fc1db4e651ee094b + depends: + - libbrotlidec 1.1.0 h0dc2134_1 + - libbrotlienc 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 16660 + timestamp: 1695990286737 +- kind: conda + name: brotli-bin + version: 1.1.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h31becfc_1.conda + sha256: fd1e57615b995565939fdb9910534933c4c27ec0c37a911a2c923241dbf8ad3b + md5: 9e4a13596ab651ea8d77aae023d0ce3f + depends: + - libbrotlidec 1.1.0 h31becfc_1 + - libbrotlienc 1.1.0 h31becfc_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 18915 + timestamp: 1695990154825 +- kind: conda + name: brotli-bin + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda + sha256: 8fbfc2834606292016f2faffac67deea4c5cdbc21a61169f0b355e1600105a24 + md5: 990d04f8c017b1b77103f9a7730a5f12 + depends: + - libbrotlidec 1.1.0 hb547adb_1 + - libbrotlienc 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 17001 + timestamp: 1695990551239 +- kind: conda + name: brotli-bin + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hcfcfb64_1.conda + sha256: 4fbcb8f94acc97b2b04adbc64e304acd7c06fa0cf01953527bddae46091cc942 + md5: 0105229d7c5fabaa840043a86c10ec64 + depends: + - libbrotlidec 1.1.0 hcfcfb64_1 + - libbrotlienc 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 20885 + timestamp: 1695990517506 +- kind: conda + name: brotli-bin + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda + sha256: a641abfbaec54f454c8434061fffa7fdaa9c695e8a5a400ed96b4f07c0c00677 + md5: 39f910d205726805a958da408ca194ba + depends: + - libbrotlidec 1.1.0 hd590300_1 + - libbrotlienc 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 18980 + timestamp: 1695990054140 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py39h387a81e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py39h387a81e_1.conda + sha256: d74e7e8a8936afe6ca9fcf347e9da0e0cf3a2b2cb75bc5fff903c041681836e6 + md5: 983fb0d6a8d0ad30f7213dccadea185d + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + constrains: + - libbrotlicommon 1.1.0 h31becfc_1 + license: MIT + license_family: MIT + size: 355569 + timestamp: 1695990300233 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py39h3d6467e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py39h3d6467e_1.conda + sha256: e22afb19527a93da24c1108c3e91532811f9c3df64a9473989faf332c98af082 + md5: c48418c8b35f1d59ae9ae1174812b40a + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + constrains: + - libbrotlicommon 1.1.0 hd590300_1 + license: MIT + license_family: MIT + size: 350065 + timestamp: 1695990113673 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py39h840bb9f_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py39h840bb9f_1.conda + sha256: e19de8f5d9e1fe650b49eff6b0111eebd3b98368b5ae82733b90ec0abea5062a + md5: bf1edb07835e15685718843f7e71bab1 + depends: + - libcxx >=15.0.7 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + constrains: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 367262 + timestamp: 1695990623703 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py39h99910a6_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py39h99910a6_1.conda + sha256: 076f6ac7dc00cfca25e11fd42bfd3cc3395307d9a3aa3958a13d14bc8ea610ec + md5: f24ba3942ece1e5d3dcde934f0532998 + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 hcfcfb64_1 + license: MIT + license_family: MIT + size: 321654 + timestamp: 1695990742536 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py39hb198ff7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py39hb198ff7_1.conda + sha256: 014639c1f57be1dadf7b5c17e53df562e7e6bab71d3435fdd5bd56213dece9df + md5: ddf01dd9a743bd3ec9cf829d18bb8002 + depends: + - libcxx >=15.0.7 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + constrains: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 344364 + timestamp: 1695991093404 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h10d778d_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h10d778d_5.conda + sha256: 61fb2b488928a54d9472113e1280b468a309561caa54f33825a3593da390b242 + md5: 6097a6ca9ada32699b5fc4312dd6ef18 + license: bzip2-1.0.6 + license_family: BSD + size: 127885 + timestamp: 1699280178474 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h31becfc_5 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h31becfc_5.conda + sha256: b9f170990625cb1eeefaca02e091dc009a64264b077166d8ed7aeb7a09e923b0 + md5: a64e35f01e0b7a2a152eca87d33b9c87 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 189668 + timestamp: 1699280060686 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h93a5062_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h93a5062_5.conda + sha256: bfa84296a638bea78a8bb29abc493ee95f2a0218775642474a840411b950fe5f + md5: 1bbc659ca658bfd49a481b5ef7a0f40f + license: bzip2-1.0.6 + license_family: BSD + size: 122325 + timestamp: 1699280294368 +- kind: conda + name: bzip2 + version: 1.0.8 + build: hcfcfb64_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-hcfcfb64_5.conda + sha256: ae5f47a5c86fd6db822931255dcf017eb12f60c77f07dc782ccb477f7808aab2 + md5: 26eb8ca6ea332b675e11704cce84a3be + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + size: 124580 + timestamp: 1699280668742 +- kind: conda + name: bzip2 + version: 1.0.8 + build: hd590300_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda + sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8 + md5: 69b8b6202a07720f448be700e300ccf4 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 254228 + timestamp: 1699279927352 +- kind: conda + name: ca-certificates + version: 2024.6.2 + build: h56e8100_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.6.2-h56e8100_0.conda + sha256: d872d11558ebeaeb87bcf9086e97c075a1a2dfffed2d0e97570cf197ab29e3d8 + md5: 12a3a2b3a00a21bbb390d4de5ad8dd0f + license: ISC + size: 156530 + timestamp: 1717311907623 +- kind: conda + name: ca-certificates + version: 2024.6.2 + build: h8857fd0_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.6.2-h8857fd0_0.conda + sha256: ba0614477229fcb0f0666356f2c4686caa66f0ed1446e7c9666ce234abe2bacf + md5: 3c23a8cab15ae51ebc9efdc229fccecf + license: ISC + size: 156145 + timestamp: 1717311781754 +- kind: conda + name: ca-certificates + version: 2024.6.2 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.6.2-hbcca054_0.conda + sha256: 979af0932b2a5a26112044891a2d79e402e5ae8166f50fa48b8ebae47c0a2d65 + md5: 847c3c2905cc467cea52c24f9cfa8080 + license: ISC + size: 156035 + timestamp: 1717311767102 +- kind: conda + name: ca-certificates + version: 2024.6.2 + build: hcefe29a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.6.2-hcefe29a_0.conda + sha256: d27b90ff1e00c34123c37a4c5332bb75c3c5cc6775c57ecfa9f430b629ad3108 + md5: 3ef6b1a30375f8a973a593698e317191 + license: ISC + size: 156128 + timestamp: 1717312862469 +- kind: conda + name: ca-certificates + version: 2024.6.2 + build: hf0a4a13_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.6.2-hf0a4a13_0.conda + sha256: f5fd189d48965df396d060eb48628cbd9f083f1a1ea79c5236f60d655c7b9633 + md5: b534f104f102479402f88f73adf750f5 + license: ISC + size: 156299 + timestamp: 1717311742040 +- kind: conda + name: cairo + version: 1.18.0 + build: h1fef639_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h1fef639_0.conda + sha256: 451e714f065b5dd0c11169058be56b10973dfd7d9a0fccf9c6a05d1e09995730 + md5: b3fe2c6381ec74afe8128e16a11eee02 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libglib >=2.78.0,<3.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pixman >=0.42.2,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 1520159 + timestamp: 1697029136038 +- kind: conda + name: cairo + version: 1.18.0 + build: h3faef2a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda + sha256: 142e2639a5bc0e99c44d76f4cc8dce9c6a2d87330c4beeabb128832cd871a86e + md5: f907bb958910dc404647326ca80c263e + depends: + - 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,<2.0.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 + license: LGPL-2.1-only or MPL-1.1 + size: 982351 + timestamp: 1697028423052 +- kind: conda + name: cairo + version: 1.18.0 + build: h99e66fa_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h99e66fa_0.conda + sha256: f8d1142cf244eadcbc44e8ca2266aa61a05b6cda5571f9b745ba32c7ebbfdfba + md5: 13f830b1bf46018f7062d1b798d53eca + depends: + - __osx >=10.9 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libcxx >=16.0.6 + - libglib >=2.78.0,<3.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pixman >=0.42.2,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 885311 + timestamp: 1697028802967 +- kind: conda + name: cairo + version: 1.18.0 + build: ha13f110_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-ha13f110_0.conda + sha256: 79b6323661b535d90aaec0eac0e91ccda88cc5917d9e597a03d7de183bc22f26 + md5: 425111f8cc6945c5d1307357dd819b9b + depends: + - 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,<2.0.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 + license: LGPL-2.1-only or MPL-1.1 + size: 983779 + timestamp: 1697028424329 +- kind: conda + name: cairo + version: 1.18.0 + build: hd1e100b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hd1e100b_0.conda + sha256: 599f8820553b3a3405706d9cad390ac199e24515a0a82c87153c9b5b5fdba3b8 + md5: 3fa6eebabb77f65e82f86b72b95482db + depends: + - __osx >=10.9 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libcxx >=16.0.6 + - libglib >=2.78.0,<3.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pixman >=0.42.2,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 897919 + timestamp: 1697028755150 +- kind: conda + name: certifi + version: 2024.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + sha256: f1faca020f988696e6b6ee47c82524c7806380b37cfdd1def32f92c326caca54 + md5: 0876280e409658fc6f9e75d035960333 + depends: + - python >=3.7 + license: ISC + size: 160559 + timestamp: 1707022289175 +- kind: conda + name: charset-normalizer + version: 3.3.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9 + md5: 7f4a9e3fcff3f6356ae99244a014da6a + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 46597 + timestamp: 1698833765762 +- kind: conda + name: codespell + version: 2.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/codespell-2.3.0-pyhd8ed1ab_0.conda + sha256: f3ca4360e92732a4c805ea4387545b0cb17cfdba5a7da6e4f8f231581be4e9ec + md5: 6e67fa19bedafa7eb7d6ea91de53e03d + depends: + - python >=3.8 + license: GPL-2.0-only + license_family: GPL + size: 290955 + timestamp: 1716536580880 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + md5: 3faab06a954c2a04039983f2c4a50d99 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 25170 + timestamp: 1666700778190 +- kind: conda + name: contourpy + version: 1.2.1 + build: py39h0ca7971_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.1-py39h0ca7971_0.conda + sha256: 2ed1f40e016afaeb705297d6ce5b474c3570890bf972d3425c37bf45e196d088 + md5: a4c478d3b64c81d1742dc8073e4996b6 + depends: + - libcxx >=16 + - numpy >=1.20 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 232611 + timestamp: 1712430213507 +- kind: conda + name: contourpy + version: 1.2.1 + build: py39h1f6ef14_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.2.1-py39h1f6ef14_0.conda + sha256: 32820a069906394d10bd908a0cfdbb60b940fb81e71aef3303ab9ab93c4625e6 + md5: 03e25c6bae87f4f9595337255b44b0fb + depends: + - numpy >=1.20 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 186813 + timestamp: 1712430556544 +- kind: conda + name: contourpy + version: 1.2.1 + build: py39h48c5dd5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.1-py39h48c5dd5_0.conda + sha256: a0a42c5195a621ec86bb20b0f36e5406047bd655219cfab824ec20a2c6a0836d + md5: 2c4998473ca34fa4df959bd90eb9247a + depends: + - libcxx >=16 + - numpy >=1.20 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 225466 + timestamp: 1712430376578 +- kind: conda + name: contourpy + version: 1.2.1 + build: py39h7633fee_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py39h7633fee_0.conda + sha256: 7799c6cd8425ac69b2495b2acf938d85e6776c0c9129de86d18ec55e53bcfefc + md5: bdc188e59857d6efab332714e0d01d93 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.20 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 241771 + timestamp: 1712430062056 +- kind: conda + name: contourpy + version: 1.2.1 + build: py39hd16970a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.2.1-py39hd16970a_0.conda + sha256: 25216ac880cf43930f24365edd548f5fcf03bcf4e1b1b40cde0134ced33ee8f1 + md5: 66b9718539ecdd38876b0176c315bcad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.20 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 248196 + timestamp: 1712430213230 +- kind: conda + name: coverage + version: 7.5.3 + build: py39ha3e8b56_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.5.3-py39ha3e8b56_0.conda + sha256: eef056d2adfe2dc631a341e8014dd35edbe9a38e5e02aa94445e89e48fc4cded + md5: c76510270918b01306b44a984de24210 + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 288089 + timestamp: 1716932396751 +- kind: conda + name: coverage + version: 7.5.3 + build: py39ha55e580_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.5.3-py39ha55e580_0.conda + sha256: 3b0f991ba43d5f6da5d41fd75ac15424eb6859b520a916e0497220757f7f9859 + md5: 28d426e365cb4ed87d22d1a89c0bd006 + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + size: 311839 + timestamp: 1716931749866 +- kind: conda + name: coverage + version: 7.5.3 + build: py39hd3abc70_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.3-py39hd3abc70_0.conda + sha256: e8010a213c7bd0370c95d403ac835931e3f6fe9c8b5dbec5a21aa92ff06ebf42 + md5: 553b2bff605d995568217f8830c2c65c + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 287030 + timestamp: 1716931106150 +- kind: conda + name: coverage + version: 7.5.3 + build: py39hded5825_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.5.3-py39hded5825_0.conda + sha256: aaa2ec576b6bfdd497e1d3d4667d203efe05713e36332f0f9091e2e7cf12d509 + md5: 2f07d6c5b4ccdb86bae1eb2442a89405 + depends: + - __osx >=10.13 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 285193 + timestamp: 1716931191574 +- kind: conda + name: coverage + version: 7.5.3 + build: py39hfea33bf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.5.3-py39hfea33bf_0.conda + sha256: e3b18683329a019749d169aafc4738c7e22a7025b8946bf42a5c1e6e12d35140 + md5: 9024d084f1840bd7406746d0d9a56747 + depends: + - __osx >=11.0 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + - tomli + license: Apache-2.0 + license_family: APACHE + size: 285903 + timestamp: 1716931210531 +- kind: conda + name: cycler + version: 0.12.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8 + md5: 5cd86562580f274031ede6aa6aa24441 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 13458 + timestamp: 1696677888423 +- kind: conda + name: dbus + version: 1.13.6 + build: h5008d03_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- kind: conda + name: exceptiongroup + version: 1.2.0 + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda + sha256: a6ae416383bda0e3ed14eaa187c653e22bec94ff2aa3b56970cdf0032761e80d + md5: 8d652ea2ee8eaee02ed8dc820bc794aa + depends: + - python >=3.7 + license: MIT and PSF-2.0 + size: 20551 + timestamp: 1704921321122 +- kind: conda + name: execnet + version: 2.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda + sha256: 564bc012d73ca29964e7acca18d60b2fa8d20eea6d258d98cfc24df5167beaf0 + md5: 15dda3cdbf330abfe9f555d22f66db46 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 38883 + timestamp: 1712591929944 +- kind: conda + name: expat + version: 2.6.2 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.2-h2f0025b_0.conda + sha256: a7a998faf6b9ed71d8c5c67f996e7faa52a7b9b02ed2d2f2ab6cfa1db8e5aca4 + md5: 6d31100ba1e12773b4f1ef0693fb0169 + depends: + - libexpat 2.6.2 h2f0025b_0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 128302 + timestamp: 1710362329008 +- kind: conda + name: expat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + sha256: 89916c536ae5b85bb8bf0cfa27d751e274ea0911f04e4a928744735c14ef5155 + md5: 53fb86322bdb89496d7579fe3f02fd61 + depends: + - libexpat 2.6.2 h59595ed_0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 137627 + timestamp: 1710362144873 +- kind: conda + name: expat + version: 2.6.2 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + sha256: f5a13d4bc591a4dc210954f492dd59a0ecf9b9d2ab28bf2ece755ca8f69ec1b4 + md5: 52f9dec6758ceb8ce0ea8af9fa13eb1a + depends: + - libexpat 2.6.2 h63175ca_0 + license: MIT + license_family: MIT + size: 229627 + timestamp: 1710362661692 +- kind: conda + name: expat + version: 2.6.2 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + sha256: 0fd1befb18d9d937358a90d5b8f97ac2402761e9d4295779cbad9d7adfb47976 + md5: dc0882915da2ec74696ad87aa2350f27 + depends: + - libexpat 2.6.2 h73e2aa4_0 + license: MIT + license_family: MIT + size: 126612 + timestamp: 1710362607162 +- kind: conda + name: expat + version: 2.6.2 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + sha256: 9ac22553a4d595d7e4c9ca9aa09a0b38da65314529a7a7008edc73d3f9e7904a + md5: de0cff0ec74f273c4b6aa281479906c3 + depends: + - libexpat 2.6.2 hebf3989_0 + license: MIT + license_family: MIT + size: 124594 + timestamp: 1710362455984 +- kind: conda + name: filelock + version: 3.14.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.14.0-pyhd8ed1ab_0.conda + sha256: 6031be667e1b0cc0dee713f1cbca887cdee4daafa8bac478da33096f3147d38b + md5: 831d85ae0acfba31b8efd0f0d07da736 + depends: + - python >=3.7 + license: Unlicense + size: 15902 + timestamp: 1714422911808 +- kind: conda + name: flaky + version: 3.8.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/flaky-3.8.1-pyhd8ed1ab_0.conda + sha256: 57434214a3c5e33f06688896981d27262d823ae75b7b496e2d9c40c14f500c97 + md5: 4673657910db1d7914dc272124fe03ae + depends: + - python >=3.6 + license: Apache-2.0 + license_family: Apache + size: 22156 + timestamp: 1710293112378 +- kind: conda + name: flopy + version: 3.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/flopy-3.7.0-pyhd8ed1ab_0.conda + sha256: cede82da9023f5753fb7eea1d5968ab01f410fd39e23d0765c460b7b36bf006e + md5: 5e6f2953dbda961fdc3fe44a68b01f56 + depends: + - matplotlib-base >=1.4.0 + - numpy >=1.15.0,<2.0.0 + - pandas >=2.0.0 + - python >=3.8 + license: CC0-1.0 + size: 806923 + timestamp: 1716563541302 +- kind: conda + name: font-ttf-dejavu-sans-mono + version: '2.37' + build: hab24e00_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- kind: conda + name: font-ttf-inconsolata + version: '3.000' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- kind: conda + name: font-ttf-source-code-pro + version: '2.038' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- kind: conda + name: font-ttf-ubuntu + version: '0.83' + build: h77eed37_2 + build_number: 2 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + sha256: c940f6e969143e13a3a9660abb3c7e7e23b8319efb29dbdd5dee0b9939236e13 + md5: cbbe59391138ea5ad3658c76912e147f + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1622566 + timestamp: 1714483134319 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h14ed4e7_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83 + md5: 0f69b688f52ff6da70bccb7ff7001d1d + depends: + - 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,<2.0.0a0 + license: MIT + license_family: MIT + size: 272010 + timestamp: 1674828850194 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h5bb23bf_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + sha256: f63e6d1d6aef8ba6de4fc54d3d7898a153479888d40ffdf2e4cfad6f92679d34 + md5: 86cc5867dfbee4178118392bae4a3c89 + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: MIT + license_family: MIT + size: 237068 + timestamp: 1674829100063 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h82840c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + sha256: 7094917fc6758186e17c61d8ee8fd2bbbe9f303b4addac61d918fa415c497e2b + md5: f77d47ddb6d3cc5b39b9bdf65635afbb + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: MIT + license_family: MIT + size: 237668 + timestamp: 1674829263740 +- kind: conda + name: fontconfig + version: 2.14.2 + build: ha9a116f_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.14.2-ha9a116f_0.conda + sha256: 71143b04d9beeb76264a54cb42a2953ff858a95f7383531fcb3a33ac6433e7f6 + md5: 6d2d19ea85f9d41534cd28fdefd59a25 + depends: + - 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,<2.0.0a0 + license: MIT + license_family: MIT + size: 280375 + timestamp: 1674830224830 +- kind: conda + name: fontconfig + version: 2.14.2 + build: hbde0cde_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + sha256: 643f2b95be68abeb130c53d543dcd0c1244bebabd58c774a21b31e4b51ac3c96 + md5: 08767992f1a4f1336a257af1241034bd + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 190111 + timestamp: 1674829354122 +- kind: conda + name: fonts-conda-ecosystem + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- kind: conda + name: fonts-conda-forge + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- kind: conda + name: fonttools + version: 4.53.0 + build: py39ha55e580_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.53.0-py39ha55e580_0.conda + sha256: 8f71276eeab111a8f0c2676a6623ab8968f76d1b97805fbeb1aa91174b956c7d + md5: 7c4625b8a1013dd22e924f1fa9fbc605 + depends: + - brotli + - munkres + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - unicodedata2 >=14.0.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 1918984 + timestamp: 1717209664553 +- kind: conda + name: fonttools + version: 4.53.0 + build: py39hd3abc70_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.0-py39hd3abc70_0.conda + sha256: 2e11bcf00f158e8a8a836fc32633ff5bee17a08bcffee21a1c62cbba99fbcb7e + md5: 9dae301603c88aef61dba733e8931cdd + depends: + - brotli + - libgcc-ng >=12 + - munkres + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - unicodedata2 >=14.0.0 + license: MIT + license_family: MIT + size: 2308671 + timestamp: 1717209340659 +- kind: conda + name: fonttools + version: 4.53.0 + build: py39hded5825_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.53.0-py39hded5825_0.conda + sha256: dffaddbc4f3542bcaa2c8f33e790f50df1a3b3684392bbaf192eb027cffc63f9 + md5: 8fb4a1a0461e7ee990fe3d7150ad132f + depends: + - __osx >=10.13 + - brotli + - munkres + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - unicodedata2 >=14.0.0 + license: MIT + license_family: MIT + size: 2209990 + timestamp: 1717209382658 +- kind: conda + name: fonttools + version: 4.53.0 + build: py39he257ee7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.53.0-py39he257ee7_0.conda + sha256: dfad9b7b14f82278a48e38e433e66d604a3cffe5d96c361795f4adf6dc8338ff + md5: de1dc44f6b1a4393b37f4264d8e31e2a + depends: + - brotli + - libgcc-ng >=12 + - munkres + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + - unicodedata2 >=14.0.0 + license: MIT + license_family: MIT + size: 2291678 + timestamp: 1717209430435 +- kind: conda + name: fonttools + version: 4.53.0 + build: py39hfea33bf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.53.0-py39hfea33bf_0.conda + sha256: 47bc9057dea1114c2e9aacc0bf8c4ed6b221061766bb1fac1b23fe68937b794a + md5: 4569fb546026fc12ab645a966db86629 + depends: + - __osx >=11.0 + - brotli + - munkres + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + - unicodedata2 >=14.0.0 + license: MIT + license_family: MIT + size: 2230048 + timestamp: 1717209417464 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: h60636b9_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e + md5: 25152fce119320c980e5470e64834b50 + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 599300 + timestamp: 1694616137838 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hdaf720e_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 + md5: 3761b23693f768dc75a8fd0a73ca053f + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-only OR FTL + size: 510306 + timestamp: 1694616398888 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- kind: conda + name: fribidi + version: 1.0.10 + build: h27ca646_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 + md5: c64443234ff91d70cb9c7dc926c58834 + license: LGPL-2.1 + size: 60255 + timestamp: 1604417405528 +- kind: conda + name: fribidi + version: 1.0.10 + build: h36c2ea0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 + md5: ac7bc6a654f8f41b352b38f4051135f8 + depends: + - libgcc-ng >=7.5.0 + license: LGPL-2.1 + size: 114383 + timestamp: 1604416621168 +- kind: conda + name: fribidi + version: 1.0.10 + build: h8d14728_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + sha256: e0323e6d7b6047042970812ee810c6b1e1a11a3af4025db26d0965ae5d206104 + md5: 807e81d915f2bb2e49951648615241f6 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: LGPL-2.1 + size: 64567 + timestamp: 1604417122064 +- kind: conda + name: fribidi + version: 1.0.10 + build: hb9de7d4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.10-hb9de7d4_0.tar.bz2 + sha256: bcb5a40f1aaf4ea8cda2fc6b2b12aa336403772121350281ce31fd2d9d3e214e + md5: f6c91a43eace6fb926a8730b3b9a8a50 + depends: + - libgcc-ng >=7.5.0 + license: LGPL-2.1 + size: 115689 + timestamp: 1604417149643 +- kind: conda + name: fribidi + version: 1.0.10 + build: hbcb3906_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 + md5: f1c6b41e0f56998ecd9a3e210faa1dc0 + license: LGPL-2.1 + size: 65388 + timestamp: 1604417213 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: h7ddc832_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 + md5: 151309a7e1eb57a3c2ab8088a1d74f3e + depends: + - __osx >=11.0 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 509570 + timestamp: 1715783199780 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: ha587570_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 + md5: ee186d2e8db4605030753dc05025d4a0 + depends: + - __osx >=10.13 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 516815 + timestamp: 1715783154558 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: ha61d561_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.42.12-ha61d561_0.conda + sha256: 608f64aa9cf3085e91da8d417aa7680715130b4da73d8aabc50b19e29de697d2 + md5: 332ed304e6d1c1333ccbdc0fdd722fe9 + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 536613 + timestamp: 1715784386033 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: hb9ae30d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 528149 + timestamp: 1715782983957 +- kind: conda + name: getopt-win32 + version: '0.1' + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c + md5: 714d0882dc5e692ca4683d8e520f73c6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-3.0-only + license_family: GPL + size: 21903 + timestamp: 1694400856979 +- kind: conda + name: gettext + version: 0.22.5 + build: h59595ed_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda + sha256: 386181254ddd2aed1fccdfc217da5b6545f6df4e9979ad8e08f5e91e22eaf7dc + md5: 219ba82e95d7614cf7140d2a4afc0926 + depends: + - gettext-tools 0.22.5 h59595ed_2 + - libasprintf 0.22.5 h661eb56_2 + - libasprintf-devel 0.22.5 h661eb56_2 + - libgcc-ng >=12 + - libgettextpo 0.22.5 h59595ed_2 + - libgettextpo-devel 0.22.5 h59595ed_2 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 475058 + timestamp: 1712512357949 +- kind: conda + name: gettext + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.22.5-h5ff76d1_2.conda + sha256: ba9a4680b018a4ca517ec20beb25b09c97e293ecd16b931075e689db10291712 + md5: c09b3dcf2adc5a2a32d11ab90289b8fa + depends: + - gettext-tools 0.22.5 h5ff76d1_2 + - libasprintf 0.22.5 h5ff76d1_2 + - libasprintf-devel 0.22.5 h5ff76d1_2 + - libcxx >=16 + - libgettextpo 0.22.5 h5ff76d1_2 + - libgettextpo-devel 0.22.5 h5ff76d1_2 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5ff76d1_2 + - libintl-devel 0.22.5 h5ff76d1_2 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 481687 + timestamp: 1712513003915 +- kind: conda + name: gettext + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8fbad5d_2.conda + sha256: 7188b466071698759b125aaed9b4d78940e72e6299b0c6dbad6f35c85cf3d27b + md5: 404e2894e9cb2835246cef47317ff763 + depends: + - gettext-tools 0.22.5 h8fbad5d_2 + - libasprintf 0.22.5 h8fbad5d_2 + - libasprintf-devel 0.22.5 h8fbad5d_2 + - libcxx >=16 + - libgettextpo 0.22.5 h8fbad5d_2 + - libgettextpo-devel 0.22.5 h8fbad5d_2 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8fbad5d_2 + - libintl-devel 0.22.5 h8fbad5d_2 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 482649 + timestamp: 1712512963023 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h59595ed_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-h59595ed_2.conda + sha256: 67d7b1d6fe4f1c516df2000640ec7dcfebf3ff6ea0785f0276870e730c403d33 + md5: 985f2f453fb72408d6b6f1be0f324033 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 2728420 + timestamp: 1712512328692 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gettext-tools-0.22.5-h5ff76d1_2.conda + sha256: 4db71a66340d068c57e16c574c356db6df54ac0147b5b26d3313093f7854ee6d + md5: 37e1cb0efeff4d4623a6357e37e0105d + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5ff76d1_2 + license: GPL-3.0-or-later + license_family: GPL + size: 2501207 + timestamp: 1712512940076 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8fbad5d_2.conda + sha256: f60d1671e30ac60598396c11fcec4426f7ddb281bf9e37af2262016b4d812cce + md5: 31117a80d73f4fac856ab09fd9f3c6b5 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8fbad5d_2 + license: GPL-3.0-or-later + license_family: GPL + size: 2482262 + timestamp: 1712512901194 +- kind: conda + name: giflib + version: 5.2.2 + build: h10d778d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda + sha256: 2c825df829097536314a195ae5cacaa8695209da6b4400135a65d8e23c008ff8 + md5: 03e8c9b4d3da5f3d6eabdd020c2d63ac + license: MIT + license_family: MIT + size: 74516 + timestamp: 1712692686914 +- kind: conda + name: giflib + version: 5.2.2 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + sha256: a79dc3bd54c4fb1f249942ee2d5b601a76ecf9614774a4cff9af49adfa458db2 + md5: 2f809afaf0ba1ea4135dce158169efac + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 82124 + timestamp: 1712692444545 +- kind: conda + name: giflib + version: 5.2.2 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda + sha256: 843b3f364ff844137e37d5c0a181f11f6d51adcedd216f019d074e5aa5d7e09c + md5: 95fa1486c77505330c20f7202492b913 + license: MIT + license_family: MIT + size: 71613 + timestamp: 1712692611426 +- kind: conda + name: giflib + version: 5.2.2 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff + md5: 3bf7b9fd5a7136126e0234db4b87c8b6 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 77248 + timestamp: 1712692454246 +- kind: conda + name: glib + version: 2.80.2 + build: h0df6a38_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/glib-2.80.2-h0df6a38_0.conda + sha256: 8d4ebee8bfef919212e8c692f88cfa3f5f393501338ca1f1df83bbc2f0f3b6e7 + md5: a728ca6f04c33ecb0f39eeda5fbd0e23 + depends: + - glib-tools 2.80.2 h2f9d560_0 + - libffi >=3.4,<4.0a0 + - libglib 2.80.2 h0df6a38_0 + - libintl >=0.22.5,<1.0a0 + - libintl-devel + - python * + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + size: 571410 + timestamp: 1715253202444 +- kind: conda + name: glib + version: 2.80.2 + build: hf974151_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.2-hf974151_0.conda + sha256: d10a0f194d2c125617352a81a4ff43a17cf5835e88e8f151da9f9710e2db176d + md5: d427988dc3dbd0a4c136f52db356cc6a + depends: + - glib-tools 2.80.2 hb6ce0ca_0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libglib 2.80.2 hf974151_0 + - python * + license: LGPL-2.1-or-later + size: 600389 + timestamp: 1715252749399 +- kind: conda + name: glib-tools + version: 2.80.2 + build: h2f9d560_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.80.2-h2f9d560_0.conda + sha256: 2ac7b9cf3cf57a7cec3c431133a989cc783673858fb4225232c03e5ae28bd1db + md5: 42fc785d9db7ab051a206fbf882ecf2e + depends: + - libglib 2.80.2 h0df6a38_0 + - libintl >=0.22.5,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + size: 94852 + timestamp: 1715253157140 +- kind: conda + name: glib-tools + version: 2.80.2 + build: hb6ce0ca_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.2-hb6ce0ca_0.conda + sha256: 221cd047f998301b96b1517d9f7d3fb0e459e8ee18778a1211f302496f6e110d + md5: a965aeaf060289528a3fbe09326edae2 + depends: + - libgcc-ng >=12 + - libglib 2.80.2 hf974151_0 + license: LGPL-2.1-or-later + size: 114359 + timestamp: 1715252713902 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h2f0025b_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 99453 + timestamp: 1711634223220 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h59595ed_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h63175ca_1003 + build_number: 1003 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f + md5: 3194499ee7d1a67404a87d0eefdd92c6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + size: 95406 + timestamp: 1711634622644 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h73e2aa4_1003 + build_number: 1003 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a + md5: fc7124f86e1d359fc5d878accd9e814c + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + size: 84384 + timestamp: 1711634311095 +- kind: conda + name: graphite2 + version: 1.3.13 + build: hebf3989_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + size: 79774 + timestamp: 1711634444608 +- kind: conda + name: graphviz + version: 2.50.0 + build: h54e2d63_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-2.50.0-h54e2d63_4.conda + sha256: 87765d9510980c5ede7a693ce154919c885bff9815f2dff362716b72be31f7eb + md5: cdd926b037948deb2fc86f629619acac + depends: + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.11,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=16 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.0,<3.0a0 + - librsvg >=2.58.0,<3.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2355251 + timestamp: 1714468855930 +- kind: conda + name: graphviz + version: 2.50.0 + build: h65e8cce_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-2.50.0-h65e8cce_4.conda + sha256: 6190ee42bb016d852839f6f290e8976ffdd20879d565b19621b4ae0cdffd1967 + md5: 84cd8b382d647ef29aeca151a2393bf7 + depends: + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.11,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.0,<3.0a0 + - librsvg >=2.58.0,<3.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2683034 + timestamp: 1714468037338 +- kind: conda + name: graphviz + version: 2.50.0 + build: h78e8752_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.50.0-h78e8752_4.conda + sha256: c0e5ea955a6de926555293d7284e93c4a09078143678f3f01280d4b1716c637d + md5: f2b8527693867d72d94e4ed4126637cd + depends: + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.11,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.0,<3.0a0 + - librsvg >=2.58.0,<3.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2584669 + timestamp: 1714468118750 +- kind: conda + name: graphviz + version: 2.50.0 + build: h8671558_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-2.50.0-h8671558_4.conda + sha256: 516ed5c20eebf54db55f6e14cc5e1571ed2b9bffc12fb83d6f3da99950d782c3 + md5: 5af4ac346b120e4ede0a98a94e65e5ac + depends: + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.11,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=16 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.0,<3.0a0 + - librsvg >=2.58.0,<3.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + size: 2441315 + timestamp: 1714468654219 +- kind: conda + name: graphviz + version: 2.50.0 + build: hb5dec95_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/graphviz-2.50.0-hb5dec95_4.conda + sha256: 925ef4ef92512197c4ed0afbd748b2c202130b38ed823f06672e325abcbe0a28 + md5: 6e6b1732a1882bd5e316017f7b3847cd + depends: + - cairo >=1.18.0,<2.0a0 + - getopt-win32 >=0.1,<0.2.0a0 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.0,<3.0a0 + - pango >=1.50.14,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: EPL-1.0 + license_family: Other + size: 928271 + timestamp: 1714468744451 +- kind: conda + name: gst-plugins-base + version: 1.24.4 + build: h9ad1361_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.24.4-h9ad1361_0.conda + sha256: 4726f1905bbc84b44c8a78a53c0b2bc20b0f6780614b897e83bdfb9f1f94e9d5 + md5: 147cce520ec59367549fd0d96d404213 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.11,<1.3.0a0 + - gstreamer 1.24.4 haf2f30d_0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 2784812 + timestamp: 1717008701241 +- kind: conda + name: gst-plugins-base + version: 1.24.4 + build: hba88be7_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.24.4-hba88be7_0.conda + sha256: 76ad01a5d20a37f0113fedd79ee74cc9d9fff24bf8e396ce2f70a7d358de6b13 + md5: 0b1d683d462029446924fa87a50dda12 + depends: + - gstreamer 1.24.4 h5006eae_0 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - libzlib >=1.2.13,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + size: 2065294 + timestamp: 1717009247100 +- kind: conda + name: gstreamer + version: 1.24.4 + build: h5006eae_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.24.4-h5006eae_0.conda + sha256: 6653ba5b7f698020a6278fc12afd41b8f76b7477af4a5eb732ff0b8fafaa1b0a + md5: 3d7ebad364d5f63a1ae54eecb35aee31 + depends: + - glib >=2.80.2,<3.0a0 + - libglib >=2.80.2,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + size: 2029614 + timestamp: 1717009051538 +- kind: conda + name: gstreamer + version: 1.24.4 + build: haf2f30d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.24.4-haf2f30d_0.conda + sha256: d20031196ed30ee5eb1e225f6cf0ed605d95158612589602a9d893a7386a4608 + md5: 926c2c7ee7a0b48d6d70783a33f7bc80 + depends: + - __glibc >=2.17,<3.0.a0 + - glib >=2.80.2,<3.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 2019311 + timestamp: 1717008522417 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h0d7db29_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk2-2.24.33-h0d7db29_4.conda + sha256: 1ab89b67ed28f9ff2a8925b4cd79b0c7d7793481e6f3775b691987d09cf2a1c7 + md5: c65965f92ea5701d983d16aada829dd9 + depends: + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.78.4,<3.0a0 + - pango >=1.50.14,<2.0a0 + - xorg-libx11 >=1.8.7,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: LGPL-2.1-or-later + size: 6664464 + timestamp: 1710148262255 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h280cfa0_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda + sha256: b946ba60d177d72157cad8af51723f1d081a4794741d35debe53f8b2c807f3af + md5: 410f86e58e880dcc7b0e910a8e89c05c + depends: + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.78.4,<3.0a0 + - pango >=1.50.14,<2.0a0 + - xorg-libx11 >=1.8.7,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: LGPL-2.1-or-later + size: 6478240 + timestamp: 1710142047337 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h7895bb2_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h7895bb2_4.conda + sha256: fab8403a67273f69780b1e9b5f1db1aff74ff9472acc9f6df6d9b50fc252bd50 + md5: 9c1ba062d59f3f49a2d32d9611d72686 + depends: + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - gettext >=0.21.1,<1.0a0 + - libglib >=2.78.4,<3.0a0 + - pango >=1.50.14,<2.0a0 + license: LGPL-2.1-or-later + size: 6159912 + timestamp: 1710143969442 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h8ca4665_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h8ca4665_4.conda + sha256: 5283dfb9a96d78a67e0cbf6e4592411bb19eaf27f2c7c14b47e63162e71317d2 + md5: ff451625250bf843393ca3d660accab3 + depends: + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - gettext >=0.21.1,<1.0a0 + - libglib >=2.78.4,<3.0a0 + - pango >=1.50.14,<2.0a0 + license: LGPL-2.1-or-later + size: 6137964 + timestamp: 1710142524166 +- kind: conda + name: gts + version: 0.7.6 + build: h53e17e3_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 + md5: 848cc963fcfbd063c7a023024aa3bec0 + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 280972 + timestamp: 1686545425074 +- kind: conda + name: gts + version: 0.7.6 + build: h6b5321d_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + sha256: b79755d2f9fc2113b6949bfc170c067902bc776e2c20da26e746e780f4f5a2d4 + md5: a41f14768d5e377426ad60c613f2923b + depends: + - libglib >=2.76.3,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + size: 188688 + timestamp: 1686545648050 +- kind: conda + name: gts + version: 0.7.6 + build: h977cf35_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b + md5: 4d8df0b0db060d33c9a702ada998a8fe + depends: + - libgcc-ng >=12 + - libglib >=2.76.3,<3.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 318312 + timestamp: 1686545244763 +- kind: conda + name: gts + version: 0.7.6 + build: he293c15_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda + sha256: 1e9cc30d1c746d5a3399a279f5f642a953f37d9f9c82fd4d55b301e9c2a23f7c + md5: 2aeaeddbd89e84b60165463225814cfc + depends: + - libgcc-ng >=12 + - libglib >=2.76.3,<3.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 332673 + timestamp: 1686545222091 +- kind: conda + name: gts + version: 0.7.6 + build: he42f4ea_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba + md5: 21b4dd3098f63a74cf2aa9159cbef57d + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + size: 304331 + timestamp: 1686545503242 +- kind: conda + name: harfbuzz + version: 8.5.0 + build: h053f038_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-8.5.0-h053f038_0.conda + sha256: 4142a842d97ddbdefbd28b605f1b5092f6ce23fda5229a942aa4a7fb6f510af3 + md5: 7ef43d914a9727c6ef55164e51a7016d + depends: + - __osx >=10.13 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=73.2,<74.0a0 + - libcxx >=16 + - libglib >=2.80.2,<3.0a0 + license: MIT + license_family: MIT + size: 1355352 + timestamp: 1715701241679 +- kind: conda + name: harfbuzz + version: 8.5.0 + build: h1836168_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-8.5.0-h1836168_0.conda + sha256: 91121ed30fa7d775f1cf7ae5de2f7852d66a604269509c4bb108b143315d8321 + md5: aa22b942b980c17612d344adcd0f8798 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=73.2,<74.0a0 + - libcxx >=16 + - libglib >=2.80.2,<3.0a0 + license: MIT + license_family: MIT + size: 1320454 + timestamp: 1715701618297 +- kind: conda + name: harfbuzz + version: 8.5.0 + build: h81778c3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-8.5.0-h81778c3_0.conda + sha256: f633a33dfe5c799a571af41e3515fc706a6f4988701d39e7b5d37811a1745bb9 + md5: 2ff854071c04998038c0e1db4c9232f7 + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=73.2,<74.0a0 + - libglib >=2.80.2,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 1098168 + timestamp: 1715702362769 +- kind: conda + name: harfbuzz + version: 8.5.0 + build: h9812418_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-8.5.0-h9812418_0.conda + sha256: 9811d832edd883543575ccdc254b2b6e1a87240347b8f9cdb51b72d7e4662b64 + md5: fd468e09d7fff9e87e70789e78829933 + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1623653 + timestamp: 1715705507885 +- kind: conda + name: harfbuzz + version: 8.5.0 + build: hfac3d4d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda + sha256: a141fc55f8bfdab7db03fe9d8e61cb0f8c8b5970ed6540eda2db7186223f4444 + md5: f5126317dd0ce0ba26945e411ecc6960 + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1598244 + timestamp: 1715701061364 +- kind: conda + name: icu + version: '73.2' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8 + md5: cc47e1facc155f91abd89b11e48e72ff + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12089150 + timestamp: 1692900650789 +- kind: conda + name: icu + version: '73.2' + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/icu-73.2-h63175ca_0.conda + sha256: 423aaa2b69d713520712f55c7c71994b7e6f967824bb39b59ad968e7b209ce8c + md5: 0f47d9e3192d9e09ae300da0d28e0f56 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 13422193 + timestamp: 1692901469029 +- kind: conda + name: icu + version: '73.2' + build: h787c7f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-73.2-h787c7f5_0.conda + sha256: aedb9c911ede5596c87e1abd763ed940fab680d71fdb953bce8e4094119d47b3 + md5: 9d3c29d71f28452a2e843aff8cbe09d2 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12237094 + timestamp: 1692900632394 +- kind: conda + name: icu + version: '73.2' + build: hc8870d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda + sha256: ff9cd0c6cd1349954c801fb443c94192b637e1b414514539f3c49c56a39f51b1 + md5: 8521bd47c0e11c5902535bb1a17c565f + license: MIT + license_family: MIT + size: 11997841 + timestamp: 1692902104771 +- kind: conda + name: icu + version: '73.2' + build: hf5e326d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/icu-73.2-hf5e326d_0.conda + sha256: f66362dc36178ac9b7c7a9b012948a9d2d050b3debec24bbd94aadbc44854185 + md5: 5cc301d759ec03f28328428e28f65591 + license: MIT + license_family: MIT + size: 11787527 + timestamp: 1692901622519 +- kind: conda + name: idna + version: '3.7' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b + md5: c0cc1420498b17414d8617d0b9f506ca + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 52718 + timestamp: 1713279497047 +- kind: conda + name: importlib-resources + version: 6.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.4.0-pyhd8ed1ab_0.conda + sha256: 38db827f445ae437a15d50a94816ae67a48285d0700f736af3eb90800a71f079 + md5: dcbadab7a68738a028e195ab68ab2d2e + depends: + - importlib_resources >=6.4.0,<6.4.1.0a0 + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 9657 + timestamp: 1711041029062 +- kind: conda + name: importlib_resources + version: 6.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + sha256: c6ae80c0beaeabb342c5b041f19669992ae6e937dbec56ced766cb035900f9de + md5: c5d3907ad8bd7bf557521a1833cf7e6d + depends: + - python >=3.8 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.4.0,<6.4.1.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33056 + timestamp: 1711041009039 +- kind: conda + name: iniconfig + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 + md5: f800d2da156d08e289b14e87e43c1ae5 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 11101 + timestamp: 1673103208955 +- kind: conda + name: intel-openmp + version: 2024.1.0 + build: h57928b3_966 + build_number: 966 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.1.0-h57928b3_966.conda + sha256: 77465396f2636c8b3b3a587f1636ee35c17a73e2a2c7e0ea0957b05f84704cf3 + md5: 35d7ea07ad6c878bd7240d2d6c1b8657 + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 1616293 + timestamp: 1716560867765 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: kiwisolver + version: 1.4.5 + build: py39h1f6ef14_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.5-py39h1f6ef14_1.conda + sha256: 2d6167d4c67b26d2363266b2fa6805e12da920fe5682847d8a5d9250e76dd833 + md5: 4fc5bd0a7b535252028c647cc27d6c87 + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 55660 + timestamp: 1695380433980 +- kind: conda + name: kiwisolver + version: 1.4.5 + build: py39h7633fee_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1.conda + sha256: 620d2aa2c3f016aa569b4a679688cb34f27c05e08555e4860099cf001bd740e4 + md5: c9f74d717e5a2847a9f8b779c54130f2 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 73457 + timestamp: 1695380118523 +- kind: conda + name: kiwisolver + version: 1.4.5 + build: py39h8ee36c8_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.5-py39h8ee36c8_1.conda + sha256: 1ef89b03dd04951e0d78dd36e678b276f18b94326a85b271251e41465aded09b + md5: 6072db04642b21329b0502a177ec18bf + depends: + - libcxx >=15.0.7 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 60498 + timestamp: 1695380322018 +- kind: conda + name: kiwisolver + version: 1.4.5 + build: py39had2cf8c_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.5-py39had2cf8c_1.conda + sha256: aa6b1145e81ec1e5458f54b1ce0243cc24a70c6a2da20c6afae0482fed6a05a9 + md5: ddb99610f7b950fdd5ff2aff19136363 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 73233 + timestamp: 1695381496108 +- kind: conda + name: kiwisolver + version: 1.4.5 + build: py39hbd775c9_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.5-py39hbd775c9_1.conda + sha256: ef29cfa7a05431f89f0bcf456d2d094dc3ff3cdbfebf7210a1fd55755ef61926 + md5: 6a5917bf932fcaae394baaf72cc11edb + depends: + - libcxx >=15.0.7 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: BSD-3-Clause + license_family: BSD + size: 62080 + timestamp: 1695380521068 +- kind: conda + name: krb5 + version: 1.21.2 + build: h659d440_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda + sha256: 259bfaae731989b252b7d2228c1330ef91b641c9d68ff87dae02cbae682cb3e4 + md5: cd95826dbd331ed1be26bdf401432844 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.1.2,<4.0a0 + license: MIT + license_family: MIT + size: 1371181 + timestamp: 1692097755782 +- kind: conda + name: krb5 + version: 1.21.2 + build: heb0366b_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.2-heb0366b_0.conda + sha256: 6002adff9e3dcfc9732b861730cb9e33d45fd76b2035b2cdb4e6daacb8262c0b + md5: 6e8b0f22b4eef3b3cb3849bb4c3d47f9 + depends: + - openssl >=3.1.2,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 710894 + timestamp: 1692098129546 +- kind: conda + name: lame + version: '3.100' + build: h166bdaf_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- kind: conda + name: lcms2 + version: '2.16' + build: h67d730c_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda + sha256: f9fd9e80e46358a57d9bb97b1e37a03da4022143b019aa3c4476d8a7795de290 + md5: d3592435917b62a8becff3a60db674f6 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 507632 + timestamp: 1701648249706 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: ha2f27b4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda + sha256: 222ebc0a55544b9922f61e75015d02861e65b48f12113af41d48ba0814e14e4e + md5: 1442db8f03517834843666c422238c9b + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: MIT + license_family: MIT + size: 224432 + timestamp: 1701648089496 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- kind: conda + name: ld_impl_linux-64 + version: '2.40' + build: hf3520f5_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_2.conda + sha256: 5ed96807b26bc32d2d180e38e7340388ddfdb642950f888f7da78d274846afea + md5: 61b0bd5219ce7192b4e3633521a78975 + constrains: + - binutils_impl_linux-64 2.40 + license: GPL-3.0-only + license_family: GPL + size: 708179 + timestamp: 1717523002366 +- kind: conda + name: ld_impl_linux-aarch64 + version: '2.40' + build: h9fc2d93_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h9fc2d93_2.conda + sha256: babfed8e402a0d6d5af9c705af687b584863c68147a1fe1b80e99f4317112097 + md5: 4db8582be880caa8946573950c3e0e8b + constrains: + - binutils_impl_linux-aarch64 2.40 + license: GPL-3.0-only + license_family: GPL + size: 735830 + timestamp: 1717523180093 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 + md5: 1900cb3cab5055833cfddb0ba233b074 + depends: + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30037 + license: Apache-2.0 + license_family: Apache + size: 194365 + timestamp: 1657977692274 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- kind: conda + name: lerc + version: 4.0.0 + build: hb486fe8_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 290319 + timestamp: 1657977526749 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-h5ff76d1_2.conda + sha256: 4babb29b8d39ae8b341c094c134a1917c595846e5f974c9d0cb64d3f734b46b1 + md5: ad803793d7168331f1395685cbdae212 + license: LGPL-2.1-or-later + size: 40438 + timestamp: 1712512749697 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h661eb56_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-h661eb56_2.conda + sha256: 31d58af7eb54e2938123200239277f14893c5fa4b5d0280c8cf55ae10000638b + md5: dd197c968bf9760bba0031888d431ede + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later + size: 43226 + timestamp: 1712512265295 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8fbad5d_2.conda + sha256: 04bbe4374719906cd08b639a3f34828030f405c33b47c757b47fd55aa7310179 + md5: 1b27402397a76115679c4855ab2ece41 + license: LGPL-2.1-or-later + size: 40630 + timestamp: 1712512727388 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-h5ff76d1_2.conda + sha256: 39fa757378b49993142013c1f69dd56248cc3703c2f04c5bcf4cc4acdc644ae3 + md5: c7182eda3bc727384e2f98f4d680fa7d + depends: + - libasprintf 0.22.5 h5ff76d1_2 + license: LGPL-2.1-or-later + size: 34702 + timestamp: 1712512806211 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h661eb56_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda + sha256: 99d26d272a8203d30b3efbe734a99c823499884d7759b4291674438137c4b5ca + md5: 02e41ab5834dcdcc8590cf29d9526f50 + depends: + - libasprintf 0.22.5 h661eb56_2 + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 34225 + timestamp: 1712512295117 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8fbad5d_2.conda + sha256: f5331486854a5fe80bb837891efb28a28623f762327372cb4cbc264c9c4bf9e2 + md5: 480c106e87d4c4791e6b55a6d1678866 + depends: + - libasprintf 0.22.5 h8fbad5d_2 + license: LGPL-2.1-or-later + size: 34625 + timestamp: 1712512769736 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_linux64_openblas + build_number: 22 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda + sha256: 082b8ac20d43a7bbcdc28b3b1cd40e4df3a8b5daf0a2d23d68953a44d2d12c1b + md5: 1a2a0cd3153464fee6646f3dd6dad9b8 + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - libcblas 3.9.0 22_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 22_linux64_openblas + - liblapack 3.9.0 22_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14537 + timestamp: 1712542250081 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_linuxaarch64_openblas + build_number: 22 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-22_linuxaarch64_openblas.conda + sha256: eb4398566a601e68b21ceab9a905a619b94d4d6c8242fffd9ed57cc26d29e278 + md5: 068ab33f2382cda4dd0b72a715ad33b5 + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - blas * openblas + - libcblas 3.9.0 22_linuxaarch64_openblas + - liblapacke 3.9.0 22_linuxaarch64_openblas + - liblapack 3.9.0 22_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14612 + timestamp: 1712542041279 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + sha256: d72060239f904b3a81d2329efcf84dc62c2dfd66dbc4efc8dcae1afdf8f02b59 + md5: b80966a8c8dd0b531f8e65f709d732e8 + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - libcblas 3.9.0 22_osx64_openblas + - liblapack 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14749 + timestamp: 1712542279018 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_osxarm64_openblas + build_number: 22 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-22_osxarm64_openblas.conda + sha256: 8620e13366076011cfcc6b2565c7a2d362c5d3f0423f54b9ef9bfc17b1a012a4 + md5: aeaf35355ef0f37c7c1ba35b7b7db55f + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - blas * openblas + - liblapack 3.9.0 22_osxarm64_openblas + - liblapacke 3.9.0 22_osxarm64_openblas + - libcblas 3.9.0 22_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14824 + timestamp: 1712542396471 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_win64_mkl + build_number: 22 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-22_win64_mkl.conda + sha256: 4faab445cbd9a13736a206b98fde962d0a9fa80dcbd38300951a8b2863e7c35c + md5: 65c56ecdeceffd6c32d3d54db7e02c6e + depends: + - mkl 2024.1.0 h66d3029_692 + constrains: + - liblapacke 3.9.0 22_win64_mkl + - blas * mkl + - libcblas 3.9.0 22_win64_mkl + - liblapack 3.9.0 22_win64_mkl + license: BSD-3-Clause + license_family: BSD + size: 5182602 + timestamp: 1712542984136 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + sha256: f57c57c442ef371982619f82af8735f93a4f50293022cfd1ffaf2ff89c2e0b2a + md5: 9e6c31441c9aa24e41ace40d6151aab6 + license: MIT + license_family: MIT + size: 67476 + timestamp: 1695990207321 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h31becfc_1.conda + sha256: 1c3d4ea61e862eb5f1968915f6f5917ea61db9921aec30b14785775c87234060 + md5: 1b219fd801eddb7a94df5bd001053ad9 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 69237 + timestamp: 1695990107496 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + sha256: 556f0fddf4bd4d35febab404d98cb6862ce3b7ca843e393da0451bfc4654cf07 + md5: cd68f024df0304be41d29a9088162b02 + license: MIT + license_family: MIT + size: 68579 + timestamp: 1695990426128 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + sha256: f75fed29b0cc503d1b149a4945eaa32df56e19da5e2933de29e8f03947203709 + md5: f77f319fb82980166569e1280d5b2864 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 70598 + timestamp: 1695990405143 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78 + md5: aec6c91c7371c26392a06708a73c70e5 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 69403 + timestamp: 1695990007212 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + sha256: b11939c4c93c29448660ab5f63273216969d1f2f315dd9be60f3c43c4e61a50c + md5: 9ee0bab91b2ca579e10353738be36063 + depends: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 30327 + timestamp: 1695990232422 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h31becfc_1.conda + sha256: 1d2558efbb727f9065dd94d5f906aa68252153f80e571456d3695fa102e8a352 + md5: 8db7cff89510bec0b863a0a8ee6a7bce + depends: + - libbrotlicommon 1.1.0 h31becfc_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 31926 + timestamp: 1695990123189 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + sha256: c1c85937828ad3bc434ac60b7bcbde376f4d2ea4ee42d15d369bf2a591775b4a + md5: ee1a519335cc10d0ec7e097602058c0a + depends: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 28928 + timestamp: 1695990463780 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + sha256: 1b352ee05931ea24c11cd4a994d673890fd1cc690c21e023e736bdaac2632e93 + md5: 19ce3e1dacc7912b3d6ff40690ba9ae0 + depends: + - libbrotlicommon 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 32788 + timestamp: 1695990443165 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926 + md5: f07002e225d7a60a694d42a7bf5ff53f + depends: + - libbrotlicommon 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 32775 + timestamp: 1695990022788 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + sha256: bc964c23e1a60ca1afe7bac38a9c1f2af3db4a8072c9f2eac4e4de537a844ac7 + md5: 8a421fe09c6187f0eb5e2338a8a8be6d + depends: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 299092 + timestamp: 1695990259225 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h31becfc_1.conda + sha256: 271fd8ef9181ad19246bf8b4273c99b9608c6eedecb6b11cd925211b8f1c6217 + md5: ad3d3a826b5848d99936e4466ebbaa26 + depends: + - libbrotlicommon 1.1.0 h31becfc_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 290542 + timestamp: 1695990138784 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + sha256: 690dfc98e891ee1871c54166d30f6e22edfc2d7d6b29e7988dde5f1ce271c81a + md5: d7e077f326a98b2cc60087eaff7c730b + depends: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 280943 + timestamp: 1695990509392 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + sha256: eae6b76154e594c6d211160c6d1aeed848672618152a562e0eabdfa641d34aca + md5: 71e890a0b361fd58743a13f77e1506b7 + depends: + - libbrotlicommon 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 246515 + timestamp: 1695990479484 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071 + md5: 5fc11c6020d421960607d821310fcd4d + depends: + - libbrotlicommon 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 282523 + timestamp: 1695990038302 +- kind: conda + name: libcap + version: '2.69' + build: h0f662aa_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + sha256: 942f9564b4228609f017b6617425d29a74c43b8a030e12239fa4458e5cb6323c + md5: 25cb5999faa414e5ccb2c1388f62d3d5 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 100582 + timestamp: 1684162447012 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_linux64_openblas + build_number: 22 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda + sha256: da1b2faa017663c8f5555c1c5518e96ac4cd8e0be2a673c1c9e2cb8507c8fe46 + md5: 4b31699e0ec5de64d5896e580389c9a1 + depends: + - libblas 3.9.0 22_linux64_openblas + constrains: + - liblapack 3.9.0 22_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 22_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14438 + timestamp: 1712542270166 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_linuxaarch64_openblas + build_number: 22 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-22_linuxaarch64_openblas.conda + sha256: 04e31c5f3a3b345a8fcdfa6f5c75909688a134bf9ee93c367c6e5affca501068 + md5: fbe7fe553f2cc78a0311e009b26f180d + depends: + - libblas 3.9.0 22_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapack 3.9.0 22_linuxaarch64_openblas + - liblapacke 3.9.0 22_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14514 + timestamp: 1712542053335 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + sha256: 6a2ba9198e2320c3e22fe3d121310cf8a8ac663e94100c5693b34523fcb3cc04 + md5: b9fef82772330f61b2b0201c72d2c29b + depends: + - libblas 3.9.0 22_osx64_openblas + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - liblapack 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14636 + timestamp: 1712542311437 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_osxarm64_openblas + build_number: 22 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-22_osxarm64_openblas.conda + sha256: 2c7902985dc77db1d7252b4e838d92a34b1729799ae402988d62d077868f6cca + md5: 37b3682240a69874a22658dedbca37d9 + depends: + - libblas 3.9.0 22_osxarm64_openblas + constrains: + - blas * openblas + - liblapack 3.9.0 22_osxarm64_openblas + - liblapacke 3.9.0 22_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14741 + timestamp: 1712542420590 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_win64_mkl + build_number: 22 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-22_win64_mkl.conda + sha256: 5503273924650330dc03edd1eb01ec4020b9967b5a4cafc377ba20b976d15590 + md5: 336c93ab102846c6131cf68e722a68f1 + depends: + - libblas 3.9.0 22_win64_mkl + constrains: + - liblapacke 3.9.0 22_win64_mkl + - blas * mkl + - liblapack 3.9.0 22_win64_mkl + license: BSD-3-Clause + license_family: BSD + size: 5191513 + timestamp: 1712543043641 +- kind: conda + name: libclang-cpp15 + version: 15.0.7 + build: default_h127d8a8_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda + sha256: 9b0238e705a33da74ca82efd03974f499550f7dada1340cc9cb7c35a92411ed8 + md5: d0a9633b53cdc319b8a1a532ae7822b8 + depends: + - libgcc-ng >=12 + - libllvm15 >=15.0.7,<15.1.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 17206402 + timestamp: 1711063711931 +- kind: conda + name: libclang13 + version: 18.1.7 + build: default_h087397f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.7-default_h087397f_0.conda + sha256: d981a2734c3af6217dd42c1bccc13b99fc3ca5a64c379739612d6cf67f992a1d + md5: 536526073c2e7f9056fdce8584da779e + depends: + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 11057579 + timestamp: 1717819075043 +- kind: conda + name: libclang13 + version: 18.1.7 + build: default_h97ce8ae_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libclang13-18.1.7-default_h97ce8ae_0.conda + sha256: c3c53f959a79747f78a31764af41b82e3c2b3f4576737581ba0237d33cdee85f + md5: a005e5fd30f14fcd2bc3e5ac57aa45a7 + depends: + - libzlib >=1.2.13,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 25318021 + timestamp: 1717824973079 +- kind: conda + name: libcups + version: 2.3.3 + build: h4637d8d_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 + md5: d4529f4dff3057982a7617c7ac58fde3 + depends: + - krb5 >=1.21.1,<1.22.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: Apache-2.0 + license_family: Apache + size: 4519402 + timestamp: 1689195353551 +- kind: conda + name: libcxx + version: 17.0.6 + build: h5f092b4_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-17.0.6-h5f092b4_0.conda + sha256: 119d3d9306f537d4c89dc99ed99b94c396d262f0b06f7833243646f68884f2c2 + md5: a96fd5dda8ce56c86a971e0fa02751d0 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 1248885 + timestamp: 1715020154867 +- kind: conda + name: libcxx + version: 17.0.6 + build: h88467a6_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-17.0.6-h88467a6_0.conda + sha256: e7b57062c1edfcbd13d2129467c94cbff7f0a988ee75782bf48b1dc0e6300b8b + md5: 0fe355aecb8d24b8bc07c763209adbd9 + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 1249309 + timestamp: 1715020018902 +- kind: conda + name: libdeflate + version: '1.20' + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.20-h31becfc_0.conda + sha256: 01efbc296d47de9861100d9a9ad2c7f682adc71a0e9b9b040a35b454d1ccd3bd + md5: 018592a3d691662f451f89d0de474a20 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 69943 + timestamp: 1711196586503 +- kind: conda + name: libdeflate + version: '1.20' + build: h49d49c5_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.20-h49d49c5_0.conda + sha256: 8c2087952db55c4118dd2e29381176a54606da47033fd61ebb1b0f4391fcd28d + md5: d46104f6a896a0bc6a1d37b88b2edf5c + license: MIT + license_family: MIT + size: 70364 + timestamp: 1711196727346 +- kind: conda + name: libdeflate + version: '1.20' + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.20-h93a5062_0.conda + sha256: 6d16cccb141b6bb05c38107b335089046664ea1d6611601d3f6e7e4227a99925 + md5: 97efeaeba2a9a82bdf46fc6d025e3a57 + license: MIT + license_family: MIT + size: 54481 + timestamp: 1711196723486 +- kind: conda + name: libdeflate + version: '1.20' + build: hcfcfb64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.20-hcfcfb64_0.conda + sha256: 6628a5b76ad70c1a0909563c637ddc446ee824739ba7c348d4da2f0aa6ac9527 + md5: b12b5bde5eb201a1df75e49320cc938a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 155358 + timestamp: 1711197066985 +- kind: conda + name: libdeflate + version: '1.20' + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda + sha256: f8e0f25c382b1d0b87a9b03887a34dbd91485453f1ea991fef726dba57373612 + md5: 8e88f9389f1165d7c0936fe40d9a9a79 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 71500 + timestamp: 1711196523408 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libevent + version: 2.1.12 + build: hf998b51_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- kind: conda + name: libexpat + version: 2.6.2 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda + sha256: 07453df3232a649f39fb4d1e68cfe1c78c3457764f85225f6f3ccd1bdd9818a4 + md5: 1b9f46b804a2c3c5d7fd6a80b77c35f9 + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + size: 72544 + timestamp: 1710362309065 +- kind: conda + name: libexpat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + sha256: 331bb7c7c05025343ebd79f86ae612b9e1e74d2687b8f3179faec234f986ce19 + md5: e7ba12deb7020dd080c6c70e7b6f6a3d + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + size: 73730 + timestamp: 1710362120304 +- kind: conda + name: libexpat + version: 2.6.2 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + sha256: 79f612f75108f3e16bbdc127d4885bb74729cf66a8702fca0373dad89d40c4b7 + md5: bc592d03f62779511d392c175dcece64 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + size: 139224 + timestamp: 1710362609641 +- kind: conda + name: libexpat + version: 2.6.2 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + sha256: a188a77b275d61159a32ab547f7d17892226e7dac4518d2c6ac3ac8fc8dfde92 + md5: 3d1d51c8f716d97c864d12f7af329526 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + size: 69246 + timestamp: 1710362566073 +- kind: conda + name: libexpat + version: 2.6.2 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + sha256: ba7173ac30064ea901a4c9fb5a51846dcc25512ceb565759be7d18cbf3e5415e + md5: e3cde7cfa87f82f7cb13d482d5e0ad09 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + size: 63655 + timestamp: 1710362424980 +- kind: conda + name: libffi + version: 3.4.2 + build: h0d85af4_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + license: MIT + license_family: MIT + size: 51348 + timestamp: 1636488394370 +- kind: conda + name: libffi + version: 3.4.2 + build: h3422bc3_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- kind: conda + name: libffi + version: 3.4.2 + build: h3557bc0_5 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libffi + version: 3.4.2 + build: h8ffe710_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 + md5: 2c96d1b6915b408893f9472569dee135 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + size: 42063 + timestamp: 1636489106777 +- kind: conda + name: libflac + version: 1.4.3 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- kind: conda + name: libgcc-ng + version: 13.2.0 + build: h77fa898_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h77fa898_7.conda + sha256: 62af2b89acbe74a21606c8410c276e57309c0a2ab8a9e8639e3c8131c0b60c92 + md5: 72ec1b1b04c4d15d4204ece1ecea5978 + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 13.2.0 h77fa898_7 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 775806 + timestamp: 1715016057793 +- kind: conda + name: libgcc-ng + version: 13.2.0 + build: he277a41_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-13.2.0-he277a41_7.conda + sha256: ef2f338b3342b51700e6cda10831d27bb2983fe64d7e75e30e9ffb7f9cf76571 + md5: 01c5b27ce46f50abab2dc8454842c792 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgomp 13.2.0 he277a41_7 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 458977 + timestamp: 1715017703433 +- kind: conda + name: libgcrypt + version: 1.10.3 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda + sha256: d1bd47faa29fec7288c7b212198432b07f890d3d6f646078da93b059c2e9daff + md5: 32d16ad533c59bb0a3c5ffaf16110829 + depends: + - libgcc-ng >=12 + - libgpg-error >=1.47,<2.0a0 + license: LGPL-2.1-or-later AND GPL-2.0-or-later + license_family: GPL + size: 634887 + timestamp: 1701383493365 +- kind: conda + name: libgd + version: 2.3.3 + build: h0dceb68_9 + build_number: 9 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h0dceb68_9.conda + sha256: 4ed8546ff3356fc42f0e155446a060b14ee4aa96802e2da586532861deb3b917 + md5: 1feb43971521d430bf826f8398598c5b + depends: + - expat + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libexpat >=2.5.0,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zlib + license: GD + license_family: BSD + size: 202884 + timestamp: 1696161058863 +- kind: conda + name: libgd + version: 2.3.3 + build: h119a65a_9 + build_number: 9 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda + sha256: b74f95a6e1f3b31a74741b39cba83ed99fc82d17243c0fd3b5ab16ddd48ab89d + md5: cfebc557e54905dadc355c0e9f003004 + depends: + - expat + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zlib + license: GD + license_family: BSD + size: 224448 + timestamp: 1696160785971 +- kind: conda + name: libgd + version: 2.3.3 + build: h312136b_9 + build_number: 9 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h312136b_9.conda + sha256: fa75f4206eb9cd8e5e24fe1b6381a7450cfcb507c42813fd028a924a4872bc76 + md5: 69c987e1f9268d9ade86497c4ab8cc45 + depends: + - expat + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libexpat >=2.5.0,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xorg-libxpm >=3.5.16,<4.0a0 + - zlib + license: GD + license_family: BSD + size: 344848 + timestamp: 1696161193894 +- kind: conda + name: libgd + version: 2.3.3 + build: hcd22fd5_9 + build_number: 9 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-hcd22fd5_9.conda + sha256: fe821d61ff28069d6ff8a56a354329808d03a84900a5491c166c585b0ee5b78b + md5: 765021fb606a138701b961b4a3607a3e + depends: + - expat + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zlib + license: GD + license_family: BSD + size: 231712 + timestamp: 1696160722186 +- kind: conda + name: libgd + version: 2.3.3 + build: hfdf3952_9 + build_number: 9 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hfdf3952_9.conda + sha256: cfdecfaa27807abc2728bd8c60b923ce1b44020553e122e9a56fc3acb77acaec + md5: 0d847466f115fbdaaf2b6926f2e33278 + depends: + - expat + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=73.2,<74.0a0 + - libexpat >=2.5.0,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.39,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zlib + license: GD + license_family: BSD + size: 206783 + timestamp: 1696161158189 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h59595ed_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda + sha256: e2f784564a2bdc6f753f00f63cc77c97601eb03bc89dccc4413336ec6d95490b + md5: 172bcc51059416e7ce99e7b528cede83 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 170582 + timestamp: 1712512286907 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.22.5-h5ff76d1_2.conda + sha256: 139d1861e21c41b950ebf9e395db2492839337a3b481ad2901a4a6800c555e37 + md5: 54cc9d12c29c2f0516f2ef4987de53ae + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5ff76d1_2 + license: GPL-3.0-or-later + license_family: GPL + size: 172506 + timestamp: 1712512827340 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8fbad5d_2.conda + sha256: c3f5580e172c3fc03d33e8994024f08b709a239bd599792e51435fa7a06beb64 + md5: a66fad933e22d22599a6dd149d359d25 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8fbad5d_2 + license: GPL-3.0-or-later + license_family: GPL + size: 159856 + timestamp: 1712512788407 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h59595ed_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-h59595ed_2.conda + sha256: 695eb2439ad4a89e4205dd675cc52fba5cef6b5d41b83f07cdbf4770a336cc15 + md5: b63d9b6da3653179a278077f0de20014 + depends: + - libgcc-ng >=12 + - libgettextpo 0.22.5 h59595ed_2 + license: GPL-3.0-or-later + license_family: GPL + size: 36758 + timestamp: 1712512303244 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-devel-0.22.5-h5ff76d1_2.conda + sha256: 57940f6a872ffcf5a3406e96bdbd9d25854943e4dd84acee56178ffb728a9671 + md5: 1e0384c52cd8b54812912e7234e66056 + depends: + - libgettextpo 0.22.5 h5ff76d1_2 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5ff76d1_2 + license: GPL-3.0-or-later + license_family: GPL + size: 37189 + timestamp: 1712512859854 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8fbad5d_2.conda + sha256: b1be0bb8a726e2c47a025ff348e6ba8b51ef668f6ace06694657025d84ae66e2 + md5: 1113aa220b042b7ce8d077ea8f696f98 + depends: + - libgettextpo 0.22.5 h8fbad5d_2 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8fbad5d_2 + license: GPL-3.0-or-later + license_family: GPL + size: 37221 + timestamp: 1712512820461 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_h97931a8_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d + md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 + depends: + - libgfortran5 13.2.0 h2873a65_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110106 + timestamp: 1707328956438 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_hd922786_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- kind: conda + name: libgfortran-ng + version: 13.2.0 + build: h69a702a_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_7.conda + sha256: a588e69f96b8e0983a8cdfdbf1dc75eb48189f5420ec71150c8d8cdc0a811a9b + md5: 1b84f26d9f4f6026e179e7805d5a15cd + depends: + - libgfortran5 13.2.0 hca663fb_7 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 24314 + timestamp: 1715016272844 +- kind: conda + name: libgfortran-ng + version: 13.2.0 + build: he9431aa_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-13.2.0-he9431aa_7.conda + sha256: 295d9d4266894d7b5c65950e6f6e91c8b8e1730a540fa5bcc488192b76277913 + md5: d714db6ba9d67d55d21cf96316714ec8 + depends: + - libgfortran5 13.2.0 h87d9d71_7 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 24367 + timestamp: 1715017978335 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: h2873a65_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b + md5: e4fb4d23ec2870ff3c40d10afe305aec + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1571379 + timestamp: 1707328880361 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: h87d9d71_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-13.2.0-h87d9d71_7.conda + sha256: 6fc946955668102fe1e73614810a24e2a2f50aa87390d68e757380fea8551e16 + md5: 423eb7de085dd6b46928723edf5f8767 + depends: + - libgcc-ng >=13.2.0 + constrains: + - libgfortran-ng 13.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1083345 + timestamp: 1715017746481 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: hca663fb_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-hca663fb_7.conda + sha256: 754ab038115edce550fdccdc9ddf7dead2fa8346b8cdd4428c59ae1e83293978 + md5: c0bd771f09a326fdcd95a60b617795bf + depends: + - libgcc-ng >=13.2.0 + constrains: + - libgfortran-ng 13.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1441361 + timestamp: 1715016068766 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: hf226fd6_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- kind: conda + name: libglib + version: 2.80.2 + build: h0df6a38_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.2-h0df6a38_0.conda + sha256: 941bbe089a7a87fbe88324bfc7970a1688c7a765490e25b829ff73c7abc3fc5a + md5: ef9ae80bb2a15aee7a30180c057678ea + depends: + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pcre2 >=10.43,<10.44.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - glib 2.80.2 *_0 + license: LGPL-2.1-or-later + size: 3749179 + timestamp: 1715253077632 +- kind: conda + name: libglib + version: 2.80.2 + build: h0f68cf7_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.2-h0f68cf7_0.conda + sha256: 236c5e42058a985a069c46a5145673f1082b8724fcf45c5b265e2cfda39304c5 + md5: b3947a5dfc6c63b1f479268e75643090 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pcre2 >=10.43,<10.44.0a0 + constrains: + - glib 2.80.2 *_0 + license: LGPL-2.1-or-later + size: 3677360 + timestamp: 1715253329377 +- kind: conda + name: libglib + version: 2.80.2 + build: h34bac0b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.80.2-h34bac0b_0.conda + sha256: 21088a09ac0efd28660fd86c8de60d7cdd81726d2ebd41364ab317c6d8bcd811 + md5: 8cb9a8fb29f3d33aaee8c209a98e7212 + depends: + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pcre2 >=10.43,<10.44.0a0 + constrains: + - glib 2.80.2 *_0 + license: LGPL-2.1-or-later + size: 3965054 + timestamp: 1715252780825 +- kind: conda + name: libglib + version: 2.80.2 + build: h535f939_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.2-h535f939_0.conda + sha256: 3f0c9f25748787ab5475c5ce8267184d6637e8a5b7ca55ef2f3a0d7bff2f537f + md5: 4ac7cb698ca919924e205af3ab3aacf3 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pcre2 >=10.43,<10.44.0a0 + constrains: + - glib 2.80.2 *_0 + license: LGPL-2.1-or-later + size: 3623970 + timestamp: 1715252979767 +- kind: conda + name: libglib + version: 2.80.2 + build: hf974151_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.2-hf974151_0.conda + sha256: 93e03b6cf4765bc06d64fa3dac65f22c53ae4a30247bb0e2dea0bd9c47a3fb26 + md5: 72724f6a78ecb15559396966226d5838 + depends: + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - pcre2 >=10.43,<10.44.0a0 + constrains: + - glib 2.80.2 *_0 + license: LGPL-2.1-or-later + size: 3912673 + timestamp: 1715252654366 +- kind: conda + name: libgomp + version: 13.2.0 + build: h77fa898_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h77fa898_7.conda + sha256: 781444fa069d3b50e8ed667b750571cacda785761c7fc2a89ece1ac49693d4ad + md5: abf3fec87c2563697defa759dec3d639 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 422336 + timestamp: 1715015995979 +- kind: conda + name: libgomp + version: 13.2.0 + build: he277a41_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-13.2.0-he277a41_7.conda + sha256: bb3bc7e03f1add861884d8bad79b359ad991025570625e1f979964e82f1f8d9e + md5: 1d1691ec9e5be799f86310fa38f00b9f + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 424004 + timestamp: 1715017599237 +- kind: conda + name: libgpg-error + version: '1.49' + build: h4f305b6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.49-h4f305b6_0.conda + sha256: b2664c2c11211a63856f23278efb49d3e65d902297989a0c12dcd228b5d97110 + md5: dfcfd72c7a430d3616763ecfbefe4ca9 + depends: + - gettext + - libasprintf >=0.22.5,<1.0a0 + - libgcc-ng >=12 + - libgettextpo >=0.22.5,<1.0a0 + - libstdcxx-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 263319 + timestamp: 1714121531915 +- kind: conda + name: libhwloc + version: 2.10.0 + build: default_h8125262_1001 + build_number: 1001 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.10.0-default_h8125262_1001.conda + sha256: 7f1aa1b071269df72e88297c046ec153b7f9a81e6f135d2da4401c96f41b5052 + md5: e761885eb4c181074d172220d46319a0 + depends: + - libxml2 >=2.12.7,<3.0a0 + - pthreads-win32 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 2373948 + timestamp: 1715973819139 +- kind: conda + name: libiconv + version: '1.17' + build: h0d3ecfb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- kind: conda + name: libiconv + version: '1.17' + build: h31becfc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- kind: conda + name: libiconv + version: '1.17' + build: hcfcfb64_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b + md5: e1eb10b1cca179f2baa3601e4efc8712 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + size: 636146 + timestamp: 1702682547199 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: libiconv + version: '1.17' + build: hd75f5a5_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 + md5: 6c3628d047e151efba7cf08c5e54d1ca + license: LGPL-2.1-only + size: 666538 + timestamp: 1702682713201 +- kind: conda + name: libintl + version: 0.22.5 + build: h5728263_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + sha256: 1b95335af0a3e278b31e16667fa4e51d1c3f5e22d394d982539dfd5d34c5ae19 + md5: aa622c938af057adc119f8b8eecada01 + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 95745 + timestamp: 1712516102666 +- kind: conda + name: libintl + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + sha256: 280aaef0ed84637ee869012ad9ad9ed208e068dd9b8cf010dafeea717dad7203 + md5: 3fb6774cb8cdbb93a6013b67bcf9716d + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 74307 + timestamp: 1712512790983 +- kind: conda + name: libintl + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + sha256: 21bc79bdf34ffd20cb84d2a8bd82d7d0e2a1b94b9e72773f0fb207e5b4f1ff63 + md5: 3d216d0add050129007de3342be7b8c5 + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 81206 + timestamp: 1712512755390 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h5728263_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_2.conda + sha256: 6164fd51abfc7294477c58da77ee1ff9ebc63b9a33404b646407f7fbc3cc7d0d + md5: a2ad82fae23975e4ccbfab2847d31d48 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5728263_2 + license: LGPL-2.1-or-later + size: 40772 + timestamp: 1712516363413 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-h5ff76d1_2.conda + sha256: e3f15a85c6e63633a5ff503d56366bab31cd2e07ea21559889bc7eb19564106d + md5: ea0a07e556d6b238db685cae6e3585d0 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h5ff76d1_2 + license: LGPL-2.1-or-later + size: 38422 + timestamp: 1712512843420 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8fbad5d_2.conda + sha256: e52b2d0c5711f64b523756ccd9b800ee6f10a6317432b20a417dc3792e0a794a + md5: 962b3348c68efd25da253e94590ea9a2 + depends: + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8fbad5d_2 + license: LGPL-2.1-or-later + size: 38616 + timestamp: 1712512805567 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f + md5: 72507f8e3961bc968af17435060b6dd6 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 579748 + timestamp: 1694475265912 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff + md5: 3f1b948619c45b1ca714d60c7389092c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 822966 + timestamp: 1694475223854 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_linux64_openblas + build_number: 22 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda + sha256: db246341d42f9100d45adeb1a7ba8b1ef5b51ceb9056fd643e98046a3259fde6 + md5: b083767b6c877e24ee597d93b87ab838 + depends: + - libblas 3.9.0 22_linux64_openblas + constrains: + - libcblas 3.9.0 22_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 22_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14471 + timestamp: 1712542277696 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_linuxaarch64_openblas + build_number: 22 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-22_linuxaarch64_openblas.conda + sha256: a7cb3fd83fdd6eca14adbe3d0cbba6e6246683d39af783f5c05852ed2a9e16a5 + md5: 8c709d281609792c39b1d5c0241f90f1 + depends: + - libblas 3.9.0 22_linuxaarch64_openblas + constrains: + - blas * openblas + - libcblas 3.9.0 22_linuxaarch64_openblas + - liblapacke 3.9.0 22_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14451 + timestamp: 1712542059832 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + sha256: e36744f3e780564d6748b5dd05e15ad6a1af9184cf32ab9d1304c13a6bc3e16b + md5: f21b282ff7ba14df6134a0fe6ab42b1b + depends: + - libblas 3.9.0 22_osx64_openblas + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - libcblas 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14657 + timestamp: 1712542322711 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_osxarm64_openblas + build_number: 22 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-22_osxarm64_openblas.conda + sha256: 2b1b24c98d15a6a3ad54cf7c8fef1ddccf84b7c557cde08235aaeffd1ff50ee8 + md5: f2794950bc005e123b2c21f7fa3d7a6e + depends: + - libblas 3.9.0 22_osxarm64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 22_osxarm64_openblas + - libcblas 3.9.0 22_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 14730 + timestamp: 1712542435551 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_win64_mkl + build_number: 22 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-22_win64_mkl.conda + sha256: 8b28b361a13819ed83a67d3bfdde750a13bc8b50b9af26d94fd61616d0f2d703 + md5: c752cc2af9f3d8d7b2fdebb915a33ef7 + depends: + - libblas 3.9.0 22_win64_mkl + constrains: + - liblapacke 3.9.0 22_win64_mkl + - blas * mkl + - libcblas 3.9.0 22_win64_mkl + license: BSD-3-Clause + license_family: BSD + size: 5182500 + timestamp: 1712543085027 +- kind: conda + name: libllvm15 + version: 15.0.7 + build: hb3ce162_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda + sha256: e71584c0f910140630580fdd0a013029a52fd31e435192aea2aa8d29005262d1 + md5: 8a35df3cbc0c8b12cc8af9473ae75eef + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxml2 >=2.12.1,<3.0.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 33321457 + timestamp: 1701375836233 +- kind: conda + name: libllvm18 + version: 18.1.7 + build: hb77312f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.7-hb77312f_0.conda + sha256: 9a9167b3e8e05abc517671fe45e5d40ae866d3e8195865ddad3c68131d059e25 + md5: bc0ea7e1f75a9b1c8467597fbbd9f86b + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<3.0a0 + - libzlib >=1.2.13,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 38423980 + timestamp: 1717781615068 +- kind: conda + name: libnsl + version: 2.0.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libogg + version: 1.3.4 + build: h7f98852_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2 + sha256: b88afeb30620b11bed54dac4295aa57252321446ba4e6babd7dce4b9ffde9b25 + md5: 6e8cc2173440d77708196c5b93771680 + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 210550 + timestamp: 1610382007814 +- kind: conda + name: libogg + version: 1.3.4 + build: h8ffe710_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.4-h8ffe710_1.tar.bz2 + sha256: ef20f04ad2121a07e074b34bfc211587df18180e680963f5c02c54d1951b9ee6 + md5: 04286d905a0dcb7f7d4a12bdfe02516d + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: BSD-3-Clause + license_family: BSD + size: 35187 + timestamp: 1610382533961 +- kind: conda + name: libopenblas + version: 0.3.27 + build: openmp_h6c19121_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h6c19121_0.conda + sha256: feb2662444fc98a4842fe54cc70b1f109b2146108e7bac2b3bbad1f219cede90 + md5: 82eba59f4eca26a9fc904d584f8761c0 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=16.0.6 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2925015 + timestamp: 1712364212874 +- kind: conda + name: libopenblas + version: 0.3.27 + build: openmp_hfef2a42_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_hfef2a42_0.conda + sha256: 45519189c0295296268cb7eabeeaa03ef54d780416c9a24be1d2a21db63a7848 + md5: 00237c9c7f2cb6725fe2960680a6e225 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=16.0.6 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + size: 6047531 + timestamp: 1712366254156 +- kind: conda + name: libopenblas + version: 0.3.27 + build: pthreads_h413a1c8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_h413a1c8_0.conda + sha256: 2ae7559aed0705deb3f716c7b247c74fd1b5e35b64e39834ce8b95f7564d4a3e + md5: a356024784da6dfd4683dc5ecf45b155 + depends: + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.3.0 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5598747 + timestamp: 1712364444346 +- kind: conda + name: libopenblas + version: 0.3.27 + build: pthreads_h5a5ec62_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.27-pthreads_h5a5ec62_0.conda + sha256: 8a898c64f769c03217fee45d2df9faaee6c1a24349e21ba3569bc7a2ed8dfd1e + md5: ffecca8f4f31cd50b92c0e6e6bfe4416 + depends: + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.3.0 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4300345 + timestamp: 1712492725507 +- kind: conda + name: libopus + version: 1.3.1 + build: h7f98852_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- kind: conda + name: libpng + version: 1.6.43 + build: h091b4b1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + sha256: 66c4713b07408398f2221229a1c1d5df57d65dc0902258113f2d9ecac4772495 + md5: 77e684ca58d82cae9deebafb95b1a2b8 + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + size: 264177 + timestamp: 1708780447187 +- kind: conda + name: libpng + version: 1.6.43 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.43-h194ca79_0.conda + sha256: 6f408f3d6854f86e223289f0dda12562b047c7a1fdf3636c67ec39afcd141f43 + md5: 1123e504d9254dd9494267ab9aba95f0 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + size: 294380 + timestamp: 1708782876525 +- kind: conda + name: libpng + version: 1.6.43 + build: h19919ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + sha256: 6ad31bf262a114de5bbe0c6ba73b29ed25239d0f46f9d59700310d2ea0b3c142 + md5: 77e398acc32617a0384553aea29e866b + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement + size: 347514 + timestamp: 1708780763195 +- kind: conda + name: libpng + version: 1.6.43 + build: h2797004_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997 + md5: 009981dd9cfcaa4dbfa25ffaed86bcae + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + size: 288221 + timestamp: 1708780443939 +- kind: conda + name: libpng + version: 1.6.43 + build: h92b6c6a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + sha256: 13e646d24b5179e6b0a5ece4451a587d759f55d9a360b7015f8f96eff4524b8f + md5: 65dcddb15965c9de2c0365cb14910532 + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + size: 268524 + timestamp: 1708780496420 +- kind: conda + name: libpq + version: '16.3' + build: ha72fbe1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda + sha256: 117ba1e11f07b1ca0671641bd6d1f2e7fc6e27db1c317a0cdb4799ffa69f47db + md5: bac737ae28b79cfbafd515258d97d29e + depends: + - krb5 >=1.21.2,<1.22.0a0 + - libgcc-ng >=12 + - openssl >=3.3.0,<4.0a0 + license: PostgreSQL + size: 2500439 + timestamp: 1715266400833 +- kind: conda + name: librsvg + version: 2.58.0 + build: h010368b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.58.0-h010368b_1.conda + sha256: db98f7915755edcde2f24a34f3e752bdb5a1da916dd52dd56b872074dcedfc5f + md5: d29998bcb90c0468f2abc49854349ed9 + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libxml2 >=2.12.6,<3.0a0 + - pango >=1.50.14,<2.0a0 + license: LGPL-2.1-or-later + size: 6541210 + timestamp: 1713376776362 +- kind: conda + name: librsvg + version: 2.58.0 + build: h7b06fc5_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.0-h7b06fc5_1.conda + sha256: a8ecadeeb7e0a146919d3548f8a6127f88a963313f227db5ba77e1c6e89c2b46 + md5: e4a5f1bb5962ec6f2f2d2f0467ed0826 + depends: + - __osx >=10.12 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - libglib >=2.80.0,<3.0a0 + - libxml2 >=2.12.6,<3.0a0 + - pango >=1.50.14,<2.0a0 + constrains: + - __osx >=10.12 + license: LGPL-2.1-or-later + size: 5307232 + timestamp: 1713370349551 +- kind: conda + name: librsvg + version: 2.58.0 + build: hadf69e7_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.0-hadf69e7_1.conda + sha256: eaba82901f01f3ede8b1307c64e0448df8c5e9af9c6b78600c5f63c91c122e45 + md5: 0e2b5bd9533043b41f9482ae9e2c16b5 + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libxml2 >=2.12.6,<3.0a0 + - pango >=1.50.14,<2.0a0 + license: LGPL-2.1-or-later + size: 5997596 + timestamp: 1713369512903 +- kind: conda + name: librsvg + version: 2.58.0 + build: hb3d354b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.0-hb3d354b_1.conda + sha256: c57a7fc7b24e5d036b0f2e5c871af0b636d46455cf73497fc2a6a5f873542b65 + md5: eefc587613e6097d9c0b14188c292b5d + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.10,<3.0a0 + - libglib >=2.80.0,<3.0a0 + - libxml2 >=2.12.6,<3.0a0 + - pango >=1.50.14,<2.0a0 + constrains: + - __osx >=11.0 + license: LGPL-2.1-or-later + size: 4774673 + timestamp: 1713371158806 +- kind: conda + name: libsndfile + version: 1.2.2 + build: hc60ed4a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- kind: conda + name: libsqlite + version: 3.45.3 + build: h091b4b1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.45.3-h091b4b1_0.conda + sha256: 4337f466eb55bbdc74e168b52ec8c38f598e3664244ec7a2536009036e2066cc + md5: c8c1186c7f3351f6ffddb97b1f54fc58 + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: Unlicense + size: 824794 + timestamp: 1713367748819 +- kind: conda + name: libsqlite + version: 3.45.3 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.45.3-h194ca79_0.conda + sha256: be87d8b67bdf892665c709d82c48011991fbf2fa15c19b006379b03ed494b070 + md5: fb35b8afbe9e92467ac7b5608d60b775 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: Unlicense + size: 1036705 + timestamp: 1713367400740 +- kind: conda + name: libsqlite + version: 3.45.3 + build: h2797004_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.3-h2797004_0.conda + sha256: e2273d6860eadcf714a759ffb6dc24a69cfd01f2a0ea9d6c20f86049b9334e0c + md5: b3316cbe90249da4f8e84cd66e1cc55b + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: Unlicense + size: 859858 + timestamp: 1713367435849 +- kind: conda + name: libsqlite + version: 3.45.3 + build: h92b6c6a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.45.3-h92b6c6a_0.conda + sha256: 4d44b68fb29dcbc2216a8cae0b274b02ef9b4ae05d1d0f785362ed30b91c9b52 + md5: 68e462226209f35182ef66eda0f794ff + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: Unlicense + size: 902546 + timestamp: 1713367776445 +- kind: conda + name: libsqlite + version: 3.45.3 + build: hcfcfb64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.45.3-hcfcfb64_0.conda + sha256: 06ec75faa51d7ec6d5db98889e869b579a9df19d7d3d9baff8359627da4a3b7e + md5: 73f5dc8e2d55d9a1e14b11f49c3b4a28 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + size: 870518 + timestamp: 1713367888406 +- kind: conda + name: libstdcxx-ng + version: 13.2.0 + build: h3f4de04_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-13.2.0-h3f4de04_7.conda + sha256: ed58d37fde428858e0efa4022c758beb2ea5ae7be93ccfb548f95ef9b60c2ef5 + md5: 2a54872c7fab2db99b0074212d8efe64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3750765 + timestamp: 1715017787940 +- kind: conda + name: libstdcxx-ng + version: 13.2.0 + build: hc0a3c3a_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-hc0a3c3a_7.conda + sha256: 35f1e08be0a84810c9075f5bd008495ac94e6c5fe306dfe4b34546f11fed850f + md5: 53ebd4c833fa01cb2c6353e99f905406 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3837704 + timestamp: 1715016117360 +- kind: conda + name: libsystemd0 + version: '255' + build: h3516f8a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda + sha256: af27b0d225435d03f378a119f8eab6b280c53557a3c84cdb3bb8fd3167615aed + md5: 3366af27f0b593544a6cd453c7932ac5 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.69,<2.70.0a0 + - libgcc-ng >=12 + - libgcrypt >=1.10.3,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: LGPL-2.1-or-later + size: 402592 + timestamp: 1709568499820 +- kind: conda + name: libtiff + version: 4.6.0 + build: h07db509_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-h07db509_3.conda + sha256: 6df3e129682f6dc43826e5028e1807624b2a7634c4becbb50e56be9f77167f25 + md5: 28c9f8c6dd75666dfb296aea06c49cb8 + depends: + - lerc >=4.0.0,<5.0a0 + - libcxx >=16 + - libdeflate >=1.20,<1.21.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + size: 238349 + timestamp: 1711218119201 +- kind: conda + name: libtiff + version: 4.6.0 + build: h129831d_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h129831d_3.conda + sha256: f9b35c5ec1aea9a2cc20e9275a0bb8f056482faa8c5a62feb243ed780755ea30 + md5: 568593071d2e6cea7b5fc1f75bfa10ca + depends: + - lerc >=4.0.0,<5.0a0 + - libcxx >=16 + - libdeflate >=1.20,<1.21.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + size: 257489 + timestamp: 1711218113053 +- kind: conda + name: libtiff + version: 4.6.0 + build: h1dd3fc0_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda + sha256: fc3b210f9584a92793c07396cb93e72265ff3f1fa7ca629128bf0a50d5cb15e4 + md5: 66f03896ffbe1a110ffda05c7a856504 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.20,<1.21.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,<2.0.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + size: 282688 + timestamp: 1711217970425 +- kind: conda + name: libtiff + version: 4.6.0 + build: hddb2be6_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hddb2be6_3.conda + sha256: 2e04844865cfe0286d70482c129f159542b325f4e45774aaff5fbe5027b30b0a + md5: 6d1828c9039929e2f185c5fa9d133018 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.20,<1.21.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + size: 787198 + timestamp: 1711218639912 +- kind: conda + name: libtiff + version: 4.6.0 + build: hf980d43_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-hf980d43_3.conda + sha256: 8f578c4e5acf94479b698aea284b2ebfeb32dc3ae99a60c7ef5e07c7003d98cc + md5: b6f3abf5726ae33094bee238b4eb492f + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.20,<1.21.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,<2.0.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + size: 316525 + timestamp: 1711218038581 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libuuid + version: 2.38.1 + build: hb4cce97_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h0e60522_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h0e60522_0.tar.bz2 + sha256: 6cdc018a024908270205d8512d92f92cf0adaaa5401c2b403757189b138bf56a + md5: e1a22282de0169c93e4ffe6ce6acc212 + depends: + - libogg >=1.3.4,<1.4.0a0 + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: BSD-3-Clause + license_family: BSD + size: 273721 + timestamp: 1610610022421 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- kind: conda + name: libwebp + version: 1.4.0 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libwebp-1.4.0-h2466b09_0.conda + sha256: ebabb57084e85cd09d529dbb4fe0f4db6cd0d369ad8095342c37b98855fd87fd + md5: 11334a8fb02041b453e2f89a4ae16f8d + depends: + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 71106 + timestamp: 1714600150795 +- kind: conda + name: libwebp + version: 1.4.0 + build: h2c329e2_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.4.0-h2c329e2_0.conda + sha256: bd45805b169e3e0ff166d360c3c4842d77107d28c8f9feba020a8e8b9c80f948 + md5: 80030debaa84cfc31755d53742df3ca6 + depends: + - giflib >=5.2.2,<5.3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 91941 + timestamp: 1714599671055 +- kind: conda + name: libwebp + version: 1.4.0 + build: h54798ee_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-1.4.0-h54798ee_0.conda + sha256: e75e7a58793236fc8e92733c8bad168ce7bea40ca54c8c643e357511ba4a7b98 + md5: 078abbcc54996b186b9144cf795bd30f + depends: + - __osx >=11.0 + - giflib >=5.2.2,<5.3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 87703 + timestamp: 1714599993749 +- kind: conda + name: libwebp + version: 1.4.0 + build: h8b4e01b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.4.0-h8b4e01b_0.conda + sha256: b7015194cb7e0c38e9b216be32bb11d885bc9cbe6bb14729818a1fea732ad437 + md5: b8ec3537009b561eb9bbd1780f920093 + depends: + - giflib >=5.2.2,<5.3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 101815 + timestamp: 1714602881855 +- kind: conda + name: libwebp + version: 1.4.0 + build: hc207709_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.4.0-hc207709_0.conda + sha256: 5c7103d5462deedf0f80a081bc895c25b05404719c11b33a846dc5f5328d791c + md5: c5aa72a275c001665128245084c9ce14 + depends: + - __osx >=10.9 + - giflib >=5.2.2,<5.3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 87124 + timestamp: 1714599963620 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h10d778d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538 + md5: b2c0047ea73819d992484faacbbe1c24 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 355099 + timestamp: 1713200298965 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hcfcfb64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + sha256: d0ca51cb1de9192be9a3238e71fbcca5a535619c499c4f4c9b2ed41c14d36770 + md5: abd61d0ab127ec5cd68f62c2969e6f34 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 274359 + timestamp: 1713200524021 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: '1.15' + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda + sha256: a670902f0a3173a466c058d2ac22ca1dd0df0453d3a80e0212815c20a16b0485 + md5: 33277193f5b92bad9fdd230eb700929c + depends: + - libgcc-ng >=12 + - pthread-stubs + - xorg-libxau + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 384238 + timestamp: 1682082368177 +- kind: conda + name: libxcb + version: '1.15' + build: h2a766a3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.15-h2a766a3_0.conda + sha256: d159fcdb8b74187b0bd32f2d9b3a9191bc8b786a97e413aa66e19c39ba7050a0 + md5: eb3d8c8170e3d03f2564ed2024aa00c8 + depends: + - libgcc-ng >=12 + - pthread-stubs + - xorg-libxau + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 388526 + timestamp: 1682083614077 +- kind: conda + name: libxcb + version: '1.15' + build: hb7f2c08_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda + sha256: f41904f466acc8b3197f37f2dd3a08da75720c7f7464d9267635debc4ac1902b + md5: 5513f57e0238c87c12dffedbcc9c1a4a + depends: + - pthread-stubs + - xorg-libxau + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 313793 + timestamp: 1682083036825 +- kind: conda + name: libxcb + version: '1.15' + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.15-hcd874cb_0.conda + sha256: d01322c693580f53f8d07a7420cd6879289f5ddad5531b372c3efd1c37cac3bf + md5: 090d91b69396f14afef450c285f9758c + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - pthread-stubs + - xorg-libxau + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 969788 + timestamp: 1682083087243 +- kind: conda + name: libxcb + version: '1.15' + build: hf346824_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.15-hf346824_0.conda + sha256: 6eaa87760ff3e91bb5524189700139db46f8946ff6331f4e571e4a9356edbb0d + md5: 988d5f86ab60fa6de91b3ee3a88a3af9 + depends: + - pthread-stubs + - xorg-libxau + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 334770 + timestamp: 1682082734262 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxkbcommon + version: 1.7.0 + build: h662e7e4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h662e7e4_0.conda + sha256: 3d97d7f964237f42452295d461afdbc51e93f72e2c80be516f56de80e3bb6621 + md5: b32c0da42b1f24a98577bb3d7fc0b995 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxcb >=1.15,<1.16.0a0 + - libxml2 >=2.12.6,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.11,<2.0a0 + license: MIT/X11 Derivative + license_family: MIT + size: 593534 + timestamp: 1711303445595 +- kind: conda + name: libxml2 + version: 2.12.7 + build: h283a6d9_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h283a6d9_1.conda + sha256: aef096aa784e61f860fab08974c6260836bf05d742fb69f304f0e9b7d557c99a + md5: 7ab2653cc21c44a1370ef3b409261b3d + depends: + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 1709896 + timestamp: 1717547244225 +- kind: conda + name: libxml2 + version: 2.12.7 + build: h3e169fe_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-h3e169fe_1.conda + sha256: 75554b5ef4c61a97c1d2ddcaff2d87c5ee120ff6925c2b714e18b20727cafb98 + md5: ddb63049aa7bd9f08f2cdc5a1c144d1a + depends: + - __osx >=10.13 + - icu >=73.2,<74.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 619297 + timestamp: 1717546472911 +- kind: conda + name: libxml2 + version: 2.12.7 + build: h49dc7a2_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.12.7-h49dc7a2_1.conda + sha256: 97b3f1ac86a26afc2591ecfe85a9fa7409d8b8d2956f308ddef34dd977ad9185 + md5: cec3f7f6dd48a5b40ac62faa55288638 + depends: + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 751903 + timestamp: 1717546699265 +- kind: conda + name: libxml2 + version: 2.12.7 + build: ha661575_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-ha661575_1.conda + sha256: 0ea12032b53d3767564a058ccd5208c0a1724ed2f8074dd22257ff3859ea6a4e + md5: 8ea71a74847498c793b0a8e9054a177a + depends: + - __osx >=11.0 + - icu >=73.2,<74.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 588487 + timestamp: 1717546487246 +- kind: conda + name: libxml2 + version: 2.12.7 + build: hc051c1a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda + sha256: 576ea9134176636283ff052897bf7a91ffd8ac35b2c505dfde2890ec52849698 + md5: 340278ded8b0dc3a73f3660bbb0adbc6 + depends: + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 704984 + timestamp: 1717546454837 +- kind: conda + name: libzlib + version: 1.3.1 + build: h2466b09_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + sha256: b13846a54a15243e15f96fec06b526d8155adc6a1ac2b6ed47a88f6a71a94b68 + md5: d4483ca8afc57ddf1f6dded53b36c17f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + size: 56186 + timestamp: 1716874730539 +- kind: conda + name: libzlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: 57d7dc60e9325e3de37ff8dffd18e814 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + size: 61574 + timestamp: 1716874187109 +- kind: conda + name: libzlib + version: 1.3.1 + build: h68df207_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h68df207_1.conda + sha256: 0d6dfd1e36e10c205ff1fdcf42d42289ff0f50be7a4eaa7b34f086a5e22a0734 + md5: b13fb82f88902e34dd0638cd7d378c21 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + size: 67199 + timestamp: 1716874136348 +- kind: conda + name: libzlib + version: 1.3.1 + build: h87427d6_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + sha256: 80a62db652b1da0ccc100812a1d86e94f75028968991bfb17f9536f3aa72d91d + md5: b7575b5aa92108dcc9aaab0f05f2dbce + depends: + - __osx >=10.13 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + size: 57372 + timestamp: 1716874211519 +- kind: conda + name: libzlib + version: 1.3.1 + build: hfb2fe0b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + sha256: c34365dd37b0eab27b9693af32a1f7f284955517c2cc91f1b88a7ef4738ff03e + md5: 636077128927cf79fd933276dc3aed47 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + size: 46921 + timestamp: 1716874262512 +- kind: conda + name: llvm-openmp + version: 18.1.7 + build: h15ab845_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.7-h15ab845_0.conda + sha256: 66ab0feed5ed7ace0d9327bc7ae47500afb81ef51e6ef10a478af9d65dd60ac6 + md5: 57440310d92e93efd808c75fec50f94d + depends: + - __osx >=10.13 + constrains: + - openmp 18.1.7|18.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 300573 + timestamp: 1717851511113 +- kind: conda + name: llvm-openmp + version: 18.1.7 + build: hde57baf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.7-hde57baf_0.conda + sha256: 30121bc3ebf134d69bcb24ab1270bfa2beeb0ae59579b8acb67a38e3531c05d1 + md5: 2f651f8977594cc74852fa280785187a + depends: + - __osx >=11.0 + constrains: + - openmp 18.1.7|18.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 276533 + timestamp: 1717851681081 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hcb278e6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f + md5: 318b08df404f9c9be5712aaa5a6f0bb0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 143402 + timestamp: 1674727076728 +- kind: conda + name: m2w64-gcc-libgfortran + version: 5.3.0 + build: '6' + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + sha256: 9de95a7996d5366ae0808eef2acbc63f9b11b874aa42375f55379e6715845dc6 + md5: 066552ac6b907ec6d72c0ddab29050dc + depends: + - m2w64-gcc-libs-core + - msys2-conda-epoch ==20160418 + license: GPL, LGPL, FDL, custom + size: 350687 + timestamp: 1608163451316 +- kind: conda + name: m2w64-gcc-libs + version: 5.3.0 + build: '7' + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + sha256: 3bd1ab02b7c89a5b153a17be03b36d833f1517ff2a6a77ead7c4a808b88196aa + md5: fe759119b8b3bfa720b8762c6fdc35de + depends: + - m2w64-gcc-libgfortran + - m2w64-gcc-libs-core + - m2w64-gmp + - m2w64-libwinpthread-git + - msys2-conda-epoch ==20160418 + license: GPL3+, partial:GCCRLE, partial:LGPL2+ + size: 532390 + timestamp: 1608163512830 +- kind: conda + name: m2w64-gcc-libs-core + version: 5.3.0 + build: '7' + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + sha256: 58afdfe859ed2e9a9b1cc06bc408720cb2c3a6a132e59d4805b090d7574f4ee0 + md5: 4289d80fb4d272f1f3b56cfe87ac90bd + depends: + - m2w64-gmp + - m2w64-libwinpthread-git + - msys2-conda-epoch ==20160418 + license: GPL3+, partial:GCCRLE, partial:LGPL2+ + size: 219240 + timestamp: 1608163481341 +- kind: conda + name: m2w64-gmp + version: 6.1.0 + build: '2' + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + sha256: 7e3cd95f554660de45f8323fca359e904e8d203efaf07a4d311e46d611481ed1 + md5: 53a1c73e1e3d185516d7e3af177596d9 + depends: + - msys2-conda-epoch ==20160418 + license: LGPL3 + size: 743501 + timestamp: 1608163782057 +- kind: conda + name: m2w64-libwinpthread-git + version: 5.0.0.4634.697f757 + build: '2' + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + sha256: f63a09b2cae7defae0480f1740015d6235f1861afa6fe2e2d3e10bd0d1314ee0 + md5: 774130a326dee16f1ceb05cc687ee4f0 + depends: + - msys2-conda-epoch ==20160418 + license: MIT, BSD + size: 31928 + timestamp: 1608166099896 +- kind: conda + name: matplotlib + version: 3.8.4 + build: py39h6e9494a_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.8.4-py39h6e9494a_2.conda + sha256: 09ee0043d11b4d657ad2e5dd683f24a017213915396d736ba69818858abe405d + md5: 2487841f514256bc163de04578107a82 + depends: + - matplotlib-base >=3.8.4,<3.8.5.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 8513 + timestamp: 1715976628819 +- kind: conda + name: matplotlib + version: 3.8.4 + build: py39ha65689a_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.8.4-py39ha65689a_2.conda + sha256: 8f88678293c374c6b3908b250b11c31f5d1677a3b1efeeb83b2ae9e7a3b82d45 + md5: c0472e3c4b3f007de6d643317c30963b + depends: + - matplotlib-base >=3.8.4,<3.8.5.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 8526 + timestamp: 1715976559574 +- kind: conda + name: matplotlib + version: 3.8.4 + build: py39hcbf5309_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.8.4-py39hcbf5309_2.conda + sha256: 7552304bd91c96aded87468138fa9672a8f575e82b2d670e0fdb62f735a22183 + md5: 1ecee90b529cb69ec4e95add23323110 + depends: + - matplotlib-base >=3.8.4,<3.8.5.0a0 + - pyqt >=5.10 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 8791 + timestamp: 1715977005347 +- kind: conda + name: matplotlib + version: 3.8.4 + build: py39hdf13c20_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.8.4-py39hdf13c20_2.conda + sha256: 04928bac42c3d33fb1af788ea4f95a41a80cc911de136bdf9591512d12f92941 + md5: daa8f16df04193989bd860c9bc24a462 + depends: + - matplotlib-base >=3.8.4,<3.8.5.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 8529 + timestamp: 1715976717885 +- kind: conda + name: matplotlib + version: 3.8.4 + build: py39hf3d152e_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.4-py39hf3d152e_2.conda + sha256: 0dc6927def73e0ceeced605bb5b76b4e46fc0f92db850ed0120a69c85e01ab9b + md5: bd956c7563b6a6b27521b83623c74e22 + depends: + - matplotlib-base >=3.8.4,<3.8.5.0a0 + - pyqt >=5.10 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + size: 8400 + timestamp: 1715976480008 +- kind: conda + name: matplotlib-base + version: 3.8.4 + build: py39h10d1fc8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.4-py39h10d1fc8_2.conda + sha256: b17c56e982fb6ee3e22ab0d841b524e620b32118116f35a3db9e71cb91765142 + md5: c9fb6571b93b1dd490ea627af7344f36 + depends: + - certifi >=2020.06.20 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype >=2.12.1,<3.0a0 + - importlib-resources >=3.2.0 + - kiwisolver >=1.3.1 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - numpy >=1.21 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.7 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: PSF-2.0 + license_family: PSF + size: 6815094 + timestamp: 1715976441279 +- kind: conda + name: matplotlib-base + version: 3.8.4 + build: py39h15359f4_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.4-py39h15359f4_2.conda + sha256: cda403743520df3ef2727c6cf09d6ed273077ddd9ae37c33e6a28f052ce2ed04 + md5: 41a288f7aea1b66c4c7c217bff50b778 + depends: + - __osx >=11.0 + - certifi >=2020.06.20 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype >=2.12.1,<3.0a0 + - importlib-resources >=3.2.0 + - kiwisolver >=1.3.1 + - libcxx >=16 + - numpy >=1.19,<3 + - numpy >=1.21 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python-dateutil >=2.7 + - python_abi 3.9.* *_cp39 + license: PSF-2.0 + license_family: PSF + size: 6816269 + timestamp: 1715976654886 +- kind: conda + name: matplotlib-base + version: 3.8.4 + build: py39he1095e7_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.8.4-py39he1095e7_2.conda + sha256: 6c76b64ff0a37af01b82a01d75d4276e346bb0f7d71623adbd5ab3077717c9e1 + md5: 5c813b5da86f186d8026b6de6429c212 + depends: + - certifi >=2020.06.20 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype >=2.12.1,<3.0a0 + - importlib-resources >=3.2.0 + - kiwisolver >=1.3.1 + - numpy >=1.19,<3 + - numpy >=1.21 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.7 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: PSF-2.0 + license_family: PSF + size: 6764098 + timestamp: 1715976945876 +- kind: conda + name: matplotlib-base + version: 3.8.4 + build: py39hf44f4b6_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.8.4-py39hf44f4b6_2.conda + sha256: 94e15b59c10f24f356d1dfe4f9728a99a1180c04e4bc3d62fa243908438bb5a2 + md5: fadf734d38ed608c9f0b5c91fe79cfb4 + depends: + - certifi >=2020.06.20 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype >=2.12.1,<3.0a0 + - importlib-resources >=3.2.0 + - kiwisolver >=1.3.1 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - numpy >=1.21 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python-dateutil >=2.7 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: PSF-2.0 + license_family: PSF + size: 6937668 + timestamp: 1715976535202 +- kind: conda + name: matplotlib-base + version: 3.8.4 + build: py39hfca4cae_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.8.4-py39hfca4cae_2.conda + sha256: bff80364fc7533c27a10141ca52cef63b98754c420a4f269177956699f605306 + md5: c54e0c86546e1aeeac70fe54ecf4ec5c + depends: + - __osx >=10.13 + - certifi >=2020.06.20 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype >=2.12.1,<3.0a0 + - importlib-resources >=3.2.0 + - kiwisolver >=1.3.1 + - libcxx >=16 + - numpy >=1.19,<3 + - numpy >=1.21 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.7 + - python_abi 3.9.* *_cp39 + license: PSF-2.0 + license_family: PSF + size: 6947610 + timestamp: 1715976559228 +- kind: conda + name: meson + version: 1.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/meson-1.3.0-pyhd8ed1ab_0.conda + sha256: d9fe5a31b301c662a7410d477257932a76149430acaf760131a35a1476956e96 + md5: 48fa9fd8e4226d71cdbef619f2402572 + depends: + - ninja >=1.8.2 + - python >=3.5.2 + - setuptools + license: Apache-2.0 + license_family: APACHE + size: 628242 + timestamp: 1700451735019 +- kind: conda + name: mkl + version: 2024.1.0 + build: h66d3029_692 + build_number: 692 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_692.conda + sha256: abfdb5eb3a17af59a827ea49fcb4d2bf18e70b62498bf3720351962e636cb5b7 + md5: b43ec7ed045323edeff31e348eea8652 + depends: + - intel-openmp 2024.* + - tbb 2021.* + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 109491063 + timestamp: 1712153746272 +- kind: conda + name: modflow-devtools + version: 1.6.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/modflow-devtools-1.6.0-pyhd8ed1ab_0.conda + sha256: 28a3b4ea3f60ff73170d174cee61f1ea0b3c71156f815e37d46bbd6bd81963fa + md5: 398839dd28f83127b62df50fd1da22ee + depends: + - python >=3.8 + license: CC0-1.0 + size: 29239 + timestamp: 1717152807815 +- kind: conda + name: mpg123 + version: 1.32.6 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.6-h59595ed_0.conda + sha256: 8895a5ce5122a3b8f59afcba4b032f198e8a690a0efc95ef61f2135357ef0d72 + md5: 9160cdeb523a1b20cf8d2a0bf821f45d + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-only + license_family: LGPL + size: 491811 + timestamp: 1712327176955 +- kind: conda + name: msys2-conda-epoch + version: '20160418' + build: '1' + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + sha256: 99358d58d778abee4dca82ad29fb58058571f19b0f86138363c260049d4ac7f1 + md5: b0309b72560df66f71a9d5e34a5efdfa + size: 3227 + timestamp: 1608166968312 +- kind: conda + name: munkres + version: 1.1.4 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306 + md5: 2ba8498c1018c1e9c61eb99b973dfe19 + depends: + - python + license: Apache-2.0 + license_family: Apache + size: 12452 + timestamp: 1600387789153 +- kind: conda + name: mysql-common + version: 8.3.0 + build: hf1915f5_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.3.0-hf1915f5_4.conda + sha256: 4cf6d29e091398735348550cb74cfd5006e04892d54b6b1ba916935f1af1a151 + md5: 784a4df6676c581ca624fbe460703a6d + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.2.1,<4.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 784844 + timestamp: 1709910607121 +- kind: conda + name: mysql-libs + version: 8.3.0 + build: hca2cd23_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-hca2cd23_4.conda + sha256: c39cdd1a5829aeffc611f789bdfd4dbd4ce1aa829c73d728defec180b5265d91 + md5: 1b50eebe2a738a3146c154d2eceaa8b6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - mysql-common 8.3.0 hf1915f5_4 + - openssl >=3.2.1,<4.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 1537884 + timestamp: 1709910705541 +- kind: conda + name: ncurses + version: '6.5' + build: h0425590_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-h0425590_0.conda + sha256: f8002feaa9e0eb929cd123f1275d8c0b3c6ffb7fd9269b192927009df19dc89e + md5: 38362af7bfac0efef69675acee564458 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 925099 + timestamp: 1715194843316 +- kind: conda + name: ncurses + version: '6.5' + build: h5846eda_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + sha256: 6ecc73db0e49143092c0934355ac41583a5d5a48c6914c5f6ca48e562d3a4b79 + md5: 02a888433d165c99bf09784a7b14d900 + license: X11 AND BSD-3-Clause + size: 823601 + timestamp: 1715195267791 +- kind: conda + name: ncurses + version: '6.5' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + sha256: 4fc3b384f4072b68853a0013ea83bdfd3d66b0126e2238e1d6e1560747aa7586 + md5: fcea371545eda051b6deafb24889fc69 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 887465 + timestamp: 1715194722503 +- kind: conda + name: ncurses + version: '6.5' + build: hb89a1cb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + sha256: 87d7cf716d9d930dab682cb57b3b8d3a61940b47d6703f3529a155c938a6990a + md5: b13ad5724ac9ae98b6b4fd87e4500ba4 + license: X11 AND BSD-3-Clause + size: 795131 + timestamp: 1715194898402 +- kind: conda + name: networkx + version: 3.2.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d + md5: 425fce3b531bed6ec3c74fab3e5f0a1c + depends: + - python >=3.9 + constrains: + - matplotlib >=3.5 + - scipy >=1.9,!=1.11.0,!=1.11.1 + - numpy >=1.22 + - pandas >=1.4 + license: BSD-3-Clause + license_family: BSD + size: 1149552 + timestamp: 1698504905258 +- kind: conda + name: ninja + version: 1.12.1 + build: h297d8ca_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda + sha256: 40f7b76b07067935f8a5886aab0164067b7aa71eb5ad20b7278618c0c2c98e06 + md5: 3aa1c7e292afeff25a0091ddd7c69b72 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 2198858 + timestamp: 1715440571685 +- kind: conda + name: ninja + version: 1.12.1 + build: h3c5361c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda + sha256: 230f11a2f73955b67550be09a0c1fd053772f5e01e98d5873547d63ebea73229 + md5: a0ebabd021c8191aeb82793fe43cfdcb + depends: + - __osx >=10.13 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + size: 124942 + timestamp: 1715440780183 +- kind: conda + name: ninja + version: 1.12.1 + build: h420ef59_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda + sha256: 11528acfa0f05d0c51639f6b09b51dc6611b801668449bb36c206c4b055be4f4 + md5: 9166c10405d41c95ffde8fcb8e5c3d51 + depends: + - __osx >=11.0 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + size: 112576 + timestamp: 1715440927034 +- kind: conda + name: ninja + version: 1.12.1 + build: h70be974_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.12.1-h70be974_0.conda + sha256: a42f12c03a69cdcd2e7d5f95fd4e0f1e5fc43ef482aff2b8ee16a3730cc642de + md5: 216635cea46498d8045c7cf0f03eaf72 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 2329583 + timestamp: 1715442512963 +- kind: conda + name: ninja + version: 1.12.1 + build: hc790b64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda + sha256: b821cb72cb3ef08fab90a9bae899510e6cf3c23b5da6070d1ec30099dfe6a5be + md5: a557dde55343e03c68cd7e29e7f87279 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 285150 + timestamp: 1715441052517 +- kind: conda + name: nspr + version: '4.35' + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda + sha256: 8fadeebb2b7369a4f3b2c039a980d419f65c7b18267ba0c62588f9f894396d0c + md5: da0ec11a6454ae19bff5b02ed881a2b1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MPL-2.0 + license_family: MOZILLA + size: 226848 + timestamp: 1669784948267 +- kind: conda + name: nss + version: '3.100' + build: hca3bf56_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.100-hca3bf56_0.conda + sha256: a4146d2b6636999a21afcaf957029d066637bf26239fd3170242501e38fb1fa4 + md5: 949c4a82290ee58b3c970cef4bcfd4ad + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libsqlite >=3.45.3,<4.0a0 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - nspr >=4.35,<5.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 2047723 + timestamp: 1715184444840 +- kind: conda + name: numpy + version: 1.26.4 + build: py39h28c39a1_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py39h28c39a1_0.conda + sha256: 47f75135f6f85225709d5a8f05a0ac2c6a437c8a4cc53ce0f70e9b8766f23b1b + md5: 1b07000dc6aed4a69e91107dac4464d3 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6481665 + timestamp: 1707226262838 +- kind: conda + name: numpy + version: 1.26.4 + build: py39h474f0d3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py39h474f0d3_0.conda + sha256: fa792c330e1d18854e4ca1ea8bf90ffae6787c133ebdc331f1ba6f565d28b599 + md5: aa265f5697237aa13cc10f53fa8acc4f + depends: + - 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.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7039431 + timestamp: 1707225726227 +- kind: conda + name: numpy + version: 1.26.4 + build: py39h7aa2656_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py39h7aa2656_0.conda + sha256: e7adae3f0ffdc319ce32ea10484d9cc36db4317ce5b525cfdcb97651786a928a + md5: c027ed77947314469686cff520a71e5f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 5492058 + timestamp: 1707226364958 +- kind: conda + name: numpy + version: 1.26.4 + build: py39h91c28bb_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py39h91c28bb_0.conda + sha256: a6c2cc090050de18d3e268dd7d13f20bf1effadd02e71d9a3304cb1ff016e82c + md5: d88e195f11a9f27e649aea408b54cb48 + depends: + - 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.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6082609 + timestamp: 1707225790468 +- kind: conda + name: numpy + version: 1.26.4 + build: py39hddb5d58_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py39hddb5d58_0.conda + sha256: 25473fb10de8e3d92ea07777fce90508b5fce76fd942b333625ae27f7c50d74d + md5: 6e30ff8f2d3f59f45347dfba8bc22a04 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 5920615 + timestamp: 1707226471242 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h3d672ee_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda + sha256: dda71cbe094234ab208f3552dec1f4ca6f2e614175d010808d6cb66ecf0bc753 + md5: 7e7099ad94ac3b599808950cec30ad4e + depends: + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + size: 237974 + timestamp: 1709159764160 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h7310d3a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda + sha256: dc9c405119b9b54f8ca5984da27ba498bd848ab4f0f580da6f293009ca5adc13 + md5: 05a14cc9d725dd74995927968d6547e3 + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 331273 + timestamp: 1709159538792 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 +- kind: conda + name: openssl + version: 3.3.1 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_0.conda + sha256: fbd63a41b854370a74e5f7ccc50d67f053d60c08e40389156e7924df0824d297 + md5: 27fe798366ef3a81715b13eedf699e2f + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + size: 8383610 + timestamp: 1717550042871 +- kind: conda + name: openssl + version: 3.3.1 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_0.conda + sha256: 9691f8bd6394c5bb0b8d2f47cd1467b91bd5b1df923b69e6b517f54496ee4b50 + md5: a41fa0e391cc9e0d6b78ac69ca047a6c + depends: + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + size: 2896170 + timestamp: 1717546157673 +- kind: conda + name: openssl + version: 3.3.1 + build: h68df207_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.1-h68df207_0.conda + sha256: 1688bf43c6ea6322ac7c1ca455712e5b64f6f524fee4c108b26c26ed7eac6f11 + md5: dc4bb65a3f9c97b26c8f947662eea202 + depends: + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + size: 3427371 + timestamp: 1717546156492 +- kind: conda + name: openssl + version: 3.3.1 + build: h87427d6_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_0.conda + sha256: 272bee725877f417fef923f5e7852ebfe06b40b6bf3364f4498b2b3f568d5e2c + md5: 1bdad93ae01353340f194c5d879745db + depends: + - __osx >=10.13 + - ca-certificates + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + size: 2547614 + timestamp: 1717546605131 +- kind: conda + name: openssl + version: 3.3.1 + build: hfb2fe0b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_0.conda + sha256: 6cb2d44f027b259be8cba2240bdf21af7b426e4132a73e0052f7173ab8b60ab0 + md5: c4a0bbd96a0da60bf265dac62c87f4e1 + depends: + - __osx >=11.0 + - ca-certificates + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + size: 2891941 + timestamp: 1717545846389 +- kind: conda + name: packaging + version: '24.0' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.0-pyhd8ed1ab_0.conda + sha256: a390182d74c31dfd713c16db888c92c277feeb6d1fe96ff9d9c105f9564be48a + md5: 248f521b64ce055e7feae3105e7abeb8 + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 49832 + timestamp: 1710076089469 +- kind: conda + name: pandas + version: 2.2.2 + build: py39h2366fc2_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py39h2366fc2_1.conda + sha256: adca9612cecdd2dada322035afa06fd60514a76b238fa0d3fd6e5242cef92bd8 + md5: 8ff33fa9669c0b1851023fa6597a9455 + depends: + - numpy >=1.19,<3 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.9.* *_cp39 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 11798513 + timestamp: 1715899052536 +- kind: conda + name: pandas + version: 2.2.2 + build: py39h60c7704_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py39h60c7704_1.conda + sha256: 397dcb5abc44592af05fb2ccdbd8b9dda53e20b15c2119cdeea62360a7dd0c86 + md5: 78c96711f5d28191f72810aec658d5ae + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.9.* *_cp39 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + size: 12722678 + timestamp: 1715898272002 +- kind: conda + name: pandas + version: 2.2.2 + build: py39h998126f_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py39h998126f_1.conda + sha256: 9f89718b501ec6253916b98a89a5c5ad68e6413f75fd75248808fbee5e7cab4c + md5: 382946ebc5bd55ce0c8613dfde78a718 + depends: + - __osx >=11.0 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.9.* *_cp39 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + size: 12053143 + timestamp: 1715898294086 +- kind: conda + name: pandas + version: 2.2.2 + build: py39hbb604f3_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py39hbb604f3_1.conda + sha256: 0dd428c8daaff9fd9cf9caf8b32b7dbffe088c0000bde09c5f7d25d51b4cd1f2 + md5: d6bf536ffbff78b4976f5777b0bb9ae2 + depends: + - __osx >=10.13 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.9.* *_cp39 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + size: 12098308 + timestamp: 1715898127261 +- kind: conda + name: pandas + version: 2.2.2 + build: py39hfc16268_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py39hfc16268_1.conda + sha256: 7d628c5b035a770a8f8d8ee22935eed7878e74b886b8816e825238653d559338 + md5: 8b23d2b425035a7468d17e6fe1d54124 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - python >=3.9,<3.10.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.9.* *_cp39 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + size: 12904527 + timestamp: 1715898201230 +- kind: conda + name: pango + version: 1.52.2 + build: h07c897b_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pango-1.52.2-h07c897b_0.conda + sha256: 1520663568d2c3ad520fd6c990bd5711e8104371eef1e5d00f066f66924a0fb5 + md5: d4b8ab1b86d06d9d6c65eaed989a018d + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + size: 451181 + timestamp: 1712103800111 +- kind: conda + name: pango + version: 1.52.2 + build: h11ef544_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.52.2-h11ef544_0.conda + sha256: ccb66f5b01faaf215c8819a05a45cf902428cb9b7a96fdaa1ae642f11a550d5d + md5: 36e37468883220518ab485addfa6a3f1 + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + size: 458724 + timestamp: 1712105822446 +- kind: conda + name: pango + version: 1.52.2 + build: h7f2093b_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.52.2-h7f2093b_0.conda + sha256: ea36e845c747c453288736f78cf3d216fea930b62c734e66a8470fb0f1091093 + md5: ea9611aee7e61e4ff18c4dc56ec100ab + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + size: 421629 + timestamp: 1712103688303 +- kind: conda + name: pango + version: 1.52.2 + build: ha41ecd1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.52.2-ha41ecd1_0.conda + sha256: 5f6383ffd8f3b6f8f3ebb516c870b2bfebef68c4a21193de5f0609fa4cc0b358 + md5: a658eeabf188c3040da36b0763de2bfd + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + size: 446864 + timestamp: 1712103212459 +- kind: conda + name: pango + version: 1.52.2 + build: hb067d4f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.52.2-hb067d4f_0.conda + sha256: ef6de9f47be81cad0ca2e99f46c30e2a4a0e87137319cc40ce4d2f6a2a26fe37 + md5: fc1b2e68f2d7b693d6930f12324a06f3 + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - libglib >=2.80.0,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + size: 416865 + timestamp: 1712103776625 +- kind: conda + name: pcre2 + version: '10.43' + build: h0ad2156_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.43-h0ad2156_0.conda + sha256: 226714bbf89d45bf7da4c7551e21b8a833f51d33379fe3dfbfe31b72832d4dba + md5: 9c8651803886ce9d5983e107a0df4ea8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 836581 + timestamp: 1708118455741 +- kind: conda + name: pcre2 + version: '10.43' + build: h17e33f8_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.43-h17e33f8_0.conda + sha256: 9a82c7d49c4771342b398661862975efb9c30e7af600b5d2e08a0bf416fda492 + md5: d0485b8aa2cedb141a7bd27b4efa4c9c + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 818317 + timestamp: 1708118868321 +- kind: conda + name: pcre2 + version: '10.43' + build: h26f9a81_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.43-h26f9a81_0.conda + sha256: 4bf7b5fa091f5e7ab0b78778458be1e81c1ffa182b63795734861934945a63a7 + md5: 1ddc87f00014612830f3235b5ad6d821 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 615219 + timestamp: 1708118184900 +- kind: conda + name: pcre2 + version: '10.43' + build: hcad00b1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda + sha256: 766dd986a7ed6197676c14699000bba2625fd26c8a890fcb7a810e5cf56155bc + md5: 8292dea9e022d9610a11fce5e0896ed8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 950847 + timestamp: 1708118050286 +- kind: conda + name: pcre2 + version: '10.43' + build: hd0f9c67_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.43-hd0f9c67_0.conda + sha256: 1bac2077caa28f0764f955e522468b98316b99b2d0904e9d93a01297fe1b7ba2 + md5: 1275fa549338ecdc8b7793589ac09150 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 880930 + timestamp: 1708117999756 +- kind: conda + name: pillow + version: 10.3.0 + build: py39h3352c98_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py39h3352c98_0.conda + sha256: ec1a6fed0b5e114c79ecdbe195f1a1c9ace94ccb61379e59781afb68cba0f463 + md5: ae81c249c46d2c8e37770a72f7568aaa + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 40576213 + timestamp: 1712155121473 +- kind: conda + name: pillow + version: 10.3.0 + build: py39h71661b1_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py39h71661b1_0.conda + sha256: 1cfd29c096089b983ec4901e644e04505e1f3920fea2e50d72a5e81e08db6b08 + md5: dae548b7b537d7ef796d1d4c38a55319 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 42017922 + timestamp: 1712155997691 +- kind: conda + name: pillow + version: 10.3.0 + build: py39h90c7501_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py39h90c7501_0.conda + sha256: 1fa684d3f431f98a3e10f972025fc63fc81882e775059b358f5ff58cc46a951d + md5: 1e3b6af9592be71ce19f0a6aae05d97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 42433427 + timestamp: 1712154625243 +- kind: conda + name: pillow + version: 10.3.0 + build: py39h9dabb2a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.3.0-py39h9dabb2a_0.conda + sha256: b2478cf4fc318a1be5b3287bf426b34d0b2cc2b0cb7a435e6ad7f9637c8e5f53 + md5: e385068c9511542eff20422f7e799064 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 42224219 + timestamp: 1712154790265 +- kind: conda + name: pillow + version: 10.3.0 + build: py39h9ee4981_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.3.0-py39h9ee4981_0.conda + sha256: 06e75a5a56d104dee181ef9e0dd78fd0998ee7f9cf6a1ee56308ecf035236404 + md5: 6d69d57c41867acc162ef0205a8efaef + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.3.2,<2.0a0 + - libxcb >=1.15,<1.16.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tk >=8.6.13,<8.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: HPND + size: 42541715 + timestamp: 1712155039095 +- kind: conda + name: pip + version: '24.0' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda + sha256: b7c1c5d8f13e8cb491c4bd1d0d1896a4cf80fc47de01059ad77509112b664a4a + md5: f586ac1e56c8638b64f9c8122a7b8a67 + depends: + - python >=3.7 + - setuptools + - wheel + license: MIT + license_family: MIT + size: 1398245 + timestamp: 1706960660581 +- kind: conda + name: pixman + version: 0.43.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e + md5: 71004cbf7924e19c02746ccde9fd7123 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 386826 + timestamp: 1706549500138 +- kind: conda + name: pixman + version: 0.43.4 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + sha256: e145b0d89c800326a20d1afd86c74f9422b81549b17fe53add46c2fa43a4c93e + md5: 81b2ddea4b0eca188da9c5a7aa4b0cff + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 295064 + timestamp: 1709240909660 +- kind: conda + name: pixman + version: 0.43.4 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 + md5: b98135614135d5f458b75ab9ebb9558c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 461854 + timestamp: 1709239971654 +- kind: conda + name: pixman + version: 0.43.4 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + sha256: 3ab44e12e566c67a6e9fd831f557ab195456aa996b8dd9af19787ca80caa5cd1 + md5: cb134c1e03fd32f4e6bea3f6de2614fd + depends: + - libcxx >=16 + license: MIT + license_family: MIT + size: 323904 + timestamp: 1709239931160 +- kind: conda + name: pixman + version: 0.43.4 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 + md5: 0308c68e711cd295aaa026a4f8c4b1e5 + depends: + - libcxx >=16 + license: MIT + license_family: MIT + size: 198755 + timestamp: 1709239846651 +- kind: conda + name: pluggy + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 + md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 23815 + timestamp: 1713667175451 +- kind: conda + name: ply + version: '3.11' + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda + sha256: d8faaf4dcc13caed560fa32956523b35928a70499a2d08c51320947d637e3a41 + md5: 18c6deb6f9602e32446398203c8f0e91 + depends: + - python >=2.6 + license: BSD-3-Clause + license_family: BSD + size: 49196 + timestamp: 1712243121626 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h27ca646_1001 + build_number: 1001 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2 + sha256: 9da9e6f5d51dff6ad2e4ee0874791437ba952e0a6249942273f0fedfd07ea826 + md5: d3f26c6494d4105d4ecb85203d687102 + license: MIT + license_family: MIT + size: 5696 + timestamp: 1606147608402 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h36c2ea0_1001 + build_number: 1001 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff + md5: 22dad4df6e8630e8dff2428f6f6a7036 + depends: + - libgcc-ng >=7.5.0 + license: MIT + license_family: MIT + size: 5625 + timestamp: 1606147468727 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9de7d4_1001 + build_number: 1001 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2 + sha256: f1d7ff5e06cc515ec82010537813c796369f8e9dde46ce3f4fa1a9f70bc7db7d + md5: d0183ec6ce0b5aaa3486df25fa5f0ded + depends: + - libgcc-ng >=7.5.0 + license: MIT + license_family: MIT + size: 5657 + timestamp: 1606147738742 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hc929b4f_1001 + build_number: 1001 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2 + sha256: 6e3900bb241bcdec513d4e7180fe9a19186c1a38f0b4080ed619d26014222c53 + md5: addd19059de62181cd11ae8f4ef26084 + license: MIT + license_family: MIT + size: 5653 + timestamp: 1606147699844 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hcd874cb_1001 + build_number: 1001 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + sha256: bb5a6ddf1a609a63addd6d7b488b0f58d05092ea84e9203283409bff539e202a + md5: a1f820480193ea83582b13249a7e7bd9 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + size: 6417 + timestamp: 1606147814351 +- kind: conda + name: pthreads-win32 + version: 2.9.1 + build: hfa6e2cd_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + sha256: 576a228630a72f25d255a5e345e5f10878e153221a96560f2498040cd6f54005 + md5: e2da8758d7d51ff6aa78a14dfb9dbed4 + depends: + - vc 14.* + license: LGPL 2 + size: 144301 + timestamp: 1537755684331 +- kind: conda + name: pulseaudio-client + version: '17.0' + build: hb77b528_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- kind: conda + name: py-cpuinfo + version: 9.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: 1bb0459fdebf2f3155ee511e99097c5506ef206acbdd871b74ae9fc4b0c4a019 + md5: 6f6d42b894118f8378fce11887ccdaff + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 24947 + timestamp: 1666774595872 +- kind: conda + name: pydotplus + version: 2.0.2 + build: pyhaef67bd_5 + build_number: 5 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydotplus-2.0.2-pyhaef67bd_5.tar.bz2 + sha256: c811e85f0de51306eb10026110b38c6b977e8260ef974816506e5045506804dc + md5: 8af781cbb9222f0da55f8b9e504f0bdc + depends: + - graphviz >=2.47.2,<3.0a0 + - pyparsing >=2.0.1 + - python >=3.6 + license: MIT + license_family: MIT + size: 24847 + timestamp: 1622588237763 +- kind: conda + name: pyparsing + version: 3.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + sha256: 06c77cb03e5dde2d939b216c99dd2db52ea93a4c7c599f3882f136005c359c7b + md5: b9a4dacf97241704529131a0dfc0494f + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 89455 + timestamp: 1709721146886 +- kind: conda + name: pyqt + version: 5.15.9 + build: py39h52134e7_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py39h52134e7_5.conda + sha256: a0d0662c73b343931dbd66d9c25ec74f40115512568a87bf4d01af8d1a8ddf1c + md5: e1f148e57d071b09187719df86f513c1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - pyqt5-sip 12.12.2 py39h3d6467e_5 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - qt-main >=5.15.8,<5.16.0a0 + - sip >=6.7.11,<6.8.0a0 + license: GPL-3.0-only + license_family: GPL + size: 5227659 + timestamp: 1695420723753 +- kind: conda + name: pyqt + version: 5.15.9 + build: py39hb77abff_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.9-py39hb77abff_5.conda + sha256: 9aee5ab6f2c5a71f2eb399e5fec175f79498648ff8e4be6f815cf0ca803201c4 + md5: 5ed899124a51958336371ff01482b8fd + depends: + - pyqt5-sip 12.12.2 py39h99910a6_5 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - qt-main >=5.15.8,<5.16.0a0 + - sip >=6.7.11,<6.8.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-3.0-only + license_family: GPL + size: 3876568 + timestamp: 1695421679054 +- kind: conda + name: pyqt5-sip + version: 12.12.2 + build: py39h3d6467e_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py39h3d6467e_5.conda + sha256: 86efec5e57111794e039bb14dfce23d9df6ed8df139ab1404086140eba6d4d7c + md5: 93aff412f3e49fdb43361c0215cbd72d + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - packaging + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - sip + - toml + license: GPL-3.0-only + license_family: GPL + size: 85034 + timestamp: 1695418081052 +- kind: conda + name: pyqt5-sip + version: 12.12.2 + build: py39h99910a6_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.12.2-py39h99910a6_5.conda + sha256: c352489404b993ee0de4a068fd766229dd759a8d7fbc825bf8820073c2ff12d7 + md5: dffbcea794c524c471772a5f697c2aea + depends: + - packaging + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - sip + - toml + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-3.0-only + license_family: GPL + size: 79633 + timestamp: 1695418442270 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyh0701188_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 + md5: 56cd9fe388baac0e90c7149cfac95b60 + depends: + - __win + - python >=3.8 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + size: 19348 + timestamp: 1661605138291 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 18981 + timestamp: 1661604969727 +- kind: conda + name: pytest + version: 8.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda + sha256: 00b7a49b31cf705b59edbd96219d8a67d2b9f51a913aa059fadd921b016965cb + md5: 0f3f49c22c7ef3a1195fa61dad3c43be + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2.0,>=1.5 + - python >=3.8 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 257061 + timestamp: 1717533913269 +- kind: conda + name: pytest-benchmark + version: 4.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-benchmark-4.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: e08bba57295c6ca9cbc265347c312aaab1f0cf66f4e8ff53a2461f32c397536f + md5: 8c3168375e2ac100c17b133f4e2eb536 + depends: + - py-cpuinfo + - pytest >=3.8 + - python >=3.5 + license: BSD-2-Clause + license_family: BSD + size: 39571 + timestamp: 1666782598879 +- kind: conda + name: pytest-cov + version: 5.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + sha256: 218306243faf3c36347131c2b36bb189daa948ac2e92c7ab52bb26cc8c157b3c + md5: c54c0107057d67ddf077751339ec2c63 + depends: + - coverage >=5.2.1 + - pytest >=4.6 + - python >=3.8 + - toml + license: MIT + license_family: MIT + size: 25507 + timestamp: 1711411153367 +- kind: conda + name: pytest-dotenv + version: 0.5.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-dotenv-0.5.2-pyhd8ed1ab_0.tar.bz2 + sha256: 43ab7de6af7b298a9199aea2bf6fa481a3059ba1068dd0967fe3a040ff6e9303 + md5: 11b16b526f60cc18748c3fe45d10315a + depends: + - pytest >=5.0.0 + - python >=3.6 + - python-dotenv >=0.9.1 + license: MIT + license_family: MIT + size: 7383 + timestamp: 1606859705188 +- kind: conda + name: pytest-order + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-order-1.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: 8d4f0c70f66dfeb4f857e2b92b30713b7b6b475b748dcb2b47ef7d0f18346752 + md5: d66820a0d1d10f6731b101d36dc38ad9 + depends: + - pytest >=3.7 + - python >=3.6 + license: MIT + license_family: MIT + size: 15851 + timestamp: 1641771678634 +- kind: conda + name: pytest-xdist + version: 3.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda + sha256: 8dc1d422e48e5a80eb72e26ed0135bb4843cf508d3b1cb006c3257c8639784d1 + md5: d5f595da2daead898ca958ac62f0307b + depends: + - execnet >=1.1 + - pytest >=6.2.0 + - python >=3.7 + constrains: + - psutil >=3.0 + license: MIT + license_family: MIT + size: 36516 + timestamp: 1700593072448 +- kind: conda + name: python + version: 3.9.19 + build: h0755675_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.9.19-h0755675_0_cpython.conda + sha256: b9253ca9ca5427e6da4b1d43353a110e0f2edfab9c951afb4bf01cbae2825b31 + md5: d9ee3647fbd9e8595b8df759b2bbefb8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.9.* *_cp39 + license: Python-2.0 + size: 23800555 + timestamp: 1710940120866 +- kind: conda + name: python + version: 3.9.19 + build: h4ac3b42_0_cpython + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.19-h4ac3b42_0_cpython.conda + sha256: 26845bcb8194e121331d47dca98d07f6197d5bf3bd2cb8da2cd2391722463180 + md5: 1501507cd9451472ec8900d587ce872f + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.9.* *_cp39 + license: Python-2.0 + size: 12542650 + timestamp: 1710945692074 +- kind: conda + name: python + version: 3.9.19 + build: h4de0772_0_cpython + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-3.9.19-h4de0772_0_cpython.conda + sha256: 92d847bc9e79a60c1d139aa4ca0385d283b90aa2d7421bb3ffcb5dc0678fd72f + md5: b6999bc275e0e6beae7b1c8ea0be1e85 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - vc >=14.1,<15 + - vc14_runtime >=14.16.27033 + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.9.* *_cp39 + license: Python-2.0 + size: 16906240 + timestamp: 1710938565297 +- kind: conda + name: python + version: 3.9.19 + build: h7a9c478_0_cpython + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.9.19-h7a9c478_0_cpython.conda + sha256: 58b76be84683bc03112b3ed7e377e99af24844ebf7d7568f6466a2dae7a887fe + md5: 7d53d366acd9dbfb498c69326ccb520a + depends: + - bzip2 >=1.0.8,<2.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.9.* *_cp39 + license: Python-2.0 + size: 12372436 + timestamp: 1710940037648 +- kind: conda + name: python + version: 3.9.19 + build: hd7ebdb9_0_cpython + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.9.19-hd7ebdb9_0_cpython.conda + sha256: 3b93f7a405f334043758dfa8aaca050429a954a37721a6462ebd20e94ef7c5a0 + md5: 45c4d173b12154f746be3b49b1190634 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.9.* *_cp39 + license: Python-2.0 + size: 11847835 + timestamp: 1710939779164 +- kind: conda + name: python-dateutil + version: 2.9.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 + md5: 2cf4264fffb9e6eff6031c5b6884d61c + depends: + - python >=3.7 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222742 + timestamp: 1709299922152 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c + md5: c2997ea9360ac4e015658804a7a84f94 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 24278 + timestamp: 1706018281544 +- kind: conda + name: python-tzdata + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad + md5: 98206ea9954216ee7540f0c773f2104d + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 144024 + timestamp: 1707747742930 +- kind: conda + name: python_abi + version: '3.9' + build: 4_cp39 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-4_cp39.conda + sha256: 7e0157e35929711e1a986c18a8bfb7a38a2209cfada16b541ebb0481f74376d6 + md5: bfe4b3259a8ac6cdf0037752904da6a7 + constrains: + - python 3.9.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6378 + timestamp: 1695147399237 +- kind: conda + name: python_abi + version: '3.9' + build: 4_cp39 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.9-4_cp39.conda + sha256: b9201f49d9172c37f52818e34eaf21855c0e5a1fb885cd1b5a60fa1a9307d178 + md5: c191905a08694e4a5cb1238e90233878 + constrains: + - python 3.9.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6433 + timestamp: 1695147422968 +- kind: conda + name: python_abi + version: '3.9' + build: 4_cp39 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.9-4_cp39.conda + sha256: a2b38ce566d9f48a49369f46c50912300a6ac09bf1c58a0d6c2caab074ee551e + md5: 2d9f6c00555127a9058cfa955adf1090 + constrains: + - python 3.9.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6486 + timestamp: 1695147714523 +- kind: conda + name: python_abi + version: '3.9' + build: 4_cp39 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.9-4_cp39.conda + sha256: 2ae06dcd1a03f023b6accf5bd989f42b689f708d3495affa22c2ed9f1d127726 + md5: be9e11a37bbab9cfdbcb36e52d8d73cb + constrains: + - python 3.9.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6484 + timestamp: 1695147719187 +- kind: conda + name: python_abi + version: '3.9' + build: 4_cp39 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.9-4_cp39.conda + sha256: 3bf150eb6fc99f459210065973fc79b5974a9142672f6dd92eba6ed97697e0ed + md5: 948b0d93d4ab1372d8fd45e1560afd47 + constrains: + - python 3.9.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6776 + timestamp: 1695147727582 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: qt-main + version: 5.15.8 + build: hc9dc06e_21 + build_number: 21 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc9dc06e_21.conda + sha256: 6b4594f6f2fad65a7ed52993f602e3ab183193755fe4a492aaa48e463b23105b + md5: b325046180590c868ce0dbf267b82eb8 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.11,<1.3.0a0 + - dbus >=1.13.6,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gst-plugins-base >=1.24.1,<1.25.0a0 + - gstreamer >=1.24.1,<1.25.0a0 + - harfbuzz >=8.3.0,<9.0a0 + - icu >=73.2,<74.0a0 + - krb5 >=1.21.2,<1.22.0a0 + - libclang-cpp15 >=15.0.7,<15.1.0a0 + - libclang13 >=15.0.7 + - libcups >=2.3.3,<2.4.0a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libllvm15 >=15.0.7,<15.1.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libpq >=16.2,<17.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.15,<1.16.0a0 + - libxkbcommon >=1.7.0,<2.0a0 + - libxml2 >=2.12.6,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - mysql-libs >=8.3.0,<8.4.0a0 + - nspr >=4.35,<5.0a0 + - nss >=3.98,<4.0a0 + - openssl >=3.2.1,<4.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - xcb-util >=0.4.0,<0.5.0a0 + - xcb-util-image >=0.4.0,<0.5.0a0 + - xcb-util-keysyms >=0.4.0,<0.5.0a0 + - xcb-util-renderutil >=0.3.9,<0.4.0a0 + - xcb-util-wm >=0.4.1,<0.5.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-xf86vidmodeproto + - zstd >=1.5.5,<1.6.0a0 + constrains: + - qt 5.15.8 + license: LGPL-3.0-only + license_family: LGPL + size: 61305384 + timestamp: 1712549380352 +- kind: conda + name: qt-main + version: 5.15.8 + build: hcef0176_21 + build_number: 21 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.8-hcef0176_21.conda + sha256: 7eb717efea95fb0f8384f7c59b709dbe3c7a2c1fabca60c8792760211c430251 + md5: 76544d3dfeff8fd52250df168cb0005b + depends: + - gst-plugins-base >=1.24.1,<1.25.0a0 + - gstreamer >=1.24.1,<1.25.0a0 + - icu >=73.2,<74.0a0 + - krb5 >=1.21.2,<1.22.0a0 + - libclang13 >=15.0.7 + - libglib >=2.80.0,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.5,<1.6.0a0 + constrains: + - qt 5.15.8 + license: LGPL-3.0-only + license_family: LGPL + size: 59806644 + timestamp: 1712551057454 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h8fc344f_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- kind: conda + name: readline + version: '8.2' + build: h92ec313_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- kind: conda + name: readline + version: '8.2' + build: h9e318b2_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 255870 + timestamp: 1679532707590 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: ruff + version: 0.4.8 + build: py39h009b497_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.4.8-py39h009b497_0.conda + sha256: bac295efbafde6b390a33823d4be507e438e64d6fed1e33f9be3e680554b0ef1 + md5: d70f132c7ae421d0bce91a89a20963c5 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: MIT + license_family: MIT + size: 6043607 + timestamp: 1717617623955 +- kind: conda + name: ruff + version: 0.4.8 + build: py39h4dd7705_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.4.8-py39h4dd7705_0.conda + sha256: fff0a2eada8a4df04c1a5f44d2bbb18072cccf9d1be39572add29d0a98d35e4f + md5: a4b318d462d4a2a7ee406502a114570e + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + constrains: + - __osx >=10.12 + license: MIT + license_family: MIT + size: 6141202 + timestamp: 1717617634935 +- kind: conda + name: ruff + version: 0.4.8 + build: py39hac31393_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.4.8-py39hac31393_0.conda + sha256: a4b805755cd160855d81b02cfafc1be9bf05caf3e1ecb8b585ed543911988822 + md5: 785db70aa811e48b2c86091358ea9906 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: MIT + license_family: MIT + size: 6370565 + timestamp: 1717617494021 +- kind: conda + name: ruff + version: 0.4.8 + build: py39hb586919_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.4.8-py39hb586919_0.conda + sha256: 00bc6649ebea6c9664d8eec30077455ceac136aa372967a8c9689293a9dc0928 + md5: c38063bd19236bff5377002bd177e4d2 + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 5888510 + timestamp: 1717617731208 +- kind: conda + name: ruff + version: 0.4.8 + build: py39hda83faa_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruff-0.4.8-py39hda83faa_0.conda + sha256: 73ab3aaff1ee4dd6b7e7a0b209883bd5c889f911c255246d0afd8d40c257a613 + md5: 0e2ccdd108e80aedc1712d45f1a3e565 + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 6268402 + timestamp: 1717618845942 +- kind: conda + name: setuptools + version: 70.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-70.0.0-pyhd8ed1ab_0.conda + sha256: daa4638d288cfdf3b0ecea395d8efa25cafc4ebf4026464a36c797c84541d2be + md5: c8ddb4f34a208df4dd42509a0f6a1c89 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 483015 + timestamp: 1716368141661 +- kind: conda + name: sip + version: 6.7.12 + build: py39h3d6467e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py39h3d6467e_0.conda + sha256: fd50c71dc05daf9d28663d448d17f150b3eb79ae629198c73e2186b5b1e990dc + md5: e667a3ab0df62c54e60e1843d2e6defb + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - packaging + - ply + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + license: GPL-3.0-only + license_family: GPL + size: 491742 + timestamp: 1697300599649 +- kind: conda + name: sip + version: 6.7.12 + build: py39h99910a6_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/sip-6.7.12-py39h99910a6_0.conda + sha256: 541840bcd849c6c745f537987d0009695ef14c8fd9ad4721333a30bf3c49e018 + md5: 0cc5774390ada632ed7975203057c91c + depends: + - packaging + - ply + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-3.0-only + license_family: GPL + size: 502390 + timestamp: 1697300934198 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + md5: e5f25f8dbc060e9a8d912e432202afc2 + depends: + - python + license: MIT + license_family: MIT + size: 14259 + timestamp: 1620240338595 +- kind: conda + name: tbb + version: 2021.12.0 + build: hc790b64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_1.conda + sha256: 87461c83a4f0d4f119af7368f20c47bbe0c27d963a7c22a3d08c71075077f855 + md5: e98333643abc739ebea1bac97a479828 + depends: + - libhwloc >=2.10.0,<2.10.1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + size: 161771 + timestamp: 1716031112705 +- kind: conda + name: tk + version: 8.6.13 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- kind: conda + name: tk + version: 8.6.13 + build: h1abcd95_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3270220 + timestamp: 1699202389792 +- kind: conda + name: tk + version: 8.6.13 + build: h5083fa2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- kind: conda + name: tk + version: 8.6.13 + build: h5226925_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + size: 3503410 + timestamp: 1699202577803 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: toml + version: 0.10.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 + md5: f832c45a477c78bebd107098db465095 + depends: + - python >=2.7 + license: MIT + license_family: MIT + size: 18433 + timestamp: 1604308660817 +- kind: conda + name: tomli + version: 2.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f + md5: 5844808ffab9ebdb694585b50ba02a96 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 15940 + timestamp: 1644342331069 +- kind: conda + name: tornado + version: 6.4.1 + build: py39ha3e8b56_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py39ha3e8b56_0.conda + sha256: 1023d451ca7fb3173e421a71d8ef81fb6d66553e2da08cb3bba977c6b6fc8caa + md5: 60ad0fcecca6af49fe5888a408618d8a + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 643759 + timestamp: 1717724629166 +- kind: conda + name: tornado + version: 6.4.1 + build: py39ha55e580_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py39ha55e580_0.conda + sha256: 2c375a9af90acbf8cd55b9798e4efcfb1806ad818ab9f5fd10edc052397c72a0 + md5: 7d1e87f3036af858ce7e248489c3faec + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 644403 + timestamp: 1717723410092 +- kind: conda + name: tornado + version: 6.4.1 + build: py39hd3abc70_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py39hd3abc70_0.conda + sha256: e9aec6e6a7988729365ab0fc22d95d60075350d8d2ef2d487e0001a3852e9754 + md5: c183e99f9320e5e2d0f9c43efcb3fb22 + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 642638 + timestamp: 1717723015273 +- kind: conda + name: tornado + version: 6.4.1 + build: py39hded5825_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py39hded5825_0.conda + sha256: b908bc61ebc130cda6193dded464cc3164a081caa369d32ae0ed232c850f85d4 + md5: 416249efe6570c63933ab64c04459bfe + depends: + - __osx >=10.13 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 640935 + timestamp: 1717722847607 +- kind: conda + name: tornado + version: 6.4.1 + build: py39hfea33bf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py39hfea33bf_0.conda + sha256: 7e88b42380c179f03bf4807dd4f78998c991f6167dae085c7546f89a57bb60a8 + md5: f8c9c4061239770cb5f438df0237e059 + depends: + - __osx >=11.0 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 642855 + timestamp: 1717722852977 +- kind: conda + name: tzdata + version: 2024a + build: h0c530f3_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + license: LicenseRef-Public-Domain + size: 119815 + timestamp: 1706886945727 +- kind: conda + name: ucrt + version: 10.0.22621.0 + build: h57928b3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + sha256: f29cdaf8712008f6b419b8b1a403923b00ab2504bfe0fb2ba8eb60e72d4f14c6 + md5: 72608f6cd3e5898229c3ea16deb1ac43 + constrains: + - vs2015_runtime >=14.29.30037 + license: LicenseRef-Proprietary + license_family: PROPRIETARY + size: 1283972 + timestamp: 1666630199266 +- kind: conda + name: unicodedata2 + version: 15.1.0 + build: py39h0f82c59_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-15.1.0-py39h0f82c59_0.conda + sha256: 31d33f967f0db811b25a9315bef727cb12a24c76d8ded8947188cc04535b06b0 + md5: 39c745ba9443da902afa7f5a9e9dfcac + depends: + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 376309 + timestamp: 1695848358752 +- kind: conda + name: unicodedata2 + version: 15.1.0 + build: py39h898b7ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-15.1.0-py39h898b7ef_0.conda + sha256: ddb1a64567d3927a10a77d6ef9c7c18af9344fc3589705e2bd600b8a02ad40d2 + md5: 8c072c9329aeea97a46005625267a851 + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python >=3.9,<3.10.0a0 *_cpython + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 373906 + timestamp: 1695848199413 +- kind: conda + name: unicodedata2 + version: 15.1.0 + build: py39ha55989b_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-15.1.0-py39ha55989b_0.conda + sha256: 7abe28f2a0604018448abf1e3e566e0b6ae45fc8719f908308137d9ab637c68a + md5: 20ec896e8d97f2ff8be1124e624dc8f2 + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + size: 373257 + timestamp: 1695848310896 +- kind: conda + name: unicodedata2 + version: 15.1.0 + build: py39hd1e30aa_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py39hd1e30aa_0.conda + sha256: 90077cbf116112d5112b7beedf896e59c98416d09860ba98c06a770c014829b2 + md5: 1da984bbb6e765743e13388ba7b7b2c8 + depends: + - libgcc-ng >=12 + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 373822 + timestamp: 1695848128416 +- kind: conda + name: unicodedata2 + version: 15.1.0 + build: py39hdc70f33_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.1.0-py39hdc70f33_0.conda + sha256: 2c3049ec6ffd44beb61964bf109993f654a7316fa6a368c634d603e8347f9fdf + md5: ede122e9ef2775a8879063d9d3ee819f + depends: + - python >=3.9,<3.10.0a0 + - python_abi 3.9.* *_cp39 + license: Apache-2.0 + license_family: Apache + size: 369843 + timestamp: 1695848310939 +- kind: conda + name: urllib3 + version: 2.2.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.1-pyhd8ed1ab_0.conda + sha256: d4009dcc9327684d6409706ce17656afbeae690d8522d3c9bc4df57649a352cd + md5: 08807a87fa7af10754d46f63b368e016 + depends: + - brotli-python >=1.0.9 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.7 + license: MIT + license_family: MIT + size: 94669 + timestamp: 1708239595549 +- kind: conda + name: vc + version: '14.3' + build: h8a93ad2_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + sha256: 23ac5feb15a9adf3ab2b8c4dcd63650f8b7ae860c5ceb073e49cf71d203eddef + md5: 8558f367e1d7700554f7cdb823c46faf + depends: + - vc14_runtime >=14.40.33810 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 17391 + timestamp: 1717709040616 +- kind: conda + name: vc14_runtime + version: 14.40.33810 + build: ha82c5b3_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + sha256: af3cfa347e3d7c1277e9b964b0849a9a9f095bff61836cb3c3a89862fbc32e17 + md5: e39cc4c34c53654ec939558993d9dc5b + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.40.33810.* *_20 + license: LicenseRef-ProprietaryMicrosoft + license_family: Proprietary + size: 751934 + timestamp: 1717709031266 +- kind: conda + name: vs2015_runtime + version: 14.40.33810 + build: h3bf8584_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + sha256: 0c2803f7a788c51f28235a7228dc2ab3f107b4b16ab0845a3e595c8c51e50a7a + md5: c21f1b4a3a30bbc3ef35a50957578e0e + depends: + - vc14_runtime >=14.40.33810 + license: BSD-3-Clause + license_family: BSD + size: 17395 + timestamp: 1717709043353 +- kind: conda + name: wheel + version: 0.43.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda + sha256: cb318f066afd6fd64619f14c030569faf3f53e6f50abf743b4c865e7d95b96bc + md5: 0b5293a157c2b5cd513dd1b03d8d3aae + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 57963 + timestamp: 1711546009410 +- kind: conda + name: win_inet_pton + version: 1.1.0 + build: pyhd8ed1ab_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + sha256: a11ae693a0645bf6c7b8a47bac030be9c0967d0b1924537b9ff7458e832c0511 + md5: 30878ecc4bd36e8deeea1e3c151b2e0b + depends: + - __win + - python >=3.6 + license: PUBLIC-DOMAIN + size: 8191 + timestamp: 1667051294134 +- kind: conda + name: xcb-util + version: 0.4.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda + sha256: 0c91d87f0efdaadd4e56a5f024f8aab20ec30f90aa2ce9e4ebea05fbc20f71ad + md5: 9bfac7ccd94d54fd21a0501296d60424 + depends: + - libgcc-ng >=12 + - libxcb >=1.13 + - libxcb >=1.15,<1.16.0a0 + license: MIT + license_family: MIT + size: 19728 + timestamp: 1684639166048 +- kind: conda + name: xcb-util-image + version: 0.4.0 + build: h8ee46fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda + sha256: 92ffd68d2801dbc27afe223e04ae7e78ef605fc8575f107113c93c7bafbd15b0 + md5: 9d7bcddf49cbf727730af10e71022c73 + depends: + - libgcc-ng >=12 + - libxcb >=1.15,<1.16.0a0 + - xcb-util >=0.4.0,<0.5.0a0 + license: MIT + license_family: MIT + size: 24474 + timestamp: 1684679894554 +- kind: conda + name: xcb-util-keysyms + version: 0.4.0 + build: h8ee46fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda + sha256: 8451d92f25d6054a941b962179180728c48c62aab5bf20ac10fef713d5da6a9a + md5: 632413adcd8bc16b515cab87a2932913 + depends: + - libgcc-ng >=12 + - libxcb >=1.15,<1.16.0a0 + license: MIT + license_family: MIT + size: 14186 + timestamp: 1684680497805 +- kind: conda + name: xcb-util-renderutil + version: 0.3.9 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda + sha256: 6987588e6fff5892056021c2ea52f7a0deefb2c7348e70d24750e2d60dabf009 + md5: e995b155d938b6779da6ace6c6b13816 + depends: + - libgcc-ng >=12 + - libxcb >=1.13 + - libxcb >=1.15,<1.16.0a0 + license: MIT + license_family: MIT + size: 16955 + timestamp: 1684639112393 +- kind: conda + name: xcb-util-wm + version: 0.4.1 + build: h8ee46fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda + sha256: 08ba7147c7579249b6efd33397dc1a8c2404278053165aaecd39280fee705724 + md5: 90108a432fb5c6150ccfee3f03388656 + depends: + - libgcc-ng >=12 + - libxcb >=1.15,<1.16.0a0 + license: MIT + license_family: MIT + size: 52114 + timestamp: 1684679248466 +- kind: conda + name: xkeyboard-config + version: '2.42' + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.42-h4ab18f5_0.conda + sha256: 240caab7d9d85154ef373ecbac3ff9fb424add2029dbb124e949c6cbab2996dd + md5: b193af204da1bfb8c13882d131a14bd2 + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 388998 + timestamp: 1717817668629 +- kind: conda + name: xorg-kbproto + version: 1.0.7 + build: h3557bc0_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-kbproto-1.0.7-h3557bc0_1002.tar.bz2 + sha256: 421c0a115b31f02082f95c8f06dbba48b2274718f66a72d64d5102141e5a8731 + md5: ec8ce6b3dac3945a4010559a6284b755 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 27369 + timestamp: 1610028170368 +- kind: conda + name: xorg-kbproto + version: 1.0.7 + build: h7f98852_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1 + md5: 4b230e8381279d76131116660f5a241a + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 27338 + timestamp: 1610027759842 +- kind: conda + name: xorg-kbproto + version: 1.0.7 + build: hcd874cb_1002 + build_number: 1002 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + sha256: 5b16e1ca1ecc0d2907f236bc4d8e6ecfd8417db013c862a01afb7f9d78e48c09 + md5: 8d11c1dac4756ca57e78c1bfe173bba4 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + size: 28166 + timestamp: 1610028297505 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: h7935292_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h7935292_0.conda + sha256: c889673c9313798372bea7c93640e853561bda5ba361b265ad4b14d7d1295235 + md5: 025968e2637bca910b9b3e7f6743beff + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 60321 + timestamp: 1685308489806 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + sha256: 353e07e311eb10e934f03e0123d0f05d9b3770a70b0c3993e6d11cf74d85689f + md5: 5271e3af4791170e2c55d02818366916 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libx11 >=1.8.4,<2.0a0 + license: MIT + license_family: MIT + size: 158086 + timestamp: 1685308072189 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236 + md5: b462a33c0be1421532f28bfe8f4a7514 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 58469 + timestamp: 1685307573114 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: h5a01bc2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-h5a01bc2_0.conda + sha256: 2678975d4001f1123752ceabf9e2810cab51f740624320077de1ab12b537b498 + md5: d788eca20ecd63bad8eea7219e5c5fb7 + depends: + - libgcc-ng >=12 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 28634 + timestamp: 1685454576261 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: h7391055_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1 + md5: 93ee23f12bc2e684548181256edd2cf6 + depends: + - libgcc-ng >=12 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 27433 + timestamp: 1685453649160 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + sha256: 3a8cc151142c379d3ec3ec4420395d3a273873d3a45a94cd3038d143f5a519e8 + md5: 25926681339df15918243d9a7cec25a1 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 86397 + timestamp: 1685454296879 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: h055a233_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-h055a233_0.conda + sha256: fe6adc8f0ab7ea026b8ccd5c8c8843e5a01f49bcd193eacec9af1626f0db1194 + md5: d5f0529d3568a2ce38a9aed44a9a8029 + depends: + - libgcc-ng >=12 + - libxcb >=1.15,<1.16.0a0 + - xorg-kbproto + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + size: 851567 + timestamp: 1712415736293 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: h8ee46fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-h8ee46fc_0.conda + sha256: 3e53ba247f1ad68353f18aceba5bf8ce87e3dea930de85d36946844a7658c9fb + md5: 077b6e8ad6a3ddb741fce2496dd01bec + depends: + - libgcc-ng >=12 + - libxcb >=1.15,<1.16.0a0 + - xorg-kbproto + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + size: 828060 + timestamp: 1712415742569 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: hefa74cf_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-hefa74cf_0.conda + sha256: 15217b9180ff7d6840762363647fabcb79636517454d2c05dd69cb3fc38a1001 + md5: 3672e991346895f332af1ebc60b8bca9 + depends: + - libxcb >=1.15,<1.16.0a0 + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-kbproto + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + size: 814566 + timestamp: 1712416687331 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h0dc2134_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda + sha256: 8a2e398c4f06f10c64e69f56bcf3ddfa30b432201446a0893505e735b346619a + md5: 9566b4c29274125b0266d0177b5eb97b + license: MIT + license_family: MIT + size: 13071 + timestamp: 1684638167647 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h31becfc_0.conda + sha256: c00a8909e783ba7f4ada7256f0385ae46fc21322f4090fa396c80b4481abd5f4 + md5: 13de34f69cb73165dbe08c1e9148bedb + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 15380 + timestamp: 1684638889756 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb547adb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda + sha256: 02c313a1cada46912e5b9bdb355cfb4534bfe22143b4ea4ecc419690e793023b + md5: ca73dc4f01ea91e44e3ed76602c5ea61 + license: MIT + license_family: MIT + size: 13667 + timestamp: 1684638272445 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + sha256: 8c5b976e3b36001bdefdb41fb70415f9c07eff631f1f0155f3225a7649320e77 + md5: c46ba8712093cb0114404ae8a7582e1a + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + license: MIT + license_family: MIT + size: 51297 + timestamp: 1684638355740 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4 + md5: 2c80dc38fface310c9bd81b17037fee5 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 14468 + timestamp: 1684637984591 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: h27ca646_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2 + sha256: d9a2fb4762779994718832f05a7d62ab2dcf6103a312235267628b5187ce88f7 + md5: 6738b13f7fadc18725965abdd4129c36 + license: MIT + license_family: MIT + size: 18164 + timestamp: 1610071737668 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: h3557bc0_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2 + sha256: 2aad9a0b57796170b8fb40317598fd79cfc7ae27fa7fb68c417d815e44499d59 + md5: a6c9016ae1ca5c47a3603ed4cd65fedd + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 19916 + timestamp: 1610072242320 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: h35c211d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2 + sha256: 485421c16f03a01b8ed09984e0b2ababdbb3527e1abf354ff7646f8329be905f + md5: 86ac76d6bf1cbb9621943eb3bd9ae36e + license: MIT + license_family: MIT + size: 17225 + timestamp: 1610071995461 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: h7f98852_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77 + md5: be93aabceefa2fac576e971aef407908 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 19126 + timestamp: 1610071769228 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + sha256: f51205d33c07d744ec177243e5d9b874002910c731954f2c8da82459be462b93 + md5: 46878ebb6b9cbd8afcf8088d7ef00ece + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + size: 67908 + timestamp: 1610072296570 +- kind: conda + name: xorg-libxext + version: 1.3.4 + build: h0b41bf4_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249 + md5: 82b6df12252e6f32402b96dacc656fec + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + license: MIT + license_family: MIT + size: 50143 + timestamp: 1677036907815 +- kind: conda + name: xorg-libxext + version: 1.3.4 + build: h2a766a3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.4-h2a766a3_2.conda + sha256: 16eff29fb70b2f89b9120d112d2d5df1bf7bd4e95d1e5baafabc61dac4977fa8 + md5: 0cea7d840c8eeaa4e349e0b4775c826d + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + license: MIT + license_family: MIT + size: 50856 + timestamp: 1677037784530 +- kind: conda + name: xorg-libxext + version: 1.3.4 + build: hcd874cb_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + sha256: 829320f05866ea1cc51924828427f215f4d0db093e748a662e3bb68b764785a4 + md5: 2aa695ac3c56193fd8d526e3b511e021 + depends: + - m2w64-gcc-libs + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + license: MIT + license_family: MIT + size: 221821 + timestamp: 1677038179908 +- kind: conda + name: xorg-libxpm + version: 3.5.17 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + sha256: d5cc2f026658e8b85679813bff35c16c857f873ba02489e6eb6e30d5865dacc4 + md5: 029be9b667bf3896fa28bc32adb1bfc3 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxt >=1.3.0,<2.0a0 + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + size: 195881 + timestamp: 1696449889560 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: h7935292_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h7935292_0.conda + sha256: 15ab433c3b565d92bbd9dc83e469bb4ff1076f9002f7cd142b8a39e1b6cbcfab + md5: 8c96b84f7fb97a3cd533a14dbdcd6626 + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-renderproto + license: MIT + license_family: MIT + size: 37477 + timestamp: 1688300682978 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7 + md5: ed67c36f215b310412b2af935bf3e530 + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-renderproto + license: MIT + license_family: MIT + size: 37770 + timestamp: 1688300707994 +- kind: conda + name: xorg-libxt + version: 1.3.0 + build: hcd874cb_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + sha256: d513e0c627f098ef6655ce188eca79a672eaf763b0bbf37b228cb46dc82a66ca + md5: 511a29edd2ff3d973f63e54f19dcc06e + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-kbproto + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-xproto + license: MIT + license_family: MIT + size: 671704 + timestamp: 1690289114426 +- kind: conda + name: xorg-renderproto + version: 0.11.1 + build: h3557bc0_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-renderproto-0.11.1-h3557bc0_1002.tar.bz2 + sha256: e57e8b4a58f8c3b5011bf6cd66f499fca9fc5067981bb33f828750b168c3698d + md5: 01cbfe96ce66b78a9a270ac305791dd2 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 9612 + timestamp: 1614866892676 +- kind: conda + name: xorg-renderproto + version: 0.11.1 + build: h7f98852_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034 + md5: 06feff3d2634e3097ce2fe681474b534 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 9621 + timestamp: 1614866326326 +- kind: conda + name: xorg-xextproto + version: 7.3.0 + build: h0b41bf4_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743 + md5: bce9f945da8ad2ae9b1d7165a64d0f87 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 30270 + timestamp: 1677036833037 +- kind: conda + name: xorg-xextproto + version: 7.3.0 + build: h2a766a3_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xextproto-7.3.0-h2a766a3_1003.conda + sha256: 62298f1c7b963f3a5921a65d9cb6aae82c3ec8b3069319c8264c5b0a3d190286 + md5: 32de1e4422c986e3b6eff59e7edc4d04 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 30267 + timestamp: 1677037618141 +- kind: conda + name: xorg-xextproto + version: 7.3.0 + build: hcd874cb_1003 + build_number: 1003 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + sha256: 04c0a08fd34fa33406c20f729e8f9cc40e8fd898072b952a5c14280fcf26f2e6 + md5: 6e6c2639620e436bddb7c040cd4f3adb + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + size: 31034 + timestamp: 1677037259999 +- kind: conda + name: xorg-xf86vidmodeproto + version: 2.3.1 + build: h7f98852_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2 + sha256: 43398aeacad5b8753b7a1c12cb6bca36124e0c842330372635879c350c430791 + md5: 3ceea9668625c18f19530de98b15d5b0 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 23875 + timestamp: 1620067286978 +- kind: conda + name: xorg-xproto + version: 7.0.31 + build: h3557bc0_1007 + build_number: 1007 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xproto-7.0.31-h3557bc0_1007.tar.bz2 + sha256: 7711ca1898e6f74a8434931fe6c0593ff7201277778aa09ea012d8be8bc7a7f5 + md5: 987e98faa0ad2c667bbea6b6aae260bc + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 74831 + timestamp: 1607291481791 +- kind: conda + name: xorg-xproto + version: 7.0.31 + build: h7f98852_1007 + build_number: 1007 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d + md5: b4a4381d54784606820704f7b5f05a15 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + size: 74922 + timestamp: 1607291557628 +- kind: conda + name: xorg-xproto + version: 7.0.31 + build: hcd874cb_1007 + build_number: 1007 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + sha256: b84cacba8479fa14199c9255fb62e005cacc619e90198c53b1653973709ec331 + md5: 88f3c65d2ad13826a9e0b162063be023 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + size: 75708 + timestamp: 1607292254607 +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + size: 418368 + timestamp: 1660346797927 +- kind: conda + name: xz + version: 5.2.6 + build: h57fd34a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec + md5: 39c6b54e94014701dd157f4f576ed211 + license: LGPL-2.1 and GPL-2.0 + size: 235693 + timestamp: 1660346961024 +- kind: conda + name: xz + version: 5.2.6 + build: h775f41a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 + md5: a72f9d4ea13d55d745ff1ed594747f10 + license: LGPL-2.1 and GPL-2.0 + size: 238119 + timestamp: 1660346964847 +- kind: conda + name: xz + version: 5.2.6 + build: h8d14728_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 + md5: 515d77642eaa3639413c6b1bc3f94219 + depends: + - vc >=14.1,<15 + - vs2015_runtime >=14.16.27033 + license: LGPL-2.1 and GPL-2.0 + size: 217804 + timestamp: 1660346976440 +- kind: conda + name: xz + version: 5.2.6 + build: h9cdd2b7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 + md5: 83baad393a31d59c20b63ba4da6592df + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + size: 440555 + timestamp: 1660348056328 +- kind: conda + name: zipp + version: 3.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.18.0-pyhd8ed1ab_0.conda + sha256: d49d4721524773f8e2360bf1eb247ee6ca71dee68d3430e2f988db283bb58691 + md5: 2e61972bc7d40a7e2394cf663ee6ff63 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 19619 + timestamp: 1717845531814 +- kind: conda + name: zlib + version: 1.3.1 + build: h2466b09_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + sha256: 76409556e6c7cb91991cd94d7fc853c9272c2872bd7e3573ff35eb33d6fca5be + md5: f8e0a35bf6df768ad87ed7bbbc36ab04 + depends: + - libzlib 1.3.1 h2466b09_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Zlib + license_family: Other + size: 108081 + timestamp: 1716874767420 +- kind: conda + name: zlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + sha256: cee16ab07a11303de721915f0a269e8c7a54a5c834aa52f74b1cc3a59000ade8 + md5: 9653f1bf3766164d0e65fa723cabbc54 + depends: + - libgcc-ng >=12 + - libzlib 1.3.1 h4ab18f5_1 + license: Zlib + license_family: Other + size: 93004 + timestamp: 1716874213487 +- kind: conda + name: zlib + version: 1.3.1 + build: h68df207_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h68df207_1.conda + sha256: 7d4f12a602447c00f65f99fcf332f350cc49161a4f215466e9eb1bbe51852978 + md5: 6031f9e32654fbdb9fdba406ab980517 + depends: + - libgcc-ng >=12 + - libzlib 1.3.1 h68df207_1 + license: Zlib + license_family: Other + size: 95770 + timestamp: 1716874148566 +- kind: conda + name: zlib + version: 1.3.1 + build: h87427d6_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + sha256: 41bd5fef28b2755d637e3a8ea5c84010628392fbcf80c7e3d7370aaced7ee4fe + md5: 3ac9ef8975965f9698dbedd2a4cc5894 + depends: + - __osx >=10.13 + - libzlib 1.3.1 h87427d6_1 + license: Zlib + license_family: Other + size: 88782 + timestamp: 1716874245467 +- kind: conda + name: zlib + version: 1.3.1 + build: hfb2fe0b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + sha256: 87360c2dc662916aac37cf01e53324b4f4f78db6f399220818076752b093ede5 + md5: f27e021db7862b6ddbc1d3578f10d883 + depends: + - __osx >=11.0 + - libzlib 1.3.1 hfb2fe0b_1 + license: Zlib + license_family: Other + size: 78260 + timestamp: 1716874280334 +- kind: conda + name: zstd + version: 1.5.6 + build: h02f22dd_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- kind: conda + name: zstd + version: 1.5.6 + build: h0ea2cb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + size: 349143 + timestamp: 1714723445995 +- kind: conda + name: zstd + version: 1.5.6 + build: h915ae27_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 + md5: 4cb2cd56f039b129bb0e491c1164167e + depends: + - __osx >=10.9 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 498900 + timestamp: 1714723303098 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- kind: conda + name: zstd + version: 1.5.6 + build: hb46c0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..589bea5 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,51 @@ +[project] +name = "pymake" +channels = ["conda-forge"] +platforms = ["win-64", "linux-64", "linux-aarch64", "osx-arm64", "osx-64"] +version = "1.2.10.dev0" + +[dependencies] +appdirs = "*" +codespell = "*" +coverage = "*" +filelock = "*" +flaky = "*" +flopy = "*" +matplotlib = "*" +meson = "1.3.0" +modflow-devtools = "*" +networkx = "*" +ninja = "*" +numpy = "*" +pip = "*" +pydotplus = "*" +pytest = "!=8.1.0" +pytest-benchmark = "*" +pytest-cov = "*" +pytest-dotenv = "*" +pytest-order = "*" +pytest-xdist = "*" +python = "3.9.*" +requests = "*" +ruff = "*" + +[tasks] +postinstall = "pip install --no-build-isolation --no-deps --disable-pip-version-check -e ." + +# format +check-lint = "ruff check ." +fix-lint = "ruff check . --fix" +check-format = "ruff format . --check" +fix-format = "ruff format ." + +# build +test = "meson test --verbose --no-rebuild -C" + +# test +download-examples = {cmd = "python ci_setup.py", cwd = "autotest"} +autotest = { cmd = "pytest -v -n auto --dist=loadfile -m='base or regression' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } +autotest-base = { cmd = "pytest -v -n auto --dist=loadfile -m='base' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } +autotest-Windows = { cmd = "pytest -v -m='base' --durations 0 --cov=pymake --cov-report=xml --basetemp=$RUNNER_TEMP/pytest_temp --keep-failed .failed", cwd = "autotest" } + +# coverage report +coverage-report = { cmd = "coverage report", cwd = "autotest"} diff --git a/pymake/__init__.py b/pymake/__init__.py index 969ad52..d9926a6 100644 --- a/pymake/__init__.py +++ b/pymake/__init__.py @@ -21,6 +21,7 @@ from .pymake_base import get_temporary_directories, main from .pymake_build_apps import build_apps from .pymake_parser import parser +from .utils._compiler_switches import linker_update_environment from .utils._meson_build import meson_build, meson_install, meson_setup from .utils.download import ( download_and_unzip, diff --git a/pymake/utils/_compiler_switches.py b/pymake/utils/_compiler_switches.py index 0b1dfa6..d19eff4 100644 --- a/pymake/utils/_compiler_switches.py +++ b/pymake/utils/_compiler_switches.py @@ -1,9 +1,10 @@ -"""Private functions for setting c/c++ and fortran compiler flags and -appropriate linker flags for defined targets. +"""Public and private functions for setting c/c++ and fortran compiler +flags and appropriate linker flags for defined targets. """ import os import sys +from subprocess import check_output from ._compiler_language_files import ( _get_c_files, @@ -17,6 +18,28 @@ ) +def linker_update_environment(cc="gcc", fc="gfortran", verbose=False): + """Add additional LDFLAGS to the environment based on OS and compilers. + + Parameters + ---------- + fc : str + fortran compiler + cc : str + c or cpp compiler + verbose : bool + boolean for verbose output to terminal + + Returns + ------- + None + """ + syslibs = _darwin_syslibs(cc, fc, verbose=verbose) + if syslibs is not None: + environ = os.environ + environ.update({"LDFLAGS": syslibs}) + + def _check_gnu_switch_available(switch, compiler="gfortran", verbose=False): """Determine if a specified GNU compiler switch exists. Not all switches will be detected, for example '-O2' adn '-fbounds-check=on'. @@ -971,6 +994,10 @@ def _set_syslibs( if default_syslibs: syslibs.append("-lc") + darwin_options = _darwin_syslibs(cc, fc, verbose) + if darwin_options is not None: + syslibs.append(darwin_options) + # add additional syslibs for select programs if target == "triangle": if osname in ("linux", "darwin"): @@ -1033,3 +1060,46 @@ def _get_os_macro(osname=None): else: os_macro = None return os_macro + + +def _darwin_syslibs(cc, fc, verbose=False): + """Get additional syslibs for Darwin systems using gcc + tool chain and command line tools greater than 14 + + Parameters + ---------- + cc : str + c compiler + fc : str + fortran compiler + verbose : bool + boolean for verbose output to terminal + + Returns + ------- + linker_str : str + additiona; linker flags for darwin systems. Default is None + """ + linker_str = None + if _get_osname() == "darwin": + if cc in ( + "gcc", + "g++", + ) or fc in ("gfortran",): + cmd = ["pkgutil", "--pkg-info=com.apple.pkg.CLTools_Executables"] + out_lines = check_output(cmd).decode("utf-8").splitlines() + version = None + tag = "version: " + for line in out_lines: + if line.startswith(tag): + version = line.replace(tag, "") + break + if version is not None: + major = int(version.split(".")[0]) + if major > 14: + linker_str = "-Wl,-ld_classic" + if verbose: + print(f"C/C++ compiler: {cc} \nFortran compiler: {fc}") + print(f"Command line tools version: {version}") + print(f"Command line tools major version number: {major}") + return linker_str diff --git a/pyproject.toml b/pyproject.toml index a83c756..db98945 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ requires-python = ">=3.8" dependencies = [ "numpy", "requests", - "networkx >= 2.6.3", + "networkx", "meson", "ninja", "pydotplus", From 5e9e1b9143bdf8355b0268dcdd865095aafd27fe Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Tue, 11 Jun 2024 19:49:52 -0400 Subject: [PATCH 22/31] update(mfusg): update gsi mfusg version (#178) * merge with failing gridgent test on MacOS with intel --- pymake/utils/usgsprograms.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pymake/utils/usgsprograms.txt b/pymake/utils/usgsprograms.txt index a1ae40a..cef494a 100644 --- a/pymake/utils/usgsprograms.txt +++ b/pymake/utils/usgsprograms.txt @@ -20,7 +20,7 @@ mflgr , 2.0.0 , True , https://water.usgs.gov/ogw/modflow-lgr/modflow- zonbud3 , 3.01 , True , https://water.usgs.gov/water-resources/software/ZONEBUDGET/zonbud3_01.exe , Zonbud.3_01 , Src , True , False , False mfnwt1.1.4 , 1.1.4 , False , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.1.4.zip , MODFLOW-NWT_1.1.4 , src , True , False , False mfnwt , 1.3.0 , True , https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip , MODFLOW-NWT , src , True , False , False -mfusg_gsi , 2.2.2 , True , https://www.gsienv.com/wp-content/uploads/2023/11/USG-Transport_Version-2.2.2.zip , USGT-v2-2-2-Source , . , True , False , False +mfusg_gsi , 2.3.0 , True , https://www.gsienv.com/wp-content/uploads/2024/03/USG-Transport_Version-2.3.0.zip , USGT-v2-3-0-Source , . , True , False , False mf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , src , True , False , False zbud6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , utils/zonebudget/src, True , False , False libmf6dev , 6.6.0.dev0 , False , https://github.com/MODFLOW-USGS/modflow6/archive/refs/heads/develop.zip , modflow6-develop , srcbmi , True , False , True \ No newline at end of file From 2032150496cd5a8db1706486e2a5aa73f10f0854 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:47:56 -0400 Subject: [PATCH 23/31] build(deps): bump dawidd6/action-download-artifact from 5 to 6 (#179) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d76f67..4a045e2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -111,7 +111,7 @@ jobs: pip install ".[test]" - name: Download artifacts - uses: dawidd6/action-download-artifact@v5 + uses: dawidd6/action-download-artifact@v6 - name: Draft release env: From b70dce7bf20763be655d02d88aa3255c962618af Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 12 Jun 2024 11:33:58 -0400 Subject: [PATCH 24/31] ci(triggers): add concurrency groups to prevent duplicate runs (#180) --- .github/workflows/main.yml | 3 +++ .github/workflows/pymake-gcc.yml | 3 +++ .github/workflows/pymake-linting-install.yml | 3 +++ .github/workflows/pymake-requests.yml | 3 +++ .github/workflows/pymake-rtd.yml | 3 +++ 5 files changed, 15 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 12a80f4..081b56b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,6 +14,9 @@ on: paths-ignore: - 'README.md' - 'docs/*.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: pymakeCI-os-intel: diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml index 206607f..d514ba7 100644 --- a/.github/workflows/pymake-gcc.yml +++ b/.github/workflows/pymake-gcc.yml @@ -14,6 +14,9 @@ on: paths-ignore: - 'README.md' - 'docs/*.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: pymakeCI-os-gcc: diff --git a/.github/workflows/pymake-linting-install.yml b/.github/workflows/pymake-linting-install.yml index feafe89..589551c 100644 --- a/.github/workflows/pymake-linting-install.yml +++ b/.github/workflows/pymake-linting-install.yml @@ -8,6 +8,9 @@ on: branches: - master - develop +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: diff --git a/.github/workflows/pymake-requests.yml b/.github/workflows/pymake-requests.yml index e1bdc1c..514d0e1 100644 --- a/.github/workflows/pymake-requests.yml +++ b/.github/workflows/pymake-requests.yml @@ -14,6 +14,9 @@ on: paths-ignore: - 'README.md' - 'docs/*.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: pymakeCI-requests: diff --git a/.github/workflows/pymake-rtd.yml b/.github/workflows/pymake-rtd.yml index 65907cc..8d8e1a9 100644 --- a/.github/workflows/pymake-rtd.yml +++ b/.github/workflows/pymake-rtd.yml @@ -8,6 +8,9 @@ on: branches: - master - develop +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: pymake_rtd: From b79af988846cca69e7b007b93f03e5c0f77e1327 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Wed, 12 Jun 2024 14:15:01 -0400 Subject: [PATCH 25/31] ci(macos): use xcode clt 14.3.1 for intel c++ compiler compatibility (#181) * gridgen build fails with newer versions of xcode --- .github/workflows/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 081b56b..8c901ed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,6 +37,11 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 + - uses: maxim-lobanov/setup-xcode@v1 + if: runner.os == 'macOS' + with: + xcode-version: "14.3.1" + - name: Setup ${{ env.FC }} ${{ env.FC_V }} uses: fortran-lang/setup-fortran@v1 with: From 6e8dd7b416f001fe4a075869a006efa1b6cf606a Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Sun, 16 Jun 2024 17:33:22 -0500 Subject: [PATCH 26/31] ci: update workflows (#183) * update request ci to use pixi --- .github/workflows/ci.yml | 192 ++++++++++++++++++++ .github/workflows/main.yml | 95 ---------- .github/workflows/pymake-gcc.yml | 93 ---------- .github/workflows/pymake-requests.yml | 32 ++-- .gitignore | 1 + autotest/test_build.py | 83 ++++----- autotest/test_cli_cmds.py | 54 +++--- autotest/test_gridgen.py | 11 +- autotest/test_mf2005.py | 11 +- autotest/test_mf6.py | 78 +------- autotest/test_mf6_existing_meson.py | 108 +++++------ autotest/test_mflgr.py | 34 ---- autotest/test_mfnwt.py | 91 ---------- autotest/test_mfusg.py | 9 +- autotest/test_misc_programs.py | 24 --- autotest/test_mp6.py | 11 +- autotest/test_mp7.py | 12 +- autotest/{test_mt3d.py => test_mt3dusgs.py} | 34 ++-- autotest/test_seawat.py | 12 +- autotest/test_triangle_makefile.py | 69 ------- pixi.toml | 10 +- 21 files changed, 406 insertions(+), 658 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/main.yml delete mode 100644 .github/workflows/pymake-gcc.yml delete mode 100644 autotest/test_mflgr.py delete mode 100644 autotest/test_mfnwt.py delete mode 100644 autotest/test_misc_programs.py rename autotest/{test_mt3d.py => test_mt3dusgs.py} (84%) delete mode 100644 autotest/test_triangle_makefile.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f9935c6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,192 @@ +name: pymake continuous integration + +on: + schedule: + - cron: '0 7 * * *' # run at 7 AM UTC every day + push: + paths-ignore: + - 'README.md' + - 'docs/*.md' + pull_request: + branches: + - master + - develop + paths-ignore: + - 'README.md' + - 'docs/*.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + + pymake-os-compiler: + name: pymake CI on different OSs with gcc and intel-classic + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # test latest gcc and python + - {os: ubuntu-latest, FC: gcc, FC_V: 13} + - {os: macos-latest, FC: gcc, FC_V: 13} + - {os: windows-latest, FC: gcc, FC_V: 13} + # test latest python and intel-classic + - {os: ubuntu-latest, FC: intel-classic, FC_V: 2021.7} + - {os: macos-13, FC: intel-classic, FC_V: 2021.7} + - {os: windows-2019, FC: intel-classic, FC_V: 2021.7} + # test latest python and previous gcc + - {os: ubuntu-latest, FC: gcc, FC_V: 12} + - {os: ubuntu-latest, FC: gcc, FC_V: 11} + defaults: + run: + shell: bash + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - uses: maxim-lobanov/setup-xcode@v1 + if: ${{ (runner.os == 'macOS') && (matrix.FC == 'intel-classic') }} + with: + xcode-version: "14.3.1" + + - name: Setup Graphviz on Linux + if: runner.os == 'Linux' + uses: ts-graphviz/setup-graphviz@v2 + + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 + with: + pixi-version: v0.19.1 + manifest-path: "pixi.toml" + + - name: pixi post-install + working-directory: pymake + run: | + pixi run postinstall + + - name: Setup ${{ matrix.FC }} ${{ matrix.FC_V }} on ${{ matrix.os }} + uses: fortran-lang/setup-fortran@main + with: + compiler: ${{ matrix.FC }} + version: ${{ matrix.FC_V }} + + - name: Download examples for pytest runs + run: | + pixi run download-examples + + - name: Install make + if: runner.os == 'Windows' + run: choco install make + + - name: test on Linux + if: runner.os == 'Linux' + run: | + pixi run autotest + + - name: test on MacOS + if: runner.os == 'macOS' + run: | + pixi run autotest-base + + - name: test on Windows + if: runner.os == 'Windows' + shell: pwsh + run: | + pixi run autotest-base + + - name: Upload failed test output + if: failure() + uses: actions/upload-artifact@v4 + with: + name: failed-${{ matrix.os }}-${{ matrix.FC }}-${{ matrix.FC_V }} + path: ./autotest/.failed + + - name: Print coverage report before upload + run: | + pixi run coverage-report + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + with: + file: ./autotest/coverage.xml + + pymake-schedule: + name: pymake scheduled CI different OSs with gcc and intel-classic + if: ${{ github.event_name == 'schedule' }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # test latest gcc and python + - {os: ubuntu-latest, FC: gcc, FC_V: 13} + - {os: macos-latest, FC: gcc, FC_V: 13} + - {os: windows-latest, FC: gcc, FC_V: 13} + # test latest python and intel + - {os: ubuntu-latest, FC: intel-classic, FC_V: 2021.7} + - {os: macos-13, FC: intel-classic, FC_V: 2021.7} + - {os: windows-2019, FC: intel-classic, FC_V: 2021.7} + defaults: + run: + shell: bash + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - uses: maxim-lobanov/setup-xcode@v1 + if: ${{ (runner.os == 'macOS') && (matrix.FC == 'intel-classic') }} + with: + xcode-version: "14.3.1" + + - name: Setup Graphviz on Linux + if: runner.os == 'Linux' + uses: ts-graphviz/setup-graphviz@v2 + + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 + with: + pixi-version: v0.19.1 + manifest-path: "pixi.toml" + + - name: pixi post-install + working-directory: pymake + run: | + pixi run postinstall + + - name: Setup ${{ matrix.FC }} ${{ matrix.FC_V }} on ${{ matrix.os }} + uses: fortran-lang/setup-fortran@main + with: + compiler: ${{ matrix.FC }} + version: ${{ matrix.FC_V }} + + - name: Install make + if: runner.os == 'Windows' + run: choco install make + + - name: Run scheduled tests + run: | + pixi run autotest-schedule + + - name: Upload failed test output + if: failure() + uses: actions/upload-artifact@v4 + with: + name: failed-schedule-${{ matrix.os }}-${{ matrix.FC }}-${{ matrix.FC_V }} + path: ./autotest/.failed + + - name: Print coverage report before upload + run: | + pixi run coverage-report + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + with: + file: ./autotest/coverage.xml + + diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 8c901ed..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,95 +0,0 @@ -name: pymake continuous integration - -on: - schedule: - - cron: '0 7 * * *' # run at 7 AM UTC every day - push: - paths-ignore: - - 'README.md' - - 'docs/*.md' - pull_request: - branches: - - master - - develop - paths-ignore: - - 'README.md' - - 'docs/*.md' -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - - pymakeCI-os-intel: - name: pymake CI intel on different OSs - runs-on: ${{ matrix.os }} - env: - FC: intel-classic - FC_V: "2021.7" - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-13, windows-2019] - defaults: - run: - shell: bash - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - uses: maxim-lobanov/setup-xcode@v1 - if: runner.os == 'macOS' - with: - xcode-version: "14.3.1" - - - name: Setup ${{ env.FC }} ${{ env.FC_V }} - uses: fortran-lang/setup-fortran@v1 - with: - compiler: ${{ env.FC }} - version: ${{ env.FC_V }} - - - name: Setup Graphviz - if: runner.os == 'Linux' - uses: ts-graphviz/setup-graphviz@v2 - - - name: Setup pixi - uses: prefix-dev/setup-pixi@v0.8.1 - with: - pixi-version: v0.19.1 - manifest-path: "pixi.toml" - - - name: pixi post-install - working-directory: pymake - run: | - pixi run postinstall - - - name: Download examples for pytest runs - run: | - pixi run download-examples - - - name: test on Linux - if: runner.os == 'Linux' - run: | - pixi run autotest - - - name: test on MacOS - if: runner.os == 'macOS' - run: | - pixi run autotest-base - - - name: test on Windows - if: runner.os == 'Windows' - shell: cmd - run: | - pixi run autotest-Windows - - - name: Print coverage report before upload - run: | - pixi run coverage-report - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - with: - file: ./autotest/coverage.xml diff --git a/.github/workflows/pymake-gcc.yml b/.github/workflows/pymake-gcc.yml deleted file mode 100644 index d514ba7..0000000 --- a/.github/workflows/pymake-gcc.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: pymake gcc build - -on: - schedule: - - cron: '0 7 * * *' # run at 7 AM UTC every day - push: - paths-ignore: - - 'README.md' - - 'docs/*.md' - pull_request: - branches: - - master - - develop - paths-ignore: - - 'README.md' - - 'docs/*.md' -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true -jobs: - - pymakeCI-os-gcc: - name: pymake CI gcc on different OSs - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - # test latest gcc and python - - {os: ubuntu-latest, gcc: 13} - - {os: windows-latest, gcc: 13} - - {os: macos-latest, gcc: 13} - # test latest python and previous gcc - - {os: ubuntu-latest, gcc: 12} - - {os: ubuntu-latest, gcc: 11} - defaults: - run: - shell: bash - - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Setup Graphviz on Linux - if: runner.os == 'Linux' - uses: ts-graphviz/setup-graphviz@v2 - - - name: Setup pixi - uses: prefix-dev/setup-pixi@v0.8.1 - with: - pixi-version: v0.19.1 - manifest-path: "pixi.toml" - - - name: pixi post-install - working-directory: pymake - run: | - pixi run postinstall - - - name: Setup GNU Fortran - uses: fortran-lang/setup-fortran@main - with: - compiler: gcc - version: ${{ matrix.gcc }} - - - name: Download examples for pytest runs - run: | - pixi run download-examples - - - name: Install make - if: runner.os == 'Windows' - run: choco install make - - - name: Run pytest on Linux and MacOS - if: runner.os != 'Windows' - run: | - pixi run autotest-base - - - name: test on Windows - if: runner.os == 'Windows' - shell: pwsh - run: | - pixi run autotest-Windows - - - name: Print coverage report before upload - run: | - pixi run coverage-report - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - with: - file: ./autotest/coverage.xml diff --git a/.github/workflows/pymake-requests.yml b/.github/workflows/pymake-requests.yml index 514d0e1..472efb9 100644 --- a/.github/workflows/pymake-requests.yml +++ b/.github/workflows/pymake-requests.yml @@ -30,32 +30,32 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0.8.1 with: - python-version: "3.12" + pixi-version: v0.19.1 + manifest-path: "pixi.toml" - - name: Install python packages + - name: pixi post-install + working-directory: pymake run: | - python -m pip install --upgrade pip - pip install ".[test]" + pixi run postinstall - name: Run pytest - working-directory: ./autotest run: | - pytest -v -n=auto -m requests --durations=0 --cov=pymake --cov-report=xml + pixi run autotest-request - - name: Run scheduled tests - if: ${{ github.event_name == 'schedule' }} - working-directory: ./autotest - run: | - pytest -v -m="schedule" --durations=0 --cov=pymake --cov-report=xml + - name: Upload failed test output + if: failure() + uses: actions/upload-artifact@v4 + with: + name: failed-requests + path: ./autotest/.failed - name: Print coverage report before upload - working-directory: ./autotest run: | - coverage report - + pixi run coverage-report + - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 env: diff --git a/.gitignore b/.gitignore index f700a60..66ff0ef 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ target/ # files in the autotest directory autotest/temp*/ +autotest/.failed/ autotest/*.json autotest/code.md mod_temp/ diff --git a/autotest/test_build.py b/autotest/test_build.py index 1e02c2e..11a4e45 100644 --- a/autotest/test_build.py +++ b/autotest/test_build.py @@ -5,18 +5,13 @@ import pytest from flaky import flaky -from modflow_devtools.misc import get_ostag, set_dir, set_env +from modflow_devtools.misc import get_ostag, set_dir import pymake -RERUNS = 3 +RERUNS = 1 targets = pymake.usgs_program_data.get_keys(current=True) -targets_make = [ - t - for t in targets - if t not in ("libmf6", "gridgen", "mf2000", "swtv4", "mflgr") -] test_ostag = get_ostag() test_fc_env = os.environ.get("FC") if "win" in test_ostag: @@ -27,36 +22,31 @@ meson_exclude = ("sutra",) targets_meson = [t for t in targets if t not in meson_exclude] +make_exclude = ("libmf6", "gridgen", "mf2000", "swtv4", "mflgr") +targets_make = [t for t in targets if t not in make_exclude] -def build_with_makefile(target, path, fc): + +def build_with_makefile(target): success = True - with set_dir(path): - if os.path.isfile("makefile"): - # wait to delete on windows - if sys.platform.lower() == "win32": - time.sleep(6) - - # clean prior to make - print(f"clean {target} with makefile") - os.system("make clean") - - # build MODFLOW-NWT with makefile - print(f"build {target} with makefile") - return_code = os.system("make") - - # test if running on Windows with ifort, if True the makefile - # should fail - errmsg = f"{target} created by makefile does not exist." - if sys.platform.lower() == "win32" and fc == "ifort": - if return_code != 0: - success = True - else: - success = False - # verify that MODFLOW-NWT was made - else: - success = os.path.isfile(target) + if os.path.isfile("makefile"): + # wait to delete on windows + if sys.platform.lower() == "win32": + time.sleep(6) + + # clean prior to make + print(f"clean {target} with makefile") + os.system("make clean") + + print(f"build {target} with makefile") + return_code = os.system("make") + + success = os.path.isfile(target) + if success: + errmsg = "" else: - errmsg = "makefile does not exist" + errmsg = f"{target} created by makefile does not exist." + else: + errmsg = "makefile does not exist" return success, errmsg @@ -85,11 +75,10 @@ def test_build(function_tmpdir, target: str) -> None: @flaky(max_runs=RERUNS) @pytest.mark.parametrize("target", targets_meson) def test_meson_build(function_tmpdir, target: str) -> None: - kwargs = {} - cc = os.environ.get("CC", "gcc") fc = os.environ.get("FC", "gfortran") + cc = os.environ.get("CC", "gcc") pymake.linker_update_environment(cc=cc, fc=fc) - with set_dir(function_tmpdir), set_env(**kwargs): + with set_dir(function_tmpdir): assert ( pymake.build_apps( target, @@ -106,18 +95,18 @@ def test_meson_build(function_tmpdir, target: str) -> None: @pytest.mark.skipif(sys.platform == "win32", reason="do not run on Windows") @pytest.mark.parametrize("target", targets_make) def test_makefile_build(function_tmpdir, target: str) -> None: - pm = pymake.Pymake(verbose=True) - pm.target = target - pm.makefile = True - pm.makefiledir = "." - pm.inplace = True - pm.dryrun = True - pm.makeclean = False - with set_dir(function_tmpdir): + pm = pymake.Pymake(verbose=True) + pm.target = target + pm.makefile = True + pm.makefiledir = "." + pm.inplace = True + pm.dryrun = True + pm.makeclean = False + pm.download_target(target) assert pm.download, f"could not download {target} distribution" assert pm.build() == 0, f"could not compile {target}" - success, errmsg = build_with_makefile(target, function_tmpdir, pm.fc) - assert success, errmsg + success, errmsg = build_with_makefile(target) + assert success, errmsg diff --git a/autotest/test_cli_cmds.py b/autotest/test_cli_cmds.py index f31e0a3..4e63589 100644 --- a/autotest/test_cli_cmds.py +++ b/autotest/test_cli_cmds.py @@ -46,43 +46,45 @@ def run_cli_cmd(cmd: list) -> None: @pytest.mark.base @pytest.mark.parametrize("target", targets) def test_make_program(function_tmpdir, target: str) -> None: - cmd = [ - "make-program", - target, - "--appdir", - str(function_tmpdir), - "--verbose", - ] - run_cli_cmd(cmd) + with set_dir(function_tmpdir): + cmd = [ + "make-program", + target, + "--appdir", + str(function_tmpdir), + "--verbose", + ] + run_cli_cmd(cmd) @flaky(max_runs=RERUNS) @pytest.mark.dependency(name="make_program") @pytest.mark.base def test_make_program_double(function_tmpdir) -> None: - cmd = [ - "make-program", - "mf2005", - "--double", - "--verbose", - "--appdir", - str(function_tmpdir), - ] - run_cli_cmd(cmd) + with set_dir(function_tmpdir): + cmd = [ + "make-program", + "mf2005", + "--double", + "--verbose", + "--appdir", + str(function_tmpdir), + ] + run_cli_cmd(cmd) @pytest.mark.dependency(name="make_program_all") @pytest.mark.schedule def test_make_program_all(module_tmpdir) -> None: - cmd = [ - "make-program", - ":", - "--appdir", - str(module_tmpdir / "all"), - "--verbose", - "--dryrun", - ] - run_cli_cmd(cmd) + with set_dir(module_tmpdir): + cmd = [ + "make-program", + ":", + "--appdir", + str(module_tmpdir / "all"), + "--verbose", + ] + run_cli_cmd(cmd) @flaky(max_runs=RERUNS) diff --git a/autotest/test_gridgen.py b/autotest/test_gridgen.py index 1c69312..00a0aec 100644 --- a/autotest/test_gridgen.py +++ b/autotest/test_gridgen.py @@ -7,10 +7,12 @@ import pymake +TARGET_NAME = "gridgen" + @pytest.fixture(scope="module") def target(module_tmpdir) -> pl.Path: - name = "gridgen" + name = TARGET_NAME ext = ".exe" if system() == "Windows" else "" return module_tmpdir / f"{name}{ext}" @@ -59,19 +61,22 @@ def run_gridgen(cmd, ws, exe): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target} distribution" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize( "cmd", diff --git a/autotest/test_mf2005.py b/autotest/test_mf2005.py index dbf361e..fc7bb6b 100644 --- a/autotest/test_mf2005.py +++ b/autotest/test_mf2005.py @@ -6,10 +6,12 @@ import pymake +TARGET_NAME = "mf2005" + @pytest.fixture(scope="module") def target(module_tmpdir) -> Path: - target = "mf2005" + target = TARGET_NAME if sys.platform.lower() == "win32": target += ".exe" return module_tmpdir / target @@ -43,19 +45,22 @@ def run_mf2005(namefile, ws, exe): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target}" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize( "namefile", diff --git a/autotest/test_mf6.py b/autotest/test_mf6.py index b9470f6..2f2e961 100644 --- a/autotest/test_mf6.py +++ b/autotest/test_mf6.py @@ -10,6 +10,8 @@ import pymake +TARGET_NAME = "mf6" + # set fpth based on current path if os.path.basename(os.path.normpath(os.getcwd())) == "autotest": fpth = Path("temp") @@ -26,7 +28,7 @@ @pytest.fixture(scope="module") def target(module_tmpdir) -> Path: - name = "mf6" + name = TARGET_NAME ext = ".exe" if system() == "Windows" else "" return module_tmpdir / f"{name}{ext}" @@ -68,89 +70,25 @@ def pm(module_tmpdir, target) -> pymake.Pymake: pm.finalize() -def build_with_makefile(pm, workspace, exe): - exe_path = Path(exe) - success = False - with set_dir(workspace): - if os.path.isfile("makefile"): - # wait to delete on windows - if sys.platform.lower() == "win32": - time.sleep(6) - - # clean prior to make - print(f"clean {exe} with makefile") - os.system("make clean") - - # build MODFLOW 6 with makefile - print(f"build {exe} with makefile") - return_code = os.system("make") - - # test if running on Windows with ifort, if True the makefile - # should fail - if sys.platform.lower() == "win32" and pm.fc == "ifort": - if return_code != 0: - success = True - else: - success = False - # verify that target was made - else: - success = exe_path.is_file() - - return success - - @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target} distribution" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize("ws", sim_dirs) def test_mf6(ws, target): success, _ = flopy.run_model(target, None, model_ws=ws, silent=False) assert success, f"could not run {ws}" - - -@pytest.mark.dependency(name="makefile", depends=["build"]) -@pytest.mark.base -def test_makefile(pm, module_tmpdir, target): - assert build_with_makefile( - pm, module_tmpdir, target - ), f"could not compile {target} with makefile" - - -@pytest.mark.dependency(name="shared", depends=["makefile"]) -@pytest.mark.base -def test_sharedobject(pm, module_tmpdir, workspace, target_so, prog_data): - # reconfigure pymake object - pm.target = str(target_so) - pm.appdir = module_tmpdir - pm.srcdir = workspace / prog_data.srcdir - pm.srcdir2 = workspace / "src" - pm.excludefiles = [os.path.join(pm.srcdir2, "mf6.f90")] - pm.makefile = True - pm.makeclean = True - pm.sharedobject = True - pm.inplace = True - pm.dryrun = False - - # build the target - assert pm.build() == 0, f"could not compile {pm.target}" - assert target_so.is_file() - - -@pytest.mark.dependency(name="shared_makefile", depends=["shared", "makefile"]) -@pytest.mark.base -def test_sharedobject_makefile(pm, module_tmpdir, target_so): - assert build_with_makefile( - pm, module_tmpdir, target_so - ), f"could not compile {target_so} with makefile" diff --git a/autotest/test_mf6_existing_meson.py b/autotest/test_mf6_existing_meson.py index 26cd762..4413c80 100644 --- a/autotest/test_mf6_existing_meson.py +++ b/autotest/test_mf6_existing_meson.py @@ -5,15 +5,18 @@ from typing import List import pytest +from modflow_devtools.misc import set_dir from modflow_devtools.ostags import get_binary_suffixes import pymake from pymake import linker_update_environment +TARGET_NAME = "mf6" + @pytest.fixture(scope="module") def targets() -> List[Path]: - target = "mf6" + target = TARGET_NAME ext, shared_ext = get_binary_suffixes() executables = [target, "zbud6", "mf5to6", "libmf6"] for idx, _ in enumerate(executables[:3]): @@ -47,54 +50,57 @@ def pm(workspace, targets) -> pymake.Pymake: @pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) def test_build_with_existing_meson(pm, module_tmpdir, workspace, targets): - # set default compilers - fc, cc = "gfortran", "gcc" - - # get the arguments - for idx, arg in enumerate(sys.argv): - if arg == "-fc": - fc = sys.argv[idx + 1] - elif "-fc=" in arg: - fc = arg.split("=")[1] - if arg == "-cc": - cc = sys.argv[idx + 1] - elif "-cc=" in arg: - cc = arg.split("=")[1] - - # check if fc differs from environmental variable - fc_env = os.environ.get("FC") - if fc_env is not None: - if fc != fc_env: - fc = fc_env - - # check if cc differs from environmental variable - cc_env = os.environ.get("CC") - if cc_env is not None: - if cc != cc_env: - cc = cc_env - - # print fortran and c/c++ compilers - print(f"fortran compiler={fc}\n" + f"c/c++ compiler={cc}\n") - - # download modflow 6 - pm.download_target(targets[0], download_path=module_tmpdir) - assert pm.download, f"could not download {targets[0]} distribution" - - linker_update_environment(cc=cc, fc=fc) - - # make modflow 6 with existing meson.build file - returncode = pymake.meson_build( - workspace, - fc, - cc, - appdir=pm.appdir, - ) - assert ( - returncode == 0 - ), "could not build modflow 6 applications using existing meson.build file" - - # check that all of the executables exist - for executable in targets: - exe_pth = os.path.join(pm.appdir, executable) - assert os.path.isfile(exe_pth), f"{exe_pth} does not exist" + with set_dir(module_tmpdir): + # set default compilers + fc, cc = "gfortran", "gcc" + + # get the arguments + for idx, arg in enumerate(sys.argv): + if arg == "-fc": + fc = sys.argv[idx + 1] + elif "-fc=" in arg: + fc = arg.split("=")[1] + if arg == "-cc": + cc = sys.argv[idx + 1] + elif "-cc=" in arg: + cc = arg.split("=")[1] + + # check if fc differs from environmental variable + fc_env = os.environ.get("FC") + if fc_env is not None: + if fc != fc_env: + fc = fc_env + + # check if cc differs from environmental variable + cc_env = os.environ.get("CC") + if cc_env is not None: + if cc != cc_env: + cc = cc_env + + # print fortran and c/c++ compilers + print(f"fortran compiler={fc}\n" + f"c/c++ compiler={cc}\n") + + # download modflow 6 + pm.download_target(targets[0], download_path=module_tmpdir) + assert pm.download, f"could not download {targets[0]} distribution" + + linker_update_environment(cc=cc, fc=fc) + + # make modflow 6 with existing meson.build file + returncode = pymake.meson_build( + workspace, + fc, + cc, + appdir=pm.appdir, + ) + assert returncode == 0, ( + "could not build modflow 6 applications " + + "using existing meson.build file" + ) + + # check that all of the executables exist + for executable in targets: + exe_pth = os.path.join(pm.appdir, executable) + assert os.path.isfile(exe_pth), f"{exe_pth} does not exist" diff --git a/autotest/test_mflgr.py b/autotest/test_mflgr.py deleted file mode 100644 index 1de8c96..0000000 --- a/autotest/test_mflgr.py +++ /dev/null @@ -1,34 +0,0 @@ -from pathlib import Path - -import pytest - -import pymake - - -@pytest.fixture(scope="module") -def target(module_tmpdir) -> Path: - target = "mflgr" - return module_tmpdir / target - - -@pytest.fixture(scope="module") -def prog_dict(target) -> dict: - return pymake.usgs_program_data.get_target(target) - - -@pytest.fixture(scope="module") -def workspace(module_tmpdir, prog_dict) -> Path: - return module_tmpdir / prog_dict.dirname - - -def compile_code(ws, exe): - return pymake.build_apps( - str(exe), download_dir=ws, appdir=ws, verbose=True - ) - - -@pytest.mark.base -def test_compile(module_tmpdir, target): - assert ( - compile_code(module_tmpdir, target) == 0 - ), f"could not compile {target}" diff --git a/autotest/test_mfnwt.py b/autotest/test_mfnwt.py deleted file mode 100644 index f7cb801..0000000 --- a/autotest/test_mfnwt.py +++ /dev/null @@ -1,91 +0,0 @@ -import os -import sys -import time -from pathlib import Path - -import pytest -from modflow_devtools.misc import set_dir - -import pymake - - -@pytest.fixture(scope="module") -def target(module_tmpdir) -> str: - target = "mfnwt" - return module_tmpdir / target - - -@pytest.fixture(scope="module") -def prog_data(target) -> dict: - return pymake.usgs_program_data.get_target(target.name) - - -@pytest.fixture(scope="module") -def workspace(module_tmpdir, prog_data) -> Path: - return module_tmpdir / prog_data.dirname - - -@pytest.fixture(scope="module") -def pm(module_tmpdir, target) -> pymake.Pymake: - pm = pymake.Pymake(verbose=True) - pm.target = str(target) - pm.appdir = str(module_tmpdir) - pm.makefile = True - pm.makefiledir = str(module_tmpdir) - pm.inplace = True - pm.dryrun = False - pm.verbose = True - yield pm - pm.finalize() - - -def build_with_makefile(ws): - success = True - with set_dir(ws): - if os.path.isfile("makefile"): - # wait to delete on windows - if sys.platform.lower() == "win32": - time.sleep(6) - - # clean prior to make - print(f"clean {target} with makefile") - os.system("make clean") - - # build MODFLOW-NWT with makefile - print(f"build {target} with makefile") - return_code = os.system("make") - - # test if running on Windows with ifort, if True the makefile - # should fail - errmsg = f"{target} created by makefile does not exist." - if sys.platform.lower() == "win32" and pm.fc == "ifort": - if return_code != 0: - success = True - else: - success = False - # verify that MODFLOW-NWT was made - else: - success = os.path.isfile(target) - else: - errmsg = "makefile does not exist" - - assert success, errmsg - - -@pytest.mark.dependency(name="download") -@pytest.mark.base -def test_download(pm, module_tmpdir, target): - pm.download_target(target, download_path=module_tmpdir) - assert pm.download, f"could not download {target} distribution" - - -@pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base -def test_compile(pm, target): - assert pm.build() == 0, f"could not compile {target}" - - -@pytest.mark.dependency(name="makefile", depends=["build"]) -@pytest.mark.base -def test_makefile(workspace): - build_with_makefile(workspace) diff --git a/autotest/test_mfusg.py b/autotest/test_mfusg.py index 0f13c3e..22fc17c 100644 --- a/autotest/test_mfusg.py +++ b/autotest/test_mfusg.py @@ -68,7 +68,8 @@ def run_mfusg(fn, exe): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group("mfusg") +@pytest.mark.regression def test_download(pm, pm_gsi, module_tmpdir, targets): pm.download_target(targets[0], download_path=module_tmpdir) assert pm.download, f"could not download {targets[0]}" @@ -78,7 +79,8 @@ def test_download(pm, pm_gsi, module_tmpdir, targets): @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group("mfusg") +@pytest.mark.regression def test_compile(pm, pm_gsi, targets): assert pm.build() == 0, f"could not compile {targets[0]}" assert (targets[0]).is_file() @@ -87,7 +89,8 @@ def test_compile(pm, pm_gsi, targets): assert targets[1].is_file() -@pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.dependency(name="test", depends=["download", "build"]) +@pytest.mark.xdist_group("mfusg") @pytest.mark.regression @pytest.mark.parametrize( "namefile", diff --git a/autotest/test_misc_programs.py b/autotest/test_misc_programs.py deleted file mode 100644 index 93d4e30..0000000 --- a/autotest/test_misc_programs.py +++ /dev/null @@ -1,24 +0,0 @@ -import pytest - -import pymake - -targets = [ - "crt", - "vs2dt", - "zonbud3", -] - - -@pytest.mark.base -@pytest.mark.parametrize("target", targets) -def test_compile(module_tmpdir, target): - bin_dir = module_tmpdir / "bin" - assert ( - pymake.build_apps( - str(bin_dir / target), - download_dir=str(module_tmpdir), - appdir=str(bin_dir), - verbose=True, - ) - == 0 - ), f"could not compile {target}" diff --git a/autotest/test_mp6.py b/autotest/test_mp6.py index 51c1452..abea072 100644 --- a/autotest/test_mp6.py +++ b/autotest/test_mp6.py @@ -8,10 +8,12 @@ import pymake +TARGET_NAME = "mp6" + @pytest.fixture(scope="module") def target(module_tmpdir) -> Path: - name = "mp6" + name = TARGET_NAME ext = ".exe" if system() == "Windows" else "" return module_tmpdir / f"{name}{ext}" @@ -60,19 +62,22 @@ def update_files(fn, workspace): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target} distribution" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize( "namefile", [f"EXAMPLE-{n}.mpsim" for n in range(1, 10)] diff --git a/autotest/test_mp7.py b/autotest/test_mp7.py index 24b1c66..80b6fa2 100644 --- a/autotest/test_mp7.py +++ b/autotest/test_mp7.py @@ -10,10 +10,12 @@ ext = ".exe" if system() == "Windows" else "" +TARGET_NAME = "mp7" + @pytest.fixture(scope="module") def target(module_tmpdir): - name = "mp7" + name = TARGET_NAME return module_tmpdir / f"{name}{ext}" @@ -143,19 +145,22 @@ def run_modpath7(namefile, mp7_exe, mf2005_exe, mfusg_exe, mf6_exe): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target} distribution" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="download_exes") +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression def test_download_exes(module_tmpdir): pymake.getmfexes( @@ -166,6 +171,7 @@ def test_download_exes(module_tmpdir): @pytest.mark.dependency( name="test", depends=["download", "download_exes", "build"] ) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize( "namefile", diff --git a/autotest/test_mt3d.py b/autotest/test_mt3dusgs.py similarity index 84% rename from autotest/test_mt3d.py rename to autotest/test_mt3dusgs.py index f9c2ea0..eb589ba 100644 --- a/autotest/test_mt3d.py +++ b/autotest/test_mt3dusgs.py @@ -1,16 +1,21 @@ import os import sys from pathlib import Path +from platform import system import flopy import pytest import pymake +TARGET_NAME = "mt3dusgs" +EXT = ".exe" if system() == "Windows" else "" + @pytest.fixture(scope="module") def target(module_tmpdir) -> Path: - return module_tmpdir / "mt3dusgs" + name = TARGET_NAME + return module_tmpdir / f"{TARGET_NAME}{EXT}" @pytest.fixture(scope="module") @@ -87,22 +92,9 @@ def run_mt3dusgs(workspace, mt3dms_exe, mfnwt_exe, mf6_exe): return success -@pytest.mark.dependency(name="download_mt3dms") -@pytest.mark.base -def test_download_mt3dms(pm, module_tmpdir): - pm.target = "mt3dms" - pm.download_target(pm.target, download_path=module_tmpdir) - assert pm.download, f"could not download {pm.target} distribution" - - -@pytest.mark.dependency(name="build_mt3dms", depends=["download_mt3dms"]) -@pytest.mark.base -def test_compile_mt3dms(pm): - assert pm.build() == 0, f"could not compile {pm.target}" - - @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.reset(str(target)) pm.download_target(target, download_path=module_tmpdir) @@ -110,19 +102,23 @@ def test_download(pm, module_tmpdir, target): @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.regression -@pytest.mark.skipif(sys.platform == "darwin", reason="do not run on OSX") +# @pytest.mark.skipif(sys.platform == "darwin", reason="do not run on OSX") +@pytest.mark.skipif(sys.platform == "win32", reason="do not run on Windows") +@pytest.mark.xdist_group(TARGET_NAME) def test_download_exes(module_tmpdir): pymake.getmfexes(module_tmpdir, exes=("mfnwt", "mf6"), verbose=True) @pytest.mark.regression -@pytest.mark.skipif(sys.platform == "darwin", reason="do not run on OSX") +@pytest.mark.xdist_group(TARGET_NAME) +# @pytest.mark.skipif(sys.platform == "darwin", reason="do not run on OSX") @pytest.mark.skipif(sys.platform == "win32", reason="do not run on Windows") @pytest.mark.parametrize( "ws", diff --git a/autotest/test_seawat.py b/autotest/test_seawat.py index 1dfbd43..d20183f 100644 --- a/autotest/test_seawat.py +++ b/autotest/test_seawat.py @@ -9,10 +9,12 @@ import pymake +TARGET_NAME = "swtv4" + @pytest.fixture(scope="module") def target(module_tmpdir) -> Path: - name = "swtv4" + name = TARGET_NAME ext = ".exe" if system() == "Windows" else "" return module_tmpdir / f"{name}{ext}" @@ -76,19 +78,22 @@ def build_seawat_dependency_graphs(src_path, dep_path): @pytest.mark.dependency(name="download") -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_download(pm, module_tmpdir, target): pm.download_target(target, download_path=module_tmpdir) assert pm.download, f"could not download {target}" @pytest.mark.dependency(name="build", depends=["download"]) -@pytest.mark.base +@pytest.mark.xdist_group(TARGET_NAME) +@pytest.mark.regression def test_compile(pm, target): assert pm.build() == 0, f"could not compile {target}" @pytest.mark.dependency(name="test", depends=["build"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression @pytest.mark.parametrize( "namefile", @@ -122,6 +127,7 @@ def test_seawat(namefile, workspace, target): @pytest.mark.dependency(name="graph", depends=["test"]) +@pytest.mark.xdist_group(TARGET_NAME) @pytest.mark.regression def test_dependency_graphs(workspace, prog_data): src_path = workspace / prog_data.srcdir diff --git a/autotest/test_triangle_makefile.py b/autotest/test_triangle_makefile.py deleted file mode 100644 index 45579d8..0000000 --- a/autotest/test_triangle_makefile.py +++ /dev/null @@ -1,69 +0,0 @@ -import os -import sys - -import flopy -import pytest - -import pymake - - -@pytest.mark.base -def test_pymake_makefile(module_tmpdir): - target = "triangle" - pm = pymake.Pymake(verbose=True) - pm.makefile = True - pm.makeclean = True - # pm.cc = "gcc" - - if sys.platform.lower() == "win32": - if pm.cc == "icl": - return - target += ".exe" - - # get current directory - cwd = os.getcwd() - - # change to working directory so triangle download directory is - # a subdirectory in the working directory - os.chdir(module_tmpdir) - - # build triangle and makefile - assert ( - pymake.build_apps(target, clean=False, pymake_object=pm) == 0 - ), f"could not build {target}" - - if os.path.isfile(os.path.join(module_tmpdir, "makefile")): - print("cleaning with GNU make") - # clean prior to make - print(f"clean {target} with makefile") - success, _ = flopy.run_model( - "make", - None, - cargs="clean", - model_ws=module_tmpdir, - report=True, - normal_msg="rm -rf ./triangle", - silent=False, - ) - - # build triangle with makefile - if success: - print(f"build {target} with makefile") - success, _ = flopy.run_model( - "make", - None, - model_ws=module_tmpdir, - report=True, - normal_msg="cc -O2 -o triangle ./obj_temp/triangle.o", - silent=False, - ) - - # finalize Pymake object - pm.finalize() - - # return to starting directory - os.chdir(cwd) - - assert os.path.isfile( - os.path.join(module_tmpdir, target) - ), f"could not build {target} with makefile" diff --git a/pixi.toml b/pixi.toml index 589bea5..bc9afd6 100644 --- a/pixi.toml +++ b/pixi.toml @@ -34,18 +34,18 @@ postinstall = "pip install --no-build-isolation --no-deps --disable-pip-version- # format check-lint = "ruff check ." -fix-lint = "ruff check . --fix" check-format = "ruff format . --check" -fix-format = "ruff format ." +fix-style = "ruff check . --fix; ruff format ." # build test = "meson test --verbose --no-rebuild -C" # test download-examples = {cmd = "python ci_setup.py", cwd = "autotest"} -autotest = { cmd = "pytest -v -n auto --dist=loadfile -m='base or regression' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } -autotest-base = { cmd = "pytest -v -n auto --dist=loadfile -m='base' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } -autotest-Windows = { cmd = "pytest -v -m='base' --durations 0 --cov=pymake --cov-report=xml --basetemp=$RUNNER_TEMP/pytest_temp --keep-failed .failed", cwd = "autotest" } +autotest = { cmd = "pytest -v -n auto --dist=loadgroup -m='base or regression' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } +autotest-base = { cmd = "pytest -v -n auto --dist=loadgroup -m='base' --durations 0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } +autotest-request = { cmd = "pytest -v -n=auto -m='requests' --durations=0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } +autotest-schedule = { cmd = "pytest -v -m='schedule' --durations=0 --cov=pymake --cov-report=xml --keep-failed .failed", cwd = "autotest" } # coverage report coverage-report = { cmd = "coverage report", cwd = "autotest"} From 76d3003737b6ba219876429936f1ddf2506e492d Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Sun, 16 Jun 2024 19:09:26 -0500 Subject: [PATCH 27/31] Version 1.2.10 (#185) --- README.md | 2 +- pixi.toml | 3 + pymake/config.py | 7 +- scripts/update_version.py | 149 ++++++++++++++++++++++++++++++++++++++ version.txt | 1 + 5 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 scripts/update_version.py create mode 100644 version.txt diff --git a/README.md b/README.md index 47b236f..14dda82 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Python package for building MODFLOW-based programs from source files. -### Version 1.2.10.dev0 +### Version 1.2.10 [![PyPI Version](https://img.shields.io/pypi/v/mfpymake.png)](https://pypi.python.org/pypi/mfpymake) [![Anaconda Version](https://anaconda.org/conda-forge/mfpymake/badges/version.svg)](https://anaconda.org/conda-forge/mfpymake) diff --git a/pixi.toml b/pixi.toml index bc9afd6..1e27565 100644 --- a/pixi.toml +++ b/pixi.toml @@ -49,3 +49,6 @@ autotest-schedule = { cmd = "pytest -v -m='schedule' --durations=0 --cov=pymake # coverage report coverage-report = { cmd = "coverage report", cwd = "autotest"} + +# release +update-version = { cmd = "python scripts/update_version.py -v"} diff --git a/pymake/config.py b/pymake/config.py index e54f09b..d85dc48 100644 --- a/pymake/config.py +++ b/pymake/config.py @@ -1,6 +1,9 @@ +# mfpymake version file automatically created using +# update_version.py on June 16, 2024 18:36:44 + __author__ = "Joseph D. Hughes" -__date__ = "February 12, 2024" -__version__ = "1.2.10.dev0" +__date__ = "June 16, 2024" +__version__ = "1.2.10" __maintainer__ = "Joseph D. Hughes" __email__ = "jdhughes@usgs.gov" __status__ = "Production" diff --git a/scripts/update_version.py b/scripts/update_version.py new file mode 100644 index 0000000..59bdc8d --- /dev/null +++ b/scripts/update_version.py @@ -0,0 +1,149 @@ +import argparse +import re +import textwrap +from datetime import datetime +from pathlib import Path + +from filelock import FileLock +from packaging.version import Version + +_project_name = "mfpymake" +_project_root_path = Path(__file__).parent.parent +_version_txt_path = _project_root_path / "version.txt" +_version_py_path = _project_root_path / "pymake" / "config.py" + +# file names and the path to the file relative to the repo root directory +file_paths_list = [ + _project_root_path / "README.md", + _project_root_path / "version.txt", + _project_root_path / "pymake" / "config.py", +] +file_paths = {pth.name: pth for pth in file_paths_list} # keys for each file + +def split_nonnumeric(s): + match = re.compile("[^0-9]").search(s) + return [s[: match.start()], s[match.start() :]] if match else s + + +_initial_version = Version("0.0.1") +_current_version = Version(_version_txt_path.read_text().strip()) + + +def update_version_txt(version: Version): + with open(_version_txt_path, "w") as f: + f.write(str(version)) + print(f"Updated {_version_txt_path} to version {version}") + + +def update_version_py(timestamp: datetime, version: Version): + lines = file_paths["config.py"].read_text().rstrip().split("\n") + + with open(_version_py_path, "w") as f: + f.write( + f"# {_project_name} version file automatically created using\n" + f"# {Path(__file__).name} on {timestamp:%B %d, %Y %H:%M:%S}\n\n" + ) + for line in lines: + if "__date__" in line: + line = f'__date__ = "{timestamp:%B %d, %Y}"' + elif "__version__" in line: + line = f'__version__ = "{version}"' + f.write(f"{line}\n") + print(f"Updated {_version_py_path} to version {version}") + + + +def update_readme_markdown( + timestamp: datetime, version: Version, approved: bool = False +): + fpth = file_paths["README.md"] + + # read README.md into memory + lines = fpth.read_text().rstrip().split("\n") + + # rewrite README.md + terminate = False + with open(fpth, "w") as f: + for line in lines: + if "### Version " in line: + line = f"### Version {version}" + f.write(f"{line}\n") + if terminate: + break + + print(f"Updated {fpth} to version {version}") + +def update_version( + timestamp: datetime = datetime.now(), + version: Version = None, + approved: bool = False, +): + lock_path = Path(_version_txt_path.name + ".lock") + try: + lock = FileLock(lock_path) + previous = Version(_version_txt_path.read_text().strip()) + version = ( + version + if version + else Version(previous.major, previous.minor, previous.micro) + ) + + with lock: + update_version_txt(version) + update_version_py(timestamp, version) + update_readme_markdown(timestamp, version, approved) + finally: + try: + lock_path.unlink() + except: + pass + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + prog=f"Update {_project_name} version", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=textwrap.dedent( + """\ + Update version information stored in version.txt in the project root, + as well as several other files in the repository. If --version is not + provided, the version number will not be changed. A file lock is held + to synchronize file access. The version tag must comply with standard + '..' format conventions for semantic versioning. + """ + ), + ) + parser.add_argument( + "-v", + "--version", + required=False, + help="Specify the release version", + ) + parser.add_argument( + "-a", + "--approve", + required=False, + action="store_true", + help="Approve the release (defaults false)", + ) + parser.add_argument( + "-g", + "--get", + required=False, + action="store_true", + help="Just get the current version number, no updates (defaults false)", + ) + args = parser.parse_args() + + if args.get: + print( + Version((_project_root_path / "version.txt").read_text().strip()) + ) + else: + update_version( + timestamp=datetime.now(), + version=( + Version(args.version) if args.version else _current_version + ), + approved=args.approve, + ) diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..732aa7d --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +1.2.10 \ No newline at end of file From d10fecfd9314e7d8c133bc812b47e2a04804a0eb Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Sun, 16 Jun 2024 19:20:49 -0500 Subject: [PATCH 28/31] Update release.yml --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4a045e2..0884e47 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,7 @@ jobs: pip install --upgrade pip pip install build twine pip install . + pip install ".[lint, test]" - name: Make code.md run: make-code-json From 006b6ba9cbab5073686e19ff2dc00dafbf923ada Mon Sep 17 00:00:00 2001 From: jdhughes-usgs Date: Mon, 17 Jun 2024 10:49:21 -0500 Subject: [PATCH 29/31] ci: update code.json for release workflow (#187) --- .github/workflows/ci.yml | 4 +- README.md | 2 +- code.json | 233 ++++++++++++++++++++++++++++++++++++++ pixi.toml | 1 + pymake/config.py | 7 +- pyproject.toml | 1 + scripts/update_version.py | 108 +++++++++++++----- version.txt | 2 +- 8 files changed, 318 insertions(+), 40 deletions(-) create mode 100644 code.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9935c6..49a8001 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ concurrency: jobs: pymake-os-compiler: - name: pymake CI on different OSs with gcc and intel-classic + name: pymake compilers runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -114,7 +114,7 @@ jobs: file: ./autotest/coverage.xml pymake-schedule: - name: pymake scheduled CI different OSs with gcc and intel-classic + name: pymake scheduled if: ${{ github.event_name == 'schedule' }} runs-on: ${{ matrix.os }} strategy: diff --git a/README.md b/README.md index 14dda82..47b236f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Python package for building MODFLOW-based programs from source files. -### Version 1.2.10 +### Version 1.2.10.dev0 [![PyPI Version](https://img.shields.io/pypi/v/mfpymake.png)](https://pypi.python.org/pypi/mfpymake) [![Anaconda Version](https://anaconda.org/conda-forge/mfpymake/badges/version.svg)](https://anaconda.org/conda-forge/mfpymake) diff --git a/code.json b/code.json new file mode 100644 index 0000000..a49cc53 --- /dev/null +++ b/code.json @@ -0,0 +1,233 @@ +{ + "crt": { + "current": true, + "dirname": "CRT_1.3.1", + "double_switch": false, + "shared_object": false, + "srcdir": "SOURCE", + "standard_switch": true, + "url": "https://water.usgs.gov/ogw/CRT/CRT_1.3.1.zip", + "url_download_asset_date": "04/11/2017", + "version": "1.3.1" + }, + "gridgen": { + "current": true, + "dirname": "gridgen.1.0.02", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/GRIDGEN/gridgen.1.0.02.zip", + "url_download_asset_date": "10/24/2018", + "version": "1.0.02" + }, + "libmf6": { + "current": true, + "dirname": "mf6.5.0_linux", + "double_switch": false, + "shared_object": true, + "srcdir": "srcbmi", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", + "url_download_asset_date": "05/23/2024", + "version": "6.5.0" + }, + "mf2000": { + "current": true, + "dirname": "mf2k.1_19", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/nrp/gwsoftware/modflow2000/mf2k1_19_01.tar.gz", + "url_download_asset_date": "03/30/2010", + "version": "1.19.01" + }, + "mf2005": { + "current": true, + "dirname": "MF2005.1_12u", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip", + "url_download_asset_date": "12/07/2021", + "version": "1.12.00" + }, + "mf6": { + "current": true, + "dirname": "mf6.5.0_linux", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", + "url_download_asset_date": "05/23/2024", + "version": "6.5.0" + }, + "mflgr": { + "current": true, + "dirname": "mflgr.2_0", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip", + "url_download_asset_date": "09/20/2013", + "version": "2.0.0" + }, + "mfnwt": { + "current": true, + "dirname": "MODFLOW-NWT", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip", + "url_download_asset_date": "09/07/2022", + "version": "1.3.0" + }, + "mfusg": { + "current": true, + "dirname": "mfusg1_5", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip", + "url_download_asset_date": "02/27/2019", + "version": "1.5" + }, + "mfusg_gsi": { + "current": true, + "dirname": "USGT-v2-3-0-Source", + "double_switch": false, + "shared_object": false, + "srcdir": ".", + "standard_switch": true, + "url": "https://www.gsienv.com/wp-content/uploads/2024/03/USG-Transport_Version-2.3.0.zip", + "url_download_asset_date": null, + "version": "2.3.0" + }, + "mp6": { + "current": true, + "dirname": "modpath.6_0", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MODPATH/modpath.6_0_01.zip", + "url_download_asset_date": "10/23/2018", + "version": "6.0.1" + }, + "mp7": { + "current": true, + "dirname": "modpath_7_2_001", + "double_switch": false, + "shared_object": false, + "srcdir": "source", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MODPATH/modpath_7_2_001.zip", + "url_download_asset_date": "10/23/2018", + "version": "7.2.001" + }, + "mt3dms": { + "current": true, + "dirname": "mt3dms-2.0", + "double_switch": false, + "shared_object": false, + "srcdir": "true-binary", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/mt3dms/releases/download/2.0/mt3dms-2.0.zip", + "url_download_asset_date": "07/05/2023", + "version": "5.3.0" + }, + "mt3dusgs": { + "current": true, + "dirname": "mt3dusgs1.1.0", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MT3D-USGS/mt3dusgs1.1.0.zip", + "url_download_asset_date": "07/12/2019", + "version": "1.1.0" + }, + "sutra": { + "current": true, + "dirname": "SutraSuite", + "double_switch": false, + "shared_object": false, + "srcdir": "SUTRA_3_0/source", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/sutra/SUTRA_3_0_0.zip", + "url_download_asset_date": "08/20/2019", + "version": "3.0" + }, + "swtv4": { + "current": true, + "dirname": "swt_v4_00_05", + "double_switch": true, + "shared_object": false, + "srcdir": "source", + "standard_switch": false, + "url": "https://water.usgs.gov/water-resources/software/SEAWAT/swt_v4_00_05.zip", + "url_download_asset_date": "10/24/2018", + "version": "4.00.05" + }, + "triangle": { + "current": true, + "dirname": "triangle-1.0", + "double_switch": false, + "shared_object": false, + "srcdir": "src", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/triangle/releases/download/1.0/triangle-1.0.zip", + "url_download_asset_date": "07/05/2023", + "version": "1.6" + }, + "vs2dt": { + "current": true, + "dirname": "vs2dt3_3", + "double_switch": false, + "shared_object": false, + "srcdir": "include", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/VS2DI/vs2dt3_3.zip", + "url_download_asset_date": "04/02/2018", + "version": "3.3" + }, + "zbud6": { + "current": true, + "dirname": "mf6.5.0_linux", + "double_switch": false, + "shared_object": false, + "srcdir": "utils/zonebudget/src", + "standard_switch": true, + "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", + "url_download_asset_date": "05/23/2024", + "version": "6.5.0" + }, + "zonbud3": { + "current": true, + "dirname": "Zonbud.3_01", + "double_switch": false, + "shared_object": false, + "srcdir": "Src", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/ZONEBUDGET/zonbud3_01.exe", + "url_download_asset_date": "10/25/2018", + "version": "3.01" + }, + "zonbudusg": { + "current": true, + "dirname": "mfusg1_5", + "double_switch": false, + "shared_object": false, + "srcdir": "src/zonebudusg", + "standard_switch": true, + "url": "https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip", + "url_download_asset_date": "02/27/2019", + "version": "1.5" + } +} diff --git a/pixi.toml b/pixi.toml index 1e27565..9b13c7a 100644 --- a/pixi.toml +++ b/pixi.toml @@ -52,3 +52,4 @@ coverage-report = { cmd = "coverage report", cwd = "autotest"} # release update-version = { cmd = "python scripts/update_version.py -v"} +create-codejson = { cmd = "make-code-json" } \ No newline at end of file diff --git a/pymake/config.py b/pymake/config.py index d85dc48..49edbe6 100644 --- a/pymake/config.py +++ b/pymake/config.py @@ -1,9 +1,6 @@ -# mfpymake version file automatically created using -# update_version.py on June 16, 2024 18:36:44 - __author__ = "Joseph D. Hughes" -__date__ = "June 16, 2024" -__version__ = "1.2.10" +__date__ = "June 17, 2024" +__version__ = "1.2.10.dev0" __maintainer__ = "Joseph D. Hughes" __email__ = "jdhughes@usgs.gov" __status__ = "Production" diff --git a/pyproject.toml b/pyproject.toml index db98945..b80a73d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,6 +98,7 @@ include = [ "pymake/**/*.py", "autotest/**/*.py", "docs/**/*.py", + "scripts/**/*.py", ] [tool.ruff.lint] diff --git a/scripts/update_version.py b/scripts/update_version.py index 59bdc8d..b797417 100644 --- a/scripts/update_version.py +++ b/scripts/update_version.py @@ -1,4 +1,5 @@ import argparse +import json import re import textwrap from datetime import datetime @@ -14,12 +15,14 @@ # file names and the path to the file relative to the repo root directory file_paths_list = [ + _project_root_path / "code.json", _project_root_path / "README.md", _project_root_path / "version.txt", _project_root_path / "pymake" / "config.py", ] file_paths = {pth.name: pth for pth in file_paths_list} # keys for each file + def split_nonnumeric(s): match = re.compile("[^0-9]").search(s) return [s[: match.start()], s[match.start() :]] if match else s @@ -29,20 +32,32 @@ def split_nonnumeric(s): _current_version = Version(_version_txt_path.read_text().strip()) -def update_version_txt(version: Version): - with open(_version_txt_path, "w") as f: +def update_version_txt(version: Version) -> None: + """Update version number in version.txt + + Parameters + ---------- + version : Version + version number + """ + with open(_version_txt_path, "w", encoding="utf8") as f: f.write(str(version)) print(f"Updated {_version_txt_path} to version {version}") -def update_version_py(timestamp: datetime, version: Version): +def update_version_py(timestamp: datetime, version: Version) -> None: + """Update version number in config.py + + Parameters + ---------- + timestamp : datetime + current datetime + version : Version + version number + """ lines = file_paths["config.py"].read_text().rstrip().split("\n") - - with open(_version_py_path, "w") as f: - f.write( - f"# {_project_name} version file automatically created using\n" - f"# {Path(__file__).name} on {timestamp:%B %d, %Y %H:%M:%S}\n\n" - ) + + with open(_version_py_path, "w", encoding="utf8") as f: for line in lines: if "__date__" in line: line = f'__date__ = "{timestamp:%B %d, %Y}"' @@ -52,18 +67,22 @@ def update_version_py(timestamp: datetime, version: Version): print(f"Updated {_version_py_path} to version {version}") +def update_readme_markdown(version: Version) -> None: + """Update README.md -def update_readme_markdown( - timestamp: datetime, version: Version, approved: bool = False -): + Parameters + ---------- + version : Version + version number + """ fpth = file_paths["README.md"] - + # read README.md into memory lines = fpth.read_text().rstrip().split("\n") # rewrite README.md terminate = False - with open(fpth, "w") as f: + with open(fpth, "w", encoding="utf8") as f: for line in lines: if "### Version " in line: line = f"### Version {version}" @@ -73,11 +92,43 @@ def update_readme_markdown( print(f"Updated {fpth} to version {version}") + +def update_codejson(version: Version) -> None: + """Update code.json + + Parameters + ---------- + version : Version + version number + """ + # define json filename + json_fname = file_paths["code.json"] + + # load and modify json file + data = json.loads(json_fname.read_text()) + + # rewrite the json file + with open(json_fname, "w", encoding="utf8") as f: + json.dump(data, f, indent=4) + f.write("\n") + + print(f"Updated {json_fname} to version {version}") + + def update_version( timestamp: datetime = datetime.now(), version: Version = None, - approved: bool = False, -): +) -> None: + """Main function for updating all of the files containing + version information + + Parameters + ---------- + timestamp : datetime, optional + datetime object, by default datetime.now() + version : Version, optional + version number, by default None + """ lock_path = Path(_version_txt_path.name + ".lock") try: lock = FileLock(lock_path) @@ -91,7 +142,8 @@ def update_version( with lock: update_version_txt(version) update_version_py(timestamp, version) - update_readme_markdown(timestamp, version, approved) + update_readme_markdown(version) + update_codejson(version) finally: try: lock_path.unlink() @@ -105,11 +157,12 @@ def update_version( formatter_class=argparse.RawDescriptionHelpFormatter, epilog=textwrap.dedent( """\ - Update version information stored in version.txt in the project root, - as well as several other files in the repository. If --version is not - provided, the version number will not be changed. A file lock is held - to synchronize file access. The version tag must comply with standard - '..' format conventions for semantic versioning. + Update version information stored in version.txt in the project + root, as well as several other files in the repository. If + --version is not provided, the version number will not be + changed. A file lock is held to synchronize file access. The + version tag must comply with standard '..' + format conventions for semantic versioning. """ ), ) @@ -119,19 +172,13 @@ def update_version( required=False, help="Specify the release version", ) - parser.add_argument( - "-a", - "--approve", - required=False, - action="store_true", - help="Approve the release (defaults false)", - ) parser.add_argument( "-g", "--get", required=False, action="store_true", - help="Just get the current version number, no updates (defaults false)", + help="Just get the current version number, " + + "no updates (defaults false)", ) args = parser.parse_args() @@ -145,5 +192,4 @@ def update_version( version=( Version(args.version) if args.version else _current_version ), - approved=args.approve, ) diff --git a/version.txt b/version.txt index 732aa7d..5924f6d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.2.10 \ No newline at end of file +1.2.10.dev0 \ No newline at end of file From 9aaef2544925d868b51959aae15cbf2da3fce295 Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Mon, 17 Jun 2024 17:19:20 -0400 Subject: [PATCH 30/31] ci: remove code.json, update scripts, fix release workflow (#190) Fixes for the release automation * don't version `code.json`, just generate when needed (and update `update_version.py`) * add retries for metadata file gen in `release.yml` (USGS endpoints are unreliable) * fix autocommit/pr contents: `version.txt`, `pymake/config.py`, and `README.md` --- .github/workflows/release.yml | 16 ++- code.json | 233 ---------------------------------- scripts/update_version.py | 48 ++----- 3 files changed, 21 insertions(+), 276 deletions(-) delete mode 100644 code.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0884e47..9e71263 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,8 +39,12 @@ jobs: pip install . pip install ".[lint, test]" - - name: Make code.md - run: make-code-json + - name: Make metadata files + uses: nick-fields/retry@v3 + with: + timeout_seconds: 10 + max_attempts: 3 + command: make-code-json - name: Upload code.md uses: actions/upload-artifact@v3 @@ -68,12 +72,16 @@ jobs: GITHUB_TOKEN: ${{ github.token }} run: | ver="${{ steps.version.outputs.version }}" + + # remove metadata files + rm code.json + rm code.md # commit and push changes git config core.sharedRepository true git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add pymake + git add -A git commit -m "ci(release): set version to ${{ steps.version.outputs.version }}" git push origin "${{ github.ref_name }}" @@ -118,7 +126,7 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} run: | - version=$(python scripts/update_version.py -g) + version=$(cat version.txt) title="pymake $version" notes=$(cat code.md) gh release create "$version" \ diff --git a/code.json b/code.json deleted file mode 100644 index a49cc53..0000000 --- a/code.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "crt": { - "current": true, - "dirname": "CRT_1.3.1", - "double_switch": false, - "shared_object": false, - "srcdir": "SOURCE", - "standard_switch": true, - "url": "https://water.usgs.gov/ogw/CRT/CRT_1.3.1.zip", - "url_download_asset_date": "04/11/2017", - "version": "1.3.1" - }, - "gridgen": { - "current": true, - "dirname": "gridgen.1.0.02", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/GRIDGEN/gridgen.1.0.02.zip", - "url_download_asset_date": "10/24/2018", - "version": "1.0.02" - }, - "libmf6": { - "current": true, - "dirname": "mf6.5.0_linux", - "double_switch": false, - "shared_object": true, - "srcdir": "srcbmi", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", - "url_download_asset_date": "05/23/2024", - "version": "6.5.0" - }, - "mf2000": { - "current": true, - "dirname": "mf2k.1_19", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/nrp/gwsoftware/modflow2000/mf2k1_19_01.tar.gz", - "url_download_asset_date": "03/30/2010", - "version": "1.19.01" - }, - "mf2005": { - "current": true, - "dirname": "MF2005.1_12u", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/mf2005/releases/download/v.1.12.00/MF2005.1_12u.zip", - "url_download_asset_date": "12/07/2021", - "version": "1.12.00" - }, - "mf6": { - "current": true, - "dirname": "mf6.5.0_linux", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", - "url_download_asset_date": "05/23/2024", - "version": "6.5.0" - }, - "mflgr": { - "current": true, - "dirname": "mflgr.2_0", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/ogw/modflow-lgr/modflow-lgr-v2.0.0/mflgrv2_0_00.zip", - "url_download_asset_date": "09/20/2013", - "version": "2.0.0" - }, - "mfnwt": { - "current": true, - "dirname": "MODFLOW-NWT", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MODFLOW-NWT/MODFLOW-NWT_1.3.0.zip", - "url_download_asset_date": "09/07/2022", - "version": "1.3.0" - }, - "mfusg": { - "current": true, - "dirname": "mfusg1_5", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip", - "url_download_asset_date": "02/27/2019", - "version": "1.5" - }, - "mfusg_gsi": { - "current": true, - "dirname": "USGT-v2-3-0-Source", - "double_switch": false, - "shared_object": false, - "srcdir": ".", - "standard_switch": true, - "url": "https://www.gsienv.com/wp-content/uploads/2024/03/USG-Transport_Version-2.3.0.zip", - "url_download_asset_date": null, - "version": "2.3.0" - }, - "mp6": { - "current": true, - "dirname": "modpath.6_0", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MODPATH/modpath.6_0_01.zip", - "url_download_asset_date": "10/23/2018", - "version": "6.0.1" - }, - "mp7": { - "current": true, - "dirname": "modpath_7_2_001", - "double_switch": false, - "shared_object": false, - "srcdir": "source", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MODPATH/modpath_7_2_001.zip", - "url_download_asset_date": "10/23/2018", - "version": "7.2.001" - }, - "mt3dms": { - "current": true, - "dirname": "mt3dms-2.0", - "double_switch": false, - "shared_object": false, - "srcdir": "true-binary", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/mt3dms/releases/download/2.0/mt3dms-2.0.zip", - "url_download_asset_date": "07/05/2023", - "version": "5.3.0" - }, - "mt3dusgs": { - "current": true, - "dirname": "mt3dusgs1.1.0", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MT3D-USGS/mt3dusgs1.1.0.zip", - "url_download_asset_date": "07/12/2019", - "version": "1.1.0" - }, - "sutra": { - "current": true, - "dirname": "SutraSuite", - "double_switch": false, - "shared_object": false, - "srcdir": "SUTRA_3_0/source", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/sutra/SUTRA_3_0_0.zip", - "url_download_asset_date": "08/20/2019", - "version": "3.0" - }, - "swtv4": { - "current": true, - "dirname": "swt_v4_00_05", - "double_switch": true, - "shared_object": false, - "srcdir": "source", - "standard_switch": false, - "url": "https://water.usgs.gov/water-resources/software/SEAWAT/swt_v4_00_05.zip", - "url_download_asset_date": "10/24/2018", - "version": "4.00.05" - }, - "triangle": { - "current": true, - "dirname": "triangle-1.0", - "double_switch": false, - "shared_object": false, - "srcdir": "src", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/triangle/releases/download/1.0/triangle-1.0.zip", - "url_download_asset_date": "07/05/2023", - "version": "1.6" - }, - "vs2dt": { - "current": true, - "dirname": "vs2dt3_3", - "double_switch": false, - "shared_object": false, - "srcdir": "include", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/VS2DI/vs2dt3_3.zip", - "url_download_asset_date": "04/02/2018", - "version": "3.3" - }, - "zbud6": { - "current": true, - "dirname": "mf6.5.0_linux", - "double_switch": false, - "shared_object": false, - "srcdir": "utils/zonebudget/src", - "standard_switch": true, - "url": "https://github.com/MODFLOW-USGS/modflow6/releases/download/6.5.0/mf6.5.0_linux.zip", - "url_download_asset_date": "05/23/2024", - "version": "6.5.0" - }, - "zonbud3": { - "current": true, - "dirname": "Zonbud.3_01", - "double_switch": false, - "shared_object": false, - "srcdir": "Src", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/ZONEBUDGET/zonbud3_01.exe", - "url_download_asset_date": "10/25/2018", - "version": "3.01" - }, - "zonbudusg": { - "current": true, - "dirname": "mfusg1_5", - "double_switch": false, - "shared_object": false, - "srcdir": "src/zonebudusg", - "standard_switch": true, - "url": "https://water.usgs.gov/water-resources/software/MODFLOW-USG/mfusg1_5.zip", - "url_download_asset_date": "02/27/2019", - "version": "1.5" - } -} diff --git a/scripts/update_version.py b/scripts/update_version.py index b797417..0d051fa 100644 --- a/scripts/update_version.py +++ b/scripts/update_version.py @@ -1,5 +1,4 @@ import argparse -import json import re import textwrap from datetime import datetime @@ -8,6 +7,13 @@ from filelock import FileLock from packaging.version import Version +_epilog = """\ +Update version information stored in version.txt in the project root +and other files in the repository. If --version is not provided, the +version number will not be changed. The version tag must comply with +'..' format convention for semantic versioning. +To show the version without changing anything, use --get (short -g). +""" _project_name = "mfpymake" _project_root_path = Path(__file__).parent.parent _version_txt_path = _project_root_path / "version.txt" @@ -15,7 +21,6 @@ # file names and the path to the file relative to the repo root directory file_paths_list = [ - _project_root_path / "code.json", _project_root_path / "README.md", _project_root_path / "version.txt", _project_root_path / "pymake" / "config.py", @@ -28,7 +33,6 @@ def split_nonnumeric(s): return [s[: match.start()], s[match.start() :]] if match else s -_initial_version = Version("0.0.1") _current_version = Version(_version_txt_path.read_text().strip()) @@ -93,28 +97,6 @@ def update_readme_markdown(version: Version) -> None: print(f"Updated {fpth} to version {version}") -def update_codejson(version: Version) -> None: - """Update code.json - - Parameters - ---------- - version : Version - version number - """ - # define json filename - json_fname = file_paths["code.json"] - - # load and modify json file - data = json.loads(json_fname.read_text()) - - # rewrite the json file - with open(json_fname, "w", encoding="utf8") as f: - json.dump(data, f, indent=4) - f.write("\n") - - print(f"Updated {json_fname} to version {version}") - - def update_version( timestamp: datetime = datetime.now(), version: Version = None, @@ -143,7 +125,6 @@ def update_version( update_version_txt(version) update_version_py(timestamp, version) update_readme_markdown(version) - update_codejson(version) finally: try: lock_path.unlink() @@ -155,16 +136,7 @@ def update_version( parser = argparse.ArgumentParser( prog=f"Update {_project_name} version", formatter_class=argparse.RawDescriptionHelpFormatter, - epilog=textwrap.dedent( - """\ - Update version information stored in version.txt in the project - root, as well as several other files in the repository. If - --version is not provided, the version number will not be - changed. A file lock is held to synchronize file access. The - version tag must comply with standard '..' - format conventions for semantic versioning. - """ - ), + epilog=textwrap.dedent(_epilog), ) parser.add_argument( "-v", @@ -183,9 +155,7 @@ def update_version( args = parser.parse_args() if args.get: - print( - Version((_project_root_path / "version.txt").read_text().strip()) - ) + print(_current_version) else: update_version( timestamp=datetime.now(), From 9604c6f9f0ef414ae3c2a9ca9f287b1ebf8ca173 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 21:29:30 +0000 Subject: [PATCH 31/31] ci(release): set version to 1.2.10 --- README.md | 2 +- pymake/config.py | 2 +- version.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 47b236f..14dda82 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Python package for building MODFLOW-based programs from source files. -### Version 1.2.10.dev0 +### Version 1.2.10 [![PyPI Version](https://img.shields.io/pypi/v/mfpymake.png)](https://pypi.python.org/pypi/mfpymake) [![Anaconda Version](https://anaconda.org/conda-forge/mfpymake/badges/version.svg)](https://anaconda.org/conda-forge/mfpymake) diff --git a/pymake/config.py b/pymake/config.py index 49edbe6..c272e11 100644 --- a/pymake/config.py +++ b/pymake/config.py @@ -1,6 +1,6 @@ __author__ = "Joseph D. Hughes" __date__ = "June 17, 2024" -__version__ = "1.2.10.dev0" +__version__ = "1.2.10" __maintainer__ = "Joseph D. Hughes" __email__ = "jdhughes@usgs.gov" __status__ = "Production" diff --git a/version.txt b/version.txt index 5924f6d..732aa7d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.2.10.dev0 \ No newline at end of file +1.2.10 \ No newline at end of file