From 5b4038e7e2e843af0b1878d2bd1c34bc59c68b8f Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Thu, 22 Aug 2024 14:38:15 -0700 Subject: [PATCH 01/24] ENH: add requested packages and nitpick conda vs pypi and keep updated --- envs/pcds/conda-packages.txt | 20 ++++++++------------ envs/pcds/keep-updated.txt | 12 +++++++++--- envs/pcds/pip-packages.txt | 12 +++++------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 670ed09..3d76f8f 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -8,7 +8,6 @@ atlassian-python-api>=3.41.14 black>=24.8.0 blark>=0.8.1 bluesky-live>=0.0.8 -bluesky-queueserver>=0.0.18 bluesky-widgets>=0.0.14 bokeh>=1.0.1 botorch>=0.4.0 @@ -17,6 +16,7 @@ coloredlogs>=15.0.1 conda-pack>=0.8.0 conda-smithy>=3.38.0 cookiecutter>=2.1.1 +coverage>=7.6.1 cython>=0.29.34 datashader>=0.14.4 elog>=1.2.3 @@ -26,8 +26,8 @@ flask>=3.0.3 fzf>=0.54.3 gdb>=15.1 gh>=2.54.0 +ghapi>=1.0.5 gpytorch>=1.4.2 -grpcio-tools>=1.51.1 h5py>=3.3.0 happi>=2.5.0 hklpy>=1.1.1 @@ -90,8 +90,11 @@ scikit-image>=0.19.3 scikit-learn>=1.2.2 scipy>=1.10.1 seaborn>=0.12.2 +shapely shellcheck>=0.10.0 simplejson>=3.19.1 +sphinx>=7 +sphinx_rtd_theme>=2.0.0 spyder-kernels>=2.4.3 suitcase-csv>=0.3.0 suitcase-json-metadata>=0.2.1 @@ -114,19 +117,12 @@ pyqt=5.15.9 pyqtwebengine=5.15.9 # conda+pip regressive pins # avoids bluesky v1.11.0 which breaks nabs -bluesky=1.10.0 -# coverage 7.4.2 does not have a py39 build on conda -coverage=7.4.1 -# avoids pre-releases of v2 -databroker<2.0.0 +bluesky-base=1.10.0 # ipython changes make scientists upset and can break experiments ipython=8.4.0 +# most of the ecosystem is not ready for numpy 2.0 +numpy=1.26.4 # avoids ophyd v1.8.0 which I have not had time to test ophyd=1.7.0 -# force a newer perl build (temporary pin, can remove later if you read this line) -perl=5.32.1=7_hd590300_perl5 # pin for gui interface stability qtpy=2.1.0 -# sphinx 7.0.0 incompatible with rtd theme at 1.2.0, temporarily pin both -sphinx<7 -sphinx_rtd_theme=1.2.0 diff --git a/envs/pcds/keep-updated.txt b/envs/pcds/keep-updated.txt index b9730c4..f1fa79e 100644 --- a/envs/pcds/keep-updated.txt +++ b/envs/pcds/keep-updated.txt @@ -37,7 +37,11 @@ whatrecord # Collaboration packages # - Packages developed by e.g. NSLS-II, APS # - Frequently relevant features/fixes +bloptools # bluesky (need to fix nabs and test v1.11.0) +# bluesky-live +# blueksy-queueserver +# bluesky-widgets caproto hklpy # ophyd (need to test v1.8.0) @@ -53,12 +57,14 @@ atlassian-python-api black conda-pack conda-smithy -# coverage (v7.4.2 missing conda build, skip for now) +coverage flake8 flask fzf gdb gh +ghapi +grpcio-tools isort line_profiler memray @@ -72,9 +78,9 @@ pytest-repeat pytest-xdist pyupgrade shellcheck -# sphinx and friends updates temporarily disabled due to incompatibilities at v7.0.0 +# sphinx temporarily disabled due to incompatibilities at v8.0.0 # sphinx -# sphinx_rtd_theme +sphinx_rtd_theme # Security openssl diff --git a/envs/pcds/pip-packages.txt b/envs/pcds/pip-packages.txt index c33aa9c..71d4230 100644 --- a/envs/pcds/pip-packages.txt +++ b/envs/pcds/pip-packages.txt @@ -1,4 +1,7 @@ # pypi as new as possible +bluesky-queueserver>=0.0.18 +bloptools>=0.7.0 +grpcio-tools>=1.51.1 laserbeamsize p4p pip-audit @@ -7,18 +10,13 @@ python-vxi11 slac-alarm-manager>=1.3.0 tc-release>=0.2.6 # conda+pip regressive pins -# coverage 7.4.2 does not have a py39 build on conda -coverage==7.4.1 # avoids bluesky v1.11.0 which breaks nabs bluesky==1.10.0 -# avoids pre-releases of v2 -databroker<2.0.0 # ipython changes make scientists upset and can break experiments ipython==8.4.0 +# most of the ecosystem is not ready for numpy 2.0 +numpy==1.26.4 # avoids ophyd v1.8.0 which I have not had time to test ophyd==1.7.0 # pin for gui interface stability qtpy==2.1.0 -# sphinx 7.0.0 incompatible with rtd theme at 1.2.0, temporarily pin both -sphinx<7 -sphinx_rtd_theme==1.2.0 From a6554450b61f9c26473306475c749c98ed54f491 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Thu, 22 Aug 2024 14:41:02 -0700 Subject: [PATCH 02/24] BLD: update pins --- envs/pcds/conda-packages.txt | 10 +++++----- envs/pcds/pip-packages.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 3d76f8f..2ea70fb 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -25,7 +25,7 @@ flake8>=7.1.1 flask>=3.0.3 fzf>=0.54.3 gdb>=15.1 -gh>=2.54.0 +gh>=2.55.0 ghapi>=1.0.5 gpytorch>=1.4.2 h5py>=3.3.0 @@ -39,11 +39,11 @@ jupyter>=1.0.0 krtc>=0.3.0 lightpath>=1.0.4 line_profiler>=4.1.1 -lucid>=0.10.3 +lucid>=0.11.0 lxml>=4.8.0 memray>=1.13.4 mysqlclient>=2.0.3 -nabs>=1.5.4 +nabs>=1.5.5 numpy>=1.14,<2.0.0 opencv>=4.5.1 openssl>=3.3.1 @@ -52,7 +52,7 @@ panel>=0.14.4 papermill>=2.3.4 paramiko>=3.1.0 pcaspy>=0.7.3 -pcdscalc>=0.5.1 +pcdscalc>=0.6.0 pcdsdaq>=2.4.3 pcdsdevices>=8.4.0 pcdsutils>=0.14.1 @@ -64,7 +64,7 @@ pmpsdb_client>=1.2.0 pre-commit>=3.8.0 psdaq-control-minimal>=3.3.38 psdm_qs_cli>=0.3.7 -pswalker>=1.0.8 +pswalker>=1.0.10 pyaudio>=0.2.13 pyca>=3.2.1 pycln>=2.4.0 diff --git a/envs/pcds/pip-packages.txt b/envs/pcds/pip-packages.txt index 71d4230..826d4c4 100644 --- a/envs/pcds/pip-packages.txt +++ b/envs/pcds/pip-packages.txt @@ -1,7 +1,7 @@ # pypi as new as possible bluesky-queueserver>=0.0.18 bloptools>=0.7.0 -grpcio-tools>=1.51.1 +grpcio-tools>=1.62.2 laserbeamsize p4p pip-audit From e29d6594b5cf522264d42a0aea6778e5ed6e245d Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Thu, 22 Aug 2024 14:49:37 -0700 Subject: [PATCH 03/24] SEC: clear and update security pins to likely the minimum needed --- envs/pcds/security-packages.txt | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/envs/pcds/security-packages.txt b/envs/pcds/security-packages.txt index 86eb09a..8e42bd6 100644 --- a/envs/pcds/security-packages.txt +++ b/envs/pcds/security-packages.txt @@ -1,19 +1,4 @@ # Extra dependencies that must be updated to handle a CVE # Apply this even in the incr environment # This file can be periodically cleared after an env release -aiohttp>=3.9.2 -dnspython>=2.6.1 -cryptography>=42.0.0 -fastapi>=0.109.1 -gitpython>=3.1.41 -idna>=3.7 -jinja2>=3.1.3 -jupyter-lsp>=2.2.2 -jupyterlab>=4.0.11 -notebook>=7.0.7 -orjson>=3.9.15 -pillow>=10.3.0 -pymongo>=4.6.3 -pyopenssl>=24 -python-multipart>=0.0.7 -starlette>=0.36.2 +aiohttp>=3.10.2 From cb917ae1cbcf218b5eaa17d3356e796c6e6a4004 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Thu, 22 Aug 2024 17:45:53 -0700 Subject: [PATCH 04/24] FIX: switch get_extras to standard parsing for better robustness --- scripts/get_extras.py | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/scripts/get_extras.py b/scripts/get_extras.py index c564350..c41062f 100644 --- a/scripts/get_extras.py +++ b/scripts/get_extras.py @@ -20,6 +20,8 @@ from importlib.metadata import PackageNotFoundError, distribution from pathlib import Path +from packaging.requirements import Requirement + logger = logging.getLogger(__name__) @@ -49,13 +51,8 @@ def from_importlib_metadata(cls, spec: str) -> PackageSpec: """ Parse an importlib metadata spec. - These specs look something like: - "sphinx (<7.0.0) ; extra = 'doc'" - But if the package is not pinned or it is not an extra it may just be: - "sphinx" - And sometimes there can be further specifiers like: - "mkdocstrings[python]" - which all need to be handled appropriately. + This is now handled by the packaging module. + In the future I might refactor to remove PackageSpec. Parameters ---------- @@ -63,25 +60,21 @@ def from_importlib_metadata(cls, spec: str) -> PackageSpec: A spec string from importlib.metadata.Distribution.requires, which should always be a list of such strings. """ - name_with_extra = spec.split(" ")[0] - if "[" in name_with_extra: - name, spec_extra = name_with_extra.split("[") - spec_extra = spec_extra.strip("]") - else: - name = name_with_extra + req = Requirement(spec) + try: + spec_extra = req.extras.pop() + except KeyError: spec_extra = None - if "(" in spec: - pin = spec.split("(")[1].split(")")[0] - else: - pin = None - if "; extra" in spec: - source_extra = spec.split("; extra == ")[1].strip("'") - else: + if req.marker is None: source_extra = None + name_with_extra = req.name + else: + source_extra = str(req.marker).split(" ")[-1].strip('"').strip("'") + name_with_extra = f"{req.name}[{source_extra}]" return cls( - name=name, + name=req.name, name_with_extra=name_with_extra, - pin=pin, + pin=str(req.specifier), spec_extra=spec_extra, source_extra=source_extra, ) From 4ed4bda5cb62ee04ea5585b21219ac848af5aca5 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Thu, 22 Aug 2024 17:48:51 -0700 Subject: [PATCH 05/24] ENH: add py-trees! --- envs/pcds/pip-packages.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/envs/pcds/pip-packages.txt b/envs/pcds/pip-packages.txt index 826d4c4..f23a043 100644 --- a/envs/pcds/pip-packages.txt +++ b/envs/pcds/pip-packages.txt @@ -5,6 +5,7 @@ grpcio-tools>=1.62.2 laserbeamsize p4p pip-audit +py-trees>=2.2.3 PyQt5-stubs>=5.15.6 python-vxi11 slac-alarm-manager>=1.3.0 From f7da2504b4ad7921df63a6606cb9d836d8174384 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 14:52:18 -0700 Subject: [PATCH 06/24] BLD: update pins --- envs/pcds/conda-packages.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 2ea70fb..e2df73b 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -14,7 +14,7 @@ botorch>=0.4.0 caproto>=1.1.1 coloredlogs>=15.0.1 conda-pack>=0.8.0 -conda-smithy>=3.38.0 +conda-smithy>=3.39.0 cookiecutter>=2.1.1 coverage>=7.6.1 cython>=0.29.34 @@ -32,7 +32,7 @@ h5py>=3.3.0 happi>=2.5.0 hklpy>=1.1.1 holoviews>=1.10.9 -hutch-python>=1.20.0 +hutch-python>=1.21.0 hxrsnd>=0.3.1 isort>=5.13.2 jupyter>=1.0.0 @@ -53,7 +53,7 @@ papermill>=2.3.4 paramiko>=3.1.0 pcaspy>=0.7.3 pcdscalc>=0.6.0 -pcdsdaq>=2.4.3 +pcdsdaq>=2.4.4 pcdsdevices>=8.4.0 pcdsutils>=0.14.1 pcdswidgets>=0.8.3 @@ -62,8 +62,8 @@ pipdeptree>=2.23.1 pmgr>=2.1.3 pmpsdb_client>=1.2.0 pre-commit>=3.8.0 -psdaq-control-minimal>=3.3.38 -psdm_qs_cli>=0.3.7 +psdaq-control-minimal>=4.1.2 +psdm_qs_cli>=0.3.8 pswalker>=1.0.10 pyaudio>=0.2.13 pyca>=3.2.1 @@ -105,8 +105,8 @@ suitcase-specfile>=0.2.5 suitcase-tiff>=0.4.0 timechart>=1.5.3 toml>=0.10.2 -transfocate>=0.5.8 -typhos>=3.1.1 +transfocate>=0.5.9 +typhos>=4.0.0 whatrecord>=0.6.0 xarray>=2023.3.0 xraylib>=4.1.3 From 277a238196d74f11ae93c7f11f86bd9714540d33 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 15:02:49 -0700 Subject: [PATCH 07/24] BLD: pin matplotlib back until dependencies all use matplotlib-base --- envs/pcds/conda-packages.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index e2df73b..0b714ea 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -120,6 +120,8 @@ pyqtwebengine=5.15.9 bluesky-base=1.10.0 # ipython changes make scientists upset and can break experiments ipython=8.4.0 +# temporary pin while some of our packages require matplotlib directly +matplotlib<3.9 # most of the ecosystem is not ready for numpy 2.0 numpy=1.26.4 # avoids ophyd v1.8.0 which I have not had time to test From 30e82b8fd1fdec0f54edf7d6425f824fdc131414 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 15:23:55 -0700 Subject: [PATCH 08/24] WIP: temporary pins section --- envs/pcds/conda-packages.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 0b714ea..c4e4f6a 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -120,11 +120,13 @@ pyqtwebengine=5.15.9 bluesky-base=1.10.0 # ipython changes make scientists upset and can break experiments ipython=8.4.0 -# temporary pin while some of our packages require matplotlib directly -matplotlib<3.9 # most of the ecosystem is not ready for numpy 2.0 numpy=1.26.4 # avoids ophyd v1.8.0 which I have not had time to test ophyd=1.7.0 # pin for gui interface stability qtpy=2.1.0 + +# temporary pins to remove before this PR is done +matplotlib<3.9 +databroker=1.2.5 \ No newline at end of file From 322bafe94abbf3d9441128b75dac6369b73a9fbd Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 16:23:13 -0700 Subject: [PATCH 09/24] BLD: avoid bluesky incompat --- envs/pcds/pip-packages.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/envs/pcds/pip-packages.txt b/envs/pcds/pip-packages.txt index f23a043..690edc4 100644 --- a/envs/pcds/pip-packages.txt +++ b/envs/pcds/pip-packages.txt @@ -1,5 +1,4 @@ # pypi as new as possible -bluesky-queueserver>=0.0.18 bloptools>=0.7.0 grpcio-tools>=1.62.2 laserbeamsize @@ -13,6 +12,8 @@ tc-release>=0.2.6 # conda+pip regressive pins # avoids bluesky v1.11.0 which breaks nabs bluesky==1.10.0 +# Requires bluesky at v1.11.0 to get to 0.0.20, update pin when bluesky pin updates +bluesky-queueserver==0.0.19 # ipython changes make scientists upset and can break experiments ipython==8.4.0 # most of the ecosystem is not ready for numpy 2.0 From d331b296b473c96f1508a07131b2f72532b00f47 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 16:45:01 -0700 Subject: [PATCH 10/24] BLD: force the qt5 opencv builds --- envs/pcds/conda-packages.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index c4e4f6a..741901d 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -45,7 +45,7 @@ memray>=1.13.4 mysqlclient>=2.0.3 nabs>=1.5.5 numpy>=1.14,<2.0.0 -opencv>=4.5.1 +opencv>=4.5.1[build='^qt5.*$'] openssl>=3.3.1 pandas>=1.5.3 panel>=0.14.4 From f6a696f50049aeed41520015d9fa1d1a57e83e5e Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Mon, 26 Aug 2024 17:07:10 -0700 Subject: [PATCH 11/24] TST: don't fail the build on too-noisy pip check for bad pkg metadata --- scripts/run_all_tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/run_all_tests.sh b/scripts/run_all_tests.sh index 554792c..ae2b6c5 100755 --- a/scripts/run_all_tests.sh +++ b/scripts/run_all_tests.sh @@ -86,7 +86,8 @@ fi echo "pip_check_start" if [ -x "$(command -v pip)" ]; then pip check - (( ERROR += $? )) + # Temporarily disable failure: too many false errors from bad metadata + # (( ERROR += $? )) fi echo "pip_check_end" From 7beae76ed0bdd2e840257b9039ba3b6de2555cb5 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 13:34:24 -0700 Subject: [PATCH 12/24] CI: try more intricate sequencing: only do certain steps when main build succeeds, do more uploads --- .github/workflows/integration_test.yaml | 57 ++++++++++++++++++++----- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/.github/workflows/integration_test.yaml b/.github/workflows/integration_test.yaml index fa1698e..6c33954 100644 --- a/.github/workflows/integration_test.yaml +++ b/.github/workflows/integration_test.yaml @@ -26,13 +26,14 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: mamba env create -q -n pcds-test -f envs/pcds/env.yaml - uses: ./.github/actions/finalize_and_check_env - uses: ./.github/actions/run_tests with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' # The env from current-env-tests + the latest tags slapped onto it py39-next-incr: defaults: @@ -45,6 +46,7 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: | cd scripts python update_tags.py pcds @@ -54,12 +56,13 @@ jobs: with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' - name: Environment Export - if: always() + id: export + if: steps.create.outcome == 'success' run: conda env export --file export.yaml - uses: actions/upload-artifact@v4 - if: always() + if: steps.export.outcome == 'success' with: name: incr_env.yaml path: "export.yaml" @@ -76,6 +79,7 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: | cd scripts python update_tags.py pcds @@ -85,14 +89,15 @@ jobs: with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' - name: Environment Export - if: always() + id: export + if: steps.create.outcome == 'success' run: conda env export --file export.yaml - uses: actions/upload-artifact@v4 - if: always() + if: steps.export.outcome == 'success' with: - name: next_env.yaml + name: py39_env.yaml path: "export.yaml" # Try to build a python 3.10 env py310-next-full: @@ -106,6 +111,7 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: | cd scripts python update_tags.py pcds @@ -115,7 +121,16 @@ jobs: with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' + - name: Environment Export + id: export + if: steps.create.outcome == 'success' + run: conda env export --file export.yaml + - uses: actions/upload-artifact@v4 + if: steps.export.outcome == 'success' + with: + name: py310_env.yaml + path: "export.yaml" # Try to build a python 3.11 env py311-next-full: defaults: @@ -128,6 +143,7 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: | cd scripts python update_tags.py pcds @@ -137,7 +153,16 @@ jobs: with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' + - name: Environment Export + id: export + if: steps.create.outcome == 'success' + run: conda env export --file export.yaml + - uses: actions/upload-artifact@v4 + if: steps.export.outcome == 'success' + with: + name: py311_env.yaml + path: "export.yaml" py312-next-full: defaults: run: @@ -149,6 +174,7 @@ jobs: fetch-depth: 0 - uses: ./.github/actions/conda_setup - name: create environment + id: create run: | cd scripts python update_tags.py pcds @@ -158,7 +184,16 @@ jobs: with: use-tag: true - uses: ./.github/actions/release_notes - if: always() + if: steps.create.outcome == 'success' + - name: Environment Export + id: export + if: steps.create.outcome == 'success' + run: conda env export --file export.yaml + - uses: actions/upload-artifact@v4 + if: steps.export.outcome == 'success' + with: + name: py312_env.yaml + path: "export.yaml" # Checks which packages are not ready yet for py310 py310-readiness: needs: py310-next-full From 8b945355d256bb0927270757727c87512a4b5ff0 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 13:45:49 -0700 Subject: [PATCH 13/24] ENH/CI: include pip checking in the readiness builds too --- .github/workflows/integration_test.yaml | 27 ++++++++++++++++++++++--- scripts/check_py_compat_pypi.sh | 24 ++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100755 scripts/check_py_compat_pypi.sh diff --git a/.github/workflows/integration_test.yaml b/.github/workflows/integration_test.yaml index 6c33954..6f3af47 100644 --- a/.github/workflows/integration_test.yaml +++ b/.github/workflows/integration_test.yaml @@ -205,10 +205,17 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/conda_setup - - name: check packages + - name: check packages conda run: | cd scripts ./check_py_compat.sh pcds 3.10 | tee ~/compat.log + - name: check packages pip + if: always() + run: | + conda create --name test python=3.10 + conda activate test + cd scripts + ./check_py_compat_pypi.sh | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" @@ -223,10 +230,17 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/conda_setup - - name: check packages + - name: check packages conda run: | cd scripts ./check_py_compat.sh pcds 3.11 | tee ~/compat.log + - name: check packages pip + if: always() + run: | + conda create --name test python=3.11 + conda activate test + cd scripts + ./check_py_compat_pypi.sh | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" @@ -240,10 +254,17 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/conda_setup - - name: check packages + - name: check packages conda run: | cd scripts ./check_py_compat.sh pcds 3.12 | tee ~/compat.log + - name: check packages pip + if: always() + run: | + conda create --name test python=3.12 + conda activate test + cd scripts + ./check_py_compat_pypi.sh | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" diff --git a/scripts/check_py_compat_pypi.sh b/scripts/check_py_compat_pypi.sh new file mode 100755 index 0000000..4c4c1c2 --- /dev/null +++ b/scripts/check_py_compat_pypi.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# Identify which pypi packages can be installed in your current python environment +# from on your environment specifications +if [ -z "${1}" ]; then + echo "Usage: check_py_compat_pypi.sh [base]" + exit +else + BASE="${1}" +fi + +EXIT_CODE=0 +while read -r line; +do + if [[ "${line}" == "#"* ]]; then + continue + fi + if pip install --dry-run "${line}" > /dev/null 2>&1; then + echo "Found working package ${line}" + else + echo "Found uninstallable package ${line}" + EXIT_CODE=1 + fi +done < "../envs/${BASE}/pip-packages.txt" +exit $EXIT_CODE From 2b515d9aa94d7521f1136874b275d91bf872ce25 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 13:50:37 -0700 Subject: [PATCH 14/24] BLD: update pinning --- envs/pcds/conda-packages.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 741901d..541b656 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -3,7 +3,7 @@ ads-async>=0.3.1 anaconda-client>=1.12.3 apischema>=0.18.0 archapp>=1.1.0 -atef>=1.4.0 +atef>=1.5.0 atlassian-python-api>=3.41.14 black>=24.8.0 blark>=0.8.1 @@ -54,7 +54,7 @@ paramiko>=3.1.0 pcaspy>=0.7.3 pcdscalc>=0.6.0 pcdsdaq>=2.4.4 -pcdsdevices>=8.4.0 +pcdsdevices>=8.5.0 pcdsutils>=0.14.1 pcdswidgets>=0.8.3 periodictable>=1.5.2 @@ -69,7 +69,7 @@ pyaudio>=0.2.13 pyca>=3.2.1 pycln>=2.4.0 pydm>=1.24.1 -pyepics>=3.5.6 +pyepics>=3.5.7 pyfiglet>=0.8 pymongo>=4.3.3 py-spy>=0.3.14 @@ -129,4 +129,4 @@ qtpy=2.1.0 # temporary pins to remove before this PR is done matplotlib<3.9 -databroker=1.2.5 \ No newline at end of file +databroker=1.2.5 From 9366407d9da1bd22a6007018f7de73e7f7be64fa Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 15:06:48 -0700 Subject: [PATCH 15/24] CI: typo in readiness checks for pypi --- .github/workflows/integration_test.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integration_test.yaml b/.github/workflows/integration_test.yaml index 6f3af47..5bf92d9 100644 --- a/.github/workflows/integration_test.yaml +++ b/.github/workflows/integration_test.yaml @@ -215,7 +215,7 @@ jobs: conda create --name test python=3.10 conda activate test cd scripts - ./check_py_compat_pypi.sh | tee -a ~/compat.log + ./check_py_compat_pypi.sh pcds | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" @@ -240,7 +240,7 @@ jobs: conda create --name test python=3.11 conda activate test cd scripts - ./check_py_compat_pypi.sh | tee -a ~/compat.log + ./check_py_compat_pypi.sh pcds | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" @@ -264,7 +264,7 @@ jobs: conda create --name test python=3.12 conda activate test cd scripts - ./check_py_compat_pypi.sh | tee -a ~/compat.log + ./check_py_compat_pypi.sh pcds | tee -a ~/compat.log - name: summarize failure if: failure() run: grep "uninstallable package" ~/compat.log >> "$GITHUB_STEP_SUMMARY" From ca4c8497883ee730fdd4f48d660ad5c15e1a8c1f Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 15:13:08 -0700 Subject: [PATCH 16/24] BLD: drop matplotlib pin, accept databroker pin for a bit longer --- envs/pcds/conda-packages.txt | 6 ++---- envs/pcds/pip-packages.txt | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 541b656..585f436 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -118,6 +118,8 @@ pyqtwebengine=5.15.9 # conda+pip regressive pins # avoids bluesky v1.11.0 which breaks nabs bluesky-base=1.10.0 +# non-tiled databroker required in conda-packages if any package has databroker as a dep +databroker=1.2.5 # ipython changes make scientists upset and can break experiments ipython=8.4.0 # most of the ecosystem is not ready for numpy 2.0 @@ -126,7 +128,3 @@ numpy=1.26.4 ophyd=1.7.0 # pin for gui interface stability qtpy=2.1.0 - -# temporary pins to remove before this PR is done -matplotlib<3.9 -databroker=1.2.5 diff --git a/envs/pcds/pip-packages.txt b/envs/pcds/pip-packages.txt index 690edc4..a2599e8 100644 --- a/envs/pcds/pip-packages.txt +++ b/envs/pcds/pip-packages.txt @@ -14,6 +14,8 @@ tc-release>=0.2.6 bluesky==1.10.0 # Requires bluesky at v1.11.0 to get to 0.0.20, update pin when bluesky pin updates bluesky-queueserver==0.0.19 +# non-tiled databroker required until we need tiled +databroker==1.2.5 # ipython changes make scientists upset and can break experiments ipython==8.4.0 # most of the ecosystem is not ready for numpy 2.0 From c39e3fe2ee5de4fe130ff791e20587902b2ae620 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 15:43:06 -0700 Subject: [PATCH 17/24] TST: include security pins in the conda py compat checks to better tell us which top-level req fails subdependnecy security conflicts --- scripts/check_py_compat.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/check_py_compat.sh b/scripts/check_py_compat.sh index 6c35f3a..d7acdd1 100755 --- a/scripts/check_py_compat.sh +++ b/scripts/check_py_compat.sh @@ -13,12 +13,12 @@ else PY_VER="${2}" fi EXIT_CODE=0 -while read line; +while read -r line; do if [[ "${line}" == "#"* ]]; then continue fi - if mamba create --dry-run --name debug_test python="${PY_VER}" "${line}" > /dev/null 2>&1; then + if mamba create --dry-run --name debug_test python="${PY_VER}" --file "../envs/${BASE}/security-packages.txt" "${line}" > /dev/null 2>&1; then echo "Found working package ${line}" else echo "Found uninstallable package ${line}" From 64751cb33515ff7f4c39f84e4cff488ab23926b0 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 16:20:35 -0700 Subject: [PATCH 18/24] BLD: pin matplotlib for consistency --- envs/pcds/conda-packages.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/envs/pcds/conda-packages.txt b/envs/pcds/conda-packages.txt index 585f436..9c1b853 100644 --- a/envs/pcds/conda-packages.txt +++ b/envs/pcds/conda-packages.txt @@ -122,6 +122,8 @@ bluesky-base=1.10.0 databroker=1.2.5 # ipython changes make scientists upset and can break experiments ipython=8.4.0 +# matplotlib conda pin can be removed once all conda dependencies specify matplotlib-base +matplotlib=3.8.4 # most of the ecosystem is not ready for numpy 2.0 numpy=1.26.4 # avoids ophyd v1.8.0 which I have not had time to test From f92cba1c113e574f4a66cdb2c43e7e5b3de967f6 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 16:26:59 -0700 Subject: [PATCH 19/24] CI: run env export through the script that includes the pip git installs --- .github/workflows/integration_test.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/integration_test.yaml b/.github/workflows/integration_test.yaml index 5bf92d9..3431293 100644 --- a/.github/workflows/integration_test.yaml +++ b/.github/workflows/integration_test.yaml @@ -60,12 +60,12 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: conda env export --file export.yaml + run: python scripts/export_env.py --rel ci --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: name: incr_env.yaml - path: "export.yaml" + path: "envs/pcds/env.yaml" # Start from scratch to get some py39 testing done # This is a fallback alternative to py39-next-incr, which is preferred py39-next-full: @@ -93,12 +93,12 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: conda env export --file export.yaml + run: python scripts/export_env.py --rel ci --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: name: py39_env.yaml - path: "export.yaml" + path: "envs/pcds/env.yaml" # Try to build a python 3.10 env py310-next-full: defaults: @@ -125,12 +125,12 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: conda env export --file export.yaml + run: python scripts/export_env.py --rel ci --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: name: py310_env.yaml - path: "export.yaml" + path: "envs/pcds/env.yaml" # Try to build a python 3.11 env py311-next-full: defaults: @@ -157,12 +157,12 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: conda env export --file export.yaml + run: python scripts/export_env.py --rel ci --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: name: py311_env.yaml - path: "export.yaml" + path: "envs/pcds/env.yaml" py312-next-full: defaults: run: @@ -188,12 +188,12 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: conda env export --file export.yaml + run: python scripts/export_env.py --rel ci --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: name: py312_env.yaml - path: "export.yaml" + path: "envs/pcds/env.yaml" # Checks which packages are not ready yet for py310 py310-readiness: needs: py310-next-full From 6fc4abdf2ebe824d8c9baa2a0662fc1297e78bf0 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 16:32:43 -0700 Subject: [PATCH 20/24] DOC: see how the release notes look if we start with added packages (new toys) --- scripts/release_notes_table.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/scripts/release_notes_table.py b/scripts/release_notes_table.py index c03f1ba..c911335 100644 --- a/scripts/release_notes_table.py +++ b/scripts/release_notes_table.py @@ -386,20 +386,7 @@ def main(env_name='pcds', reference='master'): reverse_deps_cache = build_reverse_deps_cache(added_pkgs) showed_update = False - # First, show updates by category - tables = build_tables(updates) - for name, table in tables.items(): - if len(list(table)) > 0: - showed_update = True - print(HEADERS[name]) - divider = '-' * len(HEADERS[name]) - print(divider) - print() - table.set_style(prettytable.MARKDOWN) - print(table) - print() - - # Then, show added/removed packages + # First, show added packages (exiting!) # Split based on what pkg_resources knows about dependencies added_reqs = { pkg for pkg in added_pkgs if len(reverse_deps_cache[pkg]) > 0 @@ -415,6 +402,19 @@ def main(env_name='pcds', reference='master'): for pkg in sorted(added_specs): print(f'- {pkg}') print() + # Next, show updates by category + tables = build_tables(updates) + for name, table in tables.items(): + if len(list(table)) > 0: + showed_update = True + print(HEADERS[name]) + divider = '-' * len(HEADERS[name]) + print(divider) + print() + table.set_style(prettytable.MARKDOWN) + print(table) + print() + # Next, show dependency updates if added_reqs: showed_update = True header = 'Added the Following Dependencies' @@ -464,6 +464,7 @@ def main(env_name='pcds', reference='master'): else: print(f'- {pkg} (required by {first_required_text})') print() + # Last, show removals if removed_pkgs: showed_update = True header = 'Removed the Following Packages' From d44323307056e318e91b673391c65e6d39517091 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 16:52:05 -0700 Subject: [PATCH 21/24] FIX: wrong order for inline spec + file spec --- scripts/check_py_compat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_py_compat.sh b/scripts/check_py_compat.sh index d7acdd1..e102e4f 100755 --- a/scripts/check_py_compat.sh +++ b/scripts/check_py_compat.sh @@ -18,7 +18,7 @@ do if [[ "${line}" == "#"* ]]; then continue fi - if mamba create --dry-run --name debug_test python="${PY_VER}" --file "../envs/${BASE}/security-packages.txt" "${line}" > /dev/null 2>&1; then + if mamba create --dry-run --name debug_test python="${PY_VER}" "${line}" --file "../envs/${BASE}/security-packages.txt" > /dev/null 2>&1; then echo "Found working package ${line}" else echo "Found uninstallable package ${line}" From 5466d88440a5e0b1e8ac5ef93e6f8ce0c10a8fec Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 17:46:51 -0700 Subject: [PATCH 22/24] BLD: build pcds-5.9.0 locally and export yaml --- envs/pcds/env.yaml | 1170 ++++++++++++++++++++++---------------------- 1 file changed, 590 insertions(+), 580 deletions(-) diff --git a/envs/pcds/env.yaml b/envs/pcds/env.yaml index b9340a8..6cefdb0 100644 --- a/envs/pcds/env.yaml +++ b/envs/pcds/env.yaml @@ -1,4 +1,4 @@ -name: pcds-5.8.3 +name: pcds-5.9.0 channels: - conda-forge - pcds-tag @@ -6,772 +6,805 @@ dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_kmp_llvm - ads-async=0.3.1=pyhd8ed1ab_0 - - aiohttp=3.9.3=py39hd1e30aa_0 + - aiohappyeyeballs=2.4.0=pyhd8ed1ab_0 + - aiohttp=3.10.5=py39hcd6043d_0 - aiosignal=1.3.1=pyhd8ed1ab_0 - - alabaster=0.7.13=pyhd8ed1ab_0 - - alsa-lib=1.2.10=hd590300_0 - - anaconda-client=1.12.3=pyhd8ed1ab_0 - - anaconda-project=0.11.1=pyhd8ed1ab_0 - - annotated-types=0.6.0=pyhd8ed1ab_0 + - alabaster=0.7.16=pyhd8ed1ab_0 + - alsa-lib=1.2.12=h4ab18f5_0 + - anaconda-client=1.12.3=pyhd8ed1ab_1 + - annotated-types=0.7.0=pyhd8ed1ab_0 - ansiwrap=0.8.4=py_0 - - aom=3.6.1=h59595ed_0 - - apischema=0.18.0=pyhd8ed1ab_0 + - anyio=4.4.0=pyhd8ed1ab_0 + - aom=3.9.1=hac33072_0 + - apischema=0.18.1=pyhd8ed1ab_0 - appdirs=1.4.4=pyh9f0ad1d_0 - archapp=1.1.0=pyhd8ed1ab_0 + - archspec=0.2.3=pyhd8ed1ab_0 - argon2-cffi=23.1.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py39hd1e30aa_4 - arrow=1.3.0=pyhd8ed1ab_0 - asciitree=0.3.3=py_2 - - asteval=0.9.31=pyhd8ed1ab_0 - - asttokens=2.4.0=pyhd8ed1ab_0 + - asteval=1.0.2=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 - astunparse=1.6.3=pyhd8ed1ab_0 - async-lru=2.0.4=pyhd8ed1ab_0 - async-timeout=4.0.3=pyhd8ed1ab_0 - - async_generator=1.10=py_0 - - atef=1.4.0=pyhd8ed1ab_0 - - atk-1.0=2.38.0=hd4edc92_1 - - atlassian-python-api=3.41.11=pyhd8ed1ab_0 - - atomicwrites=1.4.1=pyhd8ed1ab_0 + - atef=1.5.0=pyhd8ed1ab_0 + - atk-1.0=2.38.0=h04ea711_2 + - atlassian-python-api=3.41.14=pyhd8ed1ab_0 - attr=2.5.1=h166bdaf_1 - - attrs=23.1.0=pyh71513ae_1 - - aws-c-auth=0.7.10=h0100c56_1 - - aws-c-cal=0.6.9=h5d48c4d_2 - - aws-c-common=0.9.10=hd590300_0 - - aws-c-compression=0.2.17=h7f92143_7 - - aws-c-event-stream=0.4.0=h0bcb0bb_0 - - aws-c-http=0.8.0=hd268abd_0 - - aws-c-io=0.13.36=hb3b01f7_3 - - aws-c-mqtt=0.10.0=hf5d392a_2 - - aws-c-s3=0.4.7=he8c168f_2 - - aws-c-sdkutils=0.1.13=h7f92143_0 - - aws-checksums=0.1.17=h7f92143_6 - - aws-crt-cpp=0.26.0=h3b5eec7_3 - - aws-sdk-cpp=1.11.210=hac0d6e5_8 - - babel=2.12.1=pyhd8ed1ab_1 + - attrs=24.2.0=pyh71513ae_0 + - aws-c-auth=0.7.26=hc36b679_2 + - aws-c-cal=0.7.4=h2abdd08_0 + - aws-c-common=0.9.27=h4bc722e_0 + - aws-c-compression=0.2.19=haa50ccc_0 + - aws-c-event-stream=0.4.3=h570d160_0 + - aws-c-http=0.8.8=h9b61739_1 + - aws-c-io=0.14.18=h49c7fd3_7 + - aws-c-mqtt=0.10.4=h5c8269d_18 + - aws-c-s3=0.6.4=h77088c0_11 + - aws-c-sdkutils=0.1.19=h038f3f9_2 + - aws-checksums=0.1.18=h038f3f9_10 + - aws-crt-cpp=0.28.0=hf262114_1 + - aws-sdk-cpp=1.11.379=h2b5e2e4_6 + - azure-core-cpp=1.13.0=h935415a_0 + - azure-identity-cpp=1.8.0=hd126650_2 + - azure-storage-blobs-cpp=12.12.0=hd2e3451_0 + - azure-storage-common-cpp=12.7.0=h10ac4d7_1 + - azure-storage-files-datalake-cpp=12.11.0=h325d260_1 + - babel=2.14.0=pyhd8ed1ab_0 - backcall=0.2.0=pyh9f0ad1d_0 - - backports=1.0=pyhd8ed1ab_3 - - backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0 - - bcrypt=4.0.1=py39h9fdd4d6_1 - - beautifulsoup4=4.12.2=pyha770c72_0 + - backports=1.0=pyhd8ed1ab_4 + - backports.strenum=1.3.1=pyhd8ed1ab_0 + - backports.tarfile=1.0.0=pyhd8ed1ab_1 + - bcrypt=4.2.0=py39h5cde264_0 + - beautifulsoup4=4.12.3=pyha770c72_0 - binaryornot=0.4.4=py_1 - - black=24.4.0=py39hf3d152e_0 + - black=24.8.0=py39hf3d152e_0 - blark=0.8.1=pyhd8ed1ab_0 - bleach=6.1.0=pyhd8ed1ab_0 - - blinker=1.6.2=pyhd8ed1ab_0 + - blinker=1.8.2=pyhd8ed1ab_0 + - blosc=1.21.6=hef167b5_0 - bluesky=1.10.0=pyha770c72_0 - bluesky-base=1.10.0=pyhd8ed1ab_0 - bluesky-kafka=0.10.0=pyhd8ed1ab_0 - bluesky-live=0.0.8=pyhd8ed1ab_0 - - bluesky-queueserver=0.0.19=pyhd8ed1ab_0 - - bluesky-widgets=0.0.15=pyhd8ed1ab_0 - - bokeh=3.2.2=pyhd8ed1ab_0 - - boltons=23.0.0=pyhd8ed1ab_0 + - bluesky-widgets=0.0.16=pyhd8ed1ab_0 + - bokeh=3.4.2=pyhd8ed1ab_0 + - boltons=24.0.0=pyhd8ed1ab_0 - boolean.py=4.0=pyhd8ed1ab_0 - - botorch=0.9.2=pyhd8ed1ab_0 + - botorch=0.11.3=pyhd8ed1ab_0 - brotli=1.1.0=hd590300_1 - brotli-bin=1.1.0=hd590300_1 - brotli-python=1.1.0=py39h3d6467e_1 - brunsli=0.1=h9c3ff4c_0 - - bzip2=1.0.8=h7f98852_4 - - c-ares=1.24.0=hd590300_0 - - c-blosc2=2.10.5=hb4ffafa_0 - - ca-certificates=2024.2.2=hbcca054_0 + - bzip2=1.0.8=h4bc722e_7 + - c-ares=1.32.3=h4bc722e_0 + - c-blosc2=2.15.1=hc57e6cf_0 + - ca-certificates=2024.7.4=hbcca054_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - - cachetools=5.3.1=pyhd8ed1ab_0 - - cairo=1.16.0=h0c91306_1017 + - cachetools=5.5.0=pyhd8ed1ab_0 + - cairo=1.18.0=hbb29018_2 - caproto=1.1.1=pyhd8ed1ab_0 - - certifi=2024.2.2=pyhd8ed1ab_0 - - cffi=1.16.0=py39h7a31438_0 + - certifi=2024.7.4=pyhd8ed1ab_0 + - cffi=1.17.0=py39h49a4b6b_0 - cfgv=3.3.1=pyhd8ed1ab_0 - chardet=5.2.0=py39hf3d152e_1 - charls=2.4.2=h59595ed_0 - - charset-normalizer=3.3.0=pyhd8ed1ab_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 - cirun=0.30=pyhd8ed1ab_0 - click=8.1.7=unix_pyh707e725_0 - - cloudpickle=2.2.1=pyhd8ed1ab_0 - - clyent=1.2.2=py_1 + - cloudpickle=3.0.0=pyhd8ed1ab_0 - codecov=2.1.13=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_0 - - colorcet=3.0.1=pyhd8ed1ab_0 + - colorcet=3.1.0=pyhd8ed1ab_0 - coloredlogs=15.0.1=pyhd8ed1ab_3 - - comm=0.1.4=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 - commonmark=0.9.1=py_0 - - conda=23.9.0=py39hf3d152e_0 - - conda-build=3.27.0=py39hf3d152e_0 - - conda-forge-pinning=2023.10.06.16.31.06=hd8ed1ab_0 - - conda-index=0.2.3=pyhd8ed1ab_0 - - conda-pack=0.7.1=pyhd8ed1ab_0 - - conda-package-handling=2.2.0=pyh38be061_0 - - conda-package-streaming=0.9.0=pyhd8ed1ab_0 - - conda-smithy=3.34.1=pyhd8ed1ab_0 + - conda=24.7.1=py39hf3d152e_0 + - conda-build=24.7.1=py39hf3d152e_0 + - conda-forge-pinning=2024.08.27.19.11.25=hd8ed1ab_0 + - conda-index=0.5.0=pyhd8ed1ab_0 + - conda-libmamba-solver=24.7.0=pyhd8ed1ab_0 + - conda-pack=0.8.0=pyhd8ed1ab_0 + - conda-package-handling=2.3.0=pyh7900ff3_0 + - conda-package-streaming=0.10.0=pyhd8ed1ab_0 + - conda-smithy=3.39.0=unix_pyh707e725_0 - contextlib2=21.6.0=pyhd8ed1ab_0 - - contourpy=1.1.1=py39h7633fee_1 - - cookiecutter=2.4.0=pyhca7485f_0 - - coverage=7.4.1=py39hd1e30aa_0 - - cryptography=42.0.5=py39hd4f0224_0 - - cssselect=1.2.0=pyhd8ed1ab_0 + - contourpy=1.2.1=py39h7633fee_0 + - cookiecutter=2.6.0=pyhca7485f_0 + - coverage=7.6.1=py39hcd6043d_0 + - cryptography=43.0.0=py39h5c34e2d_0 - curio=1.4=py_0 - - curl=8.5.0=hca28451_0 - - cycler=0.12.0=pyhd8ed1ab_0 + - cycler=0.12.1=pyhd8ed1ab_0 - cyrus-sasl=2.1.27=h54b06d7_7 - - cython=3.0.3=py39h3d6467e_0 - - cytoolz=0.12.2=py39hd1e30aa_1 - - dask=2023.9.3=pyhd8ed1ab_0 - - dask-core=2023.9.3=pyhd8ed1ab_0 + - cython=3.0.11=py39h98e3656_0 + - cytoolz=0.12.3=py39hd1e30aa_0 + - dask=2024.8.0=pyhd8ed1ab_0 + - dask-core=2024.8.0=pyhd8ed1ab_0 + - dask-expr=1.1.10=pyhd8ed1ab_0 - databroker=1.2.5=pyhd8ed1ab_0 - - dataclasses=0.7=pyhb2cacf7_7 - - datashader=0.15.2=pyhd8ed1ab_0 - - datashape=0.5.4=py_1 + - datashader=0.16.3=pyhd8ed1ab_0 - dav1d=1.2.1=hd590300_0 - dbus=1.13.6=h5008d03_3 - - debugpy=1.8.0=py39h3d6467e_1 + - debugpy=1.8.5=py39h98e3656_0 - decorator=5.1.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - deprecated=1.2.14=pyh1a96a4e_0 - - distlib=0.3.7=pyhd8ed1ab_0 - - distributed=2023.9.3=pyhd8ed1ab_0 + - dill=0.3.8=pyhd8ed1ab_0 + - distlib=0.3.8=pyhd8ed1ab_0 + - distributed=2024.8.0=pyhd8ed1ab_0 + - distro=1.9.0=pyhd8ed1ab_0 - dnspython=2.6.1=pyhd8ed1ab_1 - docopt=0.6.2=py_1 - docs-versions-menu=0.5.2=pyhd8ed1ab_0 - - docstring_parser=0.15=pyhd8ed1ab_0 + - docstring_parser=0.16=pyhd8ed1ab_0 - doct=1.1.0=py_0 - doctr=1.9.0=pyhd8ed1ab_0 - - docutils=0.18.1=py39hf3d152e_1 + - docutils=0.20.1=py39hf3d152e_3 - dpkt=1.9.8=pyhd8ed1ab_0 - - editables=0.3=pyhd8ed1ab_0 + - editables=0.5=pyhd8ed1ab_0 + - elfutils=0.191=h924a536_0 - elog=1.2.3=py_0 - entrypoints=0.4=pyhd8ed1ab_0 - epics-base=7.0.7.0=h2dfad98_0 - epics-pypdb=0.1.5=pyhd8ed1ab_1 - - epicsmacrolib=0.6.1=py39h3d6467e_3 + - epicscorelibs=7.0.7.99.0.2=py39h7eddda4_2 + - epicsmacrolib=0.6.1=py39h3d6467e_4 - et_xmlfile=1.1.0=pyhd8ed1ab_0 - - exceptiongroup=1.1.3=pyhd8ed1ab_0 - - execnet=2.0.2=pyhd8ed1ab_0 - - executing=1.2.0=pyhd8ed1ab_0 - - expat=2.5.0=hcb278e6_1 + - event-model=1.21.0=pyhd8ed1ab_0 + - exceptiongroup=1.2.2=pyhd8ed1ab_0 + - execnet=2.1.1=pyhd8ed1ab_0 + - executing=2.0.1=pyhd8ed1ab_0 + - expat=2.6.2=h59595ed_0 - fabric=3.2.2=pyhd8ed1ab_0 - - fastapi=0.110.1=pyhd8ed1ab_1 + - fastcore=1.7.1=pyhd8ed1ab_0 - fasteners=0.17.3=pyhd8ed1ab_0 - - ffmpeg=6.0.0=gpl_h334edf3_105 - - filelock=3.12.4=pyhd8ed1ab_0 - - flake8=7.0.0=pyhd8ed1ab_0 + - ffmpeg=6.1.2=gpl_h226ea3b_102 + - filelock=3.15.4=pyhd8ed1ab_0 + - flake8=7.1.1=pyhd8ed1ab_0 - flask=3.0.3=pyhd8ed1ab_0 + - flexcache=0.3=pyhd8ed1ab_0 + - flexparser=0.3.1=pyhd8ed1ab_0 + - fmt=10.2.1=h00ab1b0_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - - font-ttf-ubuntu=0.83=hab24e00_0 + - font-ttf-ubuntu=0.83=h77eed37_2 - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - - fonttools=4.43.1=py39hd1e30aa_0 + - fonttools=4.53.1=py39hcd6043d_0 - fqdn=1.5.1=pyhd8ed1ab_0 - - freeglut=3.2.2=hac7e632_2 + - freeglut=3.2.2=ha6d2627_3 - freetype=2.12.1=h267a509_2 - freetype-py=2.3.0=pyhd8ed1ab_0 - fribidi=1.0.10=h36c2ea0_0 - - frozenlist=1.4.0=py39hd1e30aa_1 - - fsspec=2023.9.2=pyh1a96a4e_0 - - future=0.18.3=pyhd8ed1ab_0 + - frozendict=2.4.4=py39hd3abc70_0 + - frozenlist=1.4.1=py39hd1e30aa_0 + - fsspec=2024.6.1=pyhff2d567_0 + - future=1.0.0=pyhd8ed1ab_0 - fuzzywuzzy=0.18.0=pyhd8ed1ab_0 - - fzf=0.50.0=ha8f183a_0 - - g-ir-build-tools=1.78.1=py39h673cbd7_1 - - g-ir-host-tools=1.78.1=hfff48b1_1 - - gdb=14.2=py39h1a87753_0 - - gdk-pixbuf=2.42.10=h829c605_4 - - gettext=0.21.1=h27087fc_0 + - fzf=0.54.3=ha8f183a_0 + - g-ir-build-tools=1.80.1=py39h673cbd7_0 + - g-ir-host-tools=1.80.1=hfff48b1_0 + - gdb=15.1=py39h4909cf3_0 + - gdk-pixbuf=2.42.12=hb9ae30d_0 + - geos=3.12.2=he02047a_1 + - gettext=0.22.5=he02047a_3 + - gettext-tools=0.22.5=he02047a_3 - gflags=2.2.2=he1b5a44_1004 - - gh=2.48.0=ha8f183a_0 + - gh=2.55.0=h76a2195_0 + - ghapi=1.0.5=pyhd8ed1ab_0 - ghp-import=2.1.0=pyhd8ed1ab_0 - - giflib=5.2.1=h0b41bf4_3 - - git=2.42.0=pl5321h86e50cf_0 - - gitdb=4.0.10=pyhd8ed1ab_0 - - gitpython=3.1.42=pyhd8ed1ab_0 - - glib=2.78.0=hfc55251_0 - - glib-tools=2.78.0=hfc55251_0 - - glog=0.6.0=h6f12383_0 - - gmp=6.3.0=h59595ed_0 - - gmpy2=2.1.2=py39h376b7d2_1 - - gnutls=3.7.8=hf3e180e_0 - - gobject-introspection=1.78.1=py39hb25b1be_1 - - gpytorch=1.11=pyhd8ed1ab_0 - - graphite2=1.3.13=h58526e2_1001 - - graphviz=8.1.0=h28d9a01_0 - - greenlet=3.0.0=py39h3d6467e_1 - - grpcio=1.59.3=py39h174d805_0 - - grpcio-tools=1.57.0=py39h3d6467e_0 - - gsl=2.7=he838d99_0 - - gst-plugins-base=1.22.6=h8e1006c_2 - - gstreamer=1.22.6=h98fc4e7_2 - - gtk2=2.24.33=h90689f9_2 + - giflib=5.2.2=hd590300_0 + - git=2.46.0=pl5321hb5640b7_0 + - gitdb=4.0.11=pyhd8ed1ab_0 + - gitpython=3.1.43=pyhd8ed1ab_0 + - glib=2.80.3=h315aac3_2 + - glib-tools=2.80.3=h8fdd7da_2 + - glog=0.7.1=hbabe93e_0 + - gmp=6.3.0=hac33072_2 + - gmpy2=2.1.5=py39h048c657_1 + - gnutls=3.8.7=h32866dd_0 + - gobject-introspection=1.80.1=py39hb25b1be_0 + - gpytorch=1.12=pyhd8ed1ab_0 + - graphite2=1.3.13=h59595ed_1003 + - graphviz=12.0.0=hba01fac_0 + - greenlet=3.0.3=py39h3d6467e_0 + - gsl=2.6=he838d99_2 + - gst-plugins-base=1.24.6=hbaaba92_0 + - gstreamer=1.24.6=haf2f30d_0 + - gtk2=2.24.33=h6470451_5 - gts=0.7.6=h977cf35_4 - h11=0.14.0=pyhd8ed1ab_0 - h2=4.1.0=pyhd8ed1ab_0 - - h5py=3.9.0=nompi_py39h87cadad_103 + - h5py=3.11.0=nompi_py39h24b94d4_102 - happi=2.5.0=pyhd8ed1ab_0 - - harfbuzz=8.2.1=h3d44ed6_0 - - hatch=1.9.1=pyhd8ed1ab_0 - - hatchling=1.21.0=pyhd8ed1ab_0 - - hdf5=1.14.2=nompi_h4f84152_100 - - hiredis=2.2.3=py39hd1e30aa_1 + - harfbuzz=9.0.0=hfac3d4d_0 + - hatch=1.12.0=pyhd8ed1ab_0 + - hatchling=1.25.0=pyhd8ed1ab_0 + - hdf5=1.14.3=nompi_hdf9ad27_105 + - hiredis=2.3.2=py39hd1e30aa_0 - historydict=1.2.6=pyhd8ed1ab_0 - - hkl=5.0.0.3001=py39hf3d152e_0 - - hklpy=1.1.0=py39hf3d152e_0 - - holoviews=1.17.1=pyhd8ed1ab_0 + - hkl=5.0.0.3512=py39hf05c259_0 + - hklpy=1.1.1=py39hf3d152e_0 + - holoviews=1.19.1=pyhd8ed1ab_0 - hpack=4.0.0=pyh9f0ad1d_0 - - humanfriendly=10.0=py39hf3d152e_4 - - humanize=4.8.0=pyhd8ed1ab_0 - - hutch-python=1.20.0=py_0 + - httpcore=1.0.5=pyhd8ed1ab_0 + - httpx=0.27.2=pyhd8ed1ab_0 + - humanfriendly=10.0=pyhd8ed1ab_6 + - humanize=4.10.0=pyhd8ed1ab_0 + - hutch-python=1.21.0=py_0 - hxrsnd=0.3.1=py_0 - hyperframe=6.0.1=pyhd8ed1ab_0 - hyperlink=21.0.0=pyhd3deb0d_0 - icu=73.2=h59595ed_0 - - identify=2.5.30=pyhd8ed1ab_0 - - idna=3.7=pyhd8ed1ab_0 - - imagecodecs=2023.9.18=py39hf9b8f0e_2 - - imageio=2.31.1=pyh24c5eb1_0 + - identify=2.6.0=pyhd8ed1ab_0 + - idna=3.8=pyhd8ed1ab_0 + - imagecodecs=2024.6.1=py39h9d013fb_3 + - imageio=2.35.1=pyh12aca89_0 - imagesize=1.4.1=pyhd8ed1ab_0 - - importlib-metadata=6.8.0=pyha770c72_0 - - importlib-resources=6.1.0=pyhd8ed1ab_0 - - importlib_metadata=6.8.0=hd8ed1ab_0 - - importlib_resources=6.1.0=pyhd8ed1ab_0 + - imath=3.1.11=hfc55251_0 + - importlib-metadata=8.4.0=pyha770c72_0 + - importlib-resources=6.4.4=pyhd8ed1ab_0 + - importlib_metadata=8.4.0=hd8ed1ab_0 + - importlib_resources=6.4.4=pyhd8ed1ab_0 - iniconfig=2.0.0=pyhd8ed1ab_0 - intake=0.6.4=pyhd8ed1ab_0 - invoke=2.2.0=pyhd8ed1ab_0 - - ipykernel=6.25.2=pyh2140261_0 + - ipykernel=6.29.5=pyh3099207_0 - ipython=8.4.0=pyh41d4057_1 - - ipython_genutils=0.2.0=py_1 - - ipywidgets=8.1.1=pyhd8ed1ab_0 + - ipython_genutils=0.2.0=pyhd8ed1ab_1 + - ipywidgets=8.1.5=pyhd8ed1ab_0 - isodate=0.6.1=pyhd8ed1ab_0 - isoduration=20.11.0=pyhd8ed1ab_0 - isort=5.13.2=pyhd8ed1ab_0 - - itsdangerous=2.1.2=pyhd8ed1ab_0 + - itsdangerous=2.2.0=pyhd8ed1ab_0 - jack=1.9.22=h7c63dc7_2 - - jaraco.classes=3.3.0=pyhd8ed1ab_0 - - jasper=4.1.1=he6dfbbe_0 - - jaxtyping=0.2.21=pyhd8ed1ab_0 + - jaraco.classes=3.4.0=pyhd8ed1ab_1 + - jaraco.context=5.3.0=pyhd8ed1ab_1 + - jaraco.functools=4.0.0=pyhd8ed1ab_0 + - jasper=4.2.4=h536e39c_0 + - jaxtyping=0.2.33=pyhd8ed1ab_0 - jedi=0.19.1=pyhd8ed1ab_0 - jeepney=0.8.0=pyhd8ed1ab_0 - - jinja2=3.1.3=pyhd8ed1ab_0 + - jinja2=3.1.4=pyhd8ed1ab_0 - jmespath=1.0.1=pyhd8ed1ab_0 - - joblib=1.3.2=pyhd8ed1ab_0 - - js2py=0.74=pyhd8ed1ab_0 + - joblib=1.4.2=pyhd8ed1ab_0 - json-rpc=1.12.2=py_0 - - json5=0.9.14=pyhd8ed1ab_0 + - json5=0.9.25=pyhd8ed1ab_0 - jsonpatch=1.33=pyhd8ed1ab_0 - - jsonpointer=2.4=py39hf3d152e_3 - - jsonschema=4.19.1=pyhd8ed1ab_0 - - jsonschema-specifications=2023.7.1=pyhd8ed1ab_0 - - jsonschema-with-format-nongpl=4.19.1=pyhd8ed1ab_0 + - jsonpointer=3.0.0=py39hf3d152e_0 + - jsonschema=4.23.0=pyhd8ed1ab_0 + - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0 + - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_0 - jupyter=1.0.0=pyhd8ed1ab_10 - - jupyter-lsp=2.2.4=pyhd8ed1ab_0 - - jupyter_client=8.3.1=pyhd8ed1ab_0 + - jupyter-lsp=2.2.5=pyhd8ed1ab_0 + - jupyter_client=8.6.2=pyhd8ed1ab_0 - jupyter_console=6.6.3=pyhd8ed1ab_0 - - jupyter_core=5.3.2=py39hf3d152e_0 - - jupyter_events=0.9.0=pyhd8ed1ab_0 - - jupyter_server=2.12.2=pyhd8ed1ab_0 - - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1 - - jupyterlab=4.1.3=pyhd8ed1ab_0 - - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 - - jupyterlab_server=2.25.0=pyhd8ed1ab_0 - - jupyterlab_widgets=3.0.9=pyhd8ed1ab_0 - - jxrlib=1.1=h7f98852_2 - - keyring=24.3.0=py39hf3d152e_0 + - jupyter_core=5.7.2=py39hf3d152e_0 + - jupyter_events=0.10.0=pyhd8ed1ab_0 + - jupyter_server=2.14.2=pyhd8ed1ab_0 + - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0 + - jupyterlab=4.2.5=pyhd8ed1ab_0 + - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1 + - jupyterlab_server=2.27.3=pyhd8ed1ab_0 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_0 + - jxrlib=1.1=hd590300_3 + - keyring=25.3.0=pyha804496_0 - keyutils=1.6.1=h166bdaf_0 - kiwisolver=1.4.5=py39h7633fee_1 - - krb5=1.21.2=h659d440_0 + - krb5=1.21.3=h659f571_0 - krtc=0.3.0=pyhd8ed1ab_0 - lame=3.100=h166bdaf_1003 - - lark=1.1.7=pyhd8ed1ab_0 - - lazy_loader=0.3=pyhd8ed1ab_0 + - lark=1.2.2=pyhd8ed1ab_0 + - lazy-loader=0.4=pyhd8ed1ab_1 + - lazy_loader=0.4=pyhd8ed1ab_1 - lcms2=2.16=hb7c19ff_0 - - ld_impl_linux-64=2.40=h41732ed_0 + - ld_impl_linux-64=2.40=hf3520f5_7 - lerc=4.0.0=h27087fc_0 - - levenshtein=0.22.0=py39h3d6467e_0 - - libabseil=20230802.1=cxx17_h59595ed_0 - - libaec=1.1.2=h59595ed_1 - - libarchive=3.7.2=h039dbb9_0 - - libarrow=14.0.2=h84dd17c_2_cpu - - libarrow-acero=14.0.2=h59595ed_2_cpu - - libarrow-dataset=14.0.2=h59595ed_2_cpu - - libarrow-flight=14.0.2=h120cb0d_2_cpu - - libarrow-flight-sql=14.0.2=h61ff412_2_cpu - - libarrow-gandiva=14.0.2=hacb8726_2_cpu - - libarrow-substrait=14.0.2=h61ff412_2_cpu - - libass=0.17.1=h8fe9dca_1 - - libavif16=1.0.1=h87da1f6_2 - - libblas=3.9.0=16_linux64_mkl + - levenshtein=0.25.1=py39h3d6467e_1 + - libabseil=20240116.2=cxx17_he02047a_1 + - libaec=1.1.3=h59595ed_0 + - libarchive=3.7.4=hfca40fe_0 + - libarrow=17.0.0=h974b3c2_11_cpu + - libarrow-acero=17.0.0=h5888daf_11_cpu + - libarrow-dataset=17.0.0=h5888daf_11_cpu + - libarrow-substrait=17.0.0=hf54134d_11_cpu + - libasprintf=0.22.5=he8f35ee_3 + - libasprintf-devel=0.22.5=he8f35ee_3 + - libass=0.17.3=h1dc1e6a_0 + - libavif16=1.1.1=h104a339_1 + - libblas=3.9.0=23_linux64_openblas - libbrotlicommon=1.1.0=hd590300_1 - libbrotlidec=1.1.0=hd590300_1 - libbrotlienc=1.1.0=hd590300_1 - libcap=2.69=h0f662aa_0 - - libcblas=3.9.0=16_linux64_mkl - - libclang=15.0.7=default_h7634d5b_3 - - libclang13=15.0.7=default_h9986a30_3 + - libcblas=3.9.0=23_linux64_openblas + - libclang-cpp15=15.0.7=default_h127d8a8_5 + - libclang13=18.1.8=default_h9def88c_2 - libcrc32c=1.1.2=h9c3ff4c_0 - - libcst=1.1.0=py39hbf5dedb_0 + - libcst=1.4.0=py39hc2bf76a_0 - libcups=2.3.3=h4637d8d_4 - - libcurl=8.5.0=hca28451_0 + - libcurl=8.9.1=hdb1bdb2_0 - libdb=6.2.32=h9c3ff4c_0 - - libdeflate=1.19=hd590300_0 - - libdrm=2.4.114=h166bdaf_0 + - libdeflate=1.21=h4bc722e_0 + - libdrm=2.4.123=hb9d3cd8_0 - libedit=3.1.20191231=he28a2e2_2 - - libev=4.33=h516909a_1 + - libev=4.33=hd590300_2 - libevent=2.1.12=hf998b51_1 - - libexpat=2.5.0=hcb278e6_1 + - libexpat=2.6.2=h59595ed_0 - libffi=3.4.2=h7f98852_5 - libflac=1.4.3=h59595ed_0 - - libgcc-ng=13.2.0=h807b86a_2 - - libgcrypt=1.10.1=h166bdaf_0 + - libgcc-ng=14.1.0=h77fa898_0 + - libgcrypt=1.11.0=h4ab18f5_1 - libgd=2.3.3=h119a65a_9 - - libgfortran-ng=13.2.0=h69a702a_2 - - libgfortran5=13.2.0=ha4646dd_2 - - libgirepository=1.78.1=h003a4f0_1 - - libglib=2.78.0=hebfc3b9_0 - - libglu=9.0.0=hac7e632_1003 - - libgoogle-cloud=2.12.0=h5206363_4 - - libgpg-error=1.47=h71f35ed_0 - - libgrpc=1.59.3=hd6c4280_0 - - libhwloc=2.9.3=default_h554bfaf_1009 - - libiconv=1.17=h166bdaf_0 - - libidn2=2.3.4=h166bdaf_0 + - libgettextpo=0.22.5=he02047a_3 + - libgettextpo-devel=0.22.5=he02047a_3 + - libgfortran-ng=14.1.0=h69a702a_0 + - libgfortran5=14.1.0=hc5f4f2c_0 + - libgirepository=1.80.1=h003a4f0_0 + - libglib=2.80.3=h315aac3_2 + - libglu=9.0.0=ha6d2627_1004 + - libgoogle-cloud=2.28.0=h26d7fe4_0 + - libgoogle-cloud-storage=2.28.0=ha262f82_0 + - libgpg-error=1.50=h4f305b6_0 + - libgrpc=1.62.2=h15f2491_0 + - libhwloc=2.11.1=default_hecaa2ac_1000 + - libhwy=1.1.0=h00ab1b0_0 + - libiconv=1.17=hd590300_2 + - libidn2=2.3.7=hd590300_0 - libjpeg-turbo=3.0.0=hd590300_1 - - liblapack=3.9.0=16_linux64_mkl - - liblapacke=3.9.0=16_linux64_mkl - - liblief=0.12.3=h27087fc_0 + - libjxl=0.10.3=h66b40c8_0 + - liblapack=3.9.0=23_linux64_openblas + - liblapacke=3.9.0=23_linux64_openblas + - liblief=0.14.1=hac33072_1 - libllvm14=14.0.6=hcd5def8_4 - - libllvm15=15.0.7=h5cf9203_3 + - libllvm15=15.0.7=hb3ce162_4 + - libllvm18=18.1.8=h8b73ec9_2 + - libmamba=1.5.8=had39da4_0 + - libmambapy=1.5.8=py39h10defb6_0 + - libmicrohttpd=1.0.1=hbc5bc17_1 - libnghttp2=1.58.0=h47da74e_1 - - libnsl=2.0.0=hd590300_1 + - libnsl=2.0.1=hd590300_0 - libntlm=1.4=h7f98852_1002 - - libnuma=2.0.16=h0b41bf4_1 - - libogg=1.3.4=h7f98852_1 - - libopenblas=0.3.24=pthreads_h413a1c8_0 - - libopencv=4.8.1=py39hf605482_5 - - libopenvino=2023.1.0=h59595ed_0 - - libopenvino-auto-batch-plugin=2023.1.0=h59595ed_0 - - libopenvino-auto-plugin=2023.1.0=h59595ed_0 - - libopenvino-hetero-plugin=2023.1.0=h59595ed_0 - - libopenvino-intel-cpu-plugin=2023.1.0=h59595ed_0 - - libopenvino-intel-gpu-plugin=2023.1.0=h59595ed_0 - - libopenvino-ir-frontend=2023.1.0=h59595ed_0 - - libopenvino-onnx-frontend=2023.1.0=h59595ed_0 - - libopenvino-paddle-frontend=2023.1.0=h59595ed_0 - - libopenvino-pytorch-frontend=2023.1.0=h59595ed_0 - - libopenvino-tensorflow-frontend=2023.1.0=h59595ed_0 - - libopenvino-tensorflow-lite-frontend=2023.1.0=h59595ed_0 + - libogg=1.3.5=h4ab18f5_0 + - libopenblas=0.3.27=pthreads_hac2b453_1 + - libopencv=4.10.0=qt5_py39he40e7c9_503 + - libopenvino=2024.3.0=h2da1b83_0 + - libopenvino-auto-batch-plugin=2024.3.0=hb045406_0 + - libopenvino-auto-plugin=2024.3.0=hb045406_0 + - libopenvino-hetero-plugin=2024.3.0=h5c03a75_0 + - libopenvino-intel-cpu-plugin=2024.3.0=h2da1b83_0 + - libopenvino-intel-gpu-plugin=2024.3.0=h2da1b83_0 + - libopenvino-intel-npu-plugin=2024.3.0=h2da1b83_0 + - libopenvino-ir-frontend=2024.3.0=h5c03a75_0 + - libopenvino-onnx-frontend=2024.3.0=h07e8aee_0 + - libopenvino-paddle-frontend=2024.3.0=h07e8aee_0 + - libopenvino-pytorch-frontend=2024.3.0=he02047a_0 + - libopenvino-tensorflow-frontend=2024.3.0=h39126c6_0 + - libopenvino-tensorflow-lite-frontend=2024.3.0=he02047a_0 - libopus=1.3.1=h7f98852_1 - - libparquet=14.0.2=h352af49_2_cpu - - libpciaccess=0.17=h166bdaf_0 + - libparquet=17.0.0=h39682fd_11_cpu + - libpciaccess=0.18=hd590300_0 - libpng=1.6.43=h2797004_0 - - libpq=16.1=h33b98f1_7 - - libprotobuf=4.24.4=hf27288f_0 - - librdkafka=2.2.0=hfe68a65_0 - - libre2-11=2023.06.02=h7a70373_0 - - librsvg=2.56.3=h98fae49_0 + - libpq=16.4=h482b261_0 + - libprotobuf=4.25.3=h08a7969_0 + - librdkafka=2.5.0=h6d55bf2_0 + - libre2-11=2023.09.01=h5a48ba9_2 + - librsvg=2.58.3=h9564881_0 - libsndfile=1.2.2=hc60ed4a_1 - libsodium=1.0.18=h36c2ea0_1 - - libsqlite=3.44.2=h2797004_0 + - libsolv=0.7.30=h3509ff9_0 + - libsqlite=3.46.0=hde9e2c9_0 - libssh2=1.11.0=h0841786_0 - - libstdcxx-ng=13.2.0=h7e041cc_2 - - libsystemd0=254=h3516f8a_0 + - libstdcxx-ng=14.1.0=hc0a3c3a_0 + - libsystemd0=255=h3516f8a_1 - libtasn1=4.19.0=h166bdaf_0 - - libthrift=0.19.0=hb90f79a_1 - - libtiff=4.6.0=ha9c0a0a_2 - - libtool=2.4.7=h27087fc_0 + - libthrift=0.20.0=h0e7cc3e_1 + - libtiff=4.6.0=h46a8edc_4 + - libtorch=2.4.0=cpu_mkl_h0bb0d08_100 - libunistring=0.9.10=h7f98852_0 - libunwind=1.6.2=h9c3ff4c_0 - libutf8proc=2.8.0=h166bdaf_0 - libuuid=2.38.1=h0b41bf4_0 - - libuv=1.46.0=hd590300_0 - - libva=2.20.0=hd590300_0 + - libuv=1.48.0=hd590300_0 + - libva=2.22.0=hb711507_0 - libvorbis=1.3.7=h9c3ff4c_0 - - libvpx=1.13.1=h59595ed_0 - - libwebp=1.3.2=h658648e_1 - - libwebp-base=1.3.2=hd590300_0 - - libxcb=1.15=h0b41bf4_0 + - libvpx=1.14.1=hac33072_0 + - libwebp=1.4.0=h2c329e2_0 + - libwebp-base=1.4.0=hd590300_0 + - libxcb=1.16=hb9d3cd8_1 - libxcrypt=4.4.36=hd590300_1 - - libxkbcommon=1.6.0=h5d7e998_0 - - libxml2=2.11.5=h232c23b_1 - - libxslt=1.1.37=h0054252_1 - - libzlib=1.2.13=hd590300_5 + - libxkbcommon=1.7.0=h2c5496b_1 + - libxml2=2.12.7=h4c95cb1_3 + - libxslt=1.1.39=h76b75d6_0 + - libzlib=1.3.1=h4ab18f5_1 - libzopfli=1.0.3=h9c3ff4c_0 - license-expression=30.1.1=pyhd8ed1ab_0 - lightpath=1.0.4=pyhd8ed1ab_0 - line_profiler=4.1.1=py39h7633fee_1 - - linear_operator=0.5.1=pyhd8ed1ab_0 - - linkify-it-py=2.0.0=pyhd8ed1ab_0 - - llvm-openmp=17.0.2=h4dfa4b3_0 - - llvmlite=0.40.1=py39h174d805_0 - - lmfit=1.2.2=pyhd8ed1ab_1 + - linear_operator=0.5.2=pyhd8ed1ab_0 + - linkify-it-py=2.0.3=pyhd8ed1ab_0 + - llvm-openmp=18.1.8=hf5423f3_1 + - llvmlite=0.43.0=py39h81bab63_0 + - lmfit=1.3.2=pyhd8ed1ab_0 - locket=1.0.0=pyhd8ed1ab_0 - - lucid=0.10.3=pyhd8ed1ab_0 - - lxml=4.9.3=py39hed45dcc_1 - - lz4=4.3.2=py39h79d96da_1 + - lucid=0.11.0=pyhd8ed1ab_0 + - lxml=5.3.0=py39h4bc4537_0 + - lz4=4.3.3=py39h79d96da_0 - lz4-c=1.9.4=hcb278e6_0 - - lzo=2.10=h516909a_1000 - - markdown=3.5=pyhd8ed1ab_0 + - lzo=2.10=hd590300_1001 + - markdown=3.6=pyhd8ed1ab_0 - markdown-it-py=3.0.0=pyhd8ed1ab_0 - - markdown2=2.4.10=pyhd8ed1ab_0 - - markupsafe=2.1.3=py39hd1e30aa_1 - - matplotlib=3.8.0=py39hf3d152e_1 - - matplotlib-base=3.8.0=py39he9076e7_1 - - matplotlib-inline=0.1.6=pyhd8ed1ab_0 + - markupsafe=2.1.5=py39hd1e30aa_0 + - matplotlib=3.8.4=py39hf3d152e_2 + - matplotlib-base=3.8.4=py39h10d1fc8_2 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 - mccabe=0.7.0=pyhd8ed1ab_0 - - mdit-py-plugins=0.4.0=pyhd8ed1ab_0 - - mdurl=0.1.0=pyhd8ed1ab_0 - - memray=1.12.0=py39ha276054_0 + - mdit-py-plugins=0.4.1=pyhd8ed1ab_0 + - mdurl=0.1.2=pyhd8ed1ab_0 + - memray=1.13.4=py39h309f081_0 + - menuinst=2.1.2=py39hf3d152e_0 - mergedeep=1.3.4=pyhd8ed1ab_0 - - mistune=3.0.1=pyhd8ed1ab_0 - - mkdocs=1.5.3=pyhd8ed1ab_0 - - mkdocs-autorefs=0.5.0=pyhd8ed1ab_0 - - mkdocs-material=9.3.1=pyhd8ed1ab_0 - - mkdocs-material-extensions=1.2=pyhd8ed1ab_0 - - mkdocstrings=0.23.0=pyhd8ed1ab_0 - - mkl=2022.2.1=h84fe81f_16997 + - mistune=3.0.2=pyhd8ed1ab_0 + - mkdocs=1.6.0=pyhd8ed1ab_0 + - mkdocs-autorefs=1.1.0=pyhd8ed1ab_0 + - mkdocs-get-deps=0.2.0=pyhd8ed1ab_0 + - mkdocs-material=9.5.33=pyhd8ed1ab_0 + - mkdocs-material-extensions=1.3.1=pyhd8ed1ab_0 + - mkdocstrings=0.25.2=pyhd8ed1ab_0 + - mkl=2023.2.0=h84fe81f_50496 - mongomock=4.0.0=pyhd8ed1ab_0 - mongoquery=1.4.2=pyhd8ed1ab_0 - - more-itertools=10.1.0=pyhd8ed1ab_0 + - more-itertools=10.4.0=pyhd8ed1ab_0 - mpc=1.3.1=hfe3b2da_0 - - mpfr=4.2.1=h9458935_0 - - mpg123=1.32.3=h59595ed_0 + - mpfr=4.2.1=h38ae2d0_2 + - mpg123=1.32.6=h59595ed_0 - mpmath=1.3.0=pyhd8ed1ab_0 - msgpack-numpy=0.4.8=pyhd8ed1ab_0 - - msgpack-python=1.0.6=py39h7633fee_0 + - msgpack-python=1.0.8=py39h95fdab5_0 - msrest=0.6.21=pyh44b312d_0 - - multidict=6.0.4=py39h72bdee0_0 - - multipledispatch=0.6.0=py_0 + - multidict=6.0.5=py39hd1e30aa_0 + - multipledispatch=0.6.0=pyhd8ed1ab_1 - munkres=1.1.4=pyh9f0ad1d_0 - mypy_extensions=1.0.0=pyha770c72_0 - - mysql-common=8.0.33=hf1915f5_4 - - mysql-libs=8.0.33=hca2cd23_4 - - mysqlclient=2.2.0=py39h3d6467e_1 - - nabs=1.5.4=py_0 - - nbclient=0.8.0=pyhd8ed1ab_0 - - nbconvert=7.9.2=pyhd8ed1ab_0 - - nbconvert-core=7.9.2=pyhd8ed1ab_0 - - nbconvert-pandoc=7.9.2=pyhd8ed1ab_0 - - nbformat=5.9.2=pyhd8ed1ab_0 - - nbsphinx=0.9.3=pyhd8ed1ab_0 - - ncurses=6.4=hcb278e6_0 - - nest-asyncio=1.5.6=pyhd8ed1ab_0 + - mysql-common=8.3.0=h70512c7_5 + - mysql-libs=8.3.0=ha479ceb_5 + - mysqlclient=2.2.4=py39h3d6467e_1 + - nabs=1.5.5=pyhd8ed1ab_0 + - nbclient=0.10.0=pyhd8ed1ab_0 + - nbconvert=7.16.4=hd8ed1ab_1 + - nbconvert-core=7.16.4=pyhd8ed1ab_1 + - nbconvert-pandoc=7.16.4=hd8ed1ab_1 + - nbformat=5.10.4=pyhd8ed1ab_0 + - nbsphinx=0.9.5=pyhd8ed1ab_0 + - ncurses=6.5=he02047a_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 - netifaces=0.11.0=py39hd1e30aa_2 - - nettle=3.8.1=hc379101_1 - - networkx=3.1=pyhd8ed1ab_0 - - nodeenv=1.8.0=pyhd8ed1ab_0 - - nodejs=20.8.0=hb753e55_0 - - notebook=7.1.1=pyhd8ed1ab_0 - - notebook-shim=0.2.3=pyhd8ed1ab_0 + - nettle=3.9.1=h7ab15ed_0 + - networkx=3.2.1=pyhd8ed1ab_0 + - nodeenv=1.9.1=pyhd8ed1ab_0 + - nodejs=22.6.0=h6d9b948_0 + - notebook=7.2.1=pyhd8ed1ab_0 + - notebook-shim=0.2.4=pyhd8ed1ab_0 - nspr=4.35=h27087fc_0 - - nss=3.94=h1d7d5a4_0 - - numba=0.57.1=py39hb75a051_0 - - numcodecs=0.12.0=py39h3d6467e_1 - - numexpr=2.8.7=mkl_py39h3458bc0_4 - - numpy=1.24.4=py39h6183b62_0 - - numpydoc=1.5.0=pyhd8ed1ab_0 + - nss=3.103=h593d115_0 + - numba=0.60.0=py39h0320e7d_0 + - numcodecs=0.12.1=py39h84cc369_1 + - numexpr=2.7.3=py39hde0f152_1 + - numpy=1.26.4=py39h474f0d3_0 + - numpydoc=1.8.0=pyhd8ed1ab_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - - ocl-icd=2.3.1=h7f98852_0 - - ocl-icd-system=1.0.0=1 - - opencv=4.8.1=py39h49f0291_5 - - openh264=2.3.1=hcb278e6_2 + - ocl-icd=2.3.2=hd590300_1 + - opencv=4.10.0=qt5_py39h7ec2500_503 + - openexr=3.2.2=haf962dd_1 + - openh264=2.4.1=h59595ed_0 - openjpeg=2.5.2=h488ebb8_0 - - openpyxl=3.1.2=py39hd1e30aa_1 - - openssl=3.2.1=hd590300_1 + - openpyxl=3.1.5=py39hd1e30aa_0 + - openssl=3.3.1=hb9d3cd8_3 - ophyd=1.7.0=pyhd8ed1ab_0 - opt_einsum=3.3.0=pyhc1e730c_2 - - orc=1.9.2=h4b38347_0 - - orjson=3.9.15=py39h9fdd4d6_0 - - outcome=1.2.0=pyhd8ed1ab_0 - - overrides=7.4.0=pyhd8ed1ab_0 + - orc=2.0.2=h669347b_0 + - outcome=1.3.0.post0=pyhd8ed1ab_0 + - overrides=7.7.0=pyhd8ed1ab_0 - p11-kit=0.24.1=hc5aa10d_0 - - packaging=23.2=pyhd8ed1ab_0 - - paginate=0.5.6=pyhd8ed1ab_0 - - pandas=2.1.1=py39hddac248_1 - - pandoc=3.1.3=h32600fe_0 + - packaging=24.1=pyhd8ed1ab_0 + - paginate=0.5.7=pyhd8ed1ab_0 + - pandas=2.2.2=py39hfc16268_1 + - pandoc=3.3=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - - panel=1.2.3=pyhd8ed1ab_0 - - pango=1.50.14=ha41ecd1_2 - - papermill=2.4.0=pyhd8ed1ab_0 - - param=1.13.0=pyh1a96a4e_0 - - paramiko=3.4.0=pyhd8ed1ab_0 - - parso=0.8.3=pyhd8ed1ab_0 - - partd=1.4.1=pyhd8ed1ab_0 + - panel=1.4.5=pyhd8ed1ab_0 + - pango=1.54.0=h4c5309f_1 + - papermill=2.5.0=pyhd8ed1ab_0 + - param=2.1.1=pyhff2d567_0 + - paramiko=3.4.1=pyhd8ed1ab_0 + - parso=0.8.4=pyhd8ed1ab_0 + - partd=1.4.2=pyhd8ed1ab_0 - patch=2.7.6=h7f98852_1002 - patchelf=0.17.2=h58526e2_0 - - pathspec=0.11.2=pyhd8ed1ab_0 - - patsy=0.5.3=pyhd8ed1ab_0 - - pcaspy=0.7.3=py39h4661b88_3 - - pcdscalc=0.5.1=pyhd8ed1ab_0 - - pcdsdaq=2.4.3=py_0 - - pcdsdevices=8.4.0=pyhd8ed1ab_0 + - pathspec=0.12.1=pyhd8ed1ab_0 + - patsy=0.5.6=pyhd8ed1ab_0 + - pcaspy=0.8.1=py39hddac248_0 + - pcdscalc=0.6.0=pyhd8ed1ab_0 + - pcdsdaq=2.4.4=py_0 + - pcdsdevices=8.5.0=pyhd8ed1ab_0 - pcdsutils=0.14.1=pyhd8ed1ab_1 - pcdswidgets=0.8.3=pyhd8ed1ab_0 - - pcre2=10.40=hc3806b6_0 + - pcre2=10.44=hba22ea6_2 - periodictable=1.5.2=py_0 - perl=5.32.1=7_hd590300_perl5 - - pexpect=4.8.0=pyh1a96a4e_2 + - pexpect=4.9.0=pyhd8ed1ab_0 - pickleshare=0.7.5=py_1003 - - pillow=10.3.0=py39h90c7501_0 - - pims=0.6.1=pyhd8ed1ab_1 - - pint=0.22=pyhd8ed1ab_1 - - pip=23.3.2=pyhd8ed1ab_0 - - pipdeptree=2.18.1=pyhd8ed1ab_0 - - pixman=0.42.2=h59595ed_0 - - pkg-config=0.29.2=h36c2ea0_1008 - - pkginfo=1.9.6=pyhd8ed1ab_0 + - pillow=10.4.0=py39h16a7006_0 + - pims=0.7=pyhd8ed1ab_0 + - pint=0.24.3=pyhd8ed1ab_0 + - pip=24.2=pyhd8ed1ab_0 + - pipdeptree=2.23.1=pyhd8ed1ab_0 + - pixman=0.43.2=h59595ed_0 + - pkg-config=0.29.2=h4bc722e_1009 + - pkginfo=1.11.1=pyhd8ed1ab_0 - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 - - platformdirs=3.11.0=pyhd8ed1ab_0 - - pluggy=1.4.0=pyhd8ed1ab_0 - - ply=3.11=py_1 - - pmgr=2.1.2=pyhd8ed1ab_0 + - platformdirs=4.2.2=pyhd8ed1ab_0 + - pluggy=1.5.0=pyhd8ed1ab_0 + - ply=3.11=pyhd8ed1ab_2 + - pmgr=2.1.3=pyhd8ed1ab_0 - pmpsdb_client=1.2.0=py_0 - portaudio=19.6.0=h7c63dc7_9 - - pre-commit=3.7.0=pyha770c72_0 - - prettytable=3.9.0=pyhd8ed1ab_0 - - prometheus_client=0.17.1=pyhd8ed1ab_0 - - prompt-toolkit=3.0.39=pyha770c72_0 - - prompt_toolkit=3.0.39=hd8ed1ab_0 - - protobuf=4.24.4=py39h60f6b12_0 - - psdaq-control-minimal=3.3.38=py_0 - - psdm_qs_cli=0.3.7=pyhd8ed1ab_0 - - psutil=5.9.5=py39hd1e30aa_1 - - pswalker=1.0.8=py_1 + - pre-commit=3.8.0=pyha770c72_0 + - prettytable=3.11.0=pyhd8ed1ab_0 + - prometheus_client=0.20.0=pyhd8ed1ab_0 + - prompt-toolkit=3.0.47=pyha770c72_0 + - prompt_toolkit=3.0.47=hd8ed1ab_0 + - psdaq-control-minimal=4.1.2=py_0 + - psdm_qs_cli=0.3.8=pyhd8ed1ab_0 + - psutil=6.0.0=py39hd3abc70_0 + - pswalker=1.0.10=py_1 - pthread-stubs=0.4=h36c2ea0_1001 - ptyprocess=0.7.0=pyhd3deb0d_0 - - pugixml=1.13=h59595ed_1 - - pulseaudio-client=16.1=hb77b528_5 - - pure_eval=0.2.2=pyhd8ed1ab_0 + - pugixml=1.14=h59595ed_0 + - pulseaudio-client=17.0=hb77b528_0 + - pure_eval=0.2.3=pyhd8ed1ab_0 - py-cpuinfo=9.0.0=pyhd8ed1ab_0 - - py-lief=0.12.3=py39h5a03fae_0 - - py-opencv=4.8.1=py39h0d77b2f_5 + - py-lief=0.14.1=py39h84cc369_1 + - py-opencv=4.10.0=qt5_py39h4d4e425_503 - py-spy=0.3.14=h87a5ac0_0 - - pyarrow=14.0.2=py39h6925388_2_cpu - - pyaudio=0.2.13=py39hd1e30aa_1 - - pyca=3.2.0=py39h179282a_2 - - pycairo=1.25.0=py39hc92de75_1 + - pyarrow=17.0.0=py39he8689d4_1 + - pyarrow-core=17.0.0=py39h4dd629f_1_cpu + - pyarrow-hotfix=0.6=pyhd8ed1ab_0 + - pyaudio=0.2.14=py39hd1e30aa_0 + - pybind11-abi=4=hd8ed1ab_3 + - pyca=3.2.1=py39h4b279fa_0 + - pycairo=1.26.1=py39h0d2dcfc_0 - pycln=2.4.0=pyhd8ed1ab_0 - - pycodestyle=2.11.0=pyhd8ed1ab_0 + - pycodestyle=2.12.1=pyhd8ed1ab_0 - pycosat=0.6.6=py39hd1e30aa_0 - - pycparser=2.21=pyhd8ed1ab_0 - - pycryptodome=3.19.1=py39h6f9bf71_0 - - pyct=0.4.6=py_0 - - pyct-core=0.4.6=py_0 - - pydantic-core=2.14.6=py39h9fdd4d6_1 - - pydm=1.22.1=pyhd8ed1ab_0 - - pyepics=3.5.2=py39hf3d152e_2 + - pycparser=2.22=pyhd8ed1ab_0 + - pycryptodome=3.20.0=py39h6f9bf71_0 + - pyct=0.5.0=pyhd8ed1ab_0 + - pydantic=2.8.2=pyhd8ed1ab_0 + - pydantic-core=2.20.1=py39h5cde264_0 + - pydm=1.24.1=pyhd8ed1ab_0 + - pyepics=3.5.7=py39hf3d152e_0 - pyfiglet=0.8.post1=py_0 - pyflakes=3.2.0=pyhd8ed1ab_0 - - pygithub=2.1.1=pyhd8ed1ab_0 - - pygments=2.16.1=pyhd8ed1ab_0 - - pygobject=3.46.0=py39hb25b1be_1 - - pyjsparser=2.7.1=pyh8c360ce_0 - - pyjwt=2.8.0=pyhd8ed1ab_0 + - pygithub=2.4.0=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pygobject=3.48.2=py39hb25b1be_0 + - pyjwt=2.9.0=pyhd8ed1ab_1 - pykerberos=1.2.4=py39h01551a1_5 - pykrb5=0.5.1=py39h01551a1_1 - - pymdown-extensions=10.3=pyhd8ed1ab_0 - - pymongo=4.6.3=py39h3d6467e_0 + - pymdown-extensions=10.9=pyhd8ed1ab_0 + - pymongo=4.8.0=py39h84cc369_0 - pynacl=1.5.0=py39hd1e30aa_3 - - pyopenssl=24.0.0=pyhd8ed1ab_0 - - pypandoc=1.11=pyhd8ed1ab_0 - - pyparsing=3.1.1=pyhd8ed1ab_0 + - pypandoc=1.13=pyhd8ed1ab_0 + - pyparsing=3.1.4=pyhd8ed1ab_0 - pypng=0.20220715.0=pyhd8ed1ab_0 - pyqt=5.15.9=py39h52134e7_5 - pyqt5-sip=12.12.2=py39h3d6467e_5 - - pyqtads=4.1.1=py39h071a739_1 - - pyqtgraph=0.13.3=pyhd8ed1ab_0 + - pyqtads=4.3.1=py39h69232e3_0 + - pyqtgraph=0.13.7=pyhd8ed1ab_0 - pyqtwebengine=5.15.9=py39h071a739_5 - - pyquery=2.0.0=pyhd8ed1ab_0 - pyresttable=2020.0.8=pyhd8ed1ab_0 - pyro-api=0.1.2=pyhd8ed1ab_0 - - pyro-ppl=1.8.6=pyhd8ed1ab_0 + - pyro-ppl=1.9.1=pyhd8ed1ab_0 - pysocks=1.7.1=pyha2e5f31_6 - - pyspnego=0.9.1=py39hd1e30aa_2 - - pytables=3.8.0=py39hfbd31a7_4 - - pytest=8.1.1=pyhd8ed1ab_0 - - pytest-asyncio=0.23.5=pyhd8ed1ab_0 + - pyspnego=0.11.1=py39hf3d152e_0 + - pytables=3.9.2=py39hd89fbf8_3 + - pytest=8.3.2=pyhd8ed1ab_0 + - pytest-asyncio=0.24.0=pyhd8ed1ab_0 - pytest-benchmark=4.0.0=pyhd8ed1ab_0 - - pytest-cov=4.1.0=pyhd8ed1ab_0 + - pytest-cov=5.0.0=pyhd8ed1ab_0 - pytest-qt=4.4.0=pyhd8ed1ab_0 - pytest-repeat=0.9.2=pyhd8ed1ab_0 - - pytest-timeout=2.1.0=pyhd8ed1ab_0 - - pytest-xdist=3.5.0=pyhd8ed1ab_0 - - python=3.9.18=h0755675_0_cpython - - python-confluent-kafka=2.2.0=py39hd1e30aa_2 - - python-dateutil=2.8.2=pyhd8ed1ab_0 - - python-fastjsonschema=2.18.1=pyhd8ed1ab_0 + - pytest-timeout=2.3.1=pyhd8ed1ab_1 + - pytest-xdist=3.6.1=pyhd8ed1ab_0 + - python=3.9.19=h0755675_0_cpython + - python-confluent-kafka=2.5.0=py39hcd6043d_0 + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python-fastjsonschema=2.20.0=pyhd8ed1ab_0 - python-graphviz=0.17=pyhaef67bd_0 - python-gssapi=1.8.3=py39h01551a1_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - - python-levenshtein=0.22.0=pyhd8ed1ab_0 - - python-libarchive-c=5.0=py39hf3d152e_2 + - python-levenshtein=0.25.1=pyhd8ed1ab_0 + - python-libarchive-c=5.1=py39hf3d152e_0 - python-multipart=0.0.9=pyhd8ed1ab_0 - - python-slugify=8.0.1=pyhd8ed1ab_2 - - python-tzdata=2023.3=pyhd8ed1ab_0 - - python_abi=3.9=4_cp39 + - python-slugify=8.0.4=pyhd8ed1ab_0 + - python-tzdata=2024.1=pyhd8ed1ab_0 + - python_abi=3.9=5_cp39 - pytkdocs=0.16.1=pyhd8ed1ab_1 - pytmc=2.16.0=pyhd8ed1ab_0 - - pytorch=2.1.0=cpu_mkl_py39h36ec4d3_100 - - pytz=2023.3.post1=pyhd8ed1ab_0 - - pyupgrade=3.15.2=pyhd8ed1ab_0 - - pyviz_comms=3.0.0=pyhd8ed1ab_0 - - pywavelets=1.4.1=py39h44dd56e_1 - - pyyaml=6.0.1=py39hd1e30aa_1 + - pytorch=2.4.0=cpu_mkl_py39h85c4de8_100 + - pytz=2024.1=pyhd8ed1ab_0 + - pyupgrade=3.17.0=pyhd8ed1ab_0 + - pyviz_comms=3.0.3=pyhd8ed1ab_0 + - pywavelets=1.6.0=py39hd92a3bb_0 + - pyyaml=6.0.2=py39hcd6043d_0 - pyyaml-env-tag=0.1=pyhd8ed1ab_0 - - pyzmq=25.1.1=py39hb257651_1 - - qdarkstyle=3.1=pyhd8ed1ab_0 + - pyzmq=26.2.0=py39h4e4fb57_0 + - qdarkstyle=3.2.3=pyhd8ed1ab_0 - qrcode=7.4.2=pyhd8ed1ab_0 - - qt-main=5.15.8=h82b777d_17 - - qt-webengine=5.15.8=h75ea521_4 - - qt5-advanced-docking-system=4.1.1=h6e39a36_0 - - qtawesome=1.2.3=pyhd8ed1ab_0 + - qt-main=5.15.8=h320f8da_24 + - qt-webengine=5.15.8=h8f589be_8 + - qt5-advanced-docking-system=4.3.1=h0944072_0 + - qtawesome=1.3.1=pyh9208f05_0 - qtconsole-base=5.4.3=pyha770c72_0 - qtpy=2.1.0=pyhd8ed1ab_0 - qtpyinheritance=0.0.2=pyhd8ed1ab_0 - - rapidfuzz=2.15.1=py39h227be39_0 + - rapidfuzz=3.9.6=py39h98e3656_0 + - rattler-build=0.20.0=hbfb6850_1 + - rattler-build-conda-compat=1.2.0=pyhd8ed1ab_0 - rav1e=0.6.6=he8a937b_2 - - rdma-core=28.9=h59595ed_1 - - re2=2023.06.02=h2873b5e_0 + - re2=2023.09.01=h7f4b329_2 - readline=8.2=h8228510_1 - - readtime=3.0.0=pyhd8ed1ab_0 - recommonmark=0.7.1=pyhd8ed1ab_0 - - redis-py=5.0.1=pyhd8ed1ab_0 - - referencing=0.30.2=pyhd8ed1ab_0 - - regex=2023.10.3=py39hd1e30aa_0 - - reportlab=4.0.4=py39hd1e30aa_0 - - requests=2.31.0=pyhd8ed1ab_0 + - redis-py=5.0.9=pyhd8ed1ab_0 + - referencing=0.35.1=pyhd8ed1ab_0 + - regex=2024.7.24=py39hcd6043d_0 + - reportlab=4.2.2=py39hd3abc70_0 + - reproc=14.2.4.post0=hd590300_1 + - reproc-cpp=14.2.4.post0=h59595ed_1 + - requests=2.32.3=pyhd8ed1ab_0 - requests-kerberos=0.14.0=pyh707e725_1 - - requests-oauthlib=1.3.1=pyhd8ed1ab_0 + - requests-oauthlib=2.0.0=pyhd8ed1ab_0 - requests-toolbelt=1.0.0=pyhd8ed1ab_0 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - - rich=13.6.0=pyhd8ed1ab_0 - - ripgrep=13.0.0=h2f28480_2 + - rich=13.7.1=pyhd8ed1ab_0 + - ripgrep=14.1.0=he8a937b_0 - rlpycairo=0.2.0=pyhd8ed1ab_0 - - rpds-py=0.10.4=py39h9fdd4d6_0 - - ruamel.yaml=0.17.35=py39hd1e30aa_0 - - ruamel.yaml.clib=0.2.7=py39hd1e30aa_2 - - ruamel_yaml=0.15.80=py39hd1e30aa_1009 - - s2n=1.4.1=h06160fa_0 - - schema=0.7.5=pyhd8ed1ab_1 - - scikit-image=0.21.0=py39h3d6467e_0 - - scikit-learn=1.3.1=py39ha22ef79_1 - - scipy=1.11.3=py39h474f0d3_1 - - scrypt=0.8.20=py39he3b4994_1 - - seaborn=0.13.0=hd8ed1ab_0 - - seaborn-base=0.13.0=pyhd8ed1ab_0 + - rpds-py=0.20.0=py39h5cde264_0 + - ruamel.yaml=0.18.6=py39hd1e30aa_0 + - ruamel.yaml.clib=0.2.8=py39hd1e30aa_0 + - s2n=1.5.1=h3400bea_0 + - schema=0.7.7=pyhd8ed1ab_0 + - scikit-image=0.24.0=py39h5114956_2 + - scikit-learn=1.5.1=py39hf7b0125_0 + - scipy=1.13.1=py39haf93ffa_0 + - scrypt=0.8.24=py39he3b4994_0 + - seaborn=0.13.2=hd8ed1ab_2 + - seaborn-base=0.13.2=pyhd8ed1ab_2 - secretstorage=3.3.3=py39hf3d152e_2 - - send2trash=1.8.2=pyh41d4057_0 + - send2trash=1.8.3=pyh0d859eb_0 - sentinels=1.0.0=py_1 - - setuptools=68.2.2=pyhd8ed1ab_0 - - setuptools-scm=8.0.4=pyhd8ed1ab_0 - - setuptools_dso=2.9=pyhd8ed1ab_0 + - setuptools=72.2.0=pyhd8ed1ab_0 + - setuptools-scm=8.1.0=pyhd8ed1ab_0 + - setuptools_dso=2.11=pyhd8ed1ab_0 + - shapely=2.0.6=py39h1254fa4_0 - shellcheck=0.10.0=ha770c72_0 - - shellingham=1.5.3=pyhd8ed1ab_0 - - simplejson=3.19.2=py39hd1e30aa_0 - - sip=6.7.11=py39h3d6467e_1 + - shellingham=1.5.4=pyhd8ed1ab_0 + - simplejson=3.19.3=py39hcd6043d_0 + - sip=6.7.12=py39h3d6467e_0 - six=1.16.0=pyh6c4a22f_0 - - sleef=3.5.1=h9b69904_2 + - sleef=3.6.1=h1b44611_3 - slicerator=1.1.0=pyhd8ed1ab_0 - - smmap=3.0.5=pyh44b312d_0 - - snappy=1.1.10=h9fff704_0 - - sniffio=1.3.0=pyhd8ed1ab_0 + - smmap=5.0.0=pyhd8ed1ab_0 + - snappy=1.2.1=ha2e4443_0 + - sniffio=1.3.1=pyhd8ed1ab_0 - snowballstemmer=2.2.0=pyhd8ed1ab_0 - sortedcontainers=2.4.0=pyhd8ed1ab_0 - soupsieve=2.5=pyhd8ed1ab_1 - spec2nexus=2021.2.6=pyhd8ed1ab_0 - - sphinx=6.2.1=pyhd8ed1ab_0 + - sphinx=7.4.7=pyhd8ed1ab_0 - sphinx-argparse=0.4.0=pyhd8ed1ab_0 - - sphinx-autodoc-typehints=1.21.8=pyhd8ed1ab_0 - - sphinx-click=5.0.1=pyhd8ed1ab_0 + - sphinx-autodoc-typehints=2.2.3=pyhd8ed1ab_0 + - sphinx-click=6.0.0=pyhd8ed1ab_0 - sphinx-copybutton=0.5.2=pyhd8ed1ab_0 - - sphinx_rtd_theme=1.2.0=pyha770c72_0 - - sphinxcontrib-applehelp=1.0.7=pyhd8ed1ab_0 - - sphinxcontrib-devhelp=1.0.5=pyhd8ed1ab_0 - - sphinxcontrib-htmlhelp=2.0.4=pyhd8ed1ab_0 + - sphinx_rtd_theme=2.0.0=pyha770c72_0 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_0 - sphinxcontrib-jquery=4.1=pyhd8ed1ab_0 - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0 - - sphinxcontrib-qthelp=1.0.6=pyhd8ed1ab_0 - - sphinxcontrib-serializinghtml=1.1.9=pyhd8ed1ab_0 - - sphinxcontrib-websupport=1.2.6=pyhd8ed1ab_0 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_0 + - sphinxcontrib-websupport=1.2.7=pyhd8ed1ab_0 - spyder-kernels=2.4.4=unix_pyh707e725_0 - - sqlalchemy=2.0.21=py39hd1e30aa_1 + - sqlalchemy=2.0.32=py39hcd6043d_0 - stack_data=0.6.2=pyhd8ed1ab_0 - - starlette=0.37.2=pyhd8ed1ab_0 - - statsmodels=0.14.0=py39h44dd56e_2 + - statsmodels=0.14.2=py39hd92a3bb_0 - suitcase-csv=0.3.0=pyhd8ed1ab_0 - suitcase-json-metadata=0.2.1=pyhd8ed1ab_0 - suitcase-jsonl=0.2.2=pyhd8ed1ab_0 - - suitcase-mongo=0.4.0=pyhd8ed1ab_0 + - suitcase-mongo=0.6.0=pyhd8ed1ab_0 - suitcase-msgpack=0.3.0=pyhd8ed1ab_1 - suitcase-specfile=0.2.5=pyhd8ed1ab_0 - suitcase-tiff=0.4.0=pyhd8ed1ab_0 - suitcase-utils=0.5.3=pyhd8ed1ab_1 - super_state_machine=2.0.2=py_0 - - svt-av1=1.7.0=h59595ed_0 - - sympy=1.12=pypyh9d50eac_103 - - tbb=2021.10.0=h00ab1b0_1 - - tblib=2.0.0=pyhd8ed1ab_0 - - tenacity=8.2.3=pyhd8ed1ab_0 - - terminado=0.17.1=pyh41d4057_0 + - svt-av1=2.2.1=h5888daf_0 + - sympy=1.13.2=pypyh2585a3b_103 + - tabulate=0.9.0=pyhd8ed1ab_1 + - tbb=2021.12.0=h434a139_3 + - tblib=3.0.0=pyhd8ed1ab_0 + - tenacity=9.0.0=pyhd8ed1ab_0 + - terminado=0.18.1=pyh0d859eb_0 - text-unidecode=1.3=pyhd8ed1ab_1 - - textual=0.52.1=pyhd8ed1ab_0 + - textual=0.78.0=pyhd8ed1ab_0 - textwrap3=0.9.2=py_0 - - threadpoolctl=3.2.0=pyha21a80b_0 - - tifffile=2023.9.26=pyhd8ed1ab_0 - - timechart=1.5.1=pyhd8ed1ab_0 - - tinycss2=1.2.1=pyhd8ed1ab_0 - - tk=8.6.13=h2797004_0 - - tokenize-rt=5.2.0=pyhd8ed1ab_0 + - threadpoolctl=3.5.0=pyhc1e730c_0 + - tifffile=2024.6.18=pyhd8ed1ab_0 + - timechart=1.5.3=pyhd8ed1ab_0 + - tinycss2=1.3.0=pyhd8ed1ab_0 + - tk=8.6.13=noxft_h4845f30_101 + - tokenize-rt=6.0.0=pyhd8ed1ab_0 - toml=0.10.2=pyhd8ed1ab_0 - tomli=2.0.1=pyhd8ed1ab_0 - tomli-w=1.0.0=pyhd8ed1ab_0 - - tomlkit=0.12.1=pyha770c72_0 - - toolz=0.12.0=pyhd8ed1ab_0 - - tornado=6.3.3=py39hd1e30aa_1 - - tqdm=4.66.1=pyhd8ed1ab_0 - - traitlets=5.11.2=pyhd8ed1ab_0 - - transfocate=0.5.8=pyhd8ed1ab_0 - - trio=0.24.0=py39hf3d152e_0 - - trove-classifiers=2023.11.29=pyhd8ed1ab_0 + - tomlkit=0.13.2=pyha770c72_0 + - toolz=0.12.1=pyhd8ed1ab_0 + - tornado=6.4.1=py39hd3abc70_0 + - tqdm=4.66.5=pyhd8ed1ab_0 + - traitlets=5.14.3=pyhd8ed1ab_0 + - transfocate=0.5.9=pyhd8ed1ab_0 + - trio=0.26.2=py39hf3d152e_0 + - trove-classifiers=2024.7.2=pyhd8ed1ab_0 - typeguard=2.13.3=pyhd8ed1ab_0 - - typer=0.9.0=pyhd8ed1ab_0 - - types-python-dateutil=2.8.19.14=pyhd8ed1ab_0 - - typhos=3.1.1=pyhd8ed1ab_0 - - typing-extensions=4.8.0=hd8ed1ab_0 - - typing_extensions=4.8.0=pyha770c72_0 + - typer=0.12.5=pyhd8ed1ab_0 + - typer-slim=0.12.5=pyhd8ed1ab_0 + - typer-slim-standard=0.12.5=hd8ed1ab_0 + - types-python-dateutil=2.9.0.20240821=pyhd8ed1ab_0 + - typhos=4.0.0=pyhd8ed1ab_0 + - typing-extensions=4.12.2=hd8ed1ab_0 + - typing_extensions=4.12.2=pyha770c72_0 - typing_inspect=0.9.0=pyhd8ed1ab_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - - tzdata=2023c=h71feb2d_0 - - tzlocal=5.1=py39hf3d152e_0 - - uc-micro-py=1.0.1=pyhd8ed1ab_0 - - ucx=1.15.0=h64cca9d_0 + - tzdata=2024a=h8827d51_1 + - tzlocal=5.2=py39hf3d152e_0 + - uc-micro-py=1.0.3=pyhd8ed1ab_0 - ukkonen=1.0.1=py39h7633fee_4 - - uncertainties=3.1.7=pyhd8ed1ab_0 + - uncertainties=3.2.2=pyhd8ed1ab_1 - unicodedata2=15.1.0=py39hd1e30aa_0 - uri-template=1.3.0=pyhd8ed1ab_0 + - urllib3=2.2.2=pyhd8ed1ab_1 - userpath=1.7.0=pyhd8ed1ab_0 - - virtualenv=20.24.4=pyhd8ed1ab_0 + - uv=0.3.5=h0f3a69f_0 + - virtualenv=20.26.3=pyhd8ed1ab_0 - vsts-python-api=0.1.25=pyhd8ed1ab_1 - - watchdog=3.0.0=py39hf3d152e_1 - - wcwidth=0.2.8=pyhd8ed1ab_0 - - webcolors=1.13=pyhd8ed1ab_0 + - watchdog=4.0.1=py39hf3d152e_0 + - wayland=1.23.1=h3e06ad9_0 + - wayland-protocols=1.36=hd8ed1ab_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - webcolors=24.8.0=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_2 - - websocket-client=1.6.3=pyhd8ed1ab_0 - - werkzeug=3.0.1=pyhd8ed1ab_0 + - websocket-client=1.8.0=pyhd8ed1ab_0 + - werkzeug=3.0.4=pyhd8ed1ab_0 - whatrecord=0.6.0=pyhd8ed1ab_0 - - wheel=0.41.2=pyhd8ed1ab_0 - - widgetsnbextension=4.0.9=pyhd8ed1ab_0 - - wrapt=1.15.0=py39hd1e30aa_1 - - wurlitzer=3.0.3=pyhd8ed1ab_0 + - wheel=0.44.0=pyhd8ed1ab_0 + - widgetsnbextension=4.0.13=pyhd8ed1ab_0 + - wrapt=1.16.0=py39hd1e30aa_0 + - wurlitzer=3.1.1=pyhd8ed1ab_0 - x264=1!164.3095=h166bdaf_2 - x265=3.5=h924138e_3 - - xarray=2023.9.0=pyhd8ed1ab_0 - - xcb-util=0.4.0=hd590300_1 - - xcb-util-image=0.4.0=h8ee46fc_1 - - xcb-util-keysyms=0.4.0=h8ee46fc_1 - - xcb-util-renderutil=0.3.9=hd590300_1 - - xcb-util-wm=0.4.1=h8ee46fc_1 - - xkeyboard-config=2.39=hd590300_0 + - xarray=2024.7.0=pyhd8ed1ab_0 + - xcb-util=0.4.1=hb711507_2 + - xcb-util-image=0.4.0=hb711507_2 + - xcb-util-keysyms=0.4.1=hb711507_0 + - xcb-util-renderutil=0.3.10=hb711507_0 + - xcb-util-wm=0.4.2=hb711507_0 + - xkeyboard-config=2.42=h4ab18f5_0 - xorg-compositeproto=0.4.2=h7f98852_1001 - xorg-damageproto=1.2.1=h7f98852_1002 - xorg-fixesproto=5.0=h7f98852_1002 @@ -779,17 +812,18 @@ dependencies: - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 - - xorg-libx11=1.8.7=h8ee46fc_0 + - xorg-libx11=1.8.9=hb711507_1 - xorg-libxau=1.0.11=hd590300_0 - xorg-libxcomposite=0.4.6=h0b41bf4_1 - xorg-libxdamage=1.1.5=h7f98852_1 - xorg-libxdmcp=1.1.3=h7f98852_0 - xorg-libxext=1.3.4=h0b41bf4_2 - xorg-libxfixes=5.0.3=h7f98852_1004 - - xorg-libxi=1.7.10=h7f98852_0 + - xorg-libxi=1.7.10=h4bc722e_1 - xorg-libxrandr=1.5.2=h7f98852_1 - xorg-libxrender=0.9.11=hd590300_0 - - xorg-libxtst=1.2.3=h7f98852_1002 + - xorg-libxtst=1.2.5=h4bc722e_0 + - xorg-libxxf86vm=1.1.5=h4bc722e_1 - xorg-randrproto=1.5.0=h7f98852_1001 - xorg-recordproto=1.14.2=h7f98852_1002 - xorg-renderproto=0.11.1=h7f98852_1002 @@ -798,74 +832,50 @@ dependencies: - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 - xorg-xproto=7.0.31=h7f98852_1007 - xraydb=4.5.0=pyhd8ed1ab_0 - - xyzservices=2023.10.0=pyhd8ed1ab_0 + - xraylib=4.1.4=py39h347b135_1 + - xyzservices=2024.6.0=pyhd8ed1ab_0 - xz=5.2.6=h166bdaf_0 - yaml=0.2.5=h7f98852_2 - - yarl=1.9.2=py39hd1e30aa_0 - - yarn=3.6.4=h31011fe_0 - - zarr=2.16.1=pyhd8ed1ab_0 - - zeromq=4.3.4=h9c3ff4c_1 - - zfp=1.0.0=h59595ed_4 + - yaml-cpp=0.8.0=h59595ed_0 + - yarl=1.9.4=py39hd1e30aa_0 + - yarn=4.4.1=h31011fe_0 + - zarr=2.18.2=pyhd8ed1ab_0 + - zeromq=4.3.5=h75354e8_4 + - zfp=1.0.1=hac33072_1 - zict=3.0.0=pyhd8ed1ab_0 - - zipp=3.17.0=pyhd8ed1ab_0 - - zlib=1.2.13=hd590300_5 - - zlib-ng=2.0.7=h0b41bf4_0 - - zstandard=0.21.0=py39h6e5214e_1 - - zstd=1.5.5=hfc55251_0 + - zipp=3.20.1=pyhd8ed1ab_0 + - zlib=1.3.1=h4ab18f5_1 + - zlib-ng=2.2.1=he02047a_0 + - zstandard=0.23.0=py39h623c9ba_0 + - zstd=1.5.6=ha6fb4c9_0 - pip: - - aiofiles==23.2.1 - - aiosqlite==0.19.0 - - alembic==1.12.0 - - anyio==3.7.1 - - asyncpg==0.28.0 - - awkward==2.4.5 - - awkward-cpp==24 - - blosc==1.11.1 - - cachecontrol==0.13.1 - - cachey==0.2.1 - - cyclonedx-python-lib==4.2.2 - - ecdsa==0.18.0 - - epicscorelibs==7.0.7.99.0.2 - - event-model==1.19.7 + - absl-py==2.1.0 + - bloptools==0.7.0 + - bluesky-queueserver==0.0.19 + - cachecontrol==0.14.0 + - cyclonedx-python-lib==7.6.0 - git+https://github.com/slaclab/flask_authnz@0.0.24 - - h5netcdf==1.2.0 - - heapdict==1.0.1 + - grpcio==1.66.0 + - grpcio-tools==1.66.0 - html5lib==1.1 - - httpcore==0.18.0 - - httptools==0.6.0 - - httpx==0.25.0 + - immutabledict==4.2.0 - kafka-python==2.0.2 - - laserbeamsize==2.0.3 - - mako==1.2.4 - - ndindex==1.7 - - nose2==0.14.0 - - ophyd-async==0.2.0 - - p4p==4.1.10 - - packageurl-python==0.11.2 - - parquet==1.3.1 - - pip-api==0.0.30 - - pip-audit==2.6.1 + - laserbeamsize==2.0.5 + - nose2==0.15.1 + - ortools==9.10.4067 + - p4p==4.1.12 + - packageurl-python==0.15.6 + - pip-api==0.0.34 + - pip-audit==2.7.3 - pip-requirements-parser==32.0.1 - git+https://github.com/pcdshub/pmps-ui.git@v1.1.0 - - pvxslibs==1.2.3 - - py-serializable==0.11.1 - - pyasn1==0.5.0 - - pydantic==1.10.13 + - protobuf==5.27.4 + - pvxslibs==1.3.1 + - py-serializable==1.1.0 + - py-trees==2.2.3 + - pydot==3.0.1 - pyqt5-stubs==5.15.6.0 - - python-dotenv==1.0.0 - - python-jose==3.3.0 - python-vxi11==0.9 - - rsa==4.9 - slac-alarm-manager==1.3.0 - - sparse==0.14.0 - tc-release==0.2.6 - - thriftpy2==0.4.17 - - tiled==0.1.0a107 - - urllib3==2.0.7 - - uvicorn==0.23.2 - - uvloop==0.17.0 - - watchfiles==0.20.0 - - watchgod==0.8.2 - - websockets==11.0.3 - - xraylib==4.1.3 -prefix: /home/runner/miniconda/envs/pcds-5.8.3 +prefix: /cds/home/z/zlentz/miniconda3/envs/pcds-5.9.0 From 0a6366d37a549cb9660f332b10a4aefcf0c53a13 Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Tue, 27 Aug 2024 17:50:49 -0700 Subject: [PATCH 23/24] CI: try to fix ci versino of export env --- .github/workflows/integration_test.yaml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/integration_test.yaml b/.github/workflows/integration_test.yaml index 3431293..325b117 100644 --- a/.github/workflows/integration_test.yaml +++ b/.github/workflows/integration_test.yaml @@ -60,7 +60,9 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: python scripts/export_env.py --rel ci --base pcds + run: | + conda activate base + python scripts/export_env.py --rel test --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: @@ -93,7 +95,9 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: python scripts/export_env.py --rel ci --base pcds + run: | + conda activate base + python scripts/export_env.py --rel test --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: @@ -125,7 +129,9 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: python scripts/export_env.py --rel ci --base pcds + run: | + conda activate base + python scripts/export_env.py --rel test --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: @@ -157,7 +163,9 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: python scripts/export_env.py --rel ci --base pcds + run: | + conda activate base + python scripts/export_env.py --rel test --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: @@ -188,7 +196,9 @@ jobs: - name: Environment Export id: export if: steps.create.outcome == 'success' - run: python scripts/export_env.py --rel ci --base pcds + run: | + conda activate base + python scripts/export_env.py --rel test --base pcds - uses: actions/upload-artifact@v4 if: steps.export.outcome == 'success' with: From 652224245c2cfd5335d2555da547021169888feb Mon Sep 17 00:00:00 2001 From: Zachary Lentz Date: Wed, 28 Aug 2024 11:23:29 -0700 Subject: [PATCH 24/24] DOC: typo in docstring Co-authored-by: Robert Tang-Kong <35379409+tangkong@users.noreply.github.com> --- scripts/release_notes_table.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release_notes_table.py b/scripts/release_notes_table.py index c911335..d68bb94 100644 --- a/scripts/release_notes_table.py +++ b/scripts/release_notes_table.py @@ -386,7 +386,7 @@ def main(env_name='pcds', reference='master'): reverse_deps_cache = build_reverse_deps_cache(added_pkgs) showed_update = False - # First, show added packages (exiting!) + # First, show added packages (exciting!) # Split based on what pkg_resources knows about dependencies added_reqs = { pkg for pkg in added_pkgs if len(reverse_deps_cache[pkg]) > 0