From 8d21e25b562031a00795d0d6e9702560d97a51ee Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Fri, 20 Feb 2026 14:26:03 -0500 Subject: [PATCH 01/32] refactor to use dry_run, move Tiled jobs into tasks --- data_validation.py | 42 ++++++++++++++++++++++++++++++------------ end_of_run_workflow.py | 14 +++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/data_validation.py b/data_validation.py index 60ad578..70ecc94 100644 --- a/data_validation.py +++ b/data_validation.py @@ -5,24 +5,42 @@ @task(retries=2, retry_delay_seconds=10) -def read_all_streams(uid, beamline_acronym): +def read_run(client, uid, dry_run=dry_run): + logger = get_run_logger() + if dry_run: + logger.info(f"Dry run: not reading {uid}") + return None + run = client["tst"]["raw"][uid] + logger.info(f"Validating uid {run.start['uid']}") + return run + + +@task(retries=2, retry_delay_seconds=10) +def read_stream(run, stream): + stream_data = run[stream].read() + + +@flow +def read_all_streams(uid, beamline_acronym, dry_run=dry_run): logger = get_run_logger() api_key = Secret.load("tiled-tst-api-key").get() cl = from_profile("nsls2", api_key=api_key) - run = cl["tst"]["raw"][uid] - logger.info(f"Validating uid {run.start['uid']}") + run = read_run(cl, uid, dry_run) start_time = ttime.monotonic() - for stream in run: - logger.info(f"{stream}:") - stream_start_time = ttime.monotonic() - stream_data = run[stream].read() - stream_elapsed_time = ttime.monotonic() - stream_start_time - logger.info(f"{stream} elapsed_time = {stream_elapsed_time}") - logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") + if dry_run: + logger.info(f"Dry run: not reading streams from uid {uid}") + else: + for stream in run: + logger.info(f"{stream}:") + stream_start_time = ttime.monotonic() + stream_data = read_stream(run, stream) + stream_elapsed_time = ttime.monotonic() - stream_start_time + logger.info(f"{stream} elapsed_time = {stream_elapsed_time}") + logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") elapsed_time = ttime.monotonic() - start_time logger.info(f"{elapsed_time = }") @flow -def data_validation(uid): - read_all_streams(uid, beamline_acronym="tst") +def data_validation(uid, dry_run=dry_run): + read_all_streams(uid, beamline_acronym="tst", dry_run=dry_run) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index f56291b..391dc66 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -5,16 +5,16 @@ @task -def log_completion(): +def log_completion(dry_run=dry_run): logger = get_run_logger() - logger.info("Complete") + logger.info(f"Complete! dry_run:{dry_run}") @flow -def end_of_run_workflow(stop_doc): +def end_of_run_workflow(stop_doc, dry_run=False): uid = stop_doc["run_start"] # hello_world() - data_validation(uid, return_state=True) - get_other_docs(uid) - # long_flow(iterations=100, sleep_length=10) - log_completion() + data_validation(uid, return_state=True, dry_run=dry_run) + get_other_docs(uid, dry_run=dry_run) + # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) + log_completion(dry_run=dry_run) From c89e75b91324c2c95e2c3029af24c880e8268720 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Fri, 20 Feb 2026 14:48:50 -0500 Subject: [PATCH 02/32] fix pre-commit issues * return data from read function --- data_validation.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data_validation.py b/data_validation.py index 70ecc94..a5e1ae6 100644 --- a/data_validation.py +++ b/data_validation.py @@ -5,23 +5,23 @@ @task(retries=2, retry_delay_seconds=10) -def read_run(client, uid, dry_run=dry_run): +def read_run(client, uid, dry_run=False): logger = get_run_logger() if dry_run: logger.info(f"Dry run: not reading {uid}") return None - run = client["tst"]["raw"][uid] + run = client["tst"]["raw"][uid] logger.info(f"Validating uid {run.start['uid']}") return run @task(retries=2, retry_delay_seconds=10) def read_stream(run, stream): - stream_data = run[stream].read() + return run[stream].read() @flow -def read_all_streams(uid, beamline_acronym, dry_run=dry_run): +def read_all_streams(uid, beamline_acronym, dry_run=False): logger = get_run_logger() api_key = Secret.load("tiled-tst-api-key").get() cl = from_profile("nsls2", api_key=api_key) @@ -33,7 +33,7 @@ def read_all_streams(uid, beamline_acronym, dry_run=dry_run): for stream in run: logger.info(f"{stream}:") stream_start_time = ttime.monotonic() - stream_data = read_stream(run, stream) + stream_data = read_stream(run, stream) # noqa: F841 stream_elapsed_time = ttime.monotonic() - stream_start_time logger.info(f"{stream} elapsed_time = {stream_elapsed_time}") logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") @@ -42,5 +42,5 @@ def read_all_streams(uid, beamline_acronym, dry_run=dry_run): @flow -def data_validation(uid, dry_run=dry_run): +def data_validation(uid, dry_run=False): read_all_streams(uid, beamline_acronym="tst", dry_run=dry_run) From 86f12632e0f3019c2005aa603fced60fde70efb4 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Fri, 20 Feb 2026 14:50:55 -0500 Subject: [PATCH 03/32] fix pre-commit issues --- end_of_run_workflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 391dc66..60e8deb 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -5,7 +5,7 @@ @task -def log_completion(dry_run=dry_run): +def log_completion(dry_run=False): logger = get_run_logger() logger.info(f"Complete! dry_run:{dry_run}") From 562dd41c270adb35ed052e1b79f186514cf41133 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 12:08:59 -0500 Subject: [PATCH 04/32] restructure and add api_key parameter * enable testing to run workflows for CI, which will use production Tiled but github actions, which will make using Prefect Cloud impractical --- data_validation.py | 23 +++++++++++++---------- end_of_run_workflow.py | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/data_validation.py b/data_validation.py index a5e1ae6..37eb05b 100644 --- a/data_validation.py +++ b/data_validation.py @@ -5,11 +5,13 @@ @task(retries=2, retry_delay_seconds=10) -def read_run(client, uid, dry_run=False): +def read_run(client, uid, api_key=None): logger = get_run_logger() - if dry_run: - logger.info(f"Dry run: not reading {uid}") - return None + try: + if not api_key: + api_key = Secret.load("tiled-tst-api-key").get() + finally: + cl = from_profile("nsls2", api_key=api_key) run = client["tst"]["raw"][uid] logger.info(f"Validating uid {run.start['uid']}") return run @@ -21,11 +23,12 @@ def read_stream(run, stream): @flow -def read_all_streams(uid, beamline_acronym, dry_run=False): +def read_all_streams(uid, beamline_acronym, dry_run=False, api_key=None): logger = get_run_logger() - api_key = Secret.load("tiled-tst-api-key").get() - cl = from_profile("nsls2", api_key=api_key) - run = read_run(cl, uid, dry_run) + if dry_run: + logger.info(f"Dry run: not creating Tiled client") + else: + run = read_run(cl, uid, api_key) start_time = ttime.monotonic() if dry_run: logger.info(f"Dry run: not reading streams from uid {uid}") @@ -42,5 +45,5 @@ def read_all_streams(uid, beamline_acronym, dry_run=False): @flow -def data_validation(uid, dry_run=False): - read_all_streams(uid, beamline_acronym="tst", dry_run=dry_run) +def data_validation(uid, dry_run=False, api_key=None): + read_all_streams(uid, beamline_acronym="tst", dry_run=dry_run, api_key=api_key) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 60e8deb..fe3b9d6 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -11,10 +11,10 @@ def log_completion(dry_run=False): @flow -def end_of_run_workflow(stop_doc, dry_run=False): +def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): uid = stop_doc["run_start"] # hello_world() - data_validation(uid, return_state=True, dry_run=dry_run) + data_validation(uid, return_state=True, dry_run=dry_run, api_key=api_key) get_other_docs(uid, dry_run=dry_run) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) log_completion(dry_run=dry_run) From 4c4a2729fe0621d2de03e1d6d097c5295e14e12c Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 12:15:06 -0500 Subject: [PATCH 05/32] pre-commit fixes --- data_validation.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/data_validation.py b/data_validation.py index 37eb05b..a59576f 100644 --- a/data_validation.py +++ b/data_validation.py @@ -5,14 +5,12 @@ @task(retries=2, retry_delay_seconds=10) -def read_run(client, uid, api_key=None): +def read_run(uid, api_key=None): logger = get_run_logger() - try: - if not api_key: - api_key = Secret.load("tiled-tst-api-key").get() - finally: - cl = from_profile("nsls2", api_key=api_key) - run = client["tst"]["raw"][uid] + if not api_key: + api_key = Secret.load("tiled-tst-api-key").get() + cl = from_profile("nsls2", api_key=api_key) + run = cl["tst"]["raw"][uid] logger.info(f"Validating uid {run.start['uid']}") return run @@ -26,9 +24,9 @@ def read_stream(run, stream): def read_all_streams(uid, beamline_acronym, dry_run=False, api_key=None): logger = get_run_logger() if dry_run: - logger.info(f"Dry run: not creating Tiled client") + logger.info("Dry run: not creating Tiled client") else: - run = read_run(cl, uid, api_key) + run = read_run(uid, api_key) start_time = ttime.monotonic() if dry_run: logger.info(f"Dry run: not reading streams from uid {uid}") From bd70197bc4ac4a24ecbc5706ca58035dcc8f734e Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 24 Feb 2026 17:52:39 -0500 Subject: [PATCH 06/32] add test feature and environment --- pixi.lock | 2648 ++++++++++++++++++++++++++++++++++++++++++++++++++++- pixi.toml | 6 + 2 files changed, 2643 insertions(+), 11 deletions(-) diff --git a/pixi.lock b/pixi.lock index 983a60f..d1b7fc4 100644 --- a/pixi.lock +++ b/pixi.lock @@ -384,6 +384,389 @@ environments: - pypi: https://files.pythonhosted.org/packages/b2/34/810885dca784b02e5ad0f71ced9c06ba5e9d33a6493bc886f7470ce82a39/python_barcode-0.16.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + test: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_x86_64-microarch-level-1-3_x86_64.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.22.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/apprise-1.9.7-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-lifespan-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-exit-stack-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_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/noarch/attrs-25.4.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-52-py313hd3cbb54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.6-hb9c0fe4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.9-h841be55_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.10-hf621c6d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.1-h3ca20c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.14.0-ha25ca29_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.5-h9b5df67_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.37.2-hb153662_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-hc9b1074_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py313h843e2db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bluesky-tiled-plugins-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/coolname-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/croniter-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dateparser-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/event-model-1.23.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fakeredis-2.34.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.131.0-hb6d04c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.131.0-pyhcf101f3_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_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_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-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.2-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/griffe-1.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-ha5ea40c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.7.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-humanize-extension-0.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json-merge-patch-0.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h3e112c1_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.1-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.1-h53684a4_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.1-h635bf11_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.1-hb4dd7c2_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - 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.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-h9d11ab5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.0-h1d1128b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-h9692893_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.46.0-py313hdd307be_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mongoquery-1.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py313h7037e92_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.17.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ndindex-1.10.1-py313h7033f15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.63.1-py313h5dce7c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.5-py313hf6604e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.39.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.60b1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.60b1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.39.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.60b1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-hbb90d81_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.7-py313h541fbb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.2.0-py313h843e2db_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prefect-3.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/py-key-value-aio-0.3.0-pyh0f3dad7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/py-key-value-shared-0.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.1-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.11.0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydocket-0.17.3-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.0.0-py313h9545597_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-socks-2.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-uv-0.10.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readchar-4.2.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.19-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.0-ha63dd3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sparse-0.18.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.47-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stamina-25.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/time-machine-2.19.0-py313h54dd161_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.19.2-pyhef33e25_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.19.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.19.2-h6e3bb38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py313h5d5ffb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.10.5-h6dd6661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.41.0-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.1.1-py313h5c7d99a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py313h54dd161_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/whenever-0.8.9-py313h843e2db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py313h07c4f96_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda + - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/1c/3197e50a98df530bfc61c592449a1575642bb9903df5c286e39aec794778/fabio-2025.10.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/50/3e/f0dba6333dbe5c5a338d1466939c8733256a5f6d7e10615b8f96a90277e5/fast_histogram-0.14-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a3/4b/d67eedaed19def5967fade3297fed8161b25ba94699efc124b14fb68cdbc/fonttools-4.61.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d9/69/4402ea66272dacc10b298cca18ed73e1c0791ff2ae9ed218d3859f9698ac/h5py-3.15.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ed/2f/1046d464ad1db29a4f6c70ba4e19b39baa8a6542c719eaa4e765108f07f1/hdf5plugin-6.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f3/c2/a34ff5315634ba75d385392ce7b5e96b4da16872b35b6960945b43a31929/lixtools-2023.1.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b6/c8/37e45d4151e3902c91318991f05ebd9f8c13198c22667613beb11125e555/py4xs-2022.1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/34/810885dca784b02e5ad0f71ced9c06ba5e9d33a6493bc886f7470ce82a39/python_barcode-0.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -392,6 +775,20 @@ packages: purls: [] size: 2562 timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 28948 + timestamp: 1770939786096 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 @@ -457,6 +854,22 @@ packages: - pkg:pypi/alembic?source=hash-mapping size: 183092 timestamp: 1768123347737 +- conda: https://conda.anaconda.org/conda-forge/noarch/alembic-1.18.4-pyhcf101f3_0.conda + sha256: 83fc576dbcd59427f55be9623e1b101a1607ed9b4dc8633d86ada30c6ec1cf1d + md5: c45fa7cf996b766cb63eadf3c3e6408a + depends: + - python >=3.10 + - sqlalchemy >=1.4.23 + - mako + - typing_extensions >=4.12 + - tomli + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/alembic?source=hash-mapping + size: 184763 + timestamp: 1770806831769 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda sha256: cc9fbc50d4ee7ee04e49ee119243e6f1765750f0fd0b4d270d5ef35461b643b1 md5: 52be5139047efadaeeb19c6a5103f92a @@ -529,6 +942,25 @@ packages: - pkg:pypi/apprise?source=hash-mapping size: 1592231 timestamp: 1765230082792 +- conda: https://conda.anaconda.org/conda-forge/noarch/apprise-1.9.7-pyhcf101f3_0.conda + sha256: 94b87cf2589e62d9a9a21f691b63dac9d34ee6db0292d8225b66b8d6a30194a9 + md5: fc8990282c54276d1ceff96982967667 + depends: + - python >=3.10 + - certifi + - requests + - requests-oauthlib + - click >=5.0 + - markdown + - pyyaml + - python-tzdata + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/apprise?source=hash-mapping + size: 1601167 + timestamp: 1769124855858 - conda: https://conda.anaconda.org/conda-forge/noarch/asgi-lifespan-2.1.0-pyhd8ed1ab_1.conda sha256: 50b0bb2d6feb62a7083f25e3ef4ea2b13ca44c24401dc1bb2dcedc58c213ace5 md5: fcc81bc91baba7c858406963e720196d @@ -579,6 +1011,21 @@ packages: - pkg:pypi/asyncpg?source=hash-mapping size: 751837 timestamp: 1764061001196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/asyncpg-0.31.0-py313h54dd161_1.conda + sha256: 7bc4874a25ab5e4508db7a885d47716d62e2a0a9d592882f157564bfd8da6182 + md5: c65459a6764b53107358faed99c042a7 + depends: + - python + - async-timeout >=4.0.3 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/asyncpg?source=hash-mapping + size: 751821 + timestamp: 1768733524478 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 sha256: 26ab9386e80bf196e51ebe005da77d57decf6d989b4f34d96130560bc133479c md5: 6b889f174df1e0f816276ae69281af4d @@ -652,6 +1099,24 @@ packages: - pkg:pypi/awkward?source=hash-mapping size: 468250 timestamp: 1765827072331 +- conda: https://conda.anaconda.org/conda-forge/noarch/awkward-2.9.0-pyhcf101f3_0.conda + sha256: e92d541cc405fec08b46cb35c36eedf9dc04df7bec5e6aaf0e1ea8f11b503d83 + md5: 93fcf05b2824e06745272380bc7a7dfc + depends: + - python >=3.10 + - awkward-cpp ==52 + - importlib-metadata >=4.13.0 + - numpy >=1.18.0 + - packaging + - typing_extensions >=4.1.0 + - fsspec >=2022.11.0 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/awkward?source=hash-mapping + size: 471272 + timestamp: 1770661007420 - conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-51-py313hd3cbb54_0.conda sha256: 602f387f7e60e539e85c9b70674331af89f6b77d2b9710e18b5fc7b23b9dd535 md5: d7613597379bb5ac67aae574962e6caa @@ -669,6 +1134,23 @@ packages: - pkg:pypi/awkward-cpp?source=hash-mapping size: 617996 timestamp: 1765818232968 +- conda: https://conda.anaconda.org/conda-forge/linux-64/awkward-cpp-52-py313hd3cbb54_0.conda + sha256: 857c0dc555284bc51c72adebf99aa8b9529847c5ced25ea5711b1cdfac4e7d6a + md5: e2599c15b09b255b8a59be01ec743e68 + depends: + - python + - numpy >=1.21.3 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - _x86_64-microarch-level >=1 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/awkward-cpp?source=hash-mapping + size: 618125 + timestamp: 1770652056311 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda sha256: d9c5babed03371448bb0dc91a1573c80d278d1222a3b0accef079ed112e584f9 md5: bdd464b33f6540ed70845b946c11a7b8 @@ -685,6 +1167,22 @@ packages: purls: [] size: 133443 timestamp: 1764765235190 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.6-hb9c0fe4_1.conda + sha256: 84f9e2f83d9d93da551e0058c651015dd4bfd84256c6293db01130911c5e0f12 + md5: b1143a5b5a03ee174b3f3f7c49df3c09 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 133452 + timestamp: 1771494128397 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda sha256: f21d648349a318f4ae457ea5403d542ba6c0e0343b8642038523dd612b2a5064 md5: 3c3d02681058c3d206b562b2e3bc337f @@ -721,21 +1219,63 @@ packages: purls: [] size: 22272 timestamp: 1764593718823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h8b1a151_0.conda + sha256: 1838bdc077b77168416801f4715335b65e9223f83641a2c28644f8acd8f9db0e + md5: f16f498641c9e05b645fe65902df661a + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 22278 + timestamp: 1767790836624 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda sha256: a5b151db1c8373b6ca2dacea65bc8bda02791a43685eebfa4ea987bb1a758ca9 md5: 7b8e3f846353b75db163ad93248e5f9d depends: - libgcc >=14 - - libstdcxx >=14 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-io >=0.23.3,<0.23.4.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-checksums >=0.2.7,<0.2.8.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 58806 + timestamp: 1764675439822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.9-h841be55_2.conda + sha256: 179610f3c76238ca5fc4578384381bfd297e0ae1b96f6be52220c51f66b38131 + md5: 7e1ea1a67435a32e04305fda877acd1e + depends: + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 58801 + timestamp: 1771380394434 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.10-hf621c6d_0.conda + sha256: c61272aaff8aec10bb6a2afa62a7181e4ab00f4577350a8023431c74b9e91a72 + md5: 977e7d3cba1ef84fc088869b292672fe + depends: + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-io >=0.23.3,<0.23.4.0a0 - aws-c-common >=0.12.6,<0.12.7.0a0 - - aws-checksums >=0.2.7,<0.2.8.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-compression >=0.3.2,<0.3.3.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 58806 - timestamp: 1764675439822 + size: 225671 + timestamp: 1771421336421 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda sha256: 5527224d6e0813e37426557d38cb04fed3753d6b1e544026cfbe2654f5e556be md5: 3028f20dacafc00b22b88b324c8956cc @@ -765,6 +1305,20 @@ packages: purls: [] size: 181361 timestamp: 1765168239856 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.26.1-h3ca20c3_1.conda + sha256: 4cf207817f480b7c663c30e7245424228597d54e045226cea4eeb92c786bd506 + md5: c9aa75692f24cce182c3ecd001a1a595 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - s2n >=1.7.0,<1.7.1.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 181640 + timestamp: 1771374452365 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda sha256: fb102b0346a1f5c4f3bb680ec863c529b0333fa4119d78768c3e8a5d1cc2c812 md5: 6a653aefdc5d83a4f959869d1759e6e3 @@ -779,6 +1333,20 @@ packages: purls: [] size: 216454 timestamp: 1764681745427 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.14.0-ha25ca29_1.conda + sha256: 2e9f2fc6ca8aa993b4962dbae711df69e8091b6a691bdcef8c8398dc81f923d7 + md5: a827b063719f5aac504d06ac77cc3125 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 220029 + timestamp: 1771458032786 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda sha256: 8de2292329dce2fd512413d83988584d616582442a07990f67670f9bc793a98b md5: 3689a4290319587e3b54a4f9e68f70c8 @@ -797,6 +1365,24 @@ packages: purls: [] size: 151382 timestamp: 1765174166541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.5-h9b5df67_3.conda + sha256: 4ec226a26aa1971d739f8600310b98f6ce8c24b93d88f8acb8387e9de0f4361e + md5: 1f130ac4eb7f1dea1ae4b5f53683e3aa + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - openssl >=3.5.5,<4.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-auth >=0.9.6,<0.9.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 151354 + timestamp: 1771586299371 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda sha256: 9d62c5029f6f8219368a8665f0a549da572dc777f52413b7d75609cacdbc02cc md5: c7e3e08b7b1b285524ab9d74162ce40b @@ -809,6 +1395,18 @@ packages: purls: [] size: 59383 timestamp: 1764610113765 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h8b1a151_0.conda + sha256: 09472dd5fa4473cffd44741ee4c1112f2c76d7168d1343de53c2ad283dc1efa6 + md5: f8e1bcc5c7d839c5882e94498791be08 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 101435 + timestamp: 1771063496927 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda sha256: a8693d2e06903a09e98fe724ed5ec32e7cd1b25c405d754f0ab7efb299046f19 md5: 68da5b56dde41e172b7b24f071c4b392 @@ -842,6 +1440,27 @@ packages: purls: [] size: 408804 timestamp: 1765200263609 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.37.2-hb153662_3.conda + sha256: 2bad7d8bca75405a3fdac0660a2b5ed9d1c1d27177061f65375a6cfb79c6a46d + md5: c3bb19fc041068029018ab183baa8982 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - aws-c-event-stream >=0.5.9,<0.5.10.0a0 + - aws-c-mqtt >=0.14.0,<0.14.1.0a0 + - aws-c-cal >=0.9.13,<0.9.14.0a0 + - aws-c-s3 >=0.11.5,<0.11.6.0a0 + - aws-c-auth >=0.9.6,<0.9.7.0a0 + - aws-c-io >=0.26.1,<0.26.2.0a0 + - aws-c-http >=0.10.10,<0.10.11.0a0 + - aws-c-sdkutils >=0.2.4,<0.2.5.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 410131 + timestamp: 1771591557961 - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda sha256: e0d81b7dd6d054d457a1c54d17733d430d96dc5ca9b2ca69a72eb41c3fc8c9bf md5: 937d1d4c233adc6eeb2ac3d6e9a73e53 @@ -859,6 +1478,23 @@ packages: purls: [] size: 3472674 timestamp: 1765257107074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-hc9b1074_13.conda + sha256: de21a4c8c2cb7734389232ade478199390dd16fc6e3acee18dbefeac3e22d59c + md5: e7b0b55965db0d2b85c9ae1397d14012 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + - libcurl >=8.18.0,<9.0a0 + - aws-c-common >=0.12.6,<0.12.7.0a0 + - aws-crt-cpp >=0.37.2,<0.37.3.0a0 + - aws-c-event-stream >=0.5.9,<0.5.10.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3472435 + timestamp: 1771598202437 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda sha256: cba633571e7368953520a4f66dc74c3942cc12f735e0afa8d3d5fc3edf35c866 md5: 1d4e0d37da5f3c22ecd44033f673feba @@ -873,6 +1509,20 @@ packages: purls: [] size: 348231 timestamp: 1760926677260 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + sha256: 321d1070905e467b6bc6f5067b97c1868d7345c272add82b82e08a0224e326f0 + md5: 5492abf806c45298ae642831c670bba0 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 348729 + timestamp: 1768837519361 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda sha256: fc1df5ea2595f4f16d0da9f7713ce5fed20cb1bfc7fb098eda7925c7d23f0c45 md5: 4e921d9c85e6559c60215497978b3cdb @@ -887,6 +1537,20 @@ packages: purls: [] size: 249684 timestamp: 1761066654684 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + sha256: 2beb6ae8406f946b8963a67e72fe74453e1411c5ae7e992978340de6c512d13c + md5: 68bfb556bdf56d56e9f38da696e752ca + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 250511 + timestamp: 1770344967948 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.15.0-h2a74896_1.conda sha256: 58879f33cd62c30a4d6a19fd5ebc59bd0c4560f575bd02645d93d342b6f881d2 md5: ffd553ff98ce5d74d3d89ac269153149 @@ -901,6 +1565,20 @@ packages: purls: [] size: 576406 timestamp: 1761080005291 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + sha256: cef75b91bdd5a65c560b501df78905437cc2090a64b4c5ecd7da9e08e9e9af7c + md5: 939d9ce324e51961c7c4c0046733dbb7 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + purls: [] + size: 579825 + timestamp: 1770321459546 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.11.0-h3d7a050_1.conda sha256: eb590e5c47ee8e6f8cc77e9c759da860ae243eed56aceb67ce51db75f45c9a50 md5: 89985ba2a3742f34be6aafd6a8f3af8c @@ -917,6 +1595,22 @@ packages: purls: [] size: 149620 timestamp: 1761066643066 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + sha256: ef7d1cae36910b21385d0816f8524a84dee1513e0306927e41a6bd32b5b9a0d0 + md5: 6400f73fe5ebe19fe7aca3616f1f1de7 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libxml2 + - libxml2-16 >=2.14.6 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 150405 + timestamp: 1770240307002 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.13.0-hf38f1be_1.conda sha256: 9f3d0f484e97cef5f019b7faef0c07fb7ee6c584e3a6e2954980f440978a365e md5: f10b9303c7239fbce3580a60a92bcf97 @@ -932,6 +1626,21 @@ packages: purls: [] size: 299198 timestamp: 1761094654852 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + sha256: 55aa8ad5217d358e0ccf4a715bd1f9bafef3cd1c2ea4021f0e916f174c20f8e3 + md5: 6d10339800840562b7dad7775f5d2c16 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - libgcc >=14 + - libstdcxx >=14 + license: MIT + license_family: MIT + purls: [] + size: 302524 + timestamp: 1770384269834 - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda sha256: 9552afbec37c4d8d0e83a5c4c6b3c7f4b8785f935094ce3881e0a249045909ce md5: d9e90792551a527200637e23a915dd79 @@ -1001,6 +1710,23 @@ packages: - pkg:pypi/bluesky-tiled-plugins?source=hash-mapping size: 49419 timestamp: 1767455409495 +- conda: https://conda.anaconda.org/conda-forge/noarch/bluesky-tiled-plugins-2.0.2-pyhd8ed1ab_0.conda + sha256: 75bab8ba15fd3898ff61a1a0fc1f4b73d1a29e93b44d7bfed49b6b1e6e318c40 + md5: e7c9fcd641142d8f109cf321812a156e + depends: + - dask-core + - event-model + - mongoquery + - python >=3.10 + - pytz + - tiled-client >=0.2.0 + - tzlocal + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/bluesky-tiled-plugins?source=hash-mapping + size: 50277 + timestamp: 1771046732966 - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.1-pyhd8ed1ab_0.conda sha256: f76ff3ce23987f68f1a09ce9f56c81a417e47826a1beb34fdc121a452edd9df8 md5: f301f72474b91f1f83d42bcc7d81ce09 @@ -1022,6 +1748,27 @@ packages: - pkg:pypi/bokeh?source=hash-mapping size: 5027028 timestamp: 1762557204752 +- conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda + sha256: 5e1aaaa2d193c1d4acea261b8cf822ee84cb59b4cf8c26ad40ca172584ab2a85 + md5: 0b830ba4947de6d60dd9d96827a1cacb + depends: + - contourpy >=1.2 + - jinja2 >=2.9 + - narwhals >=1.13 + - numpy >=1.16 + - packaging >=16.8 + - pandas >=1.2 + - pillow >=7.1.0 + - python >=3.10 + - pyyaml >=3.10 + - tornado >=6.2 + - xyzservices >=2021.09.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/bokeh?source=hash-mapping + size: 4713032 + timestamp: 1769414672158 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda sha256: dadec2879492adede0a9af0191203f9b023f788c18efd45ecac676d424c458ae md5: 6c4d3597cf43f3439a51b2b13e29a4ba @@ -1050,6 +1797,17 @@ packages: purls: [] size: 260341 timestamp: 1757437258798 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 260182 + timestamp: 1771350215188 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e md5: 920bb03579f15389b9e512095ad995b7 @@ -1076,6 +1834,21 @@ packages: purls: [] size: 352332 timestamp: 1764291444176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda + sha256: d8cd431cb41ca7f54105833bcfa237952c0c56fed2aa49ca20722ad9864b05d5 + md5: f3ac2d8b1b3ac0ba4e42050279ef6ce8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.2,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 353379 + timestamp: 1769992072151 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda sha256: b5974ec9b50e3c514a382335efa81ed02b05906849827a34061c496f4defa0b2 md5: bddacf101bb4dd0e51811cb69c7790e2 @@ -1096,6 +1869,17 @@ packages: - pkg:pypi/cachetools?source=hash-mapping size: 16867 timestamp: 1765829705483 +- conda: https://conda.anaconda.org/conda-forge/noarch/cachetools-6.2.6-pyhd8ed1ab_0.conda + sha256: 040e2feb74c5d85881d727a7ac5d707eccf9e6499e6a1608ddea8bb9e59c5ed1 + md5: 9e5f8e2fe9770c4730163d2e289adb53 + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cachetools?source=hash-mapping + size: 17249 + timestamp: 1769721401289 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a md5: bb6c4808bfa69d6f7f6b07e5846ced37 @@ -1212,6 +1996,22 @@ packages: - pkg:pypi/contourpy?source=hash-mapping size: 297459 timestamp: 1762525479137 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda + sha256: 7f86eb205d2d7fcf2c82654a08c6a240623ac34cb406206b4b1f1afa5cda8e49 + md5: 33639459bc29437315d4bff9ed5bc7a7 + depends: + - numpy >=1.25 + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=compressed-mapping + size: 321850 + timestamp: 1769155964333 - conda: https://conda.anaconda.org/conda-forge/noarch/coolname-2.2.0-pyhd8ed1ab_0.conda sha256: 1e1651c5e2a6ea6488c204f2310da3a281c872db1c9be4f879511790662dadcb md5: 25aac2e9aa64518428dcd7b4aa872808 @@ -1223,6 +2023,17 @@ packages: - pkg:pypi/coolname?source=hash-mapping size: 38169 timestamp: 1673306091802 +- conda: https://conda.anaconda.org/conda-forge/noarch/coolname-2.2.0-pyhd8ed1ab_1.conda + sha256: 005f59fbfb5d614bd1df3d1e13e601c3e524dd149ff3b4441af6afd194bbf820 + md5: 54978dfe7de7726b2ca6514fd881f020 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/coolname?source=hash-mapping + size: 39462 + timestamp: 1769743064343 - conda: https://conda.anaconda.org/conda-forge/noarch/croniter-4.0.0-pyhd8ed1ab_0.conda sha256: 9e4929fcc700989168da0b9d3e1fb1bd7a5b31385eefab0b2c750b867ffc49c5 md5: c549430fe4452a465207da7af4e93e82 @@ -1254,6 +2065,24 @@ packages: - pkg:pypi/cryptography?source=hash-mapping size: 1723198 timestamp: 1764805305302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda + sha256: 553f4ee18ad755d690ad63fa8e00d89598ecc4945ec046a8af808ddee5bb1ca0 + md5: 964f25e322b16cae073da8f5b7adf123 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.14 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=compressed-mapping + size: 1718868 + timestamp: 1770772833949 - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl name: cycler version: 0.12.1 @@ -1282,6 +2111,21 @@ packages: - pkg:pypi/cytoolz?source=hash-mapping size: 590435 timestamp: 1760905824293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_2.conda + sha256: fd33f531288fb08afef72a65414d29caefbba31cb398533534794475af35b1b3 + md5: 7e7e3c5a8a28c6b8eb430183e0554adf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - toolz >=0.10.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/cytoolz?source=compressed-mapping + size: 620281 + timestamp: 1771855841837 - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.12.0-pyhcf101f3_0.conda sha256: 16c6774ca5235e2adb55822f4a27dc7dc0b453f822ef4adcb3637f28680a8eb9 md5: 94d36804598479f9eafa9c973902280e @@ -1304,6 +2148,28 @@ packages: purls: [] size: 11329 timestamp: 1765559052366 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_1.conda + sha256: 12bbfcff238d56ea2f576a3c0f1074c84bdff3f3d1d522af99b471692bc0bfb8 + md5: 8826c749da19cdeff0a987411ba6dcd2 + depends: + - python >=3.10 + - dask-core >=2026.1.2,<2026.1.3.0a0 + - distributed >=2026.1.2,<2026.1.3.0a0 + - cytoolz >=0.11.2 + - lz4 >=4.3.2 + - numpy >=1.26 + - pandas >=2.0 + - bokeh >=3.1.0 + - jinja2 >=2.10.3 + - pyarrow >=16.0 + - python + constrains: + - openssl !=1.1.1e + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 11370 + timestamp: 1771422174009 - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.12.0-pyhcf101f3_1.conda sha256: f02b63259e8f927a7e38e818a8dd251a06bce3f3f853235b8886a3cb89e0dded md5: cc7b371edd70319942c802c7d828a428 @@ -1324,6 +2190,26 @@ packages: - pkg:pypi/dask?source=hash-mapping size: 1062442 timestamp: 1765558272352 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + sha256: c8500be32e2c75b10fd7a0664b0e5abc956dece18a54774a53f357aeabe9e1b6 + md5: b20e7ce9afd59036ab194f3d1e27edf5 + depends: + - python >=3.10 + - click >=8.1 + - cloudpickle >=3.0.0 + - fsspec >=2021.9.0 + - packaging >=20.0 + - partd >=1.4.0 + - pyyaml >=5.3.1 + - toolz >=0.12.0 + - importlib-metadata >=4.13.0 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dask?source=hash-mapping + size: 1063599 + timestamp: 1769829714443 - conda: https://conda.anaconda.org/conda-forge/noarch/dateparser-1.2.2-pyhd8ed1ab_0.conda sha256: 1af8502859dab5c953a7c248e83479619eba9a3385f5281c4a64f42fbfc861d8 md5: f7a7636abc623e0ef6128dcb153f4fe2 @@ -1339,6 +2225,21 @@ packages: - pkg:pypi/dateparser?source=hash-mapping size: 187828 timestamp: 1750962022198 +- conda: https://conda.anaconda.org/conda-forge/noarch/dateparser-1.3.0-pyhd8ed1ab_0.conda + sha256: b63361ea4bf1f960ebd562f719e8970491b30bb2c9101c216240a03b01081c8d + md5: c6b52555e1c8976713d1bc46d18bb52c + depends: + - python >=3.10 + - python-dateutil >=2.7.0 + - pytz >=2024.2 + - regex >=2024.9.11 + - tzlocal >=0.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dateparser?source=hash-mapping + size: 190866 + timestamp: 1770239654288 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda sha256: 8bb557af1b2b7983cf56292336a1a1853f26555d9c6cecf1e5b2b96838c9da87 md5: ce96f2f470d39bd96ce03945af92e280 @@ -1365,6 +2266,18 @@ packages: - pkg:pypi/deprecated?source=hash-mapping size: 15815 timestamp: 1761813872696 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda + sha256: 7d57a7b8266043ffb99d092ebc25e89a0a2490bed4146b9432c83c2c476fa94d + md5: 5498feb783ab29db6ca8845f68fa0f03 + depends: + - python >=3.10 + - wrapt <3,>=1.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/deprecated?source=compressed-mapping + size: 15896 + timestamp: 1768934186726 - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2025.12.0-pyhcf101f3_1.conda sha256: efaf699a2b8dc4bc23ed517184c7fa3182a9f9072a0e97566ea5a1c532916bee md5: 613cea9275c4773d0b53c879838ac0ad @@ -1395,6 +2308,36 @@ packages: - pkg:pypi/distributed?source=hash-mapping size: 844019 timestamp: 1765560702026 +- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_1.conda + sha256: 678869f02e4d01cb6ce6838d279ff43c161a7730a3a63fec0a85d3524961ab66 + md5: 3c155e2914169b807ebb4027a8c0999c + depends: + - python >=3.10 + - click >=8.0 + - cloudpickle >=3.0.0 + - cytoolz >=0.12.0 + - dask-core >=2026.1.2,<2026.1.3.0a0 + - jinja2 >=2.10.3 + - locket >=1.0.0 + - msgpack-python >=1.0.2 + - packaging >=20.0 + - psutil >=5.8.0 + - pyyaml >=5.4.1 + - sortedcontainers >=2.0.5 + - tblib >=1.6.0 + - toolz >=0.12.0 + - tornado >=6.2.0 + - urllib3 >=1.26.5 + - zict >=3.0.0 + - python + constrains: + - openssl !=1.1.1e + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/distributed?source=hash-mapping + size: 844804 + timestamp: 1771421764975 - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda sha256: ef1e7b8405997ed3d6e2b6722bd7088d4a8adf215e7c88335582e65651fb4e05 md5: d73fdc05f10693b518f52c994d748c19 @@ -1550,6 +2493,21 @@ packages: - pkg:pypi/fakeredis?source=hash-mapping size: 97212 timestamp: 1765921480665 +- conda: https://conda.anaconda.org/conda-forge/noarch/fakeredis-2.34.0-pyhcf101f3_0.conda + sha256: 9e13b689536f53f45a01e4895b3378fa217c0e102177de296f24acb7936c81b5 + md5: 401375df14c52a4be770bccd666194d1 + depends: + - python >=3.10,<4 + - redis-py >=4.3 + - sortedcontainers >=2.4.0,<3 + - typing-extensions >=4.7,<5 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fakeredis?source=hash-mapping + size: 98595 + timestamp: 1771306690595 - pypi: https://files.pythonhosted.org/packages/50/3e/f0dba6333dbe5c5a338d1466939c8733256a5f6d7e10615b8f96a90277e5/fast_histogram-0.14-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: fast-histogram version: '0.14' @@ -1577,6 +2535,25 @@ packages: purls: [] size: 4800 timestamp: 1767625503492 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.131.0-hb6d04c1_0.conda + sha256: 7658249d6346095f0b2491b65ef1de18c7452d51bb197535ec5cfa290519245e + md5: e03af0647bcd5ac037a016d098e7bed4 + depends: + - fastapi-core ==0.131.0 pyhcf101f3_0 + - email_validator + - fastapi-cli + - httpx + - jinja2 + - pydantic-settings + - pydantic-extra-types + - python-multipart + - uvicorn-standard + license: MIT + license_family: MIT + purls: + - pkg:pypi/fastapi?source=compressed-mapping + size: 4846 + timestamp: 1771849545075 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.20-pyhcf101f3_0.conda sha256: 284cae62b2061a9f423b468f720deeff98783eccff6bf3b32965afb21a53e349 md5: e2b464522fa49c5948c4da6c8d8ea9b3 @@ -1593,6 +2570,22 @@ packages: - pkg:pypi/fastapi-cli?source=compressed-mapping size: 18993 timestamp: 1766435117562 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.23-pyhcf101f3_0.conda + sha256: cb60fc8c96dcd2a6335914d4d6d7d5f5549c9e1ff4533be28ba699e648babf37 + md5: 442ec6511754418c87a84bc1dc0c5384 + depends: + - python >=3.10 + - rich-toolkit >=0.14.8 + - tomli >=2.0.0 + - typer >=0.15.1 + - uvicorn-standard >=0.15.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/fastapi-cli?source=compressed-mapping + size: 18920 + timestamp: 1771293215825 - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.128.0-pyhcf101f3_1.conda sha256: 8a5b4d04ceabd98e5e39e2c75a24e27010f0d429681fc6053663e33ede4e190e md5: 77831edf7b296b00b8b4a49257084330 @@ -1618,6 +2611,32 @@ packages: - pkg:pypi/fastapi?source=hash-mapping size: 84909 timestamp: 1767625503489 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-core-0.131.0-pyhcf101f3_0.conda + sha256: 2c5462b2744eff19ee16736e99f2f7b5b2f66eb5a723c24279173dde41e1f082 + md5: f83974f0c1332159df486e1f03ef0776 + depends: + - python >=3.10 + - annotated-doc >=0.0.2 + - starlette >=0.40.0,<1.0.0 + - typing_extensions >=4.8.0 + - typing-inspection >=0.4.2 + - pydantic >=2.7.0 + - python + constrains: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.8 + - httpx >=0.23.0,<1.0.0 + - jinja2 >=3.1.5 + - pydantic-extra-types >=2.0.0 + - pydantic-settings >=2.0.0 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fastapi?source=compressed-mapping + size: 85740 + timestamp: 1771849545074 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -1665,6 +2684,22 @@ packages: purls: [] size: 265599 timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda + sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c + md5: 867127763fbe935bab59815b6e0b7b5c + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 270705 + timestamp: 1771382710863 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 md5: fee5683a3f04bd15cbd8318b096a27ab @@ -1753,6 +2788,17 @@ packages: - pkg:pypi/fsspec?source=compressed-mapping size: 148116 timestamp: 1768000866082 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + sha256: 239b67edf1c5e5caed52cf36e9bed47cb21b37721779828c130e6b3fd9793c1b + md5: 496c6c9411a6284addf55c898d6ed8d7 + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=compressed-mapping + size: 148757 + timestamp: 1770387898414 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda sha256: f47222f58839bcc77c15f11a8814c1d8cb8080c5ca6ba83398a12b640fd3c85c md5: c379d67c686fb83475c1a6ed41cc41ff @@ -1769,6 +2815,22 @@ packages: purls: [] size: 572093 timestamp: 1761082340749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_1.conda + sha256: b2a6fb56b8f2d576a3ae5e6c57b2dbab91d52d1f1658bf1b258747ae25bb9fde + md5: 7eb4977dd6f60b3aaab0715a0ea76f11 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 575109 + timestamp: 1771530561157 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -1792,6 +2854,18 @@ packages: purls: [] size: 116337 timestamp: 1765221915390 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_1.conda + sha256: 441586fc577c5a3f2ad7bf83578eb135dac94fb0cb75cc4da35f8abb5823b857 + md5: b52b769cd13f7adaa6ccdc68ef801709 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi + - libgcc >=14 + - libglib 2.86.4 h6548e54_1 + license: LGPL-2.1-or-later + purls: [] + size: 214712 + timestamp: 1771863307416 - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 md5: ff862eebdfeb2fd048ae9dc92510baca @@ -1841,6 +2915,31 @@ packages: purls: [] size: 2417740 timestamp: 1765099199559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda + sha256: 48d4aae8d2f7dd038b8c2b6a1b68b7bca13fa6b374b78c09fcc0757fa21234a1 + md5: 341fc61cfe8efa5c72d24db56c776f44 + depends: + - __glibc >=2.17,<3.0.a0 + - adwaita-icon-theme + - cairo >=1.18.4,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.44.4,<3.0a0 + - gtk3 >=3.24.43,<4.0a0 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.7.3,<3.0a0 + - libgcc >=14 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.86.3,<3.0a0 + - librsvg >=2.60.0,<3.0a0 + - libstdcxx >=14 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + license: EPL-1.0 + license_family: Other + purls: [] + size: 2426455 + timestamp: 1769427102743 - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.0-py313h7033f15_0.conda sha256: 03b5ae741e63901bdb20f9fafac2176a05d5b16bd71b8bcb7148bb7a2999cace md5: 2b1cf80423628afd34b4c66b767d7f6b @@ -1856,6 +2955,21 @@ packages: - pkg:pypi/greenlet?source=hash-mapping size: 240282 timestamp: 1764863692472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.2-py313h5d5ffb9_0.conda + sha256: bef83cb6284c3332be5eb4129dce0cbe87a4c0f64cff3d6a0ded3dd5c6e673c2 + md5: 0199b03b39892320265af92b5e3e9093 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=hash-mapping + size: 254450 + timestamp: 1771658392272 - conda: https://conda.anaconda.org/conda-forge/noarch/griffe-1.15.0-pyhd8ed1ab_0.conda sha256: 7a42213d6a6dae486c56a835a107fc8704eabf686a2b95adde009e06848426cd md5: 0bc57a76679376b93a489824aa08c294 @@ -1908,6 +3022,49 @@ packages: purls: [] size: 5587108 timestamp: 1761327349586 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-ha5ea40c_7.conda + sha256: 67f187287d400d74e6cfe3daa676b1ca8a81973d1a50364c3a663d9f1e6ec8b4 + md5: f605332e1e4d9ff5c599933ae81db57d + depends: + - __glibc >=2.17,<3.0.a0 + - at-spi2-atk >=2.38.0,<3.0a0 + - atk-1.0 >=2.38.0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fontconfig >=2.17.1,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.16,<2.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 + - glib-tools + - harfbuzz >=12.3.2 + - hicolor-icon-theme + - libcups >=2.3.3,<2.4.0a0 + - libcups >=2.3.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - liblzma >=5.8.2,<6.0a0 + - libxkbcommon >=1.13.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.4,<2.0a0 + - wayland >=1.24.0,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxcomposite >=0.4.7,<1.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxdamage >=1.1.6,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + - xorg-libxi >=1.8.2,<2.0a0 + - xorg-libxinerama >=1.1.6,<1.2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 5571424 + timestamp: 1771540136457 - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b md5: 4d8df0b0db060d33c9a702ada998a8fe @@ -1974,6 +3131,26 @@ packages: purls: [] size: 2062122 timestamp: 1766937132307 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda + sha256: 92015faf283f9c0a8109e2761042cd47ae7a4505e24af42a53bc3767cb249912 + md5: d170a70fc1d5c605fcebdf16851bd54a + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - graphite2 >=1.3.14,<2.0a0 + - icu >=78.2,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libglib >=2.86.3,<3.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 2035859 + timestamp: 1769445400168 - pypi: https://files.pythonhosted.org/packages/ed/2f/1046d464ad1db29a4f6c70ba4e19b39baa8a6542c719eaa4e765108f07f1/hdf5plugin-6.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: hdf5plugin version: 6.0.0 @@ -2002,6 +3179,14 @@ packages: purls: [] size: 13841 timestamp: 1605162808667 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda + sha256: 6d7e6e1286cb521059fe69696705100a03b006efb914ffe82a2ae97ecbae66b7 + md5: 129e404c5b001f3ef5581316971e3ea0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 17625 + timestamp: 1771539597968 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -2142,6 +3327,17 @@ packages: - pkg:pypi/importlib-resources?source=hash-mapping size: 33781 timestamp: 1736252433366 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + sha256: e1a9e3b1c8fe62dc3932a616c284b5d8cbe3124bbfbedcf4ce5c828cb166ee19 + md5: 9614359868482abba1bd15ce465e3c42 + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/iniconfig?source=compressed-mapping + size: 13387 + timestamp: 1760831448842 - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda sha256: 5a4e3a01f626c8de15ddada622d364e94ff28e8d6bdedf1665442ef03a4e0140 md5: 3a804714ed59be1969ffca10f703ec2a @@ -2273,6 +3469,22 @@ packages: purls: [] size: 1370023 timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 + depends: + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1386730 + timestamp: 1769769569681 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 @@ -2299,6 +3511,19 @@ packages: purls: [] size: 730831 timestamp: 1766513089214 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 + md5: 12bd9a3f089ee6c9266a37dab82afabd + depends: + - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 725507 + timestamp: 1770267139900 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -2326,6 +3551,21 @@ packages: purls: [] size: 1310612 timestamp: 1750194198254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20260107.1-cxx17_h7b12aa8_0.conda + sha256: a7a4481a4d217a3eadea0ec489826a69070fcc3153f00443aa491ed21527d239 + md5: 6f7b4302263347698fd24565fbf11310 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1384817 + timestamp: 1770863194876 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-22.0.0-hb6ed5f4_6_cpu.conda build_number: 6 sha256: bab5fcb86cf28a3de65127fbe61ed9194affc1cf2d9b60a9e09af8a8b96b93e3 @@ -2364,6 +3604,44 @@ packages: purls: [] size: 6324546 timestamp: 1765381265473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.1-h3e112c1_2_cpu.conda + build_number: 2 + sha256: f887f3c186bf1bbcc0309b24304c0f01265ff4368c7aedbfbb0190f54be68dcc + md5: f5c13f8872a5b4450e95411f7bd18135 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.37.2,<0.37.3.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libgcc >=14 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libopentelemetry-cpp >=1.21.0,<1.22.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.2.2,<2.2.3.0a0 + - snappy >=1.2.2,<1.3.0a0 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 6478195 + timestamp: 1771620755302 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-22.0.0-h635bf11_6_cpu.conda build_number: 6 sha256: b7e013502eb6dbb59bf58c34b83ed4e7bbcc32ee37600016d862f0bb21a6dc5a @@ -2379,6 +3657,21 @@ packages: purls: [] size: 585860 timestamp: 1765381484672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.1-h635bf11_2_cpu.conda + build_number: 2 + sha256: 9a63753b04f9f3ed69b9c4fd6cf8717aa4043cef000fe62c51bab1df5937815d + md5: b3b15f7f4a368d9e542ca37e739ff5d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 h3e112c1_2_cpu + - libarrow-compute 23.0.1 h53684a4_2_cpu + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 609103 + timestamp: 1771620999090 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-22.0.0-h8c2c5c3_6_cpu.conda build_number: 6 sha256: 0cd08dd11263105e2bf45514e08f8e4a59fac41a80a82f17540e047242835872 @@ -2396,6 +3689,23 @@ packages: purls: [] size: 2973397 timestamp: 1765381343806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.1-h53684a4_2_cpu.conda + build_number: 2 + sha256: 20816c7bb509793d9dac5d9463a99f59dab0f9c07a035614e1b656fba2ff17ab + md5: d57c916f0036b8c29f99924e62a29a2b + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 h3e112c1_2_cpu + - libgcc >=14 + - libre2-11 >=2025.11.5 + - libstdcxx >=14 + - libutf8proc >=2.11.3,<2.12.0a0 + - re2 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 3007528 + timestamp: 1771620838524 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-22.0.0-h635bf11_6_cpu.conda build_number: 6 sha256: d0321d8d82ccc55557ccb3119174179de3f282df68a6efe60f9c523bbf242a1f @@ -2413,6 +3723,23 @@ packages: purls: [] size: 584952 timestamp: 1765381575560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.1-h635bf11_2_cpu.conda + build_number: 2 + sha256: 490cffcd51f7f9f00282eca6e022b870485c8fea80560040a7224de39b1c07f4 + md5: 1213e3cebce15e93ed92105a47178168 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 h3e112c1_2_cpu + - libarrow-acero 23.0.1 h635bf11_2_cpu + - libarrow-compute 23.0.1 h53684a4_2_cpu + - libgcc >=14 + - libparquet 23.0.1 h7376487_2_cpu + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 607788 + timestamp: 1771621108601 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-22.0.0-h3f74fd7_6_cpu.conda build_number: 6 sha256: a343378e20aaa27e955c1f84394f00668458b69f6eaf7efcf4b21a3f8f10e02a @@ -2432,6 +3759,25 @@ packages: purls: [] size: 487167 timestamp: 1765381605708 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.1-hb4dd7c2_2_cpu.conda + build_number: 2 + sha256: dbd41f7946bbbbc336d984587b0370ef595134aeaa2c2e851cb79a4a5136abc2 + md5: b9ba37f40b02eecf9701527650c50b0e + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 h3e112c1_2_cpu + - libarrow-acero 23.0.1 h635bf11_2_cpu + - libarrow-dataset 23.0.1 h635bf11_2_cpu + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 522148 + timestamp: 1771621144990 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda build_number: 5 sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c @@ -2511,6 +3857,20 @@ packages: purls: [] size: 20440 timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda + sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c + md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 4518030 + timestamp: 1770902209173 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55 md5: d4a250da4737ee127fb1fa6452a9002e @@ -2542,6 +3902,23 @@ packages: purls: [] size: 462942 timestamp: 1767821743793 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda + sha256: c84e8dccb65ad5149c0121e4b54bdc47fa39303fd5f4979b8c44bb51b39a369b + md5: 1707cdd636af2ff697b53186572c9f77 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=14 + - libnghttp2 >=1.67.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 463621 + timestamp: 1770892808818 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -2634,6 +4011,30 @@ packages: purls: [] size: 76643 timestamp: 1763549731408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 + md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.7.4.* + license: MIT + license_family: MIT + purls: [] + size: 76798 + timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + size: 58592 + timestamp: 1769456073053 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 md5: 35f29eec58405aaf55e01cb470d8c26a @@ -2682,6 +4083,20 @@ packages: purls: [] size: 1042798 timestamp: 1765256792743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 + md5: 0aa00f03f9e39fb9876085dee11a85d4 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1041788 + timestamp: 1771378212382 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda sha256: 5f07f9317f596a201cc6e095e5fc92621afca64829785e483738d935f8cab361 md5: 5a68259fac2da8f2ee6f7bfe49c9eb8b @@ -2692,6 +4107,16 @@ packages: purls: [] size: 27256 timestamp: 1765256804124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 + md5: d5e96b1ed75ca01906b3d2469b4ce493 + depends: + - libgcc 15.2.0 he0feb66_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 27526 + timestamp: 1771378224552 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda sha256: 245be793e831170504f36213134f4c24eedaf39e634679809fd5391ad214480b md5: 88c1c66987cd52a712eea89c27104be6 @@ -2726,6 +4151,18 @@ packages: purls: [] size: 27215 timestamp: 1765256845586 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee + md5: 9063115da5bc35fdc3e1002e69b9ef6e + depends: + - libgfortran5 15.2.0 h68bc16d_18 + constrains: + - libgfortran-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 27523 + timestamp: 1771378269450 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda sha256: d0e974ebc937c67ae37f07a28edace978e01dc0f44ee02f29ab8a16004b8148b md5: 39183d4e0c05609fd65f130633194e37 @@ -2739,6 +4176,19 @@ packages: purls: [] size: 2480559 timestamp: 1765256819588 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 + md5: 646855f357199a12f02a87382d429b75 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.2.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 2482475 + timestamp: 1771378241063 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d md5: 928b8be80851f5d8ffb016f9c81dae7a @@ -2777,6 +4227,22 @@ packages: purls: [] size: 3946542 timestamp: 1765221858705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda + sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce + md5: bb26456332b07f68bf3b7622ed71c0da + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + constrains: + - glib 2.86.4 *_1 + license: LGPL-2.1-or-later + purls: [] + size: 4398701 + timestamp: 1771863239578 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 md5: 434ca7e50e40f4918ab701e3facd59a0 @@ -2819,6 +4285,36 @@ packages: purls: [] size: 603284 timestamp: 1765256703881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 + md5: 239c5e9546c38a1e884d69effcf4c882 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 603262 + timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-h9d11ab5_1.conda + sha256: 44f8e354431d2336475465ec8d71df7f3dea1397e70df0718c2ac75137976c63 + md5: cd398eb8374fb626a710b7a35b7ffa98 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgcc >=14 + - libgrpc >=1.78.0,<1.79.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 + constrains: + - libgoogle-cloud 2.39.0 *_1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1307253 + timestamp: 1770461665848 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda sha256: d3341cf69cb02c07bbd1837968f993da01b7bd467e816b1559a3ca26c1ff14c5 md5: a2e30ccd49f753fd30de0d30b1569789 @@ -2857,6 +4353,24 @@ packages: purls: [] size: 804189 timestamp: 1752048589800 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_1.conda + sha256: 2cce946ebf40b0b5fdb3e82c8a9f90ca28cd62abd281b20713067cc69a75c441 + md5: 384a1730ea66a72692e377cb45996d61 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=14 + - libgoogle-cloud 2.39.0 h9d11ab5_1 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 803453 + timestamp: 1770461856392 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda sha256: bc9d32af6167b1f5bcda216dc44eddcb27f3492440571ab12f6e577472a05e34 md5: ff63bb12ac31c176ff257e3289f20770 @@ -2879,6 +4393,28 @@ packages: purls: [] size: 8349777 timestamp: 1761058442526 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.78.0-h1d1128b_1.conda + sha256: f6861217d6c4bf96283738ba8d55782fccb577513a6cd346abc60cf88d1795df + md5: 66055700c90b50c0405a4e515bb4fe3c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.6,<2.0a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libre2-11 >=2025.11.5 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.78.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 6992089 + timestamp: 1770260975908 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -2928,6 +4464,29 @@ packages: purls: [] size: 112894 timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda + sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb + md5: c7c83eecbb72d88b940c249af56c8b17 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.2.* + license: 0BSD + purls: [] + size: 113207 + timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 92400 + timestamp: 1769482286018 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee md5: c7e925f37e3b40d893459e625f6a53f1 @@ -2971,6 +4530,26 @@ packages: purls: [] size: 5927939 timestamp: 1763114673331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-h9692893_2.conda + sha256: 59663bdd97ac6d8ce8a83bf80e18c14c4ac5ca536ef1a2de4bc9080a45dc501a + md5: c3de1cc30bc11edbc98aed352381449d + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgrpc >=1.78.0,<1.79.0a0 + - libopentelemetry-cpp-headers 1.21.0 ha770c72_2 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.21.0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 896630 + timestamp: 1770452315175 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 md5: 1c0320794855f457dea27d35c4c71e23 @@ -2999,6 +4578,14 @@ packages: purls: [] size: 363444 timestamp: 1751782679053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_2.conda + sha256: b2b2122f214c417851ba280009aea040e546665c43de737690c2610055a255e3 + md5: 253e70376a8ae74f9d99d44712b3e087 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 362214 + timestamp: 1770452273268 - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-22.0.0-h7376487_6_cpu.conda build_number: 6 sha256: c6cc2a73091e5c460c3cbd606927d5ed85d3706e19459073e1ea023d1e754d13 @@ -3015,6 +4602,22 @@ packages: purls: [] size: 1350396 timestamp: 1765381452093 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.1-h7376487_2_cpu.conda + build_number: 2 + sha256: 0d00a15c5e604a3620b0cfdd4219c4aacb4da2971d915c2f10c6eb03985b243b + md5: d2b6e411baf659ad8ec33941b75cc767 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1 h3e112c1_2_cpu + - libgcc >=14 + - libstdcxx >=14 + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1390038 + timestamp: 1771620961486 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda sha256: 0bd91de9b447a2991e666f284ae8c722ffb1d84acb594dbd0c031bd656fa32b2 md5: 70e3400cbbfa03e96dcde7fc13e38c7b @@ -3037,6 +4640,17 @@ packages: purls: [] size: 317435 timestamp: 1768285668880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c + md5: 5f13ffc7d30ffec87864e678df9957b4 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 317669 + timestamp: 1770691470744 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 md5: 07479fc04ba3ddd5d9f760ef1635cfa7 @@ -3052,6 +4666,37 @@ packages: purls: [] size: 4372578 timestamp: 1766316228461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.33.5-h2b00c02_0.conda + sha256: afbf195443269ae10a940372c1d37cda749355d2bd96ef9587a962abd87f2429 + md5: 11ac478fa72cf12c214199b8a96523f4 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3638698 + timestamp: 1769749419271 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h0dc7533_1.conda + sha256: 138fc85321a8c0731c1715688b38e2be4fb71db349c9ab25f685315095ae70ff + md5: ced7f10b6cfb4389385556f47c0ad949 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - re2 2025.11.05.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 213122 + timestamp: 1768190028309 - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda sha256: eb5d5ef4d12cdf744e0f728b35bca910843c8cf1249f758cf15488ca04a21dbb md5: a30848ebf39327ea078cf26d114cff53 @@ -3085,6 +4730,23 @@ packages: purls: [] size: 3421977 timestamp: 1759327942156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda + sha256: 38b3189cf246f7265e06917f32d046ac375117c88834d045efe73ec48ceacc59 + md5: d62da3d560992bfa2feb611d7be813b8 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 + - libgcc >=14 + - libglib >=2.86.4,<3.0a0 + - libxml2-16 >=2.14.6 + - pango >=1.56.4,<2.0a0 + constrains: + - __glibc >=2.17 + license: LGPL-2.1-or-later + purls: [] + size: 4011590 + timestamp: 1771399906142 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -3132,6 +4794,19 @@ packages: purls: [] size: 5856456 timestamp: 1765256838573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e + md5: 1b08cd684f34175e4514474793d44bcb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_18 + constrains: + - libstdcxx-ng ==15.2.0=*_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 5852330 + timestamp: 1771378262446 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda sha256: 81f2f246c7533b41c5e0c274172d607829019621c4a0823b5c0b4a8c7028ee84 md5: 1b3152694d236cf233b76b8c56bf0eae @@ -3142,6 +4817,16 @@ packages: purls: [] size: 27300 timestamp: 1765256885128 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + sha256: 3c902ffd673cb3c6ddde624cdb80f870b6c835f8bf28384b0016e7d444dd0145 + md5: 6235adb93d064ecdf3d44faee6f468de + depends: + - libstdcxx 15.2.0 h934c35e_18 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 27575 + timestamp: 1771378314494 - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 md5: 8ed82d90e6b1686f5e98f8b7825a15ef @@ -3186,6 +4871,17 @@ packages: purls: [] size: 85985 timestamp: 1764062044259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda + sha256: ecbf4b7520296ed580498dc66a72508b8a79da5126e1d6dc650a7087171288f9 + md5: 1247168fe4a0b8912e3336bccdbf98a5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + size: 85969 + timestamp: 1768735071295 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee md5: db409b7c1720428638e7c0d509d3e1b5 @@ -3407,6 +5103,19 @@ packages: - pkg:pypi/markdown?source=hash-mapping size: 85401 timestamp: 1762856570927 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda + sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b + md5: ba0a9221ce1063f31692c07370d062f3 + depends: + - importlib-metadata >=4.4 + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markdown?source=compressed-mapping + size: 85893 + timestamp: 1770694658918 - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e md5: 5b5203189eb668f042ac2b0826244964 @@ -3503,6 +5212,18 @@ packages: - pkg:pypi/narwhals?source=compressed-mapping size: 272452 timestamp: 1767693390284 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.17.0-pyhcf101f3_0.conda + sha256: f35c8c1400ea766f0eddb054adbc1c1fb5ebf3510450647445ef5212b8f59c2a + md5: 538f3a813e0805c7e3f037603f12a400 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/narwhals?source=compressed-mapping + size: 280438 + timestamp: 1771853852884 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -3660,6 +5381,18 @@ packages: purls: [] size: 3165399 timestamp: 1762839186699 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c + md5: f61eb8cd60ff9057122a3d338b99c00f + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3164551 + timestamp: 1769555830639 - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.39.1-pyhd8ed1ab_0.conda sha256: 52360159686fde48e1a74538c72212fb11e6b0832e206cd47feb28e8f79c1bbd md5: 4b9f51e3208d7960aedf2b18120c8a43 @@ -3752,6 +5485,24 @@ packages: purls: [] size: 1316445 timestamp: 1759424644934 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-hbb90d81_1.conda + sha256: c59d22c4e555c09259c52da96f1576797fcb4fba5665073e9c1907393309172d + md5: 9269175175f18091b8844c8e9f213205 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1319627 + timestamp: 1770452421607 - conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.5-py313h541fbb8_0.conda sha256: 6bb36f180ea4ba4f13f5e6ef8ec0b2fdd010d73430af53a05986ffc312091e8f md5: 5dd1f02f38d71a29f3cfaf13c4cbf3dd @@ -3768,6 +5519,22 @@ packages: - pkg:pypi/orjson?source=hash-mapping size: 317253 timestamp: 1765811463186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orjson-3.11.7-py313h541fbb8_0.conda + sha256: 8fb560eb52e72e2181fe0fb0e934a1e2b9bbd9d07fdb0994fceaece76ec32a36 + md5: df31eabe76aa03309c7ba9b5018a4a59 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/orjson?source=hash-mapping + size: 347329 + timestamp: 1771788973176 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 md5: 58335b26c38bf4a20f399384c33cbcf9 @@ -3832,6 +5599,63 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14912799 timestamp: 1764615091147 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py313hbfd7664_0.conda + sha256: 01a14cb74d9773674d07ab250b70a7fbd140edfb19cf3ec2ba70147bdaec13d2 + md5: 1c8807728f0333228766dee685394e16 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=compressed-mapping + size: 14972232 + timestamp: 1771408987551 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf md5: 79f71230c069a287efe3a8614069ddf1 @@ -3892,6 +5716,17 @@ packages: - pkg:pypi/pathspec?source=hash-mapping size: 53364 timestamp: 1767999155326 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.0.4-pyhd8ed1ab_0.conda + sha256: 29ea20d0faf20374fcd61c25f6d32fb8e9a2c786a7f1473a0c3ead359470fbe1 + md5: 2908273ac396d2cd210a8127f5f1c0d6 + depends: + - python >=3.10 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=compressed-mapping + size: 53739 + timestamp: 1769677743677 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff md5: 7a3bff861a6583f1889021facefc08b1 @@ -3924,6 +5759,25 @@ packages: - pkg:pypi/pendulum?source=hash-mapping size: 406329 timestamp: 1745083004071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pendulum-3.2.0-py313h843e2db_2.conda + sha256: b2b245c4532709bfbc72c2ffda1e4a544e6c9fff99ebaaee4b80b8d6dd7e25fc + md5: 1f851df846889f4f914620252d18ca12 + depends: + - python + - python-dateutil >=2.6 + - tzdata >=2020.1 + - time-machine >=2.6.0,<3.0.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pendulum?source=hash-mapping + size: 440923 + timestamp: 1769867210949 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda sha256: bdad1e21cadd64154c45fa554247dd672288ad51982ca7d54b3fab63e40938df md5: 183fe6b9e99e5c2b464c1573ec78eac8 @@ -3944,9 +5798,32 @@ packages: - libfreetype6 >=2.14.1 license: HPND purls: - - pkg:pypi/pillow?source=hash-mapping - size: 1043309 - timestamp: 1767353193450 + - pkg:pypi/pillow?source=hash-mapping + size: 1043309 + timestamp: 1767353193450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + sha256: 50738b145a45db78ec12ffebf649127d53e1777166c5c3b006476890250ac265 + md5: 2d5ee4938cdde91a8967f3eea686c546 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - python_abi 3.13.* *_cp313 + - libwebp-base >=1.6.0,<2.0a0 + - openjpeg >=2.5.4,<3.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - lcms2 >=2.18,<3.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=compressed-mapping + size: 1043560 + timestamp: 1770794002407 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a md5: c01af13bdc553d1a8fbfff6e8db075f0 @@ -3972,6 +5849,18 @@ packages: - pkg:pypi/platformdirs?source=hash-mapping size: 23922 timestamp: 1764950726246 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda + sha256: 7f263219cecf0ba6d74c751efa60c4676ce823157ca90aa43ebba5ac615ca0fa + md5: 4fefefb892ce9cc1539405bec2f1a6cd + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=compressed-mapping + size: 25643 + timestamp: 1771233827084 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda sha256: e14aafa63efa0528ca99ba568eaf506eb55a0371d12e6250aaaa61718d2eb62e md5: d7585b6550ad04c8c5e21097ada2888e @@ -4055,6 +5944,77 @@ packages: - pkg:pypi/prefect?source=hash-mapping size: 8600629 timestamp: 1767946885026 +- conda: https://conda.anaconda.org/conda-forge/noarch/prefect-3.6.15-pyhd8ed1ab_0.conda + sha256: f2e9a8558ebe5eaf41e1d374a478dd246310354313414cbfb8e42dce13ab44fc + md5: 8eb26ea0036a90c394ed7e06bc1304ec + depends: + - aiosqlite >=0.17.0,<1.0.0 + - alembic >=1.7.5,<2.0.0 + - anyio >=4.4.0,<5.0.0 + - apprise >=1.1.0,<2.0.0 + - asgi-lifespan >=1.0,<3.0 + - asyncpg >=0.23,<1.0.0 + - cachetools >=5.3,<7.0 + - click >=8.0,<9.0 + - cloudpickle >=2.0,<4.0 + - coolname >=1.0.4,<3.0.0 + - croniter >=1.0.12,<5.0.0 + - cryptography >=36.0.1 + - dateparser >=1.1.1,<2.0.0 + - docker-py >=4.0,<8.0 + - exceptiongroup >=1.0.0 + - fastapi >=0.111.0,<1.0.0 + - fsspec >=2022.5.0 + - griffe >=0.49.0,<2.0.0 + - httpcore >=1.0.5,<2.0.0 + - httpx >=0.23,!=0.23.2 + - humanize >=4.9.0,<5.0.0 + - importlib-metadata >=4.4 + - jinja2 >=3.1.6,<4.0.0 + - jinja2-humanize-extension >=0.4.0 + - jsonpatch >=1.32,<2.0 + - jsonschema >=4.18.0,<5.0.0 + - opentelemetry-api >=1.27.0,<2.0 + - orjson >=3.7,<4.0 + - packaging >=21.3,<25.1 + - pathspec >=0.8.0 + - pendulum >=3.0.0,<4 + - pluggy >=1.6.0 + - prometheus_client >=0.20.0 + - pydantic >=2.9,<3.0.0,!=2.10.0,!=2.11.0,!=2.11.1,!=2.11.2,!=2.11.3,!=2.11.4 + - pydantic-core >=2.12.0,<3.0.0 + - pydantic-extra-types >=2.8.2,<3.0.0 + - pydantic-settings >2.2.1,<3.0.0,!=2.9.0 + - pydocket >0.13.3 + - python >=3.10 + - python-dateutil >=2.8.2,<3.0.0 + - python-graphviz >=0.20.1 + - python-slugify >=5.0,<9.0 + - python-socks >=2.5.3,<3.0 + - python-tzdata + - python-uv >=0.6.0 + - pytz >=2021.1,<2025 + - pyyaml >=5.4.1,<7.0.0 + - readchar >=4.0.0,<5.0.0 + - rfc3339-validator >=0.1.4,<0.2.0 + - rich >=11.0,<14.0 + - ruamel.yaml >=0.17.0 + - semver >=3.0.4 + - sniffio >=1.3.0,<2.0.0 + - sqlalchemy >=2.0,<3.0.0 + - toml >=0.10.0 + - typer >=0.16.0,<0.20.0 + - typing_extensions >=4.5.0,<5.0.0 + - ujson >=5.8.0,<6.0.0 + - uvicorn >=0.14.0,!=0.29.0 + - websockets >=13.4,<16.0 + - whenever >=0.7.3,<0.9.0 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/prefect?source=hash-mapping + size: 8817028 + timestamp: 1769762791493 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -4081,6 +6041,17 @@ packages: - pkg:pypi/prometheus-client?source=compressed-mapping size: 56666 timestamp: 1768302384129 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda + sha256: 75b2589159d04b3fb92db16d9970b396b9124652c784ab05b66f584edc97f283 + md5: 7526d20621b53440b0aae45d4797847e + depends: + - python >=3.10 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/prometheus-client?source=compressed-mapping + size: 56634 + timestamp: 1768476602855 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda sha256: 8a5f773e22ccd08fbda57c92f1d094533474db75f70db35311912cdcdb2f18ad md5: d362949a1ed1ad4693b3928ad1d32c93 @@ -4095,6 +6066,20 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 225429 timestamp: 1767012386804 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda + sha256: f19fd682d874689dfde20bf46d7ec1a28084af34583e0405685981363af47c91 + md5: 25fe6e02c2083497b3239e21b49d8093 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=compressed-mapping + size: 228663 + timestamp: 1769678153829 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -4192,6 +6177,23 @@ packages: purls: [] size: 26233 timestamp: 1761648084519 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.1-py313h78bf25f_0.conda + sha256: 35c4e89573067e008d051336aa2b16350ed616a5f457ba851f97e859b9c988d0 + md5: bd299f66ab2d10d1e03d4148397fe263 + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=compressed-mapping + size: 28664 + timestamp: 1771307351295 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-22.0.0-py313he109ebe_0_cpu.conda sha256: 0be6da97fb9eaaa9768a997a933ed7461ff2a393a4ac68088f7bedd838c1c0f0 md5: 0b4a0a9ab270b275eb6da8671edb9458 @@ -4213,6 +6215,27 @@ packages: - pkg:pypi/pyarrow?source=hash-mapping size: 5315561 timestamp: 1761648066791 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.1-py313h98bfbea_0_cpu.conda + sha256: cdf599116ebc254821e65f5883e9950b42f516a5868ee1c3bbbadc482a4da72c + md5: d2b771a9050c52941a61a72f2d161c64 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu + - libgcc >=14 + - libstdcxx >=14 + - libzlib >=1.3.1,<2.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy >=1.23,<3 + - apache-arrow-proc * cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=compressed-mapping + size: 4764506 + timestamp: 1771307241382 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -4259,6 +6282,27 @@ packages: - pkg:pypi/pydantic-core?source=hash-mapping size: 1940186 timestamp: 1762989000579 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhcf101f3_1.conda + sha256: 6a25f3b7a92833534eb9d09e3b4ba00195fbf459ec608d15dc9e31f81b67e972 + md5: 83984e3edee8f7312c0aa860682ee145 + depends: + - python >=3.10 + - pydantic >=2.5.2 + - python + constrains: + - phonenumbers >=8,<9 + - pycountry >=23 + - semver >=3.0.2,<4 + - python-ulid >=1,<4 + - pendulum >=3.0.0,<4.0.0 + - pytz >=2024.1 + - tzdata >=2024a + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydantic-extra-types?source=hash-mapping + size: 68665 + timestamp: 1770023146886 - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-extra-types-2.11.0-pyhd8ed1ab_0.conda sha256: e984052b8922b8996add05d595b68430e4f28b7d93846693b2729dc1e0504685 md5: b74145c95d910d3dd4195cf7d7567c35 @@ -4318,6 +6362,31 @@ packages: - pkg:pypi/pydocket?source=hash-mapping size: 162670 timestamp: 1768231608610 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydocket-0.17.3-py313h78bf25f_0.conda + sha256: 0ad8af72ad2ed9199cc741954ea2ae61cb37995fca30505ed31630ed9ac494ee + md5: e98a2e0e8870fcbe50f9e8f60f5aa270 + depends: + - cachetools >=5.0.0 + - cloudpickle >=3.1.1 + - fakeredis >=2.32.1 + - opentelemetry-api >=1.33.0 + - opentelemetry-exporter-prometheus >=0.60b0 + - opentelemetry-instrumentation >=0.60b0 + - prometheus_client >=0.21.1 + - py-key-value-aio >=0.3.0 + - python >=3.13,<3.14.0a0 + - python-json-logger >=2.0.7 + - python_abi 3.13.* *_cp313 + - redis-py >=5 + - rich >=13.9.4 + - typer >=0.15.1 + - typing-extensions >=4.12.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydocket?source=hash-mapping + size: 201342 + timestamp: 1769608284878 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -4342,6 +6411,19 @@ packages: - pkg:pypi/pyjwt?source=hash-mapping size: 25093 timestamp: 1732782523102 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + sha256: ac605d7fa239f78c508b47f2a0763236eef8d52b53852b84d784b598f92a1573 + md5: f9517d2fe1501919d7a236aba73409bb + depends: + - python >=3.10 + constrains: + - cryptography >=3.4.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyjwt?source=hash-mapping + size: 30144 + timestamp: 1769858771741 - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py313h07c4f96_0.conda sha256: 28c2b34c8a5542631b47ef48ccfb32fbf19eab5b46cd39ac0bf546af0c337d31 md5: 69b90b328f1a57bc4bbffcaa990128cf @@ -4367,6 +6449,14 @@ packages: - railroad-diagrams ; extra == 'diagrams' - jinja2 ; extra == 'diagrams' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + name: pyparsing + version: 3.3.2 + sha256: 850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d + requires_dist: + - railroad-diagrams ; extra == 'diagrams' + - jinja2 ; extra == 'diagrams' + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -4379,6 +6469,27 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda + sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 + md5: 2b694bad8a50dc2f712f5368de866480 + depends: + - pygments >=2.7.2 + - python >=3.10 + - iniconfig >=1.0.1 + - packaging >=22 + - pluggy >=1.5,<2 + - tomli >=1 + - colorama >=0.4 + - exceptiongroup >=1 + - python + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 299581 + timestamp: 1765062031645 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda build_number: 100 sha256: 9cf014cf28e93ee242bacfbf664e8b45ae06e50b04291e640abeaeb0cba0364c @@ -4406,6 +6517,33 @@ packages: size: 37226336 timestamp: 1765021889577 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda + build_number: 100 + sha256: 8a08fe5b7cb5a28aa44e2994d18dbf77f443956990753a4ca8173153ffb6eb56 + md5: 4c875ed0e78c2d407ec55eadffb8cf3d + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libgcc >=14 + - liblzma >=5.8.2,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.5,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 37364553 + timestamp: 1770272309861 + python_site_packages_path: lib/python3.13/site-packages - pypi: https://files.pythonhosted.org/packages/b2/34/810885dca784b02e5ad0f71ced9c06ba5e9d33a6493bc886f7470ce82a39/python_barcode-0.16.1-py3-none-any.whl name: python-barcode version: 0.16.1 @@ -4437,6 +6575,29 @@ packages: - pkg:pypi/blosc2?source=hash-mapping size: 613702 timestamp: 1764851882889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-blosc2-4.0.0-py313h9545597_0.conda + sha256: 9ecf812ae42827f7d8d7ff24bddaa34ea7a68f1a3d5e4c75e85773164cf7da0d + md5: 9b15f7a4cc6fbdc96aed0b5211225eac + depends: + - __glibc >=2.17,<3.0.a0 + - c-blosc2 >=2.23.0,<2.24.0a0 + - libgcc >=14 + - libstdcxx >=14 + - msgpack-python + - ndindex + - numexpr >=2.12.1 + - numpy >=1.23,<3 + - numpy >=1.26.0 + - platformdirs + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - requests + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/blosc2?source=hash-mapping + size: 806892 + timestamp: 1770318664309 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 md5: 5b8d21249ff20967101ffa321cab24e8 @@ -4497,6 +6658,18 @@ packages: - pkg:pypi/python-multipart?source=hash-mapping size: 30275 timestamp: 1767725812296 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.22-pyhcf101f3_0.conda + sha256: 8275c88b0f138dbd602c53bae9a11789126c6a2c97f7e89f679d3e7ccbb121ba + md5: 5a2610edf297cbd1cbc0e2c17bc47efc + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-multipart?source=hash-mapping + size: 30342 + timestamp: 1769356329419 - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda sha256: a84f270426ae7661f79807b107dedb9829c79bd45f77a3033aa021e10556e87f md5: a4059bc12930bddeb41aef71537ffaed @@ -4536,6 +6709,18 @@ packages: - pkg:pypi/tzdata?source=compressed-mapping size: 143542 timestamp: 1765719982349 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-uv-0.10.5-pyhcf101f3_0.conda + sha256: 59b6cf568d3784458f24b5b90ae4dc395090e191b274ca14b42b55b421317c92 + md5: 80cef13fd8c5345426e0377343e61061 + depends: + - python >=3.10 + - uv 0.10.5.* + - python + license: Apache-2.0 OR MIT + purls: + - pkg:pypi/uv?source=compressed-mapping + size: 24841 + timestamp: 1771969939596 - conda: https://conda.anaconda.org/conda-forge/noarch/python-uv-0.9.24-pyhcf101f3_0.conda sha256: eba09adfd427aa2dfe6c3649409193defc68b4e89e9626ae962ec7d4af325c05 md5: 9dcbe28fe7eed147d96bc7975c0eb6d7 @@ -4596,6 +6781,21 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 207109 timestamp: 1758892173548 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + sha256: ef7df29b38ef04ec67a8888a4aa039973eaa377e8c4b59a7be0a1c50cd7e4ac6 + md5: f256753e840c3cd3766488c9437a8f8b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=compressed-mapping + size: 201616 + timestamp: 1770223543730 - pypi: https://files.pythonhosted.org/packages/dd/b8/d2d6d731733f51684bbf76bf34dab3b70a9148e8f2cef2bb544fccec681a/qrcode-8.2-py3-none-any.whl name: qrcode version: '8.2' @@ -4615,6 +6815,16 @@ packages: purls: [] size: 27316 timestamp: 1762397780316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_1.conda + sha256: 3fc684b81631348540e9a42f6768b871dfeab532d3f47d5c341f1f83e2a2b2b2 + md5: 66a715bc01c77d43aca1f9fcb13dde3c + depends: + - libre2-11 2025.11.05 h0dc7533_1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 27469 + timestamp: 1768190052132 - conda: https://conda.anaconda.org/conda-forge/noarch/readchar-4.2.1-pyhe01879c_0.conda sha256: e8eb7be6d307f1625c6e6c100270a2eea92e6e7cc45277cd26233ce107ea9f73 md5: 7f24e776b0f2ffac7516e51e9d2c1e52 @@ -4651,6 +6861,18 @@ packages: - pkg:pypi/redis?source=hash-mapping size: 228208 timestamp: 1763575121128 +- conda: https://conda.anaconda.org/conda-forge/noarch/redis-py-7.2.0-pyhd8ed1ab_0.conda + sha256: 49d217085ea7471fd41af0f9015969148ff51bb6b09f8f5bed4758b187ded69f + md5: c71848981bc4e9bff4f812c7e107f37c + depends: + - async-timeout >=4.0.3 + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/redis?source=hash-mapping + size: 255100 + timestamp: 1771295161112 - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 md5: 870293df500ca7e18bedefa5838a22ab @@ -4680,6 +6902,20 @@ packages: - pkg:pypi/regex?source=hash-mapping size: 411721 timestamp: 1762507019672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.19-py313h07c4f96_0.conda + sha256: 26ba728375082879f43f9f68f67252d9a6e554f67f03674a97da824f0c52e106 + md5: d73f8ec6d5ef225e81c5f1cfb0a84327 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 AND CNRI-Python + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 410851 + timestamp: 1771585595522 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 md5: c65df89a0b2e321045a9e01d1337b182 @@ -4751,6 +6987,21 @@ packages: - pkg:pypi/rich-toolkit?source=compressed-mapping size: 31034 timestamp: 1765985144059 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.19.4-pyhcf101f3_0.conda + sha256: 0edab1aab1fba55f44e83dce4440d3506af8e06e0fd9509a4a62b727478e3253 + md5: 0011605b057af14c5d86fe26ec6f7d3d + depends: + - python >=3.10 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/rich-toolkit?source=compressed-mapping + size: 32478 + timestamp: 1770904484792 - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda sha256: 076d26e51c62c8ecfca6eb19e3c1febdd7632df1990a7aa53da5df5e54482b1c md5: 779e3307a0299518713765b83a36f4b1 @@ -4800,12 +7051,24 @@ packages: depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.4,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 394197 + timestamp: 1765160261434 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.0-ha63dd3a_1.conda + sha256: 37b2d9768f205f497f5af48cc9e83ca8a5e15c9ba5493f6c0835fff9a6503e66 + md5: f9bb0a7187f2e25b19cde17aa8c846c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - openssl >=3.5.5,<4.0a0 license: Apache-2.0 license_family: Apache purls: [] - size: 394197 - timestamp: 1765160261434 + size: 397766 + timestamp: 1771370215377 - pypi: https://files.pythonhosted.org/packages/63/1e/12fbf2a3bb240161651c94bb5cdd0eae5d4e8cc6eaeceb74ab07b12a753d/scipy-1.17.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: scipy version: 1.17.0 @@ -4850,6 +7113,50 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scipy + version: 1.17.1 + sha256: 581b2264fc0aa555f3f435a5944da7504ea3a065d7029ad60e7c3d1ae09c5464 + requires_dist: + - numpy>=1.26.4,<2.7 + - pytest>=8.0.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - tabulate ; extra == 'doc' + - click<8.3.0 ; extra == 'dev' + - spin ; extra == 'dev' + - mypy==1.10.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.12.0 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda sha256: bea67173ed67c73cf16691ef72e58059492ac1ed1c880cfbeb6f1295c5add7d6 md5: 8e7be844ccb9706a999a337e056606ab @@ -4873,6 +7180,17 @@ packages: - pkg:pypi/setuptools?source=hash-mapping size: 748788 timestamp: 1748804951958 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda + sha256: fd7201e38e38bf7f25818d624ca8da97b8998957ca9ae3fb7fdc9c17e6b25fcd + md5: 1d00d46c634177fc8ede8b99d6089239 + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=compressed-mapping + size: 637506 + timestamp: 1770634745653 - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda sha256: 1d6534df8e7924d9087bd388fbac5bd868c5bf8971c36885f9f016da0657d22b md5: 83ea3a2ddb7a75c1b09cea582aa4f106 @@ -4945,6 +7263,20 @@ packages: - pkg:pypi/sparse?source=hash-mapping size: 121488 timestamp: 1747799051402 +- conda: https://conda.anaconda.org/conda-forge/noarch/sparse-0.18.0-pyhcf101f3_0.conda + sha256: b18229272e7b662f8b3e1be4d768753e7b6e6fdf36c5a82878aeec759c6bfaf5 + md5: c67d2c8ce612c88ece7221fe0b5357f2 + depends: + - python >=3.11 + - numpy >=1.17 + - numba >=0.49 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sparse?source=hash-mapping + size: 124963 + timestamp: 1771482567549 - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.45-py313h07c4f96_0.conda sha256: 566204b9865c85a0e2030c3aa4c81d6f5dd47496e301840f7dc3bef47efc8f55 md5: b8bde0a2de399d28127fb9a9825c97be @@ -4961,6 +7293,21 @@ packages: - pkg:pypi/sqlalchemy?source=hash-mapping size: 3694238 timestamp: 1765351843289 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.47-py313h54dd161_0.conda + sha256: edef8cbab5cc20913ec11c49026ddd582103638ef0fb99cb31eaba4d6506c58d + md5: 0201efa342cf1ff1cea79336907a6bc3 + depends: + - python + - greenlet !=0.4.17 + - typing-extensions >=4.6.0 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: MIT + purls: + - pkg:pypi/sqlalchemy?source=hash-mapping + size: 3846086 + timestamp: 1771967292348 - conda: https://conda.anaconda.org/conda-forge/noarch/stamina-25.2.0-pyhd8ed1ab_0.conda sha256: 4bf4b5cf5361438de472ae8771c9490c61f2b75ff049580f99d0ff5bdbc7b203 md5: 098c0d9bdd383d77001e639efe90c35b @@ -4988,6 +7335,20 @@ packages: - pkg:pypi/starlette?source=hash-mapping size: 64760 timestamp: 1762016292582 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.52.1-pyhfdc7a7d_0.conda + sha256: ab0d09eaee2e35a969e7fca3b5b2fdba35c1f2abb8eb8c66245485155d41868e + md5: 7ee23ae71c6c1e2f2fe9ea7cf00f1a8e + depends: + - anyio >=3.6.2,<5 + - python >=3.10 + - typing_extensions >=4.10.0 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/starlette?source=compressed-mapping + size: 64896 + timestamp: 1768919444896 - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda sha256: 6b549360f687ee4d11bf85a6d6a276a30f9333df1857adb0fe785f0f8e9bcd60 md5: f88bb644823094f436792f80fba3207e @@ -5011,6 +7372,18 @@ packages: - pkg:pypi/tenacity?source=hash-mapping size: 25364 timestamp: 1743640859268 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + sha256: 32e75900d6a094ffe4290a8c9f1fa15744d9da8ff617aba4acaa0f057a065c34 + md5: 043f0599dc8aa023369deacdb5ac24eb + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tenacity?source=hash-mapping + size: 31404 + timestamp: 1770510172846 - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda sha256: 4770807cc5a217638c9aea3f05ea55718a82c50f32462df196b5472aff02787f md5: 23b4ba5619c4752976eb7ba1f5acb7e8 @@ -5055,6 +7428,39 @@ packages: - pkg:pypi/tiled?source=hash-mapping size: 1506486 timestamp: 1766028584148 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-base-0.2.5-pyhd8ed1ab_0.conda + sha256: 05f95e9630455b61dbc96e402192b3f092aa16ee1bfb543afa13b503618c2448 + md5: 012d39c1b7e920735ce30a3277a5d49d + depends: + - appdirs + - awkward + - click !=8.1.0 + - dask + - httpx >=0.20.0 + - json-merge-patch + - jsonpatch + - jsonschema + - lz4 + - msgpack-python >=1.0.0 + - ndindex + - numpy + - orjson + - pandas + - pyarrow + - pydantic-settings >=2,<2.12.0 + - python >=3.10 + - python-blosc2 + - pyyaml + - sparse >=0.13.0 + - typer + - xarray + - zstandard + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/tiled?source=compressed-mapping + size: 1417045 + timestamp: 1771619964757 - conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.3-pyhd8ed1ab_0.conda sha256: fac6fff6d5435a11537467f54b3a526647cb887f4023c0278ee299be06f23d03 md5: 078241a86654e04a3e170b2f67272125 @@ -5072,6 +7478,38 @@ packages: purls: [] size: 8382 timestamp: 1766028606284 +- conda: https://conda.anaconda.org/conda-forge/noarch/tiled-client-0.2.5-pyhd8ed1ab_0.conda + sha256: a7567954b0c3df117944e8e265221d360fe1d872327375a6bf4dbe49529ac2bb + md5: fa5bf6bbf265bd4dc7e3aacef76f2415 + depends: + - entrypoints + - platformdirs + - pydantic + - python >=3.10 + - rich + - stamina + - tiled-base 0.2.5 pyhd8ed1ab_0 + - websockets + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8611 + timestamp: 1771619979392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/time-machine-2.19.0-py313h54dd161_2.conda + sha256: c0e105c243b4f99b56b2bf02209fae4c68dee8aa5fd3a5fe03d184aa4e5669df + md5: 4b7c3906e48a787142edd2375c7ad94e + depends: + - python + - python-dateutil + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/time-machine?source=hash-mapping + size: 45925 + timestamp: 1762519500922 - conda: https://conda.anaconda.org/conda-forge/linux-64/time-machine-3.2.0-py313h54dd161_0.conda sha256: 13ac6345af79cd7a7af86ec6045853c5ee7d7c11efbb07bc1e7716a4bd8b5d4a md5: b2d283d1531ed3afd143751e88af7491 @@ -5088,6 +7526,20 @@ packages: - pkg:pypi/time-machine?source=hash-mapping size: 47379 timestamp: 1766070671677 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + constrains: + - xorg-libx11 >=1.8.12,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3301196 + timestamp: 1769460227866 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda sha256: 1544760538a40bcd8ace2b1d8ebe3eb5807ac268641f8acdc18c69c5ebfeaf64 md5: 86bc20552bf46075e3d92b67f089172d @@ -5279,6 +7731,19 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 103172 timestamp: 1767817860341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.10.5-h6dd6661_0.conda + sha256: c67f445544245a14aabbe48ac27968070312910ab1f6dd522cb8fcdc8d9573ee + md5: 2e737f983b7ae90f1ee95242de4becf6 + depends: + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + constrains: + - __glibc >=2.17 + license: Apache-2.0 OR MIT + purls: [] + size: 18371969 + timestamp: 1771943248385 - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.9.24-h76e24b7_0.conda sha256: 09a88e804e3fa7f5c776bddf8700d3127a0bad8bfa3182f628f787b708403e07 md5: cb656ba4235639494a1a18c90f81a14a @@ -5308,6 +7773,22 @@ packages: - pkg:pypi/uvicorn?source=hash-mapping size: 54972 timestamp: 1766332899903 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.41.0-pyhc90fa1f_0.conda + sha256: 199731b8a86d18d89a9236225cf3e618aef467f628bc6f6bb2875a28f24f3dd4 + md5: 10d80692c8c9c05b7d4b0a1531208ad7 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.10 + - typing_extensions >=4.0 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/uvicorn?source=hash-mapping + size: 54913 + timestamp: 1771328143244 - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.40.0-h4cd5af1_0.conda sha256: 0476363e52d50f7c6075d06f309a54a9dc9b8828c00b4ed572b78d5f1374fccb md5: 8c7fcf5c22f9342caf554be590f6fee9 @@ -5325,6 +7806,23 @@ packages: purls: [] size: 4119 timestamp: 1766332899904 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.41.0-he9f3e0c_0.conda + sha256: 034d62c37fadadafe8b5c923beaed2279d0f4ad8df731f3e86d12760fa33ccbc + md5: 2ada177289a251ffcfeae37e9f28dc3a + depends: + - __unix + - uvicorn ==0.41.0 pyhc90fa1f_0 + - websockets >=10.4 + - httptools >=0.6.3 + - watchfiles >=0.20 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvloop >=0.15.1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4145 + timestamp: 1771328143246 - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.22.1-py313h07c4f96_1.conda sha256: 77a220ecf6c1467f94d6adda5fb1296f558f3f3044842dc0a52881eab5908dc0 md5: 266caaa8701a13482ea924a77897b1e4 @@ -5463,6 +7961,44 @@ packages: - pkg:pypi/xarray?source=hash-mapping size: 994025 timestamp: 1764974555156 +- conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2026.2.0-pyhcf101f3_0.conda + sha256: 1d49f2c80c63913c5a9a525b64434a30cf1386502d0f24607db61bd46fa36a40 + md5: b1b3a2477c1b888f15bbef01d7a9615f + depends: + - python >=3.11 + - numpy >=1.26 + - packaging >=24.1 + - pandas >=2.2 + - python + constrains: + - bottleneck >=1.4 + - cartopy >=0.23 + - cftime >=1.6 + - dask-core >=2024.6 + - distributed >=2024.6 + - flox >=0.9 + - h5netcdf >=1.3 + - h5py >=3.11 + - hdf5 >=1.14 + - iris >=3.9 + - matplotlib-base >=3.8 + - nc-time-axis >=1.4 + - netcdf4 >=1.6.0 + - numba >=0.60 + - numbagg >=0.8 + - pint >=0.24 + - pydap >=3.5.0 + - scipy >=1.13 + - seaborn-base >=0.13 + - sparse >=0.15 + - toolz >=0.12 + - zarr >=2.18 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/xarray?source=compressed-mapping + size: 1011911 + timestamp: 1771083999178 - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda sha256: aa03b49f402959751ccc6e21932d69db96a65a67343765672f7862332aa32834 md5: 71ae752a748962161b4740eaff510258 @@ -5511,6 +8047,18 @@ packages: purls: [] size: 835896 timestamp: 1741901112627 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 + md5: 861fb6ccbc677bb9a9fb2468430b9c6a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libxcb >=1.17.0,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 839652 + timestamp: 1770819209719 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b md5: b2895afaf55bf96a8c8282a2e47a5de0 @@ -5535,6 +8083,19 @@ packages: purls: [] size: 13603 timestamp: 1727884600744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + sha256: 048c103000af9541c919deef03ae7c5e9c570ffb4024b42ecb58dbde402e373a + md5: f2ba4192d38b6cef2bb2c25029071d90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + license: MIT + license_family: MIT + purls: [] + size: 14415 + timestamp: 1770044404696 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a md5: 2ccd714aa2242315acaf0a67faea780b @@ -5586,6 +8147,18 @@ packages: purls: [] size: 50060 timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f + md5: 34e54f03dfea3e7a2dcf1453a85f1085 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 50326 + timestamp: 1769445253162 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 md5: ba231da7fccf9ea1e768caf5c7099b84 @@ -5626,6 +8199,20 @@ packages: purls: [] size: 13891 timestamp: 1727908521531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda + sha256: 3a9da41aac6dca9d3ff1b53ee18b9d314de88add76bafad9ca2287a494abcd86 + md5: 93f5d4b5c17c8540479ad65f206fea51 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 14818 + timestamp: 1769432261050 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda sha256: ac0f037e0791a620a69980914a77cb6bb40308e26db11698029d6708f5aa8e0d md5: 2de7f99d6581a4a7adbff607b5c278ca @@ -5640,6 +8227,20 @@ packages: purls: [] size: 29599 timestamp: 1727794874300 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda + sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343 + md5: e192019153591938acf7322b6459d36e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: MIT + license_family: MIT + purls: [] + size: 30456 + timestamp: 1769445263457 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 md5: 96d57aba173e878a2089d5638016dc5e @@ -5679,6 +8280,19 @@ packages: purls: [] size: 17819 timestamp: 1734214575628 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + sha256: 64db17baaf36fa03ed8fae105e2e671a7383e22df4077486646f7dbf12842c9f + md5: 665d152b9c6e78da404086088077c844 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 18701 + timestamp: 1769434732453 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36 md5: aa8d21be4b461ce612d8f5fb791decae @@ -5759,6 +8373,18 @@ packages: purls: [] size: 122303 timestamp: 1766076745735 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda + sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f + md5: 2aadb0d17215603a82a2a6b0afd9a4cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + license: Zlib + license_family: Other + purls: [] + size: 122618 + timestamp: 1770167931827 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda sha256: e6921de3669e1bbd5d050a3b771b46a887e7f4ffeb1ddd5e4d9fb01062a2f6e9 md5: 710d4663806d0f72b2fb414e936223b5 diff --git a/pixi.toml b/pixi.toml index 50e3351..3d27267 100644 --- a/pixi.toml +++ b/pixi.toml @@ -11,3 +11,9 @@ bluesky-tiled-plugins = ">=2" [pypi-dependencies] lixtools = "==2023.1.23.0" + +[feature.test.dependencies] +pytest = "*" + +[environments] +test = ["test"] From 805432fb902bd22b87fcf382cf4ed31dbf54f40b Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 24 Feb 2026 17:52:56 -0500 Subject: [PATCH 07/32] run end_of_run_workflow for testing --- test_run.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 test_run.py diff --git a/test_run.py b/test_run.py new file mode 100644 index 0000000..9868c44 --- /dev/null +++ b/test_run.py @@ -0,0 +1,19 @@ +from prefect.logging import disable_run_logger +from prefect.testing.utilities import prefect_test_harness +from end_of_run_workflow import end_of_run_workflow + + +@pytest.fixture(autouse=True, scope="session") +def prefect_disable_logging(): + with disable_run_logger(): + yield + + +@pytest.fixture(autouse=True, scope="session") +def prefect_test_fixture(): + with prefect_test_harness(): + yield + +def test_end_of_run_workflow(): + with prefect_test_harness(): + assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}) From cae6f6ad9fb86171dee3dea3ad58a0d626dd0ec1 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 24 Feb 2026 18:19:13 -0500 Subject: [PATCH 08/32] modify test to use prod Prefect instead of test harness --- test_run.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/test_run.py b/test_run.py index 9868c44..f1501ff 100644 --- a/test_run.py +++ b/test_run.py @@ -1,6 +1,7 @@ from prefect.logging import disable_run_logger from prefect.testing.utilities import prefect_test_harness from end_of_run_workflow import end_of_run_workflow +import pytest @pytest.fixture(autouse=True, scope="session") @@ -9,11 +10,7 @@ def prefect_disable_logging(): yield -@pytest.fixture(autouse=True, scope="session") -def prefect_test_fixture(): - with prefect_test_harness(): - yield - -def test_end_of_run_workflow(): - with prefect_test_harness(): - assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}) +def test_end_of_run_workflow(prefect_disable_logging): + print("starting test!") + assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}) + print("finished test!") From 25fbfef952facc90cca9e78957caeb7c09339217 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 09:39:49 -0500 Subject: [PATCH 09/32] add CI github action --- .github/workflows/ci.yml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a800f4d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,40 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python package + +on: + push: + branches: [ "add-testing" ] + pull_request: + branches: [ "add-testing" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest From eae34c92214c9f3729c68bc900115fe5e0279fcc Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 10:09:25 -0500 Subject: [PATCH 10/32] update requirements for CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a800f4d..37dcd0e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install flake8 pytest + python -m pip install flake8 pytest prefect tiled bluesky-tiled-plugins if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Lint with flake8 run: | From f0929bfc70574b353376f358201f03c1f6525a67 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 13:59:30 -0500 Subject: [PATCH 11/32] bring in secret from Github --- .github/workflows/ci.yml | 2 ++ test_run.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 37dcd0e..319b2f7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,5 +36,7 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest + env: + TILED_API_KEY: ${{ secrets.TILED_API_KEY }} run: | pytest diff --git a/test_run.py b/test_run.py index f1501ff..f776829 100644 --- a/test_run.py +++ b/test_run.py @@ -1,6 +1,7 @@ from prefect.logging import disable_run_logger from prefect.testing.utilities import prefect_test_harness from end_of_run_workflow import end_of_run_workflow +import os import pytest @@ -12,5 +13,5 @@ def prefect_disable_logging(): def test_end_of_run_workflow(prefect_disable_logging): print("starting test!") - assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}) + assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}, api_key=os.environ["TILED_API_KEY"]) print("finished test!") From 0f96efa139ffe94cbb842aa3041ef2acef475efd Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 14:07:47 -0500 Subject: [PATCH 12/32] add dry_run to get_other_docs() --- test_extra_client.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test_extra_client.py b/test_extra_client.py index 30d0b88..981ac5d 100644 --- a/test_extra_client.py +++ b/test_extra_client.py @@ -3,8 +3,11 @@ @task -def get_other_docs(uid): +def get_other_docs(uid, dry_run=False): logger = get_run_logger() - result = get_tiled_client()["raw"][uid] - for name, doc in result.documents(): - logger.info(f"name: {name}, doc: {doc}") + if not dry_run: + result = get_tiled_client()["raw"][uid] + for name, doc in result.documents(): + logger.info(f"name: {name}, doc: {doc}") + else: + logger.info("Dry run: not getting docs") From 5baa52c6c56ce59e6245203b8029bc1cc08cf2a6 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 14:24:43 -0500 Subject: [PATCH 13/32] pass api_key to alternative client getting function --- end_of_run_workflow.py | 2 +- test_extra_client.py | 4 ++-- utils.py | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index fe3b9d6..895034e 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -15,6 +15,6 @@ def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): uid = stop_doc["run_start"] # hello_world() data_validation(uid, return_state=True, dry_run=dry_run, api_key=api_key) - get_other_docs(uid, dry_run=dry_run) + get_other_docs(uid, dry_run=dry_run, api_key=api_key) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) log_completion(dry_run=dry_run) diff --git a/test_extra_client.py b/test_extra_client.py index 981ac5d..4a8b2d8 100644 --- a/test_extra_client.py +++ b/test_extra_client.py @@ -3,10 +3,10 @@ @task -def get_other_docs(uid, dry_run=False): +def get_other_docs(uid, dry_run=False, api_key=None): logger = get_run_logger() if not dry_run: - result = get_tiled_client()["raw"][uid] + result = get_tiled_client(api_key)["raw"][uid] for name, doc in result.documents(): logger.info(f"name: {name}, doc: {doc}") else: diff --git a/utils.py b/utils.py index 1cd0072..fc3105f 100644 --- a/utils.py +++ b/utils.py @@ -6,8 +6,8 @@ LOCATION = "tst" -def get_tiled_client(): - os.environ["TILED_API_KEY"] = Secret.load(f"tiled-{LOCATION}-api-key").get() - tiled_client = from_profile("nsls2")[LOCATION] - os.environ.pop("TILED_API_KEY") +def get_tiled_client(api_key=None): + if not api_key: + api_key = Secret.load(f"tiled-{LOCATION}-api-key").get() + tiled_client = from_profile("nsls2", api_key=api_key)[LOCATION] return tiled_client From 579c87a593e4ddc6741a44d0d6c10055054f7776 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 14:32:34 -0500 Subject: [PATCH 14/32] use from_uri instead of from_profile - better for testing * do not need profiles to be mounted (not possible for CI anyways) --- data_validation.py | 4 ++-- utils.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data_validation.py b/data_validation.py index a59576f..5516c51 100644 --- a/data_validation.py +++ b/data_validation.py @@ -1,7 +1,7 @@ from prefect import task, flow, get_run_logger from prefect.blocks.system import Secret import time as ttime -from tiled.client import from_profile +from tiled.client import from_uri @task(retries=2, retry_delay_seconds=10) @@ -9,7 +9,7 @@ def read_run(uid, api_key=None): logger = get_run_logger() if not api_key: api_key = Secret.load("tiled-tst-api-key").get() - cl = from_profile("nsls2", api_key=api_key) + cl = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key) run = cl["tst"]["raw"][uid] logger.info(f"Validating uid {run.start['uid']}") return run diff --git a/utils.py b/utils.py index fc3105f..4aab2fc 100644 --- a/utils.py +++ b/utils.py @@ -1,4 +1,4 @@ -from tiled.client import from_profile +from tiled.client import from_uri from prefect.blocks.system import Secret import os @@ -9,5 +9,5 @@ def get_tiled_client(api_key=None): if not api_key: api_key = Secret.load(f"tiled-{LOCATION}-api-key").get() - tiled_client = from_profile("nsls2", api_key=api_key)[LOCATION] + tiled_client = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key)[LOCATION] return tiled_client From b2b488f4d677b3ebdfad43089d43d7bbf07566b9 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 15:02:52 -0500 Subject: [PATCH 15/32] return True if we get to the end * no exceptions that prevented completion * used for CI test that returns end_of_run_workflow() --- end_of_run_workflow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 895034e..bdb2700 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -18,3 +18,4 @@ def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): get_other_docs(uid, dry_run=dry_run, api_key=api_key) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) log_completion(dry_run=dry_run) + return True From 543560c062e37530b70c5df3f7bc1b001a7bd7a6 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 15:21:07 -0500 Subject: [PATCH 16/32] suggestions from @AbbyGi in https://github.com/NSLS2/tst-workflows/pull/8 * this PR now incorporates the branch `refactor-tasks` and includes a minor print formatting change and removing the extra layer of flow --- data_validation.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/data_validation.py b/data_validation.py index 5516c51..c007e39 100644 --- a/data_validation.py +++ b/data_validation.py @@ -21,7 +21,7 @@ def read_stream(run, stream): @flow -def read_all_streams(uid, beamline_acronym, dry_run=False, api_key=None): +def data_validation(uid, beamline_acronym="tst", dry_run=False, api_key=None): logger = get_run_logger() if dry_run: logger.info("Dry run: not creating Tiled client") @@ -40,8 +40,3 @@ def read_all_streams(uid, beamline_acronym, dry_run=False, api_key=None): logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") elapsed_time = ttime.monotonic() - start_time logger.info(f"{elapsed_time = }") - - -@flow -def data_validation(uid, dry_run=False, api_key=None): - read_all_streams(uid, beamline_acronym="tst", dry_run=dry_run, api_key=api_key) From d854a02975667aa03b79f3e05be1da8f716c6a0e Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Wed, 25 Feb 2026 15:37:50 -0500 Subject: [PATCH 17/32] pre-commit fixes --- .github/workflows/ci.yml | 47 ++++++++++++++++++++-------------------- end_of_run_workflow.py | 2 +- test_run.py | 6 +++-- utils.py | 1 - 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 319b2f7..d3b005a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,13 +5,12 @@ name: Python package on: push: - branches: [ "add-testing" ] + branches: ["add-testing"] pull_request: - branches: [ "add-testing" ] + branches: ["add-testing"] jobs: build: - runs-on: ubuntu-latest strategy: fail-fast: false @@ -19,24 +18,24 @@ jobs: python-version: ["3.9", "3.10", "3.11"] steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install flake8 pytest prefect tiled bluesky-tiled-plugins - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - name: Lint with flake8 - run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Test with pytest - env: - TILED_API_KEY: ${{ secrets.TILED_API_KEY }} - run: | - pytest + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest prefect tiled bluesky-tiled-plugins + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + env: + TILED_API_KEY: ${{ secrets.TILED_API_KEY }} + run: | + pytest diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index bdb2700..527d2dc 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -7,7 +7,7 @@ @task def log_completion(dry_run=False): logger = get_run_logger() - logger.info(f"Complete! dry_run:{dry_run}") + logger.info(f"Complete! dry_run: {dry_run}") @flow diff --git a/test_run.py b/test_run.py index f776829..874407e 100644 --- a/test_run.py +++ b/test_run.py @@ -1,5 +1,4 @@ from prefect.logging import disable_run_logger -from prefect.testing.utilities import prefect_test_harness from end_of_run_workflow import end_of_run_workflow import os import pytest @@ -13,5 +12,8 @@ def prefect_disable_logging(): def test_end_of_run_workflow(prefect_disable_logging): print("starting test!") - assert end_of_run_workflow(stop_doc={"run_start":"f0954c84-f652-4350-9f6d-44b724f4ed9f"}, api_key=os.environ["TILED_API_KEY"]) + assert end_of_run_workflow( + stop_doc={"run_start": "f0954c84-f652-4350-9f6d-44b724f4ed9f"}, + api_key=os.environ["TILED_API_KEY"], + ) print("finished test!") diff --git a/utils.py b/utils.py index 4aab2fc..9ef06c1 100644 --- a/utils.py +++ b/utils.py @@ -1,7 +1,6 @@ from tiled.client import from_uri from prefect.blocks.system import Secret -import os LOCATION = "tst" From 5764e8bd7815a81de9b5eaa9e32fca91988976c7 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 3 Mar 2026 15:09:28 -0500 Subject: [PATCH 18/32] read in API key from environment if possible * fail gracefully if not available to enable easier workarounds for testing --- end_of_run_workflow.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 527d2dc..0c27ec1 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -1,9 +1,20 @@ from prefect import task, flow, get_run_logger from data_validation import data_validation from test_extra_client import get_other_docs +from dotenv import dotenv # from long_flow import long_flow +@task +def get_api_key_from_env(api_key=None): + try: + with open("/srv/tiled.secret", "r") as secrets: + load_dotenv(stream=secrets) + api_key = os.environ["TILED_API_KEY"] + except Exception as e: + logger.exception(f"Exception while getting Tiled API key") + return api_key + @task def log_completion(dry_run=False): logger = get_run_logger() @@ -14,6 +25,7 @@ def log_completion(dry_run=False): def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): uid = stop_doc["run_start"] # hello_world() + api_key = get_api_key_from_env(api_key=api_key) data_validation(uid, return_state=True, dry_run=dry_run, api_key=api_key) get_other_docs(uid, dry_run=dry_run, api_key=api_key) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) From fec3a46dac500d71c0278d0b20126081b916e118 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 10 Mar 2026 13:42:58 -0400 Subject: [PATCH 19/32] pre-commit fixes --- end_of_run_workflow.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 0c27ec1..972c90a 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -1,20 +1,32 @@ +import os + from prefect import task, flow, get_run_logger from data_validation import data_validation from test_extra_client import get_other_docs -from dotenv import dotenv +from dotenv import load_dotenv # from long_flow import long_flow @task def get_api_key_from_env(api_key=None): + logger = get_run_logger() try: with open("/srv/tiled.secret", "r") as secrets: load_dotenv(stream=secrets) api_key = os.environ["TILED_API_KEY"] - except Exception as e: - logger.exception(f"Exception while getting Tiled API key") + except Exception: + logger.exception("Exception while getting Tiled API key") + return api_key + + +@task +def get_api_key_from_env(api_key=None): + with open("/srv/tiled.secret", "r") as secrets: + load_dotenv(stream=secrets) + api_key = os.environ["TILED_API_KEY"] return api_key + @task def log_completion(dry_run=False): logger = get_run_logger() From f88bd62714b7eee09ad2f21501540fc406141c85 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 10 Mar 2026 13:44:48 -0400 Subject: [PATCH 20/32] remove duplicate function --- end_of_run_workflow.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 972c90a..d0f9bf8 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -7,18 +7,6 @@ # from long_flow import long_flow -@task -def get_api_key_from_env(api_key=None): - logger = get_run_logger() - try: - with open("/srv/tiled.secret", "r") as secrets: - load_dotenv(stream=secrets) - api_key = os.environ["TILED_API_KEY"] - except Exception: - logger.exception("Exception while getting Tiled API key") - return api_key - - @task def get_api_key_from_env(api_key=None): with open("/srv/tiled.secret", "r") as secrets: From 954eaeacb671a2457786ec3fe1efe3d113011d0a Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 10 Mar 2026 16:23:18 -0400 Subject: [PATCH 21/32] develop mechanism to have end_of_run_workflow run * for CI, calling a function with the Tiled API key and stop document string would be convenient --- end_of_run_workflow.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index d0f9bf8..57aeacc 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -1,4 +1,5 @@ import os +import sys from prefect import task, flow, get_run_logger from data_validation import data_validation @@ -25,9 +26,16 @@ def log_completion(dry_run=False): def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): uid = stop_doc["run_start"] # hello_world() - api_key = get_api_key_from_env(api_key=api_key) + if not api_key: + api_key = get_api_key_from_env(api_key=api_key) data_validation(uid, return_state=True, dry_run=dry_run, api_key=api_key) get_other_docs(uid, dry_run=dry_run, api_key=api_key) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) log_completion(dry_run=dry_run) return True + + +if __name__ == "__main__": + tiled_api_key = os.environ["TEST_TILED_API_KEY"] + stop_doc = sys.argv[1] + end_of_run_workflow(stop_doc, api_key=tiled_api_key) From d82c71ac29c736c41d88f3934f6a9394e0a1ebd2 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Tue, 10 Mar 2026 16:45:55 -0400 Subject: [PATCH 22/32] change name of input env var for test Tiled API key * distinguish from any actual Tiled API key - this will go through end_of_run_workflow() kwargs when the module is called --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3b005a..9aa6c94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,6 @@ jobs: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest env: - TILED_API_KEY: ${{ secrets.TILED_API_KEY }} + TEST_TILED_API_KEY: ${{ secrets.TILED_API_KEY }} run: | pytest From 9f1091d8ad2083033151b4fd1f31ceadd295ddf6 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 11:26:27 -0400 Subject: [PATCH 23/32] rename env var used for test Tiled API key --- test_run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_run.py b/test_run.py index 874407e..d1dc03c 100644 --- a/test_run.py +++ b/test_run.py @@ -14,6 +14,6 @@ def test_end_of_run_workflow(prefect_disable_logging): print("starting test!") assert end_of_run_workflow( stop_doc={"run_start": "f0954c84-f652-4350-9f6d-44b724f4ed9f"}, - api_key=os.environ["TILED_API_KEY"], + api_key=os.environ["TEST_TILED_API_KEY"], ) print("finished test!") From 277bb7e4807996bd459849d567fb978a9d50bc93 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 11:39:24 -0400 Subject: [PATCH 24/32] update github secret name * match what is used in workflow --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9aa6c94..a10c91d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,6 +36,6 @@ jobs: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest env: - TEST_TILED_API_KEY: ${{ secrets.TILED_API_KEY }} + TEST_TILED_API_KEY: ${{ secrets.TEST_TILED_API_KEY }} run: | pytest From 1a51f7291848a182a92a71c981e99148a88fb035 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 5 Feb 2026 13:32:39 -0500 Subject: [PATCH 25/32] update pixi.toml with explicit addition of python-dotenv * already included in lock file, so no update necessary --- pixi.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pixi.toml b/pixi.toml index 3d27267..8b61aae 100644 --- a/pixi.toml +++ b/pixi.toml @@ -8,6 +8,7 @@ prefect = "3.*" python = "<3.14" tiled-client = ">=0.2.3" bluesky-tiled-plugins = ">=2" +python-dotenv = ">=1.2.1,<2" [pypi-dependencies] lixtools = "==2023.1.23.0" From f633f00139a97b8e55c5eae98e706efcd8d03b87 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 5 Feb 2026 13:33:25 -0500 Subject: [PATCH 26/32] update code to use dotenv * read TILED_API_KEY in from env.secrets * a couple of other fix-ups --- data_validation.py | 12 ++++++++---- utils.py | 16 ++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/data_validation.py b/data_validation.py index c007e39..0f8ef1d 100644 --- a/data_validation.py +++ b/data_validation.py @@ -1,5 +1,7 @@ +import os + +from dotenv import load_dotenv from prefect import task, flow, get_run_logger -from prefect.blocks.system import Secret import time as ttime from tiled.client import from_uri @@ -7,9 +9,11 @@ @task(retries=2, retry_delay_seconds=10) def read_run(uid, api_key=None): logger = get_run_logger() - if not api_key: - api_key = Secret.load("tiled-tst-api-key").get() - cl = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key) + with open("/srv/env.secrets", "r") as secrets: + load_dotenv(stream=secrets) + api_key = os.environ["TILED_API_KEY"] + logger.info(f"first 4 characters of key: {api_key[:4]}") + cl = from_profile("nsls2", api_key=api_key) run = cl["tst"]["raw"][uid] logger.info(f"Validating uid {run.start['uid']}") return run diff --git a/utils.py b/utils.py index 9ef06c1..d30291b 100644 --- a/utils.py +++ b/utils.py @@ -1,12 +1,12 @@ +from dotenv import load_dotenv +from prefect import get_run_logger from tiled.client import from_uri -from prefect.blocks.system import Secret -LOCATION = "tst" - - -def get_tiled_client(api_key=None): - if not api_key: - api_key = Secret.load(f"tiled-{LOCATION}-api-key").get() - tiled_client = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key)[LOCATION] +def get_tiled_client(): + logger = get_run_logger() + with open("/srv/env.secrets", "r") as secrets: + load_dotenv(stream=secrets) + api_key = os.environ["TILED_API_KEY"] + tiled_client = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key)["tst"] return tiled_client From 954986c08d2ff3c3e29ce528c6ca425ab78bf8bb Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:06:37 -0400 Subject: [PATCH 27/32] restructure to be more like cms/smi/hex --- data_validation.py | 33 +++++++++++++-------------------- end_of_run_workflow.py | 10 ++-------- test_extra_client.py | 13 +++++-------- utils.py | 12 ------------ 4 files changed, 20 insertions(+), 48 deletions(-) delete mode 100644 utils.py diff --git a/data_validation.py b/data_validation.py index 0f8ef1d..4d5b065 100644 --- a/data_validation.py +++ b/data_validation.py @@ -7,15 +7,13 @@ @task(retries=2, retry_delay_seconds=10) -def read_run(uid, api_key=None): - logger = get_run_logger() +def get_run(uid, api_key=None): with open("/srv/env.secrets", "r") as secrets: load_dotenv(stream=secrets) api_key = os.environ["TILED_API_KEY"] logger.info(f"first 4 characters of key: {api_key[:4]}") - cl = from_profile("nsls2", api_key=api_key) - run = cl["tst"]["raw"][uid] - logger.info(f"Validating uid {run.start['uid']}") + cl = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key) + run = cl["tst/raw"][uid] return run @@ -25,22 +23,17 @@ def read_stream(run, stream): @flow -def data_validation(uid, beamline_acronym="tst", dry_run=False, api_key=None): +def data_validation(uid, api_key=None): logger = get_run_logger() - if dry_run: - logger.info("Dry run: not creating Tiled client") - else: - run = read_run(uid, api_key) + run = get_run(uid, api_key=api_key) + logger.info(f"Validating uid {run.start['uid']}") start_time = ttime.monotonic() - if dry_run: - logger.info(f"Dry run: not reading streams from uid {uid}") - else: - for stream in run: - logger.info(f"{stream}:") - stream_start_time = ttime.monotonic() - stream_data = read_stream(run, stream) # noqa: F841 - stream_elapsed_time = ttime.monotonic() - stream_start_time - logger.info(f"{stream} elapsed_time = {stream_elapsed_time}") - logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") + for stream in run: + logger.info(f"{stream}:") + stream_start_time = ttime.monotonic() + stream_data = read_stream(run, stream) # noqa: F841 + stream_elapsed_time = ttime.monotonic() - stream_start_time + logger.info(f"{stream} elapsed_time = {stream_elapsed_time}") + logger.info(f"{stream} nbytes = {stream_data.nbytes:_}") elapsed_time = ttime.monotonic() - start_time logger.info(f"{elapsed_time = }") diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index 57aeacc..a344fb5 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -28,14 +28,8 @@ def end_of_run_workflow(stop_doc, dry_run=False, api_key=None): # hello_world() if not api_key: api_key = get_api_key_from_env(api_key=api_key) - data_validation(uid, return_state=True, dry_run=dry_run, api_key=api_key) - get_other_docs(uid, dry_run=dry_run, api_key=api_key) + data_validation(uid, api_key=api_key) + get_other_docs(uid, api_key=api_key) # long_flow(iterations=100, sleep_length=10, dry_run=dry_run) log_completion(dry_run=dry_run) return True - - -if __name__ == "__main__": - tiled_api_key = os.environ["TEST_TILED_API_KEY"] - stop_doc = sys.argv[1] - end_of_run_workflow(stop_doc, api_key=tiled_api_key) diff --git a/test_extra_client.py b/test_extra_client.py index 4a8b2d8..8910303 100644 --- a/test_extra_client.py +++ b/test_extra_client.py @@ -1,13 +1,10 @@ from prefect import task, get_run_logger -from utils import get_tiled_client +from data_validation import get_run @task -def get_other_docs(uid, dry_run=False, api_key=None): +def get_other_docs(uid, api_key=None): logger = get_run_logger() - if not dry_run: - result = get_tiled_client(api_key)["raw"][uid] - for name, doc in result.documents(): - logger.info(f"name: {name}, doc: {doc}") - else: - logger.info("Dry run: not getting docs") + result = get_run(uid, api_key=api_key) + for name, doc in result.documents(): + logger.info(f"name: {name}, doc: {doc}") diff --git a/utils.py b/utils.py deleted file mode 100644 index d30291b..0000000 --- a/utils.py +++ /dev/null @@ -1,12 +0,0 @@ -from dotenv import load_dotenv -from prefect import get_run_logger -from tiled.client import from_uri - - -def get_tiled_client(): - logger = get_run_logger() - with open("/srv/env.secrets", "r") as secrets: - load_dotenv(stream=secrets) - api_key = os.environ["TILED_API_KEY"] - tiled_client = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key)["tst"] - return tiled_client From 0c6e804f2cd2bf81d8b1d42ad183b035cd499f9e Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:11:12 -0400 Subject: [PATCH 28/32] pre-commit - lint fixes --- data_validation.py | 1 - end_of_run_workflow.py | 1 - 2 files changed, 2 deletions(-) diff --git a/data_validation.py b/data_validation.py index 4d5b065..3808818 100644 --- a/data_validation.py +++ b/data_validation.py @@ -11,7 +11,6 @@ def get_run(uid, api_key=None): with open("/srv/env.secrets", "r") as secrets: load_dotenv(stream=secrets) api_key = os.environ["TILED_API_KEY"] - logger.info(f"first 4 characters of key: {api_key[:4]}") cl = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key) run = cl["tst/raw"][uid] return run diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index a344fb5..c5835aa 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -1,5 +1,4 @@ import os -import sys from prefect import task, flow, get_run_logger from data_validation import data_validation From 44e6e378272af187bf6093ee758a40ddb7cb7a0e Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:19:00 -0400 Subject: [PATCH 29/32] fix api key handling * remove from data_validation which is no longer used * update deployment file for current locations --- data_validation.py | 3 --- end_of_run_workflow.py | 2 +- prefect.yaml | 4 +--- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/data_validation.py b/data_validation.py index 3808818..06bdee5 100644 --- a/data_validation.py +++ b/data_validation.py @@ -8,9 +8,6 @@ @task(retries=2, retry_delay_seconds=10) def get_run(uid, api_key=None): - with open("/srv/env.secrets", "r") as secrets: - load_dotenv(stream=secrets) - api_key = os.environ["TILED_API_KEY"] cl = from_uri("https://tiled.nsls2.bnl.gov", api_key=api_key) run = cl["tst/raw"][uid] return run diff --git a/end_of_run_workflow.py b/end_of_run_workflow.py index c5835aa..8c69aad 100644 --- a/end_of_run_workflow.py +++ b/end_of_run_workflow.py @@ -9,7 +9,7 @@ @task def get_api_key_from_env(api_key=None): - with open("/srv/tiled.secret", "r") as secrets: + with open("/srv/container.secret", "r") as secrets: load_dotenv(stream=secrets) api_key = os.environ["TILED_API_KEY"] return api_key diff --git a/prefect.yaml b/prefect.yaml index 065a601..e8cb8ed 100644 --- a/prefect.yaml +++ b/prefect.yaml @@ -24,14 +24,12 @@ deployments: schedule: {} work_pool: job_variables: - env: - TILED_SITE_PROFILES: /nsls2/software/etc/tiled/profiles image: ghcr.io/nsls2/tst-workflows:main image_pull_policy: Always network_mode: slirp4netns userns: "keep-id:uid=402974,gid=402974" # workflow-tst:workflow-tst volumes: - /nsls2/data/tst/proposals:/nsls2/data/tst/proposals - - /nsls2/software/etc/tiled:/nsls2/software/etc/tiled + - /srv/prefect3-docker-worker-tst/app:/srv auto_remove: true name: tst-work-pool-docker From 017c0bf940e5b0e6ce04bd5502228bf0f797befb Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:21:01 -0400 Subject: [PATCH 30/32] publish/deploy from this branch add-testing * for testing --- .github/workflows/publish-ghcr.yml | 2 +- prefect.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-ghcr.yml b/.github/workflows/publish-ghcr.yml index 45e4f05..550cb02 100644 --- a/.github/workflows/publish-ghcr.yml +++ b/.github/workflows/publish-ghcr.yml @@ -4,7 +4,7 @@ name: Create and publish a Docker image # Configures this workflow to run every time a change is pushed to the branch called `release`. on: push: - branches: ["main"] + branches: ["add-testing"] # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: diff --git a/prefect.yaml b/prefect.yaml index e8cb8ed..b2d1827 100644 --- a/prefect.yaml +++ b/prefect.yaml @@ -10,7 +10,7 @@ pull: directory: /repo - prefect.deployments.steps.git_clone: repository: https://github.com/nsls2/tst-workflows.git - branch: main + branch: add-testing deployments: - name: tst-end-of-run-workflow-docker @@ -24,7 +24,7 @@ deployments: schedule: {} work_pool: job_variables: - image: ghcr.io/nsls2/tst-workflows:main + image: ghcr.io/nsls2/tst-workflows:add-testing image_pull_policy: Always network_mode: slirp4netns userns: "keep-id:uid=402974,gid=402974" # workflow-tst:workflow-tst From 71a3858ce730609c8099a46be05fe095e6dc0a9b Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:23:55 -0400 Subject: [PATCH 31/32] pre-commit linting --- data_validation.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/data_validation.py b/data_validation.py index 06bdee5..170b6a7 100644 --- a/data_validation.py +++ b/data_validation.py @@ -1,6 +1,3 @@ -import os - -from dotenv import load_dotenv from prefect import task, flow, get_run_logger import time as ttime from tiled.client import from_uri From b424ca0059cd63dbd4232c12771033983c69e602 Mon Sep 17 00:00:00 2001 From: Jun Aishima Date: Thu, 12 Mar 2026 13:35:54 -0400 Subject: [PATCH 32/32] reset to main * set repo name to main so that these functions will run in production * CI, image build, and pre-commit ran fine so I am happy to change this now --- .github/workflows/ci.yml | 4 ++-- .github/workflows/publish-ghcr.yml | 2 +- prefect.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a10c91d..aca4a10 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,9 +5,9 @@ name: Python package on: push: - branches: ["add-testing"] + branches: ["main"] pull_request: - branches: ["add-testing"] + branches: ["main"] jobs: build: diff --git a/.github/workflows/publish-ghcr.yml b/.github/workflows/publish-ghcr.yml index 550cb02..45e4f05 100644 --- a/.github/workflows/publish-ghcr.yml +++ b/.github/workflows/publish-ghcr.yml @@ -4,7 +4,7 @@ name: Create and publish a Docker image # Configures this workflow to run every time a change is pushed to the branch called `release`. on: push: - branches: ["add-testing"] + branches: ["main"] # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: diff --git a/prefect.yaml b/prefect.yaml index b2d1827..e8cb8ed 100644 --- a/prefect.yaml +++ b/prefect.yaml @@ -10,7 +10,7 @@ pull: directory: /repo - prefect.deployments.steps.git_clone: repository: https://github.com/nsls2/tst-workflows.git - branch: add-testing + branch: main deployments: - name: tst-end-of-run-workflow-docker @@ -24,7 +24,7 @@ deployments: schedule: {} work_pool: job_variables: - image: ghcr.io/nsls2/tst-workflows:add-testing + image: ghcr.io/nsls2/tst-workflows:main image_pull_policy: Always network_mode: slirp4netns userns: "keep-id:uid=402974,gid=402974" # workflow-tst:workflow-tst