diff --git a/.github/workflows/bot-auto-merge.yml b/.github/workflows/bot-auto-merge.yml index 898775e50a..a8b216a008 100644 --- a/.github/workflows/bot-auto-merge.yml +++ b/.github/workflows/bot-auto-merge.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Impersonate auto merge PR bot - uses: tibdex/github-app-token@v1 + uses: tibdex/github-app-token@v2 id: generate-token with: app_id: ${{ secrets.BOT_AUTO_MERGE_PRS_APP_ID }} diff --git a/.github/workflows/build-deploy-pudl.yml b/.github/workflows/build-deploy-pudl.yml index eec4318ecf..1dfa75b644 100644 --- a/.github/workflows/build-deploy-pudl.yml +++ b/.github/workflows/build-deploy-pudl.yml @@ -45,7 +45,7 @@ jobs: - name: Docker Metadata id: docker_metadata - uses: docker/metadata-action@v4.4.0 + uses: docker/metadata-action@v5.3.0 with: images: catalystcoop/pudl-etl flavor: | @@ -83,7 +83,7 @@ jobs: # Setup gcloud CLI - name: Set up Cloud SDK - uses: google-github-actions/setup-gcloud@v1 + uses: google-github-actions/setup-gcloud@v2 - name: Determine commit information run: |- diff --git a/.github/workflows/docker-build-test.yml b/.github/workflows/docker-build-test.yml index d82ebf74cf..6cc14b8d58 100644 --- a/.github/workflows/docker-build-test.yml +++ b/.github/workflows/docker-build-test.yml @@ -17,7 +17,7 @@ jobs: - name: Docker Metadata id: docker_metadata - uses: docker/metadata-action@v4.4.0 + uses: docker/metadata-action@v5.3.0 with: images: catalystcoop/pudl-etl flavor: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7a6385c14d..458bac69f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: with: fetch-depth: 2 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.11" - name: Build source and wheel distributions diff --git a/.github/workflows/run-etl.yml b/.github/workflows/run-etl.yml index d8876e940c..014c3ccb6c 100644 --- a/.github/workflows/run-etl.yml +++ b/.github/workflows/run-etl.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@v4 - name: Docker Metadata id: docker_metadata - uses: docker/metadata-action@v4.4.0 + uses: docker/metadata-action@v5.3.0 # TODO(rousik): we could consider YYYY-MM-DD-HHMM-branch-sha with: images: catalystcoop/pudl-etl-ci diff --git a/.github/workflows/zenodo-cache-sync.yml b/.github/workflows/zenodo-cache-sync.yml index f52d74be78..d4d68c115d 100644 --- a/.github/workflows/zenodo-cache-sync.yml +++ b/.github/workflows/zenodo-cache-sync.yml @@ -69,7 +69,7 @@ jobs: service_account: "zenodo-cache-manager@catalyst-cooperative-pudl.iam.gserviceaccount.com" - name: Set up Cloud SDK - uses: google-github-actions/setup-gcloud@v1 + uses: google-github-actions/setup-gcloud@v2 - name: Update GCS cache with any new Zenodo archives run: | diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3bc8081313..57f096d3d9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: # Formatters: hooks that re-write Python & documentation files #################################################################################### - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.6 + rev: v0.1.7 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 78fe2922af..9737ce3eeb 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -18,6 +18,12 @@ v2023.12.XX outputs describing historical utility and balancing authority service territories. See :issue:`1174` and :pr:`3086`. +Data Coverage +^^^^^^^^^^^^^ +* Updated :doc:`data_sources/epacems` to switch to pulling the quarterly updates of + CEMS instead of the annual files. Integrates CEMS through 2023q3. See issue + :issue:`2973` & PR :pr:`3096`. + --------------------------------------------------------------------------------------- v2023.12.01 --------------------------------------------------------------------------------------- diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml index b3a384bb41..0dbbdcef09 100644 --- a/environments/conda-linux-64.lock.yml +++ b/environments/conda-linux-64.lock.yml @@ -43,11 +43,11 @@ dependencies: - libbrotlicommon=1.1.0=hd590300_1 - libcrc32c=1.1.2=h9c3ff4c_0 - libdeflate=1.19=hd590300_0 - - libev=4.33=h516909a_1 + - libev=4.33=hd590300_2 - libexpat=2.5.0=hcb278e6_1 - libffi=3.4.2=h7f98852_5 - libgfortran5=13.2.0=ha4646dd_3 - - libiconv=1.17=h166bdaf_0 + - libiconv=1.17=hd590300_1 - libjpeg-turbo=3.0.0=hd590300_1 - libnsl=2.0.1=hd590300_0 - libnuma=2.0.16=h0b41bf4_1 @@ -62,7 +62,7 @@ dependencies: - lzo=2.10=h516909a_1000 - ncurses=6.4=h59595ed_2 - nspr=4.35=h27087fc_0 - - openssl=3.1.4=hd590300_0 + - openssl=3.2.0=hd590300_1 - pixman=0.42.2=h59595ed_0 - pthread-stubs=0.4=h36c2ea0_1001 - rdma-core=49.0=hd3aeb46_1 @@ -92,7 +92,7 @@ dependencies: - libgfortran-ng=13.2.0=h69a702a_3 - libkml=1.3.0=h01aab08_1018 - libllvm14=14.0.6=hcd5def8_4 - - libnghttp2=1.58.0=h47da74e_0 + - libnghttp2=1.58.0=h47da74e_1 - libpng=1.6.39=h753d276_0 - libprotobuf=4.24.4=hf27288f_0 - libre2-11=2023.06.02=h7a70373_0 @@ -160,7 +160,7 @@ dependencies: - colorama=0.4.6=pyhd8ed1ab_0 - crashtest=0.4.1=pyhd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_0 - - dagster-pipes=1.5.10=pyhd8ed1ab_0 + - dagster-pipes=1.5.11=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - dbus=1.13.6=h5008d03_3 - debugpy=1.8.0=py311hb755f60_1 @@ -181,7 +181,7 @@ dependencies: - fsspec=2023.12.1=pyhca7485f_0 - gdk-pixbuf=2.42.10=h829c605_4 - google-cloud-sdk=456.0.0=py311h38be061_0 - - greenlet=3.0.1=py311hb755f60_0 + - greenlet=3.0.2=py311hb755f60_0 - gts=0.7.6=h977cf35_4 - hpack=4.0.0=pyh9f0ad1d_0 - httptools=0.6.1=py311h459d7ec_0 @@ -202,9 +202,9 @@ dependencies: - kiwisolver=1.4.5=py311h9547e67_1 - lcms2=2.16=hb7c19ff_0 - libblas=3.9.0=20_linux64_openblas - - libcurl=8.4.0=hca28451_0 + - libcurl=8.5.0=hca28451_0 - libgrpc=1.59.2=hd6c4280_0 - - libpq=16.1=hfc447b1_0 + - libpq=16.1=h33b98f1_7 - libwebp=1.3.2=h658648e_1 - llvmlite=0.41.1=py311ha6695c7_0 - locket=1.0.0=pyhd8ed1ab_0 @@ -233,7 +233,7 @@ dependencies: - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 - platformdirs=4.1.0=pyhd8ed1ab_0 - pluggy=1.3.0=pyhd8ed1ab_0 - - prettier=3.1.0=h31abb78_0 + - prettier=3.1.1=h31abb78_0 - prometheus_client=0.19.0=pyhd8ed1ab_0 - psutil=5.9.5=py311h459d7ec_1 - ptyprocess=0.7.0=pyhd3deb0d_0 @@ -287,7 +287,7 @@ dependencies: - traitlets=5.14.0=pyhd8ed1ab_0 - types-python-dateutil=2.8.19.14=pyhd8ed1ab_0 - types-pyyaml=6.0.12.12=pyhd8ed1ab_0 - - typing_extensions=4.8.0=pyha770c72_0 + - typing_extensions=4.9.0=pyha770c72_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - unicodecsv=0.14.1=pyhd8ed1ab_2 - uri-template=1.3.0=pyhd8ed1ab_0 @@ -321,7 +321,7 @@ dependencies: - cached-property=1.5.2=hd8ed1ab_1 - cairo=1.18.0=h3faef2a_0 - cffi=1.16.0=py311hb3a22ac_0 - - cfitsio=4.3.0=hbdc6101_0 + - cfitsio=4.3.1=hbdc6101_0 - click-default-group=1.2.4=pyhd8ed1ab_0 - click-default-group-wheel=1.2.2=pyhd8ed1ab_0 - click-plugins=1.1.1=py_0 @@ -330,16 +330,16 @@ dependencies: - coloredlogs=14.0=pyhd8ed1ab_3 - comm=0.1.4=pyhd8ed1ab_0 - coverage=7.3.2=py311h459d7ec_0 - - curl=8.4.0=hca28451_0 + - curl=8.5.0=hca28451_0 - fonttools=4.46.0=py311h459d7ec_0 - gitdb=4.0.11=pyhd8ed1ab_0 - graphql-core=3.2.3=pyhd8ed1ab_0 - grpcio=1.59.2=py311ha6695c7_0 - h11=0.14.0=pyhd8ed1ab_0 - h2=4.1.0=pyhd8ed1ab_0 - - hdf5=1.14.2=nompi_h4f84152_100 + - hdf5=1.14.3=nompi_h4f84152_100 - html5lib=1.1=pyh9f0ad1d_0 - - hypothesis=6.91.0=pyha770c72_0 + - hypothesis=6.92.0=pyha770c72_0 - importlib-metadata=7.0.0=pyha770c72_0 - importlib_resources=6.1.1=pyhd8ed1ab_0 - isodate=0.6.1=pyhd8ed1ab_0 @@ -365,9 +365,9 @@ dependencies: - partd=1.4.1=pyhd8ed1ab_0 - pexpect=4.8.0=pyh1a96a4e_2 - pillow=10.1.0=py311ha6c5da5_0 - - pint=0.22=pyhd8ed1ab_1 + - pint=0.23=pyhd8ed1ab_0 - pip=23.3.1=pyhd8ed1ab_0 - - postgresql=16.1=h8972f4a_0 + - postgresql=16.1=h8972f4a_7 - proj=9.3.0=h1d62c97_2 - prompt-toolkit=3.0.41=pyha770c72_0 - protobuf=4.24.4=py311h46cbc50_0 @@ -387,7 +387,7 @@ dependencies: - terminado=0.18.0=pyh0d859eb_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tqdm=4.66.1=pyhd8ed1ab_0 - - typing-extensions=4.8.0=hd8ed1ab_0 + - typing-extensions=4.9.0=hd8ed1ab_0 - typing_inspect=0.9.0=pyhd8ed1ab_0 - universal_pathlib=0.1.4=pyhd8ed1ab_0 - urllib3=1.26.18=pyhd8ed1ab_0 @@ -402,7 +402,7 @@ dependencies: - arrow=1.3.0=pyhd8ed1ab_0 - async-timeout=4.0.3=pyhd8ed1ab_0 - aws-c-s3=0.4.1=hfadff92_0 - - botocore=1.33.9=pyhd8ed1ab_0 + - botocore=1.33.11=pyhd8ed1ab_0 - branca=0.7.0=pyhd8ed1ab_1 - croniter=2.0.1=pyhd8ed1ab_0 - cryptography=41.0.7=py311hcb13ee4_1 @@ -418,7 +418,7 @@ dependencies: - httpcore=1.0.2=pyhd8ed1ab_0 - importlib_metadata=7.0.0=hd8ed1ab_0 - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0 - - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1 + - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0 - kealib=1.5.2=hcd42e92_1 - libnetcdf=4.9.2=nompi_h80fb2b6_112 - libspatialite=5.1.0=h7385560_2 @@ -426,7 +426,7 @@ dependencies: - numpy=1.26.2=py311h64a7726_0 - pbr=6.0.0=pyhd8ed1ab_0 - pendulum=2.1.2=py311h459d7ec_6 - - poppler=23.11.0=h590f24d_0 + - poppler=23.12.0=h590f24d_0 - prompt_toolkit=3.0.41=hd8ed1ab_0 - psycopg2-binary=2.9.9=pyhd8ed1ab_0 - pybtex=0.24.0=pyhd8ed1ab_2 @@ -442,7 +442,7 @@ dependencies: - sqlalchemy=2.0.23=py311h459d7ec_0 - stack_data=0.6.2=pyhd8ed1ab_0 - starlette=0.33.0=pyhd8ed1ab_0 - - tiledb=2.16.3=h8c794c1_3 + - tiledb=2.18.2=h8c794c1_0 - ukkonen=1.0.1=py311h9547e67_4 - uvicorn=0.24.0.post1=py311h38be061_0 - watchfiles=0.21.0=py311h46250e7_0 @@ -468,11 +468,11 @@ dependencies: - isoduration=20.11.0=pyhd8ed1ab_0 - jsonschema=4.20.0=pyhd8ed1ab_0 - jupyter_client=8.6.0=pyhd8ed1ab_0 - - libgdal=3.8.0=he7dcfe9_6 + - libgdal=3.8.1=hd0089ee_2 - numba=0.58.1=py311h96b013e_0 - numexpr=2.8.7=py311h039bad6_104 - oauthlib=3.2.2=pyhd8ed1ab_0 - - pandas=2.1.3=py311h320fe9a_0 + - pandas=2.1.4=py311h320fe9a_0 - pango=1.50.14=ha41ecd1_2 - pybtex-docutils=1.0.3=py311h38be061_1 - pydantic=2.5.2=pyhd8ed1ab_0 @@ -489,16 +489,16 @@ dependencies: - typer=0.9.0=pyhd8ed1ab_0 - uvicorn-standard=0.24.0.post1=h38be061_0 - aws-sdk-cpp=1.11.182=h8beafcf_7 - - boto3=1.33.9=pyhd8ed1ab_0 + - boto3=1.33.11=pyhd8ed1ab_0 - cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0 - - dagster=1.5.10=pyhd8ed1ab_0 + - dagster=1.5.11=pyhd8ed1ab_0 - datasette=0.64.4=pyhd8ed1ab_1 - doc8=1.1.1=pyhd8ed1ab_0 - email-validator=2.1.0.post1=pyhd8ed1ab_0 - frictionless=4.40.8=pyh6c4a22f_0 - - gdal=3.8.0=py311h815a124_6 + - gdal=3.8.1=py311h67923c1_2 - geopandas-base=0.14.1=pyha770c72_0 - - google-auth=2.25.1=pyhca7485f_0 + - google-auth=2.25.2=pyhca7485f_0 - gql-with-requests=3.4.1=pyhd8ed1ab_0 - gtk2=2.24.33=h90689f9_2 - ipykernel=6.26.0=pyhf8b6a83_0 @@ -509,15 +509,15 @@ dependencies: - matplotlib-base=3.8.2=py311h54ef318_0 - nbformat=5.9.2=pyhd8ed1ab_0 - pandera-core=0.17.2=pyhd8ed1ab_1 - - pre-commit=3.5.0=pyha770c72_0 + - pre-commit=3.6.0=pyha770c72_0 - pydantic-settings=2.1.0=pyhd8ed1ab_1 - requests-oauthlib=1.3.1=pyhd8ed1ab_0 - scikit-learn=1.3.2=py311hc009520_2 - timezonefinder=6.2.0=py311h459d7ec_2 - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0 - conda-lock=2.5.1=pyhd8ed1ab_0 - - dagster-graphql=1.5.10=pyhd8ed1ab_0 - - dagster-postgres=0.21.10=pyhd8ed1ab_0 + - dagster-graphql=1.5.11=pyhd8ed1ab_0 + - dagster-postgres=0.21.11=pyhd8ed1ab_0 - fiona=1.9.5=py311hf8e0aa6_2 - google-api-core=2.15.0=pyhd8ed1ab_0 - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0 @@ -530,7 +530,7 @@ dependencies: - qtconsole-base=5.5.1=pyha770c72_0 - recordlinkage=0.16=pyhd8ed1ab_0 - tabulator=1.53.5=pyhd8ed1ab_0 - - dagster-webserver=1.5.10=pyhd8ed1ab_0 + - dagster-webserver=1.5.11=pyhd8ed1ab_0 - geopandas=0.14.1=pyhd8ed1ab_0 - google-cloud-core=2.4.1=pyhd8ed1ab_0 - libarrow-acero=14.0.1=h59595ed_3_cpu diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml index 485dd1c1da..c61689b53c 100644 --- a/environments/conda-lock.yml +++ b/environments/conda-lock.yml @@ -1914,52 +1914,52 @@ package: category: main optional: false - name: boto3 - version: 1.33.9 + version: 1.33.11 manager: conda platform: linux-64 dependencies: - botocore: ">=1.33.9,<1.34.0" + botocore: ">=1.33.11,<1.34.0" jmespath: ">=0.7.1,<2.0.0" python: ">=3.7" s3transfer: ">=0.8.2,<0.9.0" - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 0bc87faa4f6ff6321c4cef9b57e82041 - sha256: 685c90c40889cabc9bd03e67bd066546d019ba13667814d6b78352afe5dd751f + md5: 5bd2b183cccabe53846acc0bc36a701a + sha256: 9b30f449a8eb6e1e4a2b9ce8cf87d0348a92cad1a0df6819f458376dd2f2424d category: main optional: false - name: boto3 - version: 1.33.9 + version: 1.33.11 manager: conda platform: osx-64 dependencies: python: ">=3.7" jmespath: ">=0.7.1,<2.0.0" s3transfer: ">=0.8.2,<0.9.0" - botocore: ">=1.33.9,<1.34.0" - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.9-pyhd8ed1ab_0.conda + botocore: ">=1.33.11,<1.34.0" + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 0bc87faa4f6ff6321c4cef9b57e82041 - sha256: 685c90c40889cabc9bd03e67bd066546d019ba13667814d6b78352afe5dd751f + md5: 5bd2b183cccabe53846acc0bc36a701a + sha256: 9b30f449a8eb6e1e4a2b9ce8cf87d0348a92cad1a0df6819f458376dd2f2424d category: main optional: false - name: boto3 - version: 1.33.9 + version: 1.33.11 manager: conda platform: osx-arm64 dependencies: python: ">=3.7" jmespath: ">=0.7.1,<2.0.0" s3transfer: ">=0.8.2,<0.9.0" - botocore: ">=1.33.9,<1.34.0" - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.9-pyhd8ed1ab_0.conda + botocore: ">=1.33.11,<1.34.0" + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 0bc87faa4f6ff6321c4cef9b57e82041 - sha256: 685c90c40889cabc9bd03e67bd066546d019ba13667814d6b78352afe5dd751f + md5: 5bd2b183cccabe53846acc0bc36a701a + sha256: 9b30f449a8eb6e1e4a2b9ce8cf87d0348a92cad1a0df6819f458376dd2f2424d category: main optional: false - name: botocore - version: 1.33.9 + version: 1.33.11 manager: conda platform: linux-64 dependencies: @@ -1967,14 +1967,14 @@ package: python: ">=3.7" python-dateutil: ">=2.1,<3.0.0" urllib3: ">=1.25.4,<1.27" - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 66b5f9da695d491e2df00c0045f073a3 - sha256: 7658e63b78ae37bb7e2047232a7f6d0d851e3a57231beeb32ea21a2da002e26b + md5: 096f907152d65c6f5ba9d437e27a4074 + sha256: b3ddf4459fa887fc76d1a97eaa9da7a31bd84838bd35cbda72ff54949971dc8a category: main optional: false - name: botocore - version: 1.33.9 + version: 1.33.11 manager: conda platform: osx-64 dependencies: @@ -1982,14 +1982,14 @@ package: python-dateutil: ">=2.1,<3.0.0" jmespath: ">=0.7.1,<2.0.0" urllib3: ">=1.25.4,<1.27" - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 66b5f9da695d491e2df00c0045f073a3 - sha256: 7658e63b78ae37bb7e2047232a7f6d0d851e3a57231beeb32ea21a2da002e26b + md5: 096f907152d65c6f5ba9d437e27a4074 + sha256: b3ddf4459fa887fc76d1a97eaa9da7a31bd84838bd35cbda72ff54949971dc8a category: main optional: false - name: botocore - version: 1.33.9 + version: 1.33.11 manager: conda platform: osx-arm64 dependencies: @@ -1997,10 +1997,10 @@ package: python-dateutil: ">=2.1,<3.0.0" jmespath: ">=0.7.1,<2.0.0" urllib3: ">=1.25.4,<1.27" - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.9-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.11-pyhd8ed1ab_0.conda hash: - md5: 66b5f9da695d491e2df00c0045f073a3 - sha256: 7658e63b78ae37bb7e2047232a7f6d0d851e3a57231beeb32ea21a2da002e26b + md5: 096f907152d65c6f5ba9d437e27a4074 + sha256: b3ddf4459fa887fc76d1a97eaa9da7a31bd84838bd35cbda72ff54949971dc8a category: main optional: false - name: bottleneck @@ -2873,52 +2873,52 @@ package: category: main optional: false - name: cfitsio - version: 4.3.0 + version: 4.3.1 manager: conda platform: linux-64 dependencies: bzip2: ">=1.0.8,<2.0a0" - libcurl: ">=8.2.0,<9.0a0" + libcurl: ">=8.4.0,<9.0a0" libgcc-ng: ">=12" libgfortran-ng: "" libgfortran5: ">=12.3.0" libzlib: ">=1.2.13,<1.3.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.0-hbdc6101_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.1-hbdc6101_0.conda hash: - md5: 797554b8b7603011e8677884381fbcc5 - sha256: c74938f1ade9b8f37b9fa8cc98a5b9262b325506f41d7492ad1d00146e0f1d08 + md5: dcea02841b33a9c49f74ca9328de919a + sha256: b91003bff71351a0132c84d69fbb5afcfa90e57d83f76a180c6a5a0289099fb1 category: main optional: false - name: cfitsio - version: 4.3.0 + version: 4.3.1 manager: conda platform: osx-64 dependencies: bzip2: ">=1.0.8,<2.0a0" - libcurl: ">=8.2.0,<9.0a0" + libcurl: ">=8.4.0,<9.0a0" libgfortran: 5.* - libgfortran5: ">=12.2.0" + libgfortran5: ">=13.2.0" libzlib: ">=1.2.13,<1.3.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/cfitsio-4.3.0-h66f91ea_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/cfitsio-4.3.1-h60fb419_0.conda hash: - md5: f540472ad8a8ea2b39a4c6ca14ebc1b5 - sha256: 0246d80ce305609c7e810514d1aa578ef498a1f05fd2dba5fa46ea845e4e57b9 + md5: 03ab895afe3804b527c12193a9612cac + sha256: 5bd157478529ff4d05b8e8654de0580609177252eb11ecf5201b831effeeb2ec category: main optional: false - name: cfitsio - version: 4.3.0 + version: 4.3.1 manager: conda platform: osx-arm64 dependencies: bzip2: ">=1.0.8,<2.0a0" - libcurl: ">=8.2.0,<9.0a0" + libcurl: ">=8.4.0,<9.0a0" libgfortran: 5.* - libgfortran5: ">=12.3.0" + libgfortran5: ">=13.2.0" libzlib: ">=1.2.13,<1.3.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/cfitsio-4.3.0-hca87796_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/cfitsio-4.3.1-h808cd33_0.conda hash: - md5: a5a1019a6405052124e97999a5204a74 - sha256: 5d03f8d484d29f8d3bdd64afe22ed29d75c639834b40382f8a520f96a7af27c4 + md5: 22b61b2ad129db82da2eee76710f7551 + sha256: 9395bd24ef552ac6063e2d6a6fc57e5c7067a74b8d8ee3f06d8389baffacf016 category: main optional: false - name: chardet @@ -3704,55 +3704,55 @@ package: category: main optional: false - name: curl - version: 8.4.0 + version: 8.5.0 manager: conda platform: linux-64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libcurl: 8.4.0 + libcurl: 8.5.0 libgcc-ng: ">=12" libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.4.0-hca28451_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.5.0-hca28451_0.conda hash: - md5: 2bcf7689cae931dd35d9a45626f49fce - sha256: 373c50b5b668cf39a71d17a42a96144d5efc1e62e7d81c1dd830e2493cefc8cc + md5: e5e83fb15e752dbc8f54c4ac7da7d0f1 + sha256: febf098d6ca901b589d02c58eedcf5cb77d8fa4bfe35a52109f5909980b426db category: main optional: false - name: curl - version: 8.4.0 + version: 8.5.0 manager: conda platform: osx-64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libcurl: 8.4.0 + libcurl: 8.5.0 libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.4.0-h726d00d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.5.0-h726d00d_0.conda hash: - md5: e1de44cac6e7774dd2c1e074f5d637a9 - sha256: 32cb23c91dd4cd88d3e6c7adb38ea3d1a1e5da79c63a20ec27d3d0924fcf644c + md5: a4440b9488f87d4da98c1a4cb121931a + sha256: f9e59c964945f5526cec0beb98e9983cee40da2a1e189f174af3da25a7c38c09 category: main optional: false - name: curl - version: 8.4.0 + version: 8.5.0 manager: conda platform: osx-arm64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libcurl: 8.4.0 + libcurl: 8.5.0 libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.4.0-h2d989ff_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.5.0-h2d989ff_0.conda hash: - md5: ae975c2ea5334bd8a8ddecb5013a30c6 - sha256: d0fa5d1a7a6d0e9dcf930db1e4a750991244567ea5e09a15a00c163a52113465 + md5: e69501791fc0552a668adf28344bb2b1 + sha256: b74a05b0e0f606e8fe6def4bec62cdcc9ae4c08152e0b298252ae033019432d5 category: main optional: false - name: cycler @@ -3792,7 +3792,7 @@ package: category: main optional: false - name: dagster - version: 1.5.10 + version: 1.5.11 manager: conda platform: linux-64 dependencies: @@ -3800,7 +3800,7 @@ package: click: ">=5.0" coloredlogs: ">=6.1,<=14.0" croniter: ">=0.3.34" - dagster-pipes: ">=1.5.10,<1.5.11.0a0" + dagster-pipes: ">=1.5.11,<1.5.12.0a0" docstring_parser: "" grpcio: ">=1.44.0" grpcio-health-checking: ">=1.44.0" @@ -3826,14 +3826,14 @@ package: typing_extensions: ">=4.4.0" universal_pathlib: "" watchdog: ">=0.8.3" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.11-pyhd8ed1ab_0.conda hash: - md5: bcf42b675edb2999669116bc3b1ed789 - sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c + md5: 5c2edce540b4ee809fc191d87325d6b0 + sha256: 73d8ad12f3e280ebec2ae5357ec6b08e19e8f6df63e7be21b4d90db406329844 category: main optional: false - name: dagster - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-64 dependencies: @@ -3866,15 +3866,15 @@ package: alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0" pydantic: ">1.10.0,!=1.10.7" pendulum: <3 - dagster-pipes: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda + dagster-pipes: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.11-pyhd8ed1ab_0.conda hash: - md5: bcf42b675edb2999669116bc3b1ed789 - sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c + md5: 5c2edce540b4ee809fc191d87325d6b0 + sha256: 73d8ad12f3e280ebec2ae5357ec6b08e19e8f6df63e7be21b4d90db406329844 category: main optional: false - name: dagster - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-arm64 dependencies: @@ -3907,32 +3907,32 @@ package: alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0" pydantic: ">1.10.0,!=1.10.7" pendulum: <3 - dagster-pipes: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda + dagster-pipes: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.11-pyhd8ed1ab_0.conda hash: - md5: bcf42b675edb2999669116bc3b1ed789 - sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c + md5: 5c2edce540b4ee809fc191d87325d6b0 + sha256: 73d8ad12f3e280ebec2ae5357ec6b08e19e8f6df63e7be21b4d90db406329844 category: main optional: false - name: dagster-graphql - version: 1.5.10 + version: 1.5.11 manager: conda platform: linux-64 dependencies: - dagster: ">=1.5.10,<1.5.11.0a0" + dagster: ">=1.5.11,<1.5.12.0a0" gql-with-requests: ">=3.0.0" graphene: ">=3" python: ">=3.8" requests: "" starlette: "" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.11-pyhd8ed1ab_0.conda hash: - md5: fd3569582db65a0c88fbc7d1bb803853 - sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129 + md5: bcecd97c7835c5057b220b1fdf52412b + sha256: a968aee0eec0587555f827b584af484149ed235a331222ad10c69f92c80623de category: dev optional: true - name: dagster-graphql - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-64 dependencies: @@ -3941,15 +3941,15 @@ package: python: ">=3.8" graphene: ">=3" gql-with-requests: ">=3.0.0" - dagster: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda + dagster: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.11-pyhd8ed1ab_0.conda hash: - md5: fd3569582db65a0c88fbc7d1bb803853 - sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129 + md5: bcecd97c7835c5057b220b1fdf52412b + sha256: a968aee0eec0587555f827b584af484149ed235a331222ad10c69f92c80623de category: dev optional: true - name: dagster-graphql - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-arm64 dependencies: @@ -3958,110 +3958,110 @@ package: python: ">=3.8" graphene: ">=3" gql-with-requests: ">=3.0.0" - dagster: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda + dagster: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.11-pyhd8ed1ab_0.conda hash: - md5: fd3569582db65a0c88fbc7d1bb803853 - sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129 + md5: bcecd97c7835c5057b220b1fdf52412b + sha256: a968aee0eec0587555f827b584af484149ed235a331222ad10c69f92c80623de category: dev optional: true - name: dagster-pipes - version: 1.5.10 + version: 1.5.11 manager: conda platform: linux-64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 69600c68efc23fb84c05c2e9c1c05947 - sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630 + md5: 521cde2b4e9f5919f1c10384f8050874 + sha256: 84b0f25af328c185f0bb86fbe2a49f2cd2917ecd6c3413881a54b2a92c6a63d5 category: main optional: false - name: dagster-pipes - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 69600c68efc23fb84c05c2e9c1c05947 - sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630 + md5: 521cde2b4e9f5919f1c10384f8050874 + sha256: 84b0f25af328c185f0bb86fbe2a49f2cd2917ecd6c3413881a54b2a92c6a63d5 category: main optional: false - name: dagster-pipes - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-arm64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 69600c68efc23fb84c05c2e9c1c05947 - sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630 + md5: 521cde2b4e9f5919f1c10384f8050874 + sha256: 84b0f25af328c185f0bb86fbe2a49f2cd2917ecd6c3413881a54b2a92c6a63d5 category: main optional: false - name: dagster-postgres - version: 0.21.10 + version: 0.21.11 manager: conda platform: linux-64 dependencies: - dagster: 1.5.10.* + dagster: 1.5.11.* psycopg2-binary: "" python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.11-pyhd8ed1ab_0.conda hash: - md5: ec155b3a7172590ccbc89f461427b5aa - sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0 + md5: de15ce0dd3e33040b34c29fe8c0efafd + sha256: 960e055be62adfd094257eadb0a23eacc9cce3f1b540deddec9b6a498e3ece85 category: main optional: false - name: dagster-postgres - version: 0.21.10 + version: 0.21.11 manager: conda platform: osx-64 dependencies: psycopg2-binary: "" python: ">=3.8" - dagster: 1.5.10.* - url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda + dagster: 1.5.11.* + url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.11-pyhd8ed1ab_0.conda hash: - md5: ec155b3a7172590ccbc89f461427b5aa - sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0 + md5: de15ce0dd3e33040b34c29fe8c0efafd + sha256: 960e055be62adfd094257eadb0a23eacc9cce3f1b540deddec9b6a498e3ece85 category: main optional: false - name: dagster-postgres - version: 0.21.10 + version: 0.21.11 manager: conda platform: osx-arm64 dependencies: psycopg2-binary: "" python: ">=3.8" - dagster: 1.5.10.* - url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda + dagster: 1.5.11.* + url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.11-pyhd8ed1ab_0.conda hash: - md5: ec155b3a7172590ccbc89f461427b5aa - sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0 + md5: de15ce0dd3e33040b34c29fe8c0efafd + sha256: 960e055be62adfd094257eadb0a23eacc9cce3f1b540deddec9b6a498e3ece85 category: main optional: false - name: dagster-webserver - version: 1.5.10 + version: 1.5.11 manager: conda platform: linux-64 dependencies: click: ">=7.0,<9.0" - dagster: ">=1.5.10,<1.5.11.0a0" - dagster-graphql: ">=1.5.10,<1.5.11.0a0" + dagster: ">=1.5.11,<1.5.12.0a0" + dagster-graphql: ">=1.5.11,<1.5.12.0a0" python: ">=3.8" starlette: "" uvicorn-standard: "" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 6161623733c03c21098dce0af904ea6b - sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88 + md5: 26fc6d8624aa44ad7a27ae376c8c8126 + sha256: d2a0d9a100c353b3489d72832ed2541b128ff548a8b314e00d1259c07795be17 category: dev optional: true - name: dagster-webserver - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-64 dependencies: @@ -4069,16 +4069,16 @@ package: uvicorn-standard: "" python: ">=3.8" click: ">=7.0,<9.0" - dagster: ">=1.5.10,<1.5.11.0a0" - dagster-graphql: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda + dagster: ">=1.5.11,<1.5.12.0a0" + dagster-graphql: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 6161623733c03c21098dce0af904ea6b - sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88 + md5: 26fc6d8624aa44ad7a27ae376c8c8126 + sha256: d2a0d9a100c353b3489d72832ed2541b128ff548a8b314e00d1259c07795be17 category: dev optional: true - name: dagster-webserver - version: 1.5.10 + version: 1.5.11 manager: conda platform: osx-arm64 dependencies: @@ -4086,12 +4086,12 @@ package: uvicorn-standard: "" python: ">=3.8" click: ">=7.0,<9.0" - dagster: ">=1.5.10,<1.5.11.0a0" - dagster-graphql: ">=1.5.10,<1.5.11.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda + dagster: ">=1.5.11,<1.5.12.0a0" + dagster-graphql: ">=1.5.11,<1.5.12.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.11-pyhd8ed1ab_0.conda hash: - md5: 6161623733c03c21098dce0af904ea6b - sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88 + md5: 26fc6d8624aa44ad7a27ae376c8c8126 + sha256: d2a0d9a100c353b3489d72832ed2541b128ff548a8b314e00d1259c07795be17 category: dev optional: true - name: dask-core @@ -5873,63 +5873,63 @@ package: category: main optional: false - name: gdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: linux-64 dependencies: - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" libgcc-ng: ">=12" - libgdal: 3.8.0 + libgdal: 3.8.1 libstdcxx-ng: ">=12" libxml2: ">=2.11.6,<2.12.0a0" numpy: ">=1.23.5,<2.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.0-py311h815a124_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.1-py311h67923c1_2.conda hash: - md5: a20379b7539caea4fd3ba6628d862138 - sha256: 7aab0e96f76d15a35b78704d13523f234a47cd8c653d8085c1219a8d7d45ef22 + md5: 36bdf6d2872decceaa4e5c97e128351c + sha256: 18e1c4276dfa5c7b11a796f4317a57b288b1bca82dcab5c466c16694773afff2 category: main optional: false - name: gdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: osx-64 dependencies: __osx: ">=10.9" - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" libcxx: ">=16.0.6" - libgdal: 3.8.0 + libgdal: 3.8.1 libxml2: ">=2.11.6,<2.12.0a0" numpy: ">=1.23.5,<2.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.0-py311h5646c56_6.conda + url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.1-py311h06f03dd_2.conda hash: - md5: 1cb3c8b063c0aca152dd7d7045e8ec2e - sha256: b9428ade4519d84f5ef68174f403cac65ee8d44ba10992809ea54ac56508457b + md5: 9db36469ab5aad24176f0579c83d837c + sha256: 1f821540d3856eb0e341746acd7b506a137214030816b01df96b6272617c8d03 category: main optional: false - name: gdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: osx-arm64 dependencies: __osx: ">=10.9" - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" libcxx: ">=16.0.6" - libgdal: 3.8.0 + libgdal: 3.8.1 libxml2: ">=2.11.6,<2.12.0a0" numpy: ">=1.23.5,<2.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.0-py311h32a4f3d_6.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.1-py311hff5d751_2.conda hash: - md5: b266b8795152cc1dfc9296ac95cb60ad - sha256: f8d113f50e12756c4b6640a8f70b2bccc54cc2e1a29b11f5e3cb3e4671d259be + md5: bacb4115610a2238864ae8cdbd13e040 + sha256: bc852f0ec27d10a03334f2dceef34dfb8be05f76623a28d3fb51e20b0e096920 category: main optional: false - name: gdk-pixbuf @@ -6467,7 +6467,7 @@ package: category: main optional: false - name: google-auth - version: 2.25.1 + version: 2.25.2 manager: conda platform: linux-64 dependencies: @@ -6480,14 +6480,14 @@ package: pyu2f: ">=0.1.5" requests: ">=2.20.0,<3.0.0" rsa: ">=3.1.4,<5" - url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.1-pyhca7485f_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda hash: - md5: ea4120e492a1b82f298419e0f2210a1e - sha256: 4626124ab555cd8620ff9ff0cd4e1e2f8a161667c00c1571241f9fc722b0b8bd + md5: ef008fe13beb99a47cbe5a7a68a1f0ea + sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0 category: main optional: false - name: google-auth - version: 2.25.1 + version: 2.25.2 manager: conda platform: osx-64 dependencies: @@ -6500,14 +6500,14 @@ package: cachetools: ">=2.0.0,<6.0" aiohttp: ">=3.6.2,<4.0.0" cryptography: ">=38.0.3" - url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.1-pyhca7485f_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda hash: - md5: ea4120e492a1b82f298419e0f2210a1e - sha256: 4626124ab555cd8620ff9ff0cd4e1e2f8a161667c00c1571241f9fc722b0b8bd + md5: ef008fe13beb99a47cbe5a7a68a1f0ea + sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0 category: main optional: false - name: google-auth - version: 2.25.1 + version: 2.25.2 manager: conda platform: osx-arm64 dependencies: @@ -6520,10 +6520,10 @@ package: cachetools: ">=2.0.0,<6.0" aiohttp: ">=3.6.2,<4.0.0" cryptography: ">=38.0.3" - url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.1-pyhca7485f_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda hash: - md5: ea4120e492a1b82f298419e0f2210a1e - sha256: 4626124ab555cd8620ff9ff0cd4e1e2f8a161667c00c1571241f9fc722b0b8bd + md5: ef008fe13beb99a47cbe5a7a68a1f0ea + sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0 category: main optional: false - name: google-auth-oauthlib @@ -7168,7 +7168,7 @@ package: category: dev optional: true - name: greenlet - version: 3.0.1 + version: 3.0.2 manager: conda platform: linux-64 dependencies: @@ -7176,14 +7176,14 @@ package: libstdcxx-ng: ">=12" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.1-py311hb755f60_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.2-py311hb755f60_0.conda hash: - md5: 7c82abd17036c6ca0f02f2a8935c5572 - sha256: 8470a1c15889f4830df38966e29e3a7aa4473681b7b5997d916428c929544d74 + md5: 59bf81c0e43e96ff1ebb5140ccc135b5 + sha256: e11f4bf977c21d3c70bb772c57bb800319f1353a8f0bd947f7561e28eae8d808 category: main optional: false - name: greenlet - version: 3.0.1 + version: 3.0.2 manager: conda platform: osx-64 dependencies: @@ -7191,14 +7191,14 @@ package: libcxx: ">=16.0.6" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.1-py311hd39e593_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.2-py311hd39e593_0.conda hash: - md5: 447a2de59f80041e6f63c222d5a5e77f - sha256: 872e40b28dce3abf5d3df621a99247a79d3e642eaf1db284c8a43888e1c7f74b + md5: 6005605b11c7db35cd5d4d04e645ecd3 + sha256: 1120b061eb3216f3c2fd4db8a2150c5185742941c1a66c1e05a8bb26bfa9d026 category: main optional: false - name: greenlet - version: 3.0.1 + version: 3.0.2 manager: conda platform: osx-arm64 dependencies: @@ -7206,10 +7206,10 @@ package: libcxx: ">=16.0.6" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.1-py311hbaf5611_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.2-py311hbaf5611_0.conda hash: - md5: 9136cd518f65a952b2a37c80645ef610 - sha256: 6c8e2e5024ee26099d396a95a55c49ffe3eb8985c764ce875e95f01711f4c2a7 + md5: a2c6cc57bc11c771364d436fe6508c89 + sha256: 47ef5de059adf8ccfb99ef03e5e0337198c06c78c32bcafbf4432276dfac640b category: main optional: false - name: grpcio @@ -7667,58 +7667,60 @@ package: category: main optional: false - name: hdf5 - version: 1.14.2 + version: 1.14.3 manager: conda platform: linux-64 dependencies: - libaec: ">=1.0.6,<2.0a0" - libcurl: ">=8.2.1,<9.0a0" + libaec: ">=1.1.2,<2.0a0" + libcurl: ">=8.4.0,<9.0a0" libgcc-ng: ">=12" libgfortran-ng: "" libgfortran5: ">=12.3.0" libstdcxx-ng: ">=12" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.2,<4.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda hash: - md5: 2de6a9bc8083b49f09b2f6eb28d3ba3c - sha256: f70f18291f912ba019cbb736bb87b6487021154733cd109147a6d9672790b6b8 + md5: d471a5c3abc984b662d9bae3bb7fd8a5 + sha256: b814f8f9598cc6e50127533ec256725183ba69db5fd8cf5443223627f19e3e59 category: main optional: false - name: hdf5 - version: 1.14.2 + version: 1.14.3 manager: conda platform: osx-64 dependencies: - libaec: ">=1.0.6,<2.0a0" - libcurl: ">=8.2.1,<9.0a0" - libcxx: ">=15.0.7" + __osx: ">=10.9" + libaec: ">=1.1.2,<2.0a0" + libcurl: ">=8.4.0,<9.0a0" + libcxx: ">=16.0.6" libgfortran: 5.* - libgfortran5: ">=12.3.0" + libgfortran5: ">=13.2.0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.2,<4.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.2-nompi_hedada53_100.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.3-nompi_h691f4bf_100.conda hash: - md5: 2b1d4f355b60eb10c5cb435b9f0e664f - sha256: 08ab97d63ab4be60c92d3f5931effc565ae6ee0cd686eba81b9d20daf5f181ff + md5: 8e2ac4ae815a8c9743fe37d70f48f075 + sha256: 158dd2ab901659b47e8f7ee0ec1d9e45a1fedc4871391a44a1c8b9e8ba4c9c6b category: main optional: false - name: hdf5 - version: 1.14.2 + version: 1.14.3 manager: conda platform: osx-arm64 dependencies: - libaec: ">=1.0.6,<2.0a0" - libcurl: ">=8.2.1,<9.0a0" - libcxx: ">=15.0.7" + __osx: ">=10.9" + libaec: ">=1.1.2,<2.0a0" + libcurl: ">=8.4.0,<9.0a0" + libcxx: ">=16.0.6" libgfortran: 5.* - libgfortran5: ">=12.3.0" + libgfortran5: ">=13.2.0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.2,<4.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.2-nompi_h3aba7b3_100.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_h5bb55e9_100.conda hash: - md5: 842c5b010b219058098ebfe5aa5891b9 - sha256: 2749910e21a7d1f88a81dc4709fc3565a4a3954eadb4409e7a5be1fc13a5b7ca + md5: 120fefd1da806c4d708ecdfe31263f0c + sha256: 22331a0ac71a4dd1868f05f8197c36815a41a9f2dcfd01b73ff0d87d9e0ea087 category: main optional: false - name: hpack @@ -8053,7 +8055,7 @@ package: category: main optional: false - name: hypothesis - version: 6.91.0 + version: 6.92.0 manager: conda platform: linux-64 dependencies: @@ -8064,14 +8066,14 @@ package: python: ">=3.8" setuptools: "" sortedcontainers: ">=2.1.0,<3.0.0" - url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda hash: - md5: 06da22edc102acb39fcf951b4872f754 - sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117 + md5: af99a4aaa4d7abf306f6799b13a1c018 + sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8 category: main optional: false - name: hypothesis - version: 6.91.0 + version: 6.92.0 manager: conda platform: osx-64 dependencies: @@ -8082,14 +8084,14 @@ package: sortedcontainers: ">=2.1.0,<3.0.0" backports.zoneinfo: ">=0.2.1" exceptiongroup: ">=1.0.0rc8" - url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda hash: - md5: 06da22edc102acb39fcf951b4872f754 - sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117 + md5: af99a4aaa4d7abf306f6799b13a1c018 + sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8 category: main optional: false - name: hypothesis - version: 6.91.0 + version: 6.92.0 manager: conda platform: osx-arm64 dependencies: @@ -8100,10 +8102,10 @@ package: sortedcontainers: ">=2.1.0,<3.0.0" backports.zoneinfo: ">=0.2.1" exceptiongroup: ">=1.0.0rc8" - url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda hash: - md5: 06da22edc102acb39fcf951b4872f754 - sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117 + md5: af99a4aaa4d7abf306f6799b13a1c018 + sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8 category: main optional: false - name: icu @@ -9793,42 +9795,42 @@ package: category: main optional: false - name: jupyter_server_terminals - version: 0.4.4 + version: 0.5.0 manager: conda platform: linux-64 dependencies: python: ">=3.8" terminado: ">=0.8.3" - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda hash: - md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3 - sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1 + md5: 37a8b4098d428ecd40e58f8ec8a8e77d + sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6 category: main optional: false - name: jupyter_server_terminals - version: 0.4.4 + version: 0.5.0 manager: conda platform: osx-64 dependencies: python: ">=3.8" terminado: ">=0.8.3" - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda hash: - md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3 - sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1 + md5: 37a8b4098d428ecd40e58f8ec8a8e77d + sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6 category: main optional: false - name: jupyter_server_terminals - version: 0.4.4 + version: 0.5.0 manager: conda platform: osx-arm64 dependencies: python: ">=3.8" terminado: ">=0.8.3" - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda hash: - md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3 - sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1 + md5: 37a8b4098d428ecd40e58f8ec8a8e77d + sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6 category: main optional: false - name: jupyterlab @@ -11127,55 +11129,55 @@ package: category: main optional: false - name: libcurl - version: 8.4.0 + version: 8.5.0 manager: conda platform: linux-64 dependencies: krb5: ">=1.21.2,<1.22.0a0" libgcc-ng: ">=12" - libnghttp2: ">=1.52.0,<2.0a0" + libnghttp2: ">=1.58.0,<2.0a0" libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.5.0-hca28451_0.conda hash: - md5: 1158ac1d2613b28685644931f11ee807 - sha256: 25f4b6a8827d7b17a66e0bd9b5d194bf9a9e4a46fb14e2ef472fdad4b39426a6 + md5: 7144d5a828e2cae218e0e3c98d8a0aeb + sha256: 00a6bea5ff90ca58eeb15ebc98e08ffb88bddaff27396bb62640064f59d29cf0 category: main optional: false - name: libcurl - version: 8.4.0 + version: 8.5.0 manager: conda platform: osx-64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libnghttp2: ">=1.52.0,<2.0a0" + libnghttp2: ">=1.58.0,<2.0a0" libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.4.0-h726d00d_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.5.0-h726d00d_0.conda hash: - md5: 2c17b4dedf0039736951471f493353bd - sha256: cd3400ecb42fc420acb18e2d836535c44ebd501ebeb4e0bf3830776e9b4ca650 + md5: 86d749e27fe00fa6b7d790a6feaa22a2 + sha256: 7ec7e026be90da0965dfa6b92bbc905c852c13b27f3f83c47156db66ed0668f0 category: main optional: false - name: libcurl - version: 8.4.0 + version: 8.5.0 manager: conda platform: osx-arm64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libnghttp2: ">=1.52.0,<2.0a0" + libnghttp2: ">=1.58.0,<2.0a0" libssh2: ">=1.11.0,<2.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.3,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.4.0-h2d989ff_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.5.0-h2d989ff_0.conda hash: - md5: afabb3372209028627ec03e206f4d967 - sha256: 5ca24ab030b1c56ce07921bf901ea99076e8b7e45586b4a04e5187cc67c87273 + md5: f1211ed00947a84e15a964a8f459f620 + sha256: f1c04be217aaf161ce3c99a8d618871295b5dc1eae2f7ff7b32078af50303f5b category: main optional: false - name: libcxx @@ -11276,11 +11278,11 @@ package: manager: conda platform: linux-64 dependencies: - libgcc-ng: ">=7.5.0" - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 + libgcc-ng: ">=12" + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda hash: - md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3 - sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9 + md5: 172bf1cd1ff8629f2b1179945ed45055 + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 category: main optional: false - name: libev @@ -11288,10 +11290,10 @@ package: manager: conda platform: osx-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda hash: - md5: 79dc2be110b2a3d1e97ec21f691c50ad - sha256: c4154d424431898d84d6afb8b32e3ba749fe5d270d322bb0af74571a3cb09c6b + md5: 899db79329439820b7e8f8de41bca902 + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 category: main optional: false - name: libev @@ -11299,10 +11301,10 @@ package: manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h642e427_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda hash: - md5: 566dbf70fe79eacdb3c3d3d195a27f55 - sha256: eb7325eb2e6bd4c291cb9682781b35b8c0f68cb72651c35a5b9dd22707ebd25c + md5: 36d33e440c31857372a72137f78bacf5 + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f category: main optional: false - name: libevent @@ -11499,25 +11501,25 @@ package: category: dev optional: true - name: libgdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: linux-64 dependencies: __glibc: ">=2.17,<3.0.a0" blosc: ">=1.21.5,<2.0a0" - cfitsio: ">=4.3.0,<4.3.1.0a0" + cfitsio: ">=4.3.1,<4.3.2.0a0" freexl: ">=2.0.0,<3.0a0" geos: ">=3.12.1,<3.12.2.0a0" geotiff: ">=1.7.1,<1.8.0a0" giflib: ">=5.2.1,<5.3.0a0" hdf4: ">=4.2.15,<4.2.16.0a0" - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" json-c: ">=0.17,<0.18.0a0" kealib: ">=1.5.2,<1.6.0a0" lerc: ">=4.0.0,<5.0a0" libaec: ">=1.1.2,<2.0a0" libarchive: ">=3.7.2,<3.8.0a0" - libcurl: ">=8.4.0,<9.0a0" + libcurl: ">=8.5.0,<9.0a0" libdeflate: ">=1.19,<1.20.0a0" libexpat: ">=2.5.0,<3.0a0" libgcc-ng: ">=12" @@ -11528,7 +11530,7 @@ package: libpng: ">=1.6.39,<1.7.0a0" libpq: ">=16.1,<17.0a0" libspatialite: ">=5.1.0,<5.2.0a0" - libsqlite: ">=3.44.1,<4.0a0" + libsqlite: ">=3.44.2,<4.0a0" libstdcxx-ng: ">=12" libtiff: ">=4.6.0,<4.7.0a0" libuuid: ">=2.38.1,<3.0a0" @@ -11537,41 +11539,41 @@ package: libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" openjpeg: ">=2.5.0,<3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" pcre2: ">=10.42,<10.43.0a0" - poppler: ">=23.11.0,<23.12.0a0" + poppler: ">=23.12.0,<23.13.0a0" postgresql: "" proj: ">=9.3.0,<9.3.1.0a0" - tiledb: ">=2.16,<2.17.0a0" + tiledb: ">=2.18.2,<2.19.0a0" xerces-c: ">=3.2.4,<3.3.0a0" xz: ">=5.2.6,<6.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.0-he7dcfe9_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.1-hd0089ee_2.conda hash: - md5: 16ff703a847430fa074c5d53916740c1 - sha256: 06ccb879fc2783c371f1b02d062c4e90dfe4d8c5e9f2f83213bbef0fe27a00b0 + md5: feb838eaf49fd1608413759f7b54c74c + sha256: ba4431f8bf3ae13130827c4f81520ce49f9b22f6f44da137b516a1f51b9bdcb8 category: main optional: false - name: libgdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: osx-64 dependencies: __osx: ">=10.9" blosc: ">=1.21.5,<2.0a0" - cfitsio: ">=4.3.0,<4.3.1.0a0" + cfitsio: ">=4.3.1,<4.3.2.0a0" freexl: ">=2.0.0,<3.0a0" geos: ">=3.12.1,<3.12.2.0a0" geotiff: ">=1.7.1,<1.8.0a0" giflib: ">=5.2.1,<5.3.0a0" hdf4: ">=4.2.15,<4.2.16.0a0" - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" json-c: ">=0.17,<0.18.0a0" kealib: ">=1.5.2,<1.6.0a0" lerc: ">=4.0.0,<5.0a0" libaec: ">=1.1.2,<2.0a0" libarchive: ">=3.7.2,<3.8.0a0" - libcurl: ">=8.4.0,<9.0a0" + libcurl: ">=8.5.0,<9.0a0" libcxx: ">=16.0.6" libdeflate: ">=1.19,<1.20.0a0" libexpat: ">=2.5.0,<3.0a0" @@ -11582,48 +11584,48 @@ package: libpng: ">=1.6.39,<1.7.0a0" libpq: ">=16.1,<17.0a0" libspatialite: ">=5.1.0,<5.2.0a0" - libsqlite: ">=3.44.1,<4.0a0" + libsqlite: ">=3.44.2,<4.0a0" libtiff: ">=4.6.0,<4.7.0a0" libwebp-base: ">=1.3.2,<2.0a0" libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" openjpeg: ">=2.5.0,<3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" pcre2: ">=10.42,<10.43.0a0" - poppler: ">=23.11.0,<23.12.0a0" + poppler: ">=23.12.0,<23.13.0a0" postgresql: "" proj: ">=9.3.0,<9.3.1.0a0" - tiledb: ">=2.16,<2.17.0a0" + tiledb: ">=2.18.2,<2.19.0a0" xerces-c: ">=3.2.4,<3.3.0a0" xz: ">=5.2.6,<6.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.0-h5b0c7d5_6.conda + url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.1-h7bb8e92_2.conda hash: - md5: 01e293a419480a02fc7775f6c6afa530 - sha256: fc602de0bb3d5b7c0493b25b1e4345018fd68f26c672c8abff621c492f67abf4 + md5: bf37886bd95ab0afcf6e07b51ae6b813 + sha256: b34bd433ae5a2378e472daa2ffdef4201ecbd654b1c62261e6c77d948efb689e category: main optional: false - name: libgdal - version: 3.8.0 + version: 3.8.1 manager: conda platform: osx-arm64 dependencies: __osx: ">=10.9" blosc: ">=1.21.5,<2.0a0" - cfitsio: ">=4.3.0,<4.3.1.0a0" + cfitsio: ">=4.3.1,<4.3.2.0a0" freexl: ">=2.0.0,<3.0a0" geos: ">=3.12.1,<3.12.2.0a0" geotiff: ">=1.7.1,<1.8.0a0" giflib: ">=5.2.1,<5.3.0a0" hdf4: ">=4.2.15,<4.2.16.0a0" - hdf5: ">=1.14.2,<1.14.4.0a0" + hdf5: ">=1.14.3,<1.14.4.0a0" json-c: ">=0.17,<0.18.0a0" kealib: ">=1.5.2,<1.6.0a0" lerc: ">=4.0.0,<5.0a0" libaec: ">=1.1.2,<2.0a0" libarchive: ">=3.7.2,<3.8.0a0" - libcurl: ">=8.4.0,<9.0a0" + libcurl: ">=8.5.0,<9.0a0" libcxx: ">=16.0.6" libdeflate: ">=1.19,<1.20.0a0" libexpat: ">=2.5.0,<3.0a0" @@ -11634,26 +11636,26 @@ package: libpng: ">=1.6.39,<1.7.0a0" libpq: ">=16.1,<17.0a0" libspatialite: ">=5.1.0,<5.2.0a0" - libsqlite: ">=3.44.1,<4.0a0" + libsqlite: ">=3.44.2,<4.0a0" libtiff: ">=4.6.0,<4.7.0a0" libwebp-base: ">=1.3.2,<2.0a0" libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" openjpeg: ">=2.5.0,<3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" pcre2: ">=10.42,<10.43.0a0" - poppler: ">=23.11.0,<23.12.0a0" + poppler: ">=23.12.0,<23.13.0a0" postgresql: "" proj: ">=9.3.0,<9.3.1.0a0" - tiledb: ">=2.16,<2.17.0a0" + tiledb: ">=2.18.2,<2.19.0a0" xerces-c: ">=3.2.4,<3.3.0a0" xz: ">=5.2.6,<6.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.0-h76f3012_6.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.1-h1ac08d9_2.conda hash: - md5: c7efc96733da609c84411293fa3a8457 - sha256: 34d8f93a03a58396074dbbcc832a0c84bb6192d9e0ddf70992c4fa40349366c5 + md5: 01eb49a277330eaa5aba72efcfd78b85 + sha256: 8b4f6b74de89820dc02905ab97e0277ae654c062dd7b2106829bf9b7ffb545ed category: main optional: false - name: libgfortran @@ -11916,11 +11918,11 @@ package: manager: conda platform: linux-64 dependencies: - libgcc-ng: ">=10.3.0" - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 + libgcc-ng: ">=12" + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_1.conda hash: - md5: b62b52da46c39ee2bc3c162ac7f1804d - sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7 + md5: 4b06b43d0eca61db2899e4d7a289c302 + sha256: a9364735ef2542558ed59aa5f404707dab674df465cbdf312edeaf5e827b55ed category: main optional: false - name: libiconv @@ -11928,10 +11930,10 @@ package: manager: conda platform: osx-64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hac89ed1_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_1.conda hash: - md5: 691d103d11180486154af49c037b7ed9 - sha256: 4a3294037d595754f7da7c11a41f3922f995aaa333f3cb66f02d8afa032a7bc2 + md5: c4069fa5c051d41093d3fd52caffa285 + sha256: c479e7e0df4a59117ee02152fb85565aa6e4091bbb8e044f3367e52b0ccd8970 category: main optional: false - name: libiconv @@ -11939,10 +11941,10 @@ package: manager: conda platform: osx-arm64 dependencies: {} - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-he4db4b2_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_1.conda hash: - md5: 686f9c755574aa221f29fbcf36a67265 - sha256: 2eb33065783b802f71d52bef6f15ce0fafea0adc8506f10ebd0d490244087bec + md5: df3fbfc1fddc8fa40122206a4e47ea4e + sha256: d407ebd1e72ebb20716ea325cdebdd018bdc3c3d3424e67825db3eaa8809164e category: main optional: false - name: libjpeg-turbo @@ -12227,16 +12229,16 @@ package: manager: conda platform: linux-64 dependencies: - c-ares: ">=1.21.0,<2.0a0" - libev: ">=4.33,<4.34.0a0" + c-ares: ">=1.23.0,<2.0a0" + libev: ">=4.33,<5.0a0" libgcc-ng: ">=12" libstdcxx-ng: ">=12" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda hash: - md5: 9b13d5ee90fc9f09d54fd403247342b4 - sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca + md5: 700ac6ea6d53d5510591c4344d5c989a + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb category: main optional: false - name: libnghttp2 @@ -12245,15 +12247,15 @@ package: platform: osx-64 dependencies: __osx: ">=10.9" - c-ares: ">=1.21.0,<2.0a0" + c-ares: ">=1.23.0,<2.0a0" libcxx: ">=16.0.6" - libev: ">=4.33,<4.34.0a0" + libev: ">=4.33,<5.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda hash: - md5: 864e23fba3678000154f53bbf6d476a2 - sha256: b2b94cdaffa0d4fddd73c04262fdb1d1bcd6f8783979281ccfdb832e159cac4e + md5: faecc55c2a8155d9ff1c0ff9a0fef64f + sha256: 412fd768e787e586602f8e9ea52bf089f3460fc630f6987f0cbd89b70e9a4380 category: main optional: false - name: libnghttp2 @@ -12262,15 +12264,15 @@ package: platform: osx-arm64 dependencies: __osx: ">=10.9" - c-ares: ">=1.21.0,<2.0a0" + c-ares: ">=1.23.0,<2.0a0" libcxx: ">=16.0.6" - libev: ">=4.33,<4.34.0a0" + libev: ">=4.33,<5.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda hash: - md5: b93d94874cfd44bc96496c2ee69f82a9 - sha256: 3597032667444f91ae59343c553da6e93f2b3359bc2c0dd6b7f8260e41572e9c + md5: 1813e066bfcef82de579a0be8a766df4 + sha256: fc97aaaf0c6d0f508be313d86c2705b490998d382560df24be918b8e977802cd category: main optional: false - name: libnsl @@ -12431,12 +12433,11 @@ package: dependencies: krb5: ">=1.21.2,<1.22.0a0" libgcc-ng: ">=12" - libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<3.2.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-hfc447b1_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-h33b98f1_7.conda hash: - md5: 2b7f1893cf40b4ccdc0230bcd94d5ed9 - sha256: 8c92a8cce329a83cc9e94b19d18200c661957c00cfb464f26237d24730864585 + md5: 675317e46167caea24542d85c72f19a3 + sha256: 833fd96338dffc6784fb5f79ab805fa5a4c2cabf5c08c4f1d5caf4e290e39c28 category: main optional: false - name: libpq @@ -12445,12 +12446,11 @@ package: platform: osx-64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<3.2.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-h6dd4ff7_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-ha925e61_7.conda hash: - md5: 39de94ff4ccc306f3d24ef7aef13c689 - sha256: 1a51c9b3451eebf04ac1f7a7a58fec07c2e44d2298514a30f62b5b432a653c07 + md5: ad8be4619f57504e8c243e00ab315ad6 + sha256: addce7453b4ac80faf46ecec76db74d98f57d9711624df600399c56e147b7903 category: main optional: false - name: libpq @@ -12459,12 +12459,11 @@ package: platform: osx-arm64 dependencies: krb5: ">=1.21.2,<1.22.0a0" - libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<3.2.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-hd435d45_0.conda + openssl: ">=3.2.0,<4.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-h0f8b458_7.conda hash: - md5: 883bbf64780c91608f1a7df9203b79a5 - sha256: 1b5c86d5f247b3e154ae373dcebea6979368c4a0ee722d39ec33ee2fc8528c04 + md5: c94283997b390fc897936edf2c1f0d55 + sha256: 2e71c5efc57ec7da59efcb747b615ccde1f70d12eb25128720817a3f3482d622 category: main optional: false - name: libprotobuf @@ -15274,40 +15273,40 @@ package: category: main optional: false - name: openssl - version: 3.1.4 + version: 3.2.0 manager: conda platform: linux-64 dependencies: ca-certificates: "" libgcc-ng: ">=12" - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.0-hd590300_1.conda hash: - md5: 412ba6938c3e2abaca8b1129ea82e238 - sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 + md5: 603827b39ea2b835268adb8c821b8570 + sha256: 80efc6f429bd8e622d999652e5cba2ca56fcdb9c16a439d2ce9b4313116e4a87 category: main optional: false - name: openssl - version: 3.1.4 + version: 3.2.0 manager: conda platform: osx-64 dependencies: ca-certificates: "" - url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.1.4-hd75f5a5_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.2.0-hd75f5a5_1.conda hash: - md5: bc9201da6eb1e0df4107901df5371347 - sha256: 1c436103a8de0dc82c9c56974badaa1b8b8f8cd9f37c2766bd50cd9899720f6b + md5: 06cb561619487c88891839b9beb5244c + sha256: 99161bf349f5dc80322f2a2c188588d11efa662566e4e19f2ac0a36d9fa3de25 category: main optional: false - name: openssl - version: 3.1.4 + version: 3.2.0 manager: conda platform: osx-arm64 dependencies: ca-certificates: "" - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.1.4-h0d3ecfb_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.2.0-h0d3ecfb_1.conda hash: - md5: 5a89552fececf4cd99628318ccbb67a3 - sha256: 3c715b1d4940c7ad6065935db18924b85a54048dde066f963cfc250340639457 + md5: 47d16d26100f19ca495882882b7bc93b + sha256: a53e1c6c058b621fd1d13cca6f9cccd534d2b3f4b4ac789fe26f7902031d6c41 category: main optional: false - name: orc @@ -15440,7 +15439,7 @@ package: category: main optional: false - name: pandas - version: 2.1.3 + version: 2.1.4 manager: conda platform: linux-64 dependencies: @@ -15452,14 +15451,14 @@ package: python-tzdata: ">=2022a" python_abi: 3.11.* pytz: ">=2020.1" - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py311h320fe9a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py311h320fe9a_0.conda hash: - md5: 3ea3486e16d559dfcb539070ed330a1e - sha256: d69759f8e5f3dcae2562e177cdfde5a45e4cd38db732301812aa558c1c80db57 + md5: e44ccb61b6621bf3f8053ae66eba7397 + sha256: 4f40035c77c381e0151c0fb0b39d0dfc343947f7d283c2bced2123273c5d4884 category: main optional: false - name: pandas - version: 2.1.3 + version: 2.1.4 manager: conda platform: osx-64 dependencies: @@ -15471,14 +15470,14 @@ package: python-tzdata: ">=2022a" python_abi: 3.11.* pytz: ">=2020.1" - url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.3-py311h1eadf79_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.4-py311h1eadf79_0.conda hash: - md5: 0a1ea4be8bcc907018694b5d04ac3036 - sha256: 2ca591570ce60be45eae8e5d39a07f08390e9ecc18997f66cb3d712953c09724 + md5: 905aff7f27a734e251526b9a7ecc20ac + sha256: 994d226d29293c1b118c0902af50719c5fc25c63c2c6cf7be7808b44226e19eb category: main optional: false - name: pandas - version: 2.1.3 + version: 2.1.4 manager: conda platform: osx-arm64 dependencies: @@ -15490,10 +15489,10 @@ package: python-tzdata: ">=2022a" python_abi: 3.11.* pytz: ">=2020.1" - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.3-py311h6e08293_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.4-py311h6e08293_0.conda hash: - md5: 0d0ecc6bac2b7a4007bf4d96b125d674 - sha256: eacddc0866e26372578fdeb5059e6f7edf4c6c8f59f494a8d5e64caa032b2600 + md5: 5130445e7fe8465365dab3ed3694c770 + sha256: fa6c79cf5252c22ef8141a405ea9650ea9df2d6436c003b279086e146eaef1e5 category: main optional: false - name: pandera-core @@ -16108,42 +16107,42 @@ package: category: main optional: false - name: pint - version: "0.22" + version: "0.23" manager: conda platform: linux-64 dependencies: python: ">=3.9" typing_extensions: "" - url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda hash: - md5: a719c3f3959c529e558e9ed9f98c3f30 - sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622 + md5: d47f9170e3933e53368e0d447c16856f + sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d category: main optional: false - name: pint - version: "0.22" + version: "0.23" manager: conda platform: osx-64 dependencies: typing_extensions: "" python: ">=3.9" - url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda hash: - md5: a719c3f3959c529e558e9ed9f98c3f30 - sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622 + md5: d47f9170e3933e53368e0d447c16856f + sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d category: main optional: false - name: pint - version: "0.22" + version: "0.23" manager: conda platform: osx-arm64 dependencies: typing_extensions: "" python: ">=3.9" - url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda + url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda hash: - md5: a719c3f3959c529e558e9ed9f98c3f30 - sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622 + md5: d47f9170e3933e53368e0d447c16856f + sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d category: main optional: false - name: pip @@ -16370,7 +16369,7 @@ package: category: main optional: false - name: poppler - version: 23.11.0 + version: 23.12.0 manager: conda platform: linux-64 dependencies: @@ -16381,7 +16380,7 @@ package: lcms2: ">=2.15,<3.0a0" libcurl: ">=8.4.0,<9.0a0" libgcc-ng: ">=12" - libglib: ">=2.78.0,<3.0a0" + libglib: ">=2.78.1,<3.0a0" libiconv: ">=1.17,<2.0a0" libjpeg-turbo: ">=3.0.0,<4.0a0" libpng: ">=1.6.39,<1.7.0a0" @@ -16389,17 +16388,17 @@ package: libtiff: ">=4.6.0,<4.7.0a0" libzlib: ">=1.2.13,<1.3.0a0" nspr: ">=4.35,<5.0a0" - nss: ">=3.94,<4.0a0" + nss: ">=3.95,<4.0a0" openjpeg: ">=2.5.0,<3.0a0" poppler-data: "" - url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.11.0-h590f24d_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.12.0-h590f24d_0.conda hash: - md5: 671439d8eca2084bb5a75561fff23a85 - sha256: 8050002e01be124efcb82e32e740676f5ed7dfe852f335408554e6dc3b060ad9 + md5: 480189ac126a8c6c61e14476c8ba7c9a + sha256: b313920277aca763b590dddf806c56b0aadcdff82f5ace39827cab4792ae4b20 category: main optional: false - name: poppler - version: 23.11.0 + version: 23.12.0 manager: conda platform: osx-64 dependencies: @@ -16412,24 +16411,24 @@ package: lcms2: ">=2.15,<3.0a0" libcurl: ">=8.4.0,<9.0a0" libcxx: ">=16.0.6" - libglib: ">=2.78.0,<3.0a0" + libglib: ">=2.78.1,<3.0a0" libiconv: ">=1.17,<2.0a0" libjpeg-turbo: ">=3.0.0,<4.0a0" libpng: ">=1.6.39,<1.7.0a0" libtiff: ">=4.6.0,<4.7.0a0" libzlib: ">=1.2.13,<1.3.0a0" nspr: ">=4.35,<5.0a0" - nss: ">=3.94,<4.0a0" + nss: ">=3.95,<4.0a0" openjpeg: ">=2.5.0,<3.0a0" poppler-data: "" - url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.11.0-hdd5a5e8_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.12.0-hdd5a5e8_0.conda hash: - md5: 60ffe2d3a09ff99eb2601487d6ddaeea - sha256: fb6a53ddac3fa8c097b4a0b7d2f40219b13bfa3324147aaf6c5a14ee5fb27521 + md5: e1cb9f8e9e21dfa600b08be85d905e5f + sha256: 1271e3c8163125fc1ff14833ddba3f2c6465df5b1d13db76912415bd5a39b492 category: main optional: false - name: poppler - version: 23.11.0 + version: 23.12.0 manager: conda platform: osx-arm64 dependencies: @@ -16442,20 +16441,20 @@ package: lcms2: ">=2.15,<3.0a0" libcurl: ">=8.4.0,<9.0a0" libcxx: ">=16.0.6" - libglib: ">=2.78.0,<3.0a0" + libglib: ">=2.78.1,<3.0a0" libiconv: ">=1.17,<2.0a0" libjpeg-turbo: ">=3.0.0,<4.0a0" libpng: ">=1.6.39,<1.7.0a0" libtiff: ">=4.6.0,<4.7.0a0" libzlib: ">=1.2.13,<1.3.0a0" nspr: ">=4.35,<5.0a0" - nss: ">=3.94,<4.0a0" + nss: ">=3.95,<4.0a0" openjpeg: ">=2.5.0,<3.0a0" poppler-data: "" - url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.11.0-hcdd998b_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.12.0-hcdd998b_0.conda hash: - md5: 19386a03a7c57a378953bafb4f598156 - sha256: a6677b507cbdb6202c872aa461b4bf8cfcbe5791721fe1f42615b89205d4a4a6 + md5: e072f524004eee193e30d243d68c520f + sha256: 13ebaac3bf9b77e92e777d3ed245c2f0a8ac93985e334b0cd797a39f321ae5dd category: main optional: false - name: poppler-data @@ -16499,17 +16498,16 @@ package: krb5: ">=1.21.2,<1.22.0a0" libgcc-ng: ">=12" libpq: "16.1" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" readline: ">=8.2,<9.0a0" tzcode: "" tzdata: "" - zlib: "" - url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_7.conda hash: - md5: 1e9ab0760262044fa00814088667e451 - sha256: 74dfb5793a00a0a9e85296ce0944d8af0f71758574b7c8f9e7d5590250441e24 + md5: 672069c684190f10e5a9bbb5b10d82bb + sha256: fbc18253dbc920034cebbee1ba8080e3e2edb7c0d01d5b2f7d37538da71bf8b7 category: main optional: false - name: postgresql @@ -16519,17 +16517,16 @@ package: dependencies: krb5: ">=1.21.2,<1.22.0a0" libpq: "16.1" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" readline: ">=8.2,<9.0a0" tzcode: "" tzdata: "" - zlib: "" - url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_7.conda hash: - md5: b7322d27093606b939fb92fa33b92beb - sha256: 612393024639882d7515429e639c85fa3b712d114c5a6b3a4b3891b061e1bc89 + md5: 6f83d0483ca6044b227a5547ea5b65df + sha256: 6aceedd6f5a72a0d2e64607b545acfafa015ab74e1264a58a4884ff189631680 category: main optional: false - name: postgresql @@ -16539,105 +16536,104 @@ package: dependencies: krb5: ">=1.21.2,<1.22.0a0" libpq: "16.1" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" - openssl: ">=3.1.4,<4.0a0" + openssl: ">=3.2.0,<4.0a0" readline: ">=8.2,<9.0a0" tzcode: "" tzdata: "" - zlib: "" - url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_7.conda hash: - md5: 37398d1ad2fbeaa7733711b845da863e - sha256: 441f5ad3fac42e7daf9c246ad0dc0962c7f0b4c9ac1044038d3a053d339320bf + md5: bba5c8dd372e5e2cf81bf71e6104fa7b + sha256: 5830151c5b72e95ecbff45b36a88405875514ea27cfce1b5381e98d6cee9974a category: main optional: false - name: pre-commit - version: 3.5.0 + version: 3.6.0 manager: conda platform: linux-64 dependencies: cfgv: ">=2.0.0" identify: ">=1.0.0" nodeenv: ">=0.11.1" - python: ">=3.8" + python: ">=3.9" pyyaml: ">=5.1" virtualenv: ">=20.10.0" - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda hash: - md5: 964e3d762e427661c59263435a14c492 - sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + md5: 473a7cfca197da0a10cff3f6dded7d4b + sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 category: main optional: false - name: pre-commit - version: 3.5.0 + version: 3.6.0 manager: conda platform: osx-64 dependencies: - python: ">=3.8" + python: ">=3.9" pyyaml: ">=5.1" identify: ">=1.0.0" nodeenv: ">=0.11.1" cfgv: ">=2.0.0" virtualenv: ">=20.10.0" - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda hash: - md5: 964e3d762e427661c59263435a14c492 - sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + md5: 473a7cfca197da0a10cff3f6dded7d4b + sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 category: main optional: false - name: pre-commit - version: 3.5.0 + version: 3.6.0 manager: conda platform: osx-arm64 dependencies: - python: ">=3.8" + python: ">=3.9" pyyaml: ">=5.1" identify: ">=1.0.0" nodeenv: ">=0.11.1" cfgv: ">=2.0.0" virtualenv: ">=20.10.0" - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda hash: - md5: 964e3d762e427661c59263435a14c492 - sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + md5: 473a7cfca197da0a10cff3f6dded7d4b + sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 category: main optional: false - name: prettier - version: 3.1.0 + version: 3.1.1 manager: conda platform: linux-64 dependencies: __glibc: ">=2.17,<3.0.a0" - nodejs: ">=20.8.1,<21.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.0-h31abb78_0.conda + nodejs: ">=20.9.0,<21.0a0" + url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.1-h31abb78_0.conda hash: - md5: 825c43da21ded31f538a695cca2961ee - sha256: a836d8d87734c76e04b64f66d2a72262ac09ce7e23c92b3f77d47bdc20267a21 + md5: 9943537898b6e9763fde439fe40f481f + sha256: 3bd2b360fc709008f39315f92c6fbbbbe70f75f6665cf3ddf050130f7614d11a category: main optional: false - name: prettier - version: 3.1.0 + version: 3.1.1 manager: conda platform: osx-64 dependencies: - nodejs: ">=20.8.1,<21.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.0-hbd11d21_0.conda + nodejs: ">=20.9.0,<21.0a0" + url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.1-hbd11d21_0.conda hash: - md5: 0f2d6f2c329df13e0ff0bd3748b2f74f - sha256: 9dfd2b3d2d4c3cbdeb341263d5107b7018197ad167633387832def6f68154e55 + md5: bbc22967cb92235dfd93d9db8faed04f + sha256: 15d29a0e576acc8a37a7b00551ea6fd44819007cc77e4d7f55efb3ddd2a0a09f category: main optional: false - name: prettier - version: 3.1.0 + version: 3.1.1 manager: conda platform: osx-arm64 dependencies: - nodejs: ">=20.8.1,<21.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.0-hb67532b_0.conda + nodejs: ">=20.9.0,<21.0a0" + url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.1-hb67532b_0.conda hash: - md5: dfa0c94c177b8163579301aa4672f245 - sha256: c71c69ba2420da67a4bc1a5a85deab03e3c37cb4dea44a3bef01cc91e24bb1da + md5: c833fb7f54410404e1396868d5272da1 + sha256: de3504e85790bd79ff6206ad0708ddc68d26ce72a0b3478e7a084c6b8af93415 category: main optional: false - name: proj @@ -16908,33 +16904,33 @@ package: category: main optional: false - name: psycopg2 - version: 2.9.7 + version: 2.9.9 manager: conda platform: osx-64 dependencies: - libpq: ">=16.0,<17.0a0" - openssl: ">=3.1.3,<4.0a0" + libpq: ">=16.1,<17.0a0" + openssl: ">=3.2.0,<4.0a0" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.7-py311h187f0af_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.9-py311h187f0af_0.conda hash: - md5: f777a0c47ebe4c2cc2eca6f19aea9347 - sha256: dce8bdee2b563927c71493ad26997c9897939d8fbb0376df80b6c04154ce0412 + md5: 2177c8943bbf9bfc45421ecaebd5be11 + sha256: 73c0cf543b0ddd41993956969f665999f5801e027e3d3524604892baedbd2626 category: main optional: false - name: psycopg2 - version: 2.9.7 + version: 2.9.9 manager: conda platform: osx-arm64 dependencies: - libpq: ">=16.0,<17.0a0" - openssl: ">=3.1.3,<4.0a0" + libpq: ">=16.1,<17.0a0" + openssl: ">=3.2.0,<4.0a0" python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.7-py311h589e011_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.9-py311h589e011_0.conda hash: - md5: e5fd933c7c34b5c02a95e28f05b07f46 - sha256: 30fb7c0c8e1651694dcb9b5b62b7cdc801ce45e06ead0a5d281ce950e1f498f5 + md5: cf560a3c0e56cf6a168f885958ec31ff + sha256: a6340fa9458824b9681ba6cc1de0a618ffd6b19272c4eedcf787a6e627025aa5 category: main optional: false - name: psycopg2-binary @@ -16951,29 +16947,29 @@ package: category: main optional: false - name: psycopg2-binary - version: 2.9.7 + version: 2.9.9 manager: conda platform: osx-64 dependencies: python: ">=3.6" - psycopg2: ">=2.9.7,<2.9.8.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda + psycopg2: ">=2.9.9,<2.9.10.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda hash: - md5: 0212a5c5ae1ab578853364bfc5d9f657 - sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797 + md5: c15b2ec0570f8988819eea58286dbc19 + sha256: bb6184a3de8a6fddaed9104539ada9ac7c5e2bd900284ccf96ef5e4e285e75db category: main optional: false - name: psycopg2-binary - version: 2.9.7 + version: 2.9.9 manager: conda platform: osx-arm64 dependencies: python: ">=3.6" - psycopg2: ">=2.9.7,<2.9.8.0a0" - url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda + psycopg2: ">=2.9.9,<2.9.10.0a0" + url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda hash: - md5: 0212a5c5ae1ab578853364bfc5d9f657 - sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797 + md5: c15b2ec0570f8988819eea58286dbc19 + sha256: bb6184a3de8a6fddaed9104539ada9ac7c5e2bd900284ccf96ef5e4e285e75db category: main optional: false - name: pthread-stubs @@ -17643,7 +17639,7 @@ package: category: main optional: false - name: pyobjc-core - version: "10.0" + version: "10.1" manager: conda platform: osx-64 dependencies: @@ -17651,14 +17647,14 @@ package: python: ">=3.11,<3.12.0a0" python_abi: 3.11.* setuptools: "" - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.0-py311hf110eff_0.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.1-py311h9b70068_0.conda hash: - md5: d26705887703d13c655a6098516e06e2 - sha256: 031b8c48866f1f97a4a12d6a3ea0dc94cb6a735918871460b26f4779f5a01125 + md5: e5a3b39d0ad3ec4cad4438ca51ce6a65 + sha256: b3c7c35b52460bf64cf7854ea5dc083370419f16f3b4d5b16081be623bc52118 category: main optional: false - name: pyobjc-core - version: "10.0" + version: "10.1" manager: conda platform: osx-arm64 dependencies: @@ -17666,40 +17662,40 @@ package: python: ">=3.11,<3.12.0a0" python_abi: 3.11.* setuptools: "" - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.0-py311hb702dc4_0.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.1-py311h665608e_0.conda hash: - md5: 5c441ab09e2d9faf6e875ea9c446b445 - sha256: d3bb68f8da77bffad5fa690d2cc1aeb0be0608ed0b6e08a96d8fc3613f2e7135 + md5: fbf6e60c57d27283b5e616a458e11ecf + sha256: 11437e8835d8637fce58bdb98a6f8e60455c7f11eea2fc2b85d38822c5a4c80f category: main optional: false - name: pyobjc-framework-cocoa - version: "10.0" + version: "10.1" manager: conda platform: osx-64 dependencies: libffi: ">=3.4,<4.0a0" - pyobjc-core: 10.0.* + pyobjc-core: 10.1.* python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.0-py311hf110eff_1.conda + url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.1-py311h9b70068_0.conda hash: - md5: 8fb67274a648901045368717d6221aed - sha256: 54530c1b3bfc361e027adbd8f9d9a23e7c102c7f58c04a169da1457f82975724 + md5: 03de24825bd26bf77746aa3eacb6f980 + sha256: 0062a6ec46b41845a97ca689e056e010fba98a0deaec0ff5d7dfe47eb14ccec4 category: main optional: false - name: pyobjc-framework-cocoa - version: "10.0" + version: "10.1" manager: conda platform: osx-arm64 dependencies: libffi: ">=3.4,<4.0a0" - pyobjc-core: 10.0.* + pyobjc-core: 10.1.* python: ">=3.11,<3.12.0a0" python_abi: 3.11.* - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.0-py311hb702dc4_1.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.1-py311h665608e_0.conda hash: - md5: ee9430e4e9b69a6270c966bb7439c9a0 - sha256: 31a7542b8ced5cb3bc236be0b5777dab4bc0e57fbfc5423e9d0ae09ce8eae16c + md5: 8cbae911599bc02a8ce3b1b33d95abb0 + sha256: 81a15d9449d9570e997ee0cfd7e25c85ceb263915e34235900a1d12bc22c9f30 category: main optional: false - name: pyopenssl @@ -21537,65 +21533,66 @@ package: category: main optional: false - name: tiledb - version: 2.16.3 + version: 2.18.2 manager: conda platform: linux-64 dependencies: bzip2: ">=1.0.8,<2.0a0" - libabseil: ">=20230802.0,<20230803.0a0" + libabseil: ">=20230802.1,<20230803.0a0" libgcc-ng: ">=12" libgoogle-cloud: ">=2.12.0,<2.13.0a0" libstdcxx-ng: ">=12" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" - openssl: ">=3.1.2,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.18.2-h8c794c1_0.conda hash: - md5: 7de728789b0aba16018f726dc5ddbec2 - sha256: f021df4b9cfd1a54aac87a6c0bac604edc8ffb36d5b2c4aa20bf2d759ae04a11 + md5: e824b951c15a74d0a2d3e42676370791 + sha256: c73704c36661193a040e4f1c454ef181277b97d3dc225febac9f3093e60f36bf category: main optional: false - name: tiledb - version: 2.16.3 + version: 2.18.2 manager: conda platform: osx-64 dependencies: - __osx: ">=10.13" + __osx: ">=10.9" bzip2: ">=1.0.8,<2.0a0" - libabseil: ">=20230802.0,<20230803.0a0" - libcxx: ">=15.0.7" + libabseil: ">=20230802.1,<20230803.0a0" + libcxx: ">=16.0.6" libgoogle-cloud: ">=2.12.0,<2.13.0a0" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" - openssl: ">=3.1.2,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.16.3-hd3a41d5_3.conda + url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.18.2-h9fe0a6a_0.conda hash: - md5: 53c2d2746f21a60d0c498c36fb32ec56 - sha256: 9144ad40adb982107dd4f5084d1e488b216025eed91a3feeb3506ee4d5bc98dd + md5: 0615fdde1c114affe6a0250b9d342328 + sha256: daccccc133c363360379e9efa525835cd20ed8ca12381641ccb1353c3d7c34c0 category: main optional: false - name: tiledb - version: 2.16.3 + version: 2.18.2 manager: conda platform: osx-arm64 dependencies: + __osx: ">=10.9" bzip2: ">=1.0.8,<2.0a0" - libabseil: ">=20230802.0,<20230803.0a0" - libcxx: ">=15.0.7" + libabseil: ">=20230802.1,<20230803.0a0" + libcxx: ">=16.0.6" libgoogle-cloud: ">=2.12.0,<2.13.0a0" - libxml2: ">=2.11.5,<2.12.0a0" + libxml2: ">=2.11.6,<2.12.0a0" libzlib: ">=1.2.13,<1.3.0a0" lz4-c: ">=1.9.3,<1.10.0a0" - openssl: ">=3.1.2,<4.0a0" + openssl: ">=3.2.0,<4.0a0" zstd: ">=1.5.5,<1.6.0a0" - url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.16.3-he15c4da_3.conda + url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.18.2-h555b8a3_0.conda hash: - md5: fcf3711dd1817fd6e8ab59be86aa8dd9 - sha256: c2576bf0344b441f4c7d9212cfa68fe64de88dc9da735cb541c7faa0595d260f + md5: c223398e541fce9cfe1abe47df687909 + sha256: da9227601b2bf5607fee33b62ed364561363f994ba41fd82e48d45a2f584210e category: main optional: false - name: timezonefinder @@ -22187,75 +22184,75 @@ package: category: main optional: false - name: typing-extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: linux-64 dependencies: - typing_extensions: 4.8.0 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda + typing_extensions: 4.9.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda hash: - md5: 384462e63262a527bda564fa2d9126c0 - sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d + md5: c16524c1b7227dc80b36b4fa6f77cc86 + sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c category: main optional: false - name: typing-extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: osx-64 dependencies: - typing_extensions: 4.8.0 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda + typing_extensions: 4.9.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda hash: - md5: 384462e63262a527bda564fa2d9126c0 - sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d + md5: c16524c1b7227dc80b36b4fa6f77cc86 + sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c category: main optional: false - name: typing-extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: osx-arm64 dependencies: - typing_extensions: 4.8.0 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda + typing_extensions: 4.9.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda hash: - md5: 384462e63262a527bda564fa2d9126c0 - sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d + md5: c16524c1b7227dc80b36b4fa6f77cc86 + sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c category: main optional: false - name: typing_extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: linux-64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda hash: - md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 - sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde + md5: a92a6440c3fe7052d63244f3aba2a4a7 + sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 category: main optional: false - name: typing_extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: osx-64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda hash: - md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 - sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde + md5: a92a6440c3fe7052d63244f3aba2a4a7 + sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 category: main optional: false - name: typing_extensions - version: 4.8.0 + version: 4.9.0 manager: conda platform: osx-arm64 dependencies: python: ">=3.8" - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda hash: - md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 - sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde + md5: a92a6440c3fe7052d63244f3aba2a4a7 + sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 category: main optional: false - name: typing_inspect diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml index b13e20814c..d9a3d57972 100644 --- a/environments/conda-osx-64.lock.yml +++ b/environments/conda-osx-64.lock.yml @@ -22,10 +22,10 @@ dependencies: - libbrotlicommon=1.1.0=h0dc2134_1 - libcxx=16.0.6=hd57cbcb_0 - libdeflate=1.19=ha4e1b8e_0 - - libev=4.33=haf1e3a3_1 + - libev=4.33=h10d778d_2 - libexpat=2.5.0=hf0c8a7f_1 - libffi=3.4.2=h0d85af4_5 - - libiconv=1.17=hac89ed1_0 + - libiconv=1.17=hd75f5a5_1 - libjpeg-turbo=3.0.0=h0dc2134_1 - libsodium=1.0.18=hbcb3906_1 - libutf8proc=2.8.0=hb7f2c08_0 @@ -70,7 +70,7 @@ dependencies: - lz4-c=1.9.4=hf0c8a7f_0 - ncurses=6.4=h93d8f39_2 - nspr=4.35=hea0b92c_0 - - openssl=3.1.4=hd75f5a5_0 + - openssl=3.2.0=hd75f5a5_1 - pandoc=3.1.3=h9d075a6_0 - pcre2=10.42=h0ad2156_0 - pixman=0.42.2=he965462_0 @@ -93,7 +93,7 @@ dependencies: - libglib=2.78.3=h198397b_0 - libkml=1.3.0=hab3ca0e_1018 - libllvm15=15.0.7=he4b1e75_3 - - libnghttp2=1.58.0=h64cf6d3_0 + - libnghttp2=1.58.0=h64cf6d3_1 - libprotobuf=4.24.4=h0ee05dc_0 - libre2-11=2023.06.02=h4694dbf_0 - librttopo=1.1.0=hf05f67e_15 @@ -120,7 +120,7 @@ dependencies: - libwebp=1.3.2=h44782d1_1 - openjpeg=2.5.0=ha4da562_3 - orc=1.9.0=hd1092d7_4 - - prettier=3.1.0=hbd11d21_0 + - prettier=3.1.1=hbd11d21_0 - python=3.11.6=h30d4d87_0_cpython - re2=2023.06.02=hd34609a_0 - sqlite=3.44.2=h7461747_0 @@ -152,7 +152,7 @@ dependencies: - colorama=0.4.6=pyhd8ed1ab_0 - crashtest=0.4.1=pyhd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_0 - - dagster-pipes=1.5.10=pyhd8ed1ab_0 + - dagster-pipes=1.5.11=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - debugpy=1.8.0=py311hdf8f085_1 - decorator=5.1.1=pyhd8ed1ab_0 @@ -169,7 +169,7 @@ dependencies: - frozenlist=1.4.0=py311h2725bcf_1 - fsspec=2023.12.1=pyhca7485f_0 - google-cloud-sdk=456.0.0=py311h6eed73b_0 - - greenlet=3.0.1=py311hd39e593_0 + - greenlet=3.0.2=py311hd39e593_0 - hpack=4.0.0=pyh9f0ad1d_0 - httptools=0.6.1=py311he705e18_0 - humanfriendly=10.0=pyhd8ed1ab_6 @@ -187,10 +187,10 @@ dependencies: - jupyterlab_widgets=3.0.9=pyhd8ed1ab_0 - kiwisolver=1.4.5=py311h5fe6e05_1 - libblas=3.9.0=20_osx64_openblas - - libcurl=8.4.0=h726d00d_0 + - libcurl=8.5.0=h726d00d_0 - libgd=2.3.3=h0dceb68_9 - libgrpc=1.59.2=ha7f534c_0 - - libpq=16.1=h6dd4ff7_0 + - libpq=16.1=ha925e61_7 - llvmlite=0.41.1=py311hb5c2e0a_0 - locket=1.0.0=pyhd8ed1ab_0 - lxml=4.9.3=py311h719c1e2_2 @@ -270,7 +270,7 @@ dependencies: - traitlets=5.14.0=pyhd8ed1ab_0 - types-python-dateutil=2.8.19.14=pyhd8ed1ab_0 - types-pyyaml=6.0.12.12=pyhd8ed1ab_0 - - typing_extensions=4.8.0=pyha770c72_0 + - typing_extensions=4.9.0=pyha770c72_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - unicodecsv=0.14.1=pyhd8ed1ab_2 - uri-template=1.3.0=pyhd8ed1ab_0 @@ -300,7 +300,7 @@ dependencies: - bleach=6.1.0=pyhd8ed1ab_0 - cached-property=1.5.2=hd8ed1ab_1 - cffi=1.16.0=py311hc0b63fd_0 - - cfitsio=4.3.0=h66f91ea_0 + - cfitsio=4.3.1=h60fb419_0 - click-default-group=1.2.4=pyhd8ed1ab_0 - click-default-group-wheel=1.2.2=pyhd8ed1ab_0 - click-plugins=1.1.1=py_0 @@ -309,7 +309,7 @@ dependencies: - coloredlogs=14.0=pyhd8ed1ab_3 - comm=0.1.4=pyhd8ed1ab_0 - coverage=7.3.2=py311h2725bcf_0 - - curl=8.4.0=h726d00d_0 + - curl=8.5.0=h726d00d_0 - fonttools=4.46.0=py311he705e18_0 - gitdb=4.0.11=pyhd8ed1ab_0 - graphql-core=3.2.3=pyhd8ed1ab_0 @@ -317,9 +317,9 @@ dependencies: - h11=0.14.0=pyhd8ed1ab_0 - h2=4.1.0=pyhd8ed1ab_0 - harfbuzz=8.3.0=hf45c392_0 - - hdf5=1.14.2=nompi_hedada53_100 + - hdf5=1.14.3=nompi_h691f4bf_100 - html5lib=1.1=pyh9f0ad1d_0 - - hypothesis=6.91.0=pyha770c72_0 + - hypothesis=6.92.0=pyha770c72_0 - importlib-metadata=7.0.0=pyha770c72_0 - importlib_resources=6.1.1=pyhd8ed1ab_0 - isodate=0.6.1=pyhd8ed1ab_0 @@ -343,16 +343,16 @@ dependencies: - overrides=7.4.0=pyhd8ed1ab_0 - partd=1.4.1=pyhd8ed1ab_0 - pexpect=4.8.0=pyh1a96a4e_2 - - pint=0.22=pyhd8ed1ab_1 + - pint=0.23=pyhd8ed1ab_0 - pip=23.3.1=pyhd8ed1ab_0 - - poppler=23.11.0=hdd5a5e8_0 - - postgresql=16.1=h413614c_0 + - poppler=23.12.0=hdd5a5e8_0 + - postgresql=16.1=h413614c_7 - proj=9.3.0=h23b96cc_2 - prompt-toolkit=3.0.41=pyha770c72_0 - protobuf=4.24.4=py311h021eaf5_0 - - psycopg2=2.9.7=py311h187f0af_1 + - psycopg2=2.9.9=py311h187f0af_0 - pyasn1-modules=0.3.0=pyhd8ed1ab_0 - - pyobjc-core=10.0=py311hf110eff_0 + - pyobjc-core=10.1=py311h9b70068_0 - pyproject_hooks=1.0.0=pyhd8ed1ab_0 - pytest=7.4.3=pyhd8ed1ab_0 - python-dateutil=2.8.2=pyhd8ed1ab_0 @@ -367,7 +367,7 @@ dependencies: - terminado=0.18.0=pyh31c8845_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tqdm=4.66.1=pyhd8ed1ab_0 - - typing-extensions=4.8.0=hd8ed1ab_0 + - typing-extensions=4.9.0=hd8ed1ab_0 - typing_inspect=0.9.0=pyhd8ed1ab_0 - universal_pathlib=0.1.4=pyhd8ed1ab_0 - urllib3=1.26.18=pyhd8ed1ab_0 @@ -382,7 +382,7 @@ dependencies: - arrow=1.3.0=pyhd8ed1ab_0 - async-timeout=4.0.3=pyhd8ed1ab_0 - aws-crt-cpp=0.24.7=hf3941dc_6 - - botocore=1.33.9=pyhd8ed1ab_0 + - botocore=1.33.11=pyhd8ed1ab_0 - branca=0.7.0=pyhd8ed1ab_1 - croniter=2.0.1=pyhd8ed1ab_0 - cryptography=41.0.7=py311h48c7838_1 @@ -397,7 +397,7 @@ dependencies: - httpcore=1.0.2=pyhd8ed1ab_0 - importlib_metadata=7.0.0=hd8ed1ab_0 - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0 - - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1 + - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0 - kealib=1.5.2=h052fcf7_1 - libnetcdf=4.9.2=nompi_h6a32802_112 - libspatialite=5.1.0=hf63aa75_2 @@ -407,10 +407,10 @@ dependencies: - pbr=6.0.0=pyhd8ed1ab_0 - pendulum=2.1.2=py311h2725bcf_6 - prompt_toolkit=3.0.41=hd8ed1ab_0 - - psycopg2-binary=2.9.7=pyhd8ed1ab_1 + - psycopg2-binary=2.9.9=pyhd8ed1ab_0 - pybtex=0.24.0=pyhd8ed1ab_2 - pydantic-core=2.14.5=py311h5e0f0e4_0 - - pyobjc-framework-cocoa=10.0=py311hf110eff_1 + - pyobjc-framework-cocoa=10.1=py311h9b70068_0 - pyproj=3.6.1=py311he36daed_4 - pytest-console-scripts=1.4.1=pyhd8ed1ab_0 - pytest-cov=4.1.0=pyhd8ed1ab_0 @@ -422,7 +422,7 @@ dependencies: - sqlalchemy=2.0.23=py311he705e18_0 - stack_data=0.6.2=pyhd8ed1ab_0 - starlette=0.33.0=pyhd8ed1ab_0 - - tiledb=2.16.3=hd3a41d5_3 + - tiledb=2.18.2=h9fe0a6a_0 - ukkonen=1.0.1=py311h5fe6e05_4 - uvicorn=0.24.0.post1=py311h6eed73b_0 - watchfiles=0.21.0=py311h5e0f0e4_0 @@ -450,12 +450,12 @@ dependencies: - jsonschema=4.20.0=pyhd8ed1ab_0 - jupyter_client=8.6.0=pyhd8ed1ab_0 - keyring=24.3.0=py311h6eed73b_0 - - libgdal=3.8.0=h5b0c7d5_6 + - libgdal=3.8.1=h7bb8e92_2 - librsvg=2.56.3=hec3db73_0 - numba=0.58.1=py311h32f2313_0 - numexpr=2.8.7=py311h1eadf79_4 - oauthlib=3.2.2=pyhd8ed1ab_0 - - pandas=2.1.3=py311h1eadf79_0 + - pandas=2.1.4=py311h1eadf79_0 - pybtex-docutils=1.0.3=py311h6eed73b_1 - pydantic=2.5.2=pyhd8ed1ab_0 - pyopenssl=23.3.0=pyhd8ed1ab_0 @@ -470,16 +470,16 @@ dependencies: - typeguard=4.1.5=pyhd8ed1ab_1 - typer=0.9.0=pyhd8ed1ab_0 - uvicorn-standard=0.24.0.post1=h6eed73b_0 - - boto3=1.33.9=pyhd8ed1ab_0 + - boto3=1.33.11=pyhd8ed1ab_0 - cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0 - - dagster=1.5.10=pyhd8ed1ab_0 + - dagster=1.5.11=pyhd8ed1ab_0 - datasette=0.64.4=pyhd8ed1ab_1 - doc8=1.1.1=pyhd8ed1ab_0 - email-validator=2.1.0.post1=pyhd8ed1ab_0 - frictionless=4.40.8=pyh6c4a22f_0 - - gdal=3.8.0=py311h5646c56_6 + - gdal=3.8.1=py311h06f03dd_2 - geopandas-base=0.14.1=pyha770c72_0 - - google-auth=2.25.1=pyhca7485f_0 + - google-auth=2.25.2=pyhca7485f_0 - gql-with-requests=3.4.1=pyhd8ed1ab_0 - graphviz=9.0.0=hee74176_1 - ipykernel=6.26.0=pyh3cd1d5f_0 @@ -489,15 +489,15 @@ dependencies: - matplotlib-base=3.8.2=py311hd316c10_0 - nbformat=5.9.2=pyhd8ed1ab_0 - pandera-core=0.17.2=pyhd8ed1ab_1 - - pre-commit=3.5.0=pyha770c72_0 + - pre-commit=3.6.0=pyha770c72_0 - pydantic-settings=2.1.0=pyhd8ed1ab_1 - requests-oauthlib=1.3.1=pyhd8ed1ab_0 - scikit-learn=1.3.2=py311h66081b9_2 - timezonefinder=6.2.0=py311he705e18_2 - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0 - conda-lock=2.5.1=pyhd8ed1ab_0 - - dagster-graphql=1.5.10=pyhd8ed1ab_0 - - dagster-postgres=0.21.10=pyhd8ed1ab_0 + - dagster-graphql=1.5.11=pyhd8ed1ab_0 + - dagster-postgres=0.21.11=pyhd8ed1ab_0 - fiona=1.9.5=py311h809632c_2 - google-api-core=2.15.0=pyhd8ed1ab_0 - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0 @@ -513,7 +513,7 @@ dependencies: - qtconsole-base=5.5.1=pyha770c72_0 - recordlinkage=0.16=pyhd8ed1ab_0 - tabulator=1.53.5=pyhd8ed1ab_0 - - dagster-webserver=1.5.10=pyhd8ed1ab_0 + - dagster-webserver=1.5.11=pyhd8ed1ab_0 - geopandas=0.14.1=pyhd8ed1ab_0 - google-cloud-core=2.4.1=pyhd8ed1ab_0 - libarrow-dataset=14.0.1=hc222712_3_cpu diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml index 9f64382dfb..8637bccd2c 100644 --- a/environments/conda-osx-arm64.lock.yml +++ b/environments/conda-osx-arm64.lock.yml @@ -22,10 +22,10 @@ dependencies: - libbrotlicommon=1.1.0=hb547adb_1 - libcxx=16.0.6=h4653b0c_0 - libdeflate=1.19=hb547adb_0 - - libev=4.33=h642e427_1 + - libev=4.33=h93a5062_2 - libexpat=2.5.0=hb7217d7_1 - libffi=3.4.2=h3422bc3_5 - - libiconv=1.17=he4db4b2_0 + - libiconv=1.17=h0d3ecfb_1 - libjpeg-turbo=3.0.0=hb547adb_1 - libsodium=1.0.18=h27ca646_1 - libutf8proc=2.8.0=h1a8c8d9_0 @@ -71,7 +71,7 @@ dependencies: - lz4-c=1.9.4=hb7217d7_0 - ncurses=6.4=h463b476_2 - nspr=4.35=hb7217d7_0 - - openssl=3.1.4=h0d3ecfb_0 + - openssl=3.2.0=h0d3ecfb_1 - pcre2=10.42=h26f9a81_0 - pixman=0.42.2=h13dd4ca_0 - snappy=1.1.10=h17c5cce_0 @@ -93,7 +93,7 @@ dependencies: - libglib=2.78.3=hb438215_0 - libkml=1.3.0=h1eb4d9f_1018 - libllvm15=15.0.7=h504e6bf_3 - - libnghttp2=1.58.0=ha4dd798_0 + - libnghttp2=1.58.0=ha4dd798_1 - libprotobuf=4.24.4=hc9861d8_0 - libre2-11=2023.06.02=h1753957_0 - librttopo=1.1.0=hc8f776e_15 @@ -120,7 +120,7 @@ dependencies: - libwebp=1.3.2=hf30222e_1 - openjpeg=2.5.0=h4c1507b_3 - orc=1.9.0=h7c018df_4 - - prettier=3.1.0=hb67532b_0 + - prettier=3.1.1=hb67532b_0 - python=3.11.6=h47c9636_0_cpython - re2=2023.06.02=h6135d0a_0 - sqlite=3.44.2=hf2abe2d_0 @@ -152,7 +152,7 @@ dependencies: - colorama=0.4.6=pyhd8ed1ab_0 - crashtest=0.4.1=pyhd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_0 - - dagster-pipes=1.5.10=pyhd8ed1ab_0 + - dagster-pipes=1.5.11=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - debugpy=1.8.0=py311ha891d26_1 - decorator=5.1.1=pyhd8ed1ab_0 @@ -169,7 +169,7 @@ dependencies: - frozenlist=1.4.0=py311heffc1b2_1 - fsspec=2023.12.1=pyhca7485f_0 - google-cloud-sdk=456.0.0=py311h267d04e_0 - - greenlet=3.0.1=py311hbaf5611_0 + - greenlet=3.0.2=py311hbaf5611_0 - hpack=4.0.0=pyh9f0ad1d_0 - httptools=0.6.1=py311h05b510d_0 - humanfriendly=10.0=pyhd8ed1ab_6 @@ -187,10 +187,10 @@ dependencies: - jupyterlab_widgets=3.0.9=pyhd8ed1ab_0 - kiwisolver=1.4.5=py311he4fd1f5_1 - libblas=3.9.0=20_osxarm64_openblas - - libcurl=8.4.0=h2d989ff_0 + - libcurl=8.5.0=h2d989ff_0 - libgd=2.3.3=hfdf3952_9 - libgrpc=1.59.2=hbcf6334_0 - - libpq=16.1=hd435d45_0 + - libpq=16.1=h0f8b458_7 - llvmlite=0.41.1=py311hf5d242d_0 - locket=1.0.0=pyhd8ed1ab_0 - lxml=4.9.3=py311hdef8331_2 @@ -270,7 +270,7 @@ dependencies: - traitlets=5.14.0=pyhd8ed1ab_0 - types-python-dateutil=2.8.19.14=pyhd8ed1ab_0 - types-pyyaml=6.0.12.12=pyhd8ed1ab_0 - - typing_extensions=4.8.0=pyha770c72_0 + - typing_extensions=4.9.0=pyha770c72_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - unicodecsv=0.14.1=pyhd8ed1ab_2 - uri-template=1.3.0=pyhd8ed1ab_0 @@ -300,7 +300,7 @@ dependencies: - bleach=6.1.0=pyhd8ed1ab_0 - cached-property=1.5.2=hd8ed1ab_1 - cffi=1.16.0=py311h4a08483_0 - - cfitsio=4.3.0=hca87796_0 + - cfitsio=4.3.1=h808cd33_0 - click-default-group=1.2.4=pyhd8ed1ab_0 - click-default-group-wheel=1.2.2=pyhd8ed1ab_0 - click-plugins=1.1.1=py_0 @@ -309,7 +309,7 @@ dependencies: - coloredlogs=14.0=pyhd8ed1ab_3 - comm=0.1.4=pyhd8ed1ab_0 - coverage=7.3.2=py311heffc1b2_0 - - curl=8.4.0=h2d989ff_0 + - curl=8.5.0=h2d989ff_0 - fonttools=4.46.0=py311h05b510d_0 - gitdb=4.0.11=pyhd8ed1ab_0 - graphql-core=3.2.3=pyhd8ed1ab_0 @@ -317,9 +317,9 @@ dependencies: - h11=0.14.0=pyhd8ed1ab_0 - h2=4.1.0=pyhd8ed1ab_0 - harfbuzz=8.3.0=h8f0ba13_0 - - hdf5=1.14.2=nompi_h3aba7b3_100 + - hdf5=1.14.3=nompi_h5bb55e9_100 - html5lib=1.1=pyh9f0ad1d_0 - - hypothesis=6.91.0=pyha770c72_0 + - hypothesis=6.92.0=pyha770c72_0 - importlib-metadata=7.0.0=pyha770c72_0 - importlib_resources=6.1.1=pyhd8ed1ab_0 - isodate=0.6.1=pyhd8ed1ab_0 @@ -343,16 +343,16 @@ dependencies: - overrides=7.4.0=pyhd8ed1ab_0 - partd=1.4.1=pyhd8ed1ab_0 - pexpect=4.8.0=pyh1a96a4e_2 - - pint=0.22=pyhd8ed1ab_1 + - pint=0.23=pyhd8ed1ab_0 - pip=23.3.1=pyhd8ed1ab_0 - - poppler=23.11.0=hcdd998b_0 - - postgresql=16.1=hc6ab77f_0 + - poppler=23.12.0=hcdd998b_0 + - postgresql=16.1=hc6ab77f_7 - proj=9.3.0=h52fb9d0_2 - prompt-toolkit=3.0.41=pyha770c72_0 - protobuf=4.24.4=py311h4d1eceb_0 - - psycopg2=2.9.7=py311h589e011_1 + - psycopg2=2.9.9=py311h589e011_0 - pyasn1-modules=0.3.0=pyhd8ed1ab_0 - - pyobjc-core=10.0=py311hb702dc4_0 + - pyobjc-core=10.1=py311h665608e_0 - pyproject_hooks=1.0.0=pyhd8ed1ab_0 - pytest=7.4.3=pyhd8ed1ab_0 - python-dateutil=2.8.2=pyhd8ed1ab_0 @@ -367,7 +367,7 @@ dependencies: - terminado=0.18.0=pyh31c8845_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tqdm=4.66.1=pyhd8ed1ab_0 - - typing-extensions=4.8.0=hd8ed1ab_0 + - typing-extensions=4.9.0=hd8ed1ab_0 - typing_inspect=0.9.0=pyhd8ed1ab_0 - universal_pathlib=0.1.4=pyhd8ed1ab_0 - urllib3=1.26.18=pyhd8ed1ab_0 @@ -382,7 +382,7 @@ dependencies: - arrow=1.3.0=pyhd8ed1ab_0 - async-timeout=4.0.3=pyhd8ed1ab_0 - aws-crt-cpp=0.24.7=hba4ac3b_6 - - botocore=1.33.9=pyhd8ed1ab_0 + - botocore=1.33.11=pyhd8ed1ab_0 - branca=0.7.0=pyhd8ed1ab_1 - croniter=2.0.1=pyhd8ed1ab_0 - cryptography=41.0.7=py311h08c85a6_1 @@ -397,7 +397,7 @@ dependencies: - httpcore=1.0.2=pyhd8ed1ab_0 - importlib_metadata=7.0.0=hd8ed1ab_0 - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0 - - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1 + - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0 - kealib=1.5.2=h47b5e36_1 - libnetcdf=4.9.2=nompi_hb2fb864_112 - libspatialite=5.1.0=h66af7d6_2 @@ -407,10 +407,10 @@ dependencies: - pbr=6.0.0=pyhd8ed1ab_0 - pendulum=2.1.2=py311heffc1b2_6 - prompt_toolkit=3.0.41=hd8ed1ab_0 - - psycopg2-binary=2.9.7=pyhd8ed1ab_1 + - psycopg2-binary=2.9.9=pyhd8ed1ab_0 - pybtex=0.24.0=pyhd8ed1ab_2 - pydantic-core=2.14.5=py311h94f323b_0 - - pyobjc-framework-cocoa=10.0=py311hb702dc4_1 + - pyobjc-framework-cocoa=10.1=py311h665608e_0 - pyproj=3.6.1=py311h20a9b75_4 - pytest-console-scripts=1.4.1=pyhd8ed1ab_0 - pytest-cov=4.1.0=pyhd8ed1ab_0 @@ -422,7 +422,7 @@ dependencies: - sqlalchemy=2.0.23=py311h05b510d_0 - stack_data=0.6.2=pyhd8ed1ab_0 - starlette=0.33.0=pyhd8ed1ab_0 - - tiledb=2.16.3=he15c4da_3 + - tiledb=2.18.2=h555b8a3_0 - ukkonen=1.0.1=py311he4fd1f5_4 - uvicorn=0.24.0.post1=py311h267d04e_0 - watchfiles=0.21.0=py311h94f323b_0 @@ -450,12 +450,12 @@ dependencies: - jsonschema=4.20.0=pyhd8ed1ab_0 - jupyter_client=8.6.0=pyhd8ed1ab_0 - keyring=24.3.0=py311h267d04e_0 - - libgdal=3.8.0=h76f3012_6 + - libgdal=3.8.1=h1ac08d9_2 - librsvg=2.56.3=h0db3404_0 - numba=0.58.1=py311h9ec4793_0 - numexpr=2.8.7=py311h6e08293_4 - oauthlib=3.2.2=pyhd8ed1ab_0 - - pandas=2.1.3=py311h6e08293_0 + - pandas=2.1.4=py311h6e08293_0 - pybtex-docutils=1.0.3=py311h267d04e_1 - pydantic=2.5.2=pyhd8ed1ab_0 - pyopenssl=23.3.0=pyhd8ed1ab_0 @@ -470,16 +470,16 @@ dependencies: - typeguard=4.1.5=pyhd8ed1ab_1 - typer=0.9.0=pyhd8ed1ab_0 - uvicorn-standard=0.24.0.post1=ha1ab1f8_0 - - boto3=1.33.9=pyhd8ed1ab_0 + - boto3=1.33.11=pyhd8ed1ab_0 - cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0 - - dagster=1.5.10=pyhd8ed1ab_0 + - dagster=1.5.11=pyhd8ed1ab_0 - datasette=0.64.4=pyhd8ed1ab_1 - doc8=1.1.1=pyhd8ed1ab_0 - email-validator=2.1.0.post1=pyhd8ed1ab_0 - frictionless=4.40.8=pyh6c4a22f_0 - - gdal=3.8.0=py311h32a4f3d_6 + - gdal=3.8.1=py311hff5d751_2 - geopandas-base=0.14.1=pyha770c72_0 - - google-auth=2.25.1=pyhca7485f_0 + - google-auth=2.25.2=pyhca7485f_0 - gql-with-requests=3.4.1=pyhd8ed1ab_0 - graphviz=9.0.0=h3face73_1 - ipykernel=6.26.0=pyh3cd1d5f_0 @@ -489,15 +489,15 @@ dependencies: - matplotlib-base=3.8.2=py311hfdba5f6_0 - nbformat=5.9.2=pyhd8ed1ab_0 - pandera-core=0.17.2=pyhd8ed1ab_1 - - pre-commit=3.5.0=pyha770c72_0 + - pre-commit=3.6.0=pyha770c72_0 - pydantic-settings=2.1.0=pyhd8ed1ab_1 - requests-oauthlib=1.3.1=pyhd8ed1ab_0 - scikit-learn=1.3.2=py311ha25ca4d_2 - timezonefinder=6.2.0=py311h05b510d_2 - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0 - conda-lock=2.5.1=pyhd8ed1ab_0 - - dagster-graphql=1.5.10=pyhd8ed1ab_0 - - dagster-postgres=0.21.10=pyhd8ed1ab_0 + - dagster-graphql=1.5.11=pyhd8ed1ab_0 + - dagster-postgres=0.21.11=pyhd8ed1ab_0 - fiona=1.9.5=py311h4760b73_2 - google-api-core=2.15.0=pyhd8ed1ab_0 - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0 @@ -513,7 +513,7 @@ dependencies: - qtconsole-base=5.5.1=pyha770c72_0 - recordlinkage=0.16=pyhd8ed1ab_0 - tabulator=1.53.5=pyhd8ed1ab_0 - - dagster-webserver=1.5.10=pyhd8ed1ab_0 + - dagster-webserver=1.5.11=pyhd8ed1ab_0 - geopandas=0.14.1=pyhd8ed1ab_0 - google-cloud-core=2.4.1=pyhd8ed1ab_0 - libarrow-dataset=14.0.1=had9dd58_3_cpu diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py index 9d0d1cc06e..377c3634cf 100644 --- a/src/pudl/etl/__init__.py +++ b/src/pudl/etl/__init__.py @@ -92,6 +92,23 @@ "epacems_io_manager": epacems_io_manager, } +# By default, limit CEMS year processing concurrency to prevent memory overload. +default_config = { + "execution": { + "config": { + "multiprocess": { + "tag_concurrency_limits": [ + { + "key": "datasource", + "value": "epacems", + "limit": 2, + } + ], + }, + } + } +} + def create_non_cems_selection(all_assets: list[AssetsDefinition]) -> AssetSelection: """Create a selection of assets excluding CEMS and all downstream assets. @@ -131,7 +148,9 @@ def load_dataset_settings_from_file(setting_filename: str) -> dict: resources=default_resources, jobs=[ define_asset_job( - name="etl_full", description="This job executes all years of all assets." + name="etl_full", + description="This job executes all years of all assets.", + config=default_config, ), define_asset_job( name="etl_full_no_cems", @@ -141,7 +160,8 @@ def load_dataset_settings_from_file(setting_filename: str) -> dict: ), define_asset_job( name="etl_fast", - config={ + config=default_config + | { "resources": { "dataset_settings": { "config": load_dataset_settings_from_file("etl_fast") diff --git a/src/pudl/etl/epacems_assets.py b/src/pudl/etl/epacems_assets.py index 9b66e29531..603ac37fb3 100644 --- a/src/pudl/etl/epacems_assets.py +++ b/src/pudl/etl/epacems_assets.py @@ -17,13 +17,15 @@ from dagster import AssetIn, DynamicOut, DynamicOutput, asset, graph_asset, op import pudl +from pudl.extract.epacems import EpaCemsPartition from pudl.metadata.classes import Resource +from pudl.metadata.enums import EPACEMS_STATES from pudl.workspace.setup import PudlPaths logger = pudl.logging_helpers.get_logger(__name__) -YearPartitions = namedtuple("YearPartitions", ["year", "states"]) +YearPartitions = namedtuple("YearPartitions", ["year_quarters"]) @op( @@ -37,11 +39,17 @@ def get_years_from_settings(context): parallel. """ epacems_settings = context.resources.dataset_settings.epacems - for year in epacems_settings.years: + years = { + EpaCemsPartition(year_quarter=yq).year for yq in epacems_settings.year_quarters + } + for year in years: yield DynamicOutput(year, mapping_key=str(year)) -@op(required_resource_keys={"datastore", "dataset_settings"}) +@op( + required_resource_keys={"datastore", "dataset_settings"}, + tags={"datasource": "epacems"}, +) def process_single_year( context, year, @@ -64,23 +72,29 @@ def process_single_year( partitioned_path = PudlPaths().output_dir / "hourly_emissions_epacems" partitioned_path.mkdir(exist_ok=True) - for state in epacems_settings.states: - logger.info(f"Processing EPA CEMS hourly data for {year}-{state}") - df = pudl.extract.epacems.extract(year=year, state=state, ds=ds) + year_quarters_in_year = { + yq + for yq in epacems_settings.year_quarters + if EpaCemsPartition(year_quarter=yq).year == year + } + + for year_quarter in year_quarters_in_year: + logger.info(f"Processing EPA CEMS hourly data for {year_quarter}") + df = pudl.extract.epacems.extract(year_quarter=year_quarter, ds=ds) if not df.empty: # If state-year combination has data df = pudl.transform.epacems.transform(df, epacamd_eia, plants_entity_eia) table = pa.Table.from_pandas(df, schema=schema, preserve_index=False) # Write to a directory of partitioned parquet files with pq.ParquetWriter( - where=partitioned_path / f"epacems-{year}-{state}.parquet", + where=partitioned_path / f"epacems-{year_quarter}.parquet", schema=schema, compression="snappy", version="2.6", ) as partitioned_writer: partitioned_writer.write_table(table) - return YearPartitions(year, epacems_settings.states) + return YearPartitions(year_quarters_in_year) @op @@ -98,12 +112,21 @@ def consolidate_partitions(context, partitions: list[YearPartitions]) -> None: with pq.ParquetWriter( where=monolithic_path, schema=schema, compression="snappy", version="2.6" ) as monolithic_writer: - for year, states in partitions: - for state in states: + for year_partition in partitions: + for state in EPACEMS_STATES: monolithic_writer.write_table( - pq.read_table( - source=partitioned_path / f"epacems-{year}-{state}.parquet", - schema=schema, + # Concat a slice of each state's data from all quarters in a year + # and write to parquet to create year-state row groups + pa.concat_tables( + [ + pq.read_table( + source=partitioned_path + / f"epacems-{year_quarter}.parquet", + filters=[[("state", "=", state.upper())]], + schema=schema, + ) + for year_quarter in year_partition.year_quarters + ] ) ) diff --git a/src/pudl/etl/static_assets.py b/src/pudl/etl/static_assets.py index 9d21e649b7..ee64f34dc5 100644 --- a/src/pudl/etl/static_assets.py +++ b/src/pudl/etl/static_assets.py @@ -12,7 +12,7 @@ def _read_static_encoding_tables( - etl_group: Literal["static_eia", "static_ferc1"] + etl_group: Literal["static_eia", "static_ferc1"], ) -> dict[str, pd.DataFrame]: """Build dataframes of static tables from a data source for use as foreign keys. diff --git a/src/pudl/extract/epacems.py b/src/pudl/extract/epacems.py index 8e60dfd159..312bb454eb 100644 --- a/src/pudl/extract/epacems.py +++ b/src/pudl/extract/epacems.py @@ -20,9 +20,10 @@ during the transform process with help from the crosswalk. """ from pathlib import Path -from typing import NamedTuple +from typing import Annotated import pandas as pd +from pydantic import BaseModel, StringConstraints import pudl.logging_helpers from pudl.metadata.classes import Resource @@ -97,32 +98,35 @@ """Set: The set of EPA CEMS columns to ignore when reading data.""" -class EpaCemsPartition(NamedTuple): +class EpaCemsPartition(BaseModel): """Represents EpaCems partition identifying unique resource file.""" - year: str - state: str + year_quarter: Annotated[ + str, StringConstraints(strict=True, pattern=r"^(19|20)\d{2}[q][1-4]$") + ] - def get_key(self): - """Returns hashable key for use with EpaCemsDatastore.""" - return (self.year, self.state.lower()) + @property + def year(self): + """Return the year associated with the year_quarter.""" + return pd.to_datetime(self.year_quarter).year def get_filters(self): """Returns filters for retrieving given partition resource from Datastore.""" - return {"year": self.year, "state": self.state.lower()} + return {"year_quarter": self.year_quarter} - def get_annual_file(self) -> Path: + def get_quarterly_file(self) -> Path: """Return the name of the CSV file that holds annual hourly data.""" - return Path(f"epacems-{self.year}-{self.state.lower()}.csv") + return Path( + f"epacems-{self.year}-{pd.to_datetime(self.year_quarter).quarter}.csv" + ) class EpaCemsDatastore: """Helper class to extract EpaCems resources from datastore. - EpaCems resources are identified by a year and a state. Each of these zip files - contain monthly zip files that in turn contain csv files. This class implements - get_data_frame method that will concatenate tables for a given state and month - across all months. + EpaCems resources are identified by a year and a quarter. Each of these zip files + contains one csv file. This class implements get_data_frame method that will + rename columns for a quarterly CSV file. """ def __init__(self, datastore: Datastore): @@ -130,23 +134,16 @@ def __init__(self, datastore: Datastore): self.datastore = datastore def get_data_frame(self, partition: EpaCemsPartition) -> pd.DataFrame: - """Constructs dataframe from a zipfile for a given (year, state) partition.""" + """Constructs dataframe from a zipfile for a given (year_quarter) partition.""" archive = self.datastore.get_zipfile_resource( "epacems", **partition.get_filters() ) - # Get names of files in zip file - files = self.datastore.get_zipfile_file_names(archive) - - # If archive has one csv file in it, this is a yearly CSV (archived after 08/23) - # and this CSV does not need to be concatenated. - if len(files) == 1 and files[0].endswith(".csv"): - with archive.open(str(partition.get_annual_file()), "r") as csv_file: - df = self._csv_to_dataframe( - csv_file, ignore_cols=API_IGNORE_COLS, rename_dict=API_RENAME_DICT - ) - return df - raise AssertionError(f"Unexpected archive format. Found files: {files}.") + with archive.open(str(partition.get_quarterly_file()), "r") as csv_file: + df = self._csv_to_dataframe( + csv_file, ignore_cols=API_IGNORE_COLS, rename_dict=API_RENAME_DICT + ) + return df def _csv_to_dataframe( self, csv_file: Path, ignore_cols: dict[str, str], rename_dict: dict[str, str] @@ -167,25 +164,24 @@ def _csv_to_dataframe( ).rename(columns=rename_dict) -def extract(year: int, state: str, ds: Datastore): +def extract(year_quarter: str, ds: Datastore) -> pd.DataFrame: """Coordinate the extraction of EPA CEMS hourly DataFrames. Args: - year: report year of the data to extract - state: report state of the data to extract + year_quarter: report year and quarter of the data to extract ds: Initialized datastore Yields: - pandas.DataFrame: A single state-year of EPA CEMS hourly emissions data. + A single quarter of EPA CEMS hourly emissions data. """ ds = EpaCemsDatastore(ds) - partition = EpaCemsPartition(state=state, year=year) + partition = EpaCemsPartition(year_quarter=year_quarter) + year = partition.year # We have to assign the reporting year for partitioning purposes try: df = ds.get_data_frame(partition).assign(year=year) - except KeyError: # If no state-year combination found, return empty df. - logger.warning( - f"No data found for {state} in {year}. Returning empty dataframe." - ) + # If the requested quarter is not found, return an empty df with expected columns: + except KeyError: + logger.warning(f"No data found for {year_quarter}. Returning empty dataframe.") res = Resource.from_id("hourly_emissions_epacems") df = res.format_df(pd.DataFrame()) return df diff --git a/src/pudl/extract/ferc714.py b/src/pudl/extract/ferc714.py index 9e6c8ac6d7..b442bec6cb 100644 --- a/src/pudl/extract/ferc714.py +++ b/src/pudl/extract/ferc714.py @@ -2,7 +2,7 @@ from collections import OrderedDict import pandas as pd -from dagster import AssetOut, Output, multi_asset +from dagster import AssetsDefinition, asset import pudl @@ -63,40 +63,40 @@ """Dictionary mapping PUDL tables to FERC-714 filenames and character encodings.""" -@multi_asset( - outs={"raw_ferc714__" + table_name: AssetOut() for table_name in FERC714_FILES}, - required_resource_keys={"datastore", "dataset_settings"}, -) -def extract_ferc714(context): - """Extract the raw FERC Form 714 dataframes from their original CSV files. +def generate_raw_ferc714_asset(table_name: str) -> AssetsDefinition: + """Generates an asset for building the raw FERC 714 dataframe.""" + assert table_name in FERC714_FILES - Args: - context: dagster keyword that provides access to resources and config. + @asset( + name=f"raw_ferc714__{table_name}", + required_resource_keys={"datastore", "dataset_settings"}, + ) + def _extract_raw_ferc714(context): + """Extract the raw FERC Form 714 dataframes from their original CSV files. - Returns: - A tuple of extracted FERC-714 dataframes. - """ - ds = context.resources.datastore - ferc714_settings = context.resources.dataset_settings.ferc714 - years = ", ".join(map(str, ferc714_settings.years)) + Args: + context: dagster keyword that provides access to resources and config. + """ + ds = context.resources.datastore + ferc714_settings = context.resources.dataset_settings.ferc714 + years = ", ".join(map(str, ferc714_settings.years)) - raw_dfs: OrderedDict[str, pd.DataFrame] = OrderedDict({}) - for table_name in FERC714_FILES: logger.info( f"Extracting {table_name} from CSV into pandas DataFrame (years: {years})." ) - with ds.get_zipfile_resource("ferc714", name="ferc714.zip").open( - FERC714_FILES[table_name]["name"] - ) as f: - raw_dfs[table_name] = pd.read_csv( - f, encoding=FERC714_FILES[table_name]["encoding"] - ) + df = pd.read_csv( + ds.get_zipfile_resource("ferc714", name="ferc714.zip").open( + FERC714_FILES[table_name]["name"] + ), + encoding=FERC714_FILES[table_name]["encoding"], + ) if table_name != "respondent_id": - raw_dfs[table_name] = raw_dfs[table_name].query( - "report_yr in @ferc714_settings.years" - ) + df = df.query("report_yr in @ferc714_settings.years") + return df - return ( - Output(output_name="raw_ferc714__" + table_name, value=df) - for table_name, df in raw_dfs.items() - ) + return _extract_raw_ferc714 + + +raw_ferc714_assets = [ + generate_raw_ferc714_asset(table_name) for table_name in FERC714_FILES +] diff --git a/src/pudl/metadata/helpers.py b/src/pudl/metadata/helpers.py index 23b2003fa7..68e4c3c256 100644 --- a/src/pudl/metadata/helpers.py +++ b/src/pudl/metadata/helpers.py @@ -87,7 +87,7 @@ def _parse_foreign_key_rule(rule: dict, name: str, key: list[str]) -> list[dict] def _build_foreign_key_tree( - resources: dict[str, dict] + resources: dict[str, dict], ) -> dict[str, dict[tuple[str, ...], dict]]: """Build foreign key tree. diff --git a/src/pudl/metadata/sources.py b/src/pudl/metadata/sources.py index f941b6a6e6..11f8fcc1d6 100644 --- a/src/pudl/metadata/sources.py +++ b/src/pudl/metadata/sources.py @@ -1,8 +1,9 @@ """Metadata and operational constants.""" from typing import Any +import pandas as pd + from pudl.metadata.constants import CONTRIBUTORS, KEYWORDS, LICENSES -from pudl.metadata.enums import EPACEMS_STATES SOURCES: dict[str, Any] = { "censusdp1tract": { @@ -272,8 +273,10 @@ }, "field_namespace": "epacems", "working_partitions": { - "years": sorted(set(range(1995, 2023))), - "states": sorted(EPACEMS_STATES), + "year_quarters": [ + str(q).lower() + for q in pd.period_range(start="1995q1", end="2023q3", freq="Q") + ] }, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], diff --git a/src/pudl/output/epacems.py b/src/pudl/output/epacems.py index 564c2fadc1..0d063761e7 100644 --- a/src/pudl/output/epacems.py +++ b/src/pudl/output/epacems.py @@ -5,7 +5,6 @@ import dask.dataframe as dd -from pudl.settings import EpaCemsSettings from pudl.workspace.setup import PudlPaths @@ -123,10 +122,9 @@ def epacems( from :mod:`pudl.workspace` Returns: - The requested epacems data + The requested epacems data. If requested states or years are not available, no + error will be raised. """ - epacems_settings = EpaCemsSettings(states=states, years=years) - # columns=None is handled by dd.read_parquet; gives all columns if columns is not None: # nonexistent columns are handled by dd.read_parquet; raises ValueError @@ -142,8 +140,8 @@ def epacems( index=False, split_row_groups=True, filters=year_state_filter( - states=epacems_settings.states, - years=epacems_settings.years, + states=states, + years=years, ), ) return epacems diff --git a/src/pudl/package_data/settings/etl_fast.yml b/src/pudl/package_data/settings/etl_fast.yml index 59b1cb928a..a70bfc3180 100644 --- a/src/pudl/package_data/settings/etl_fast.yml +++ b/src/pudl/package_data/settings/etl_fast.yml @@ -75,5 +75,4 @@ datasets: # Note that the CEMS data relies on EIA 860 data for plant locations, # so if you're loading CEMS data for a particular year, you should # also load the EIA 860 data for that year if possible - states: [ID, ME] - years: [2020, 2022] + year_quarters: ["2022q1"] diff --git a/src/pudl/package_data/settings/etl_full.yml b/src/pudl/package_data/settings/etl_full.yml index 8e4e7a1630..a6fd0454ac 100644 --- a/src/pudl/package_data/settings/etl_full.yml +++ b/src/pudl/package_data/settings/etl_full.yml @@ -270,35 +270,4 @@ datasets: # Note that the CEMS data relies on EIA 860 data for plant locations, # so if you're loading CEMS data for a particular year, you should # also load the EIA 860 data for that year if possible - states: [all] - years: - [ - 1995, - 1996, - 1997, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2010, - 2011, - 2012, - 2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - ] + year_quarters: ["all"] diff --git a/src/pudl/settings.py b/src/pudl/settings.py index 6c5205e03b..78dc76ea43 100644 --- a/src/pudl/settings.py +++ b/src/pudl/settings.py @@ -1,5 +1,4 @@ """Module for validating pudl etl settings.""" -import itertools import json from enum import Enum, unique from typing import Any, ClassVar, Self @@ -96,11 +95,8 @@ def partitions(cls) -> list[None | dict[str, str]]: # noqa: N805 ``pd.json_normalize``. """ partitions = [] - if hasattr(cls, "years") and hasattr(cls, "states"): - partitions = [ - {"year": year, "state": state} - for year, state in itertools.product(cls.years, cls.states) - ] + if hasattr(cls, "year_quarters"): + partitions = [{"year_quarters": part} for part in cls.year_quarters] elif hasattr(cls, "years"): partitions = [{"year": part} for part in cls.years] return partitions @@ -149,24 +145,19 @@ class EpaCemsSettings(GenericDatasetSettings): Args: data_source: DataSource metadata object - years: list of years to validate. - states: list of states to validate. - partition: Whether to output year-state partitioned Parquet files. If True, - all available threads / CPUs will be used in parallel. + year_quarters: list of year_quarters to validate. """ data_source: ClassVar[DataSource] = DataSource.from_id("epacems") + year_quarters: list[str] = data_source.working_partitions["year_quarters"] - years: list[int] = data_source.working_partitions["years"] - states: list[str] = data_source.working_partitions["states"] - - @field_validator("states") + @field_validator("year_quarters") @classmethod - def allow_all_keyword(cls, states): # noqa: N805 - """Allow users to specify ['all'] to get all states.""" - if states == ["all"]: - states = cls.data_source.working_partitions["states"] - return states + def allow_all_keyword_year_quarters(cls, year_quarters): + """Allow users to specify ['all'] to get all quarters.""" + if year_quarters == ["all"]: + year_quarters = cls.data_source.working_partitions["year_quarters"] + return year_quarters class Eia923Settings(GenericDatasetSettings): @@ -215,7 +206,7 @@ class Eia860Settings(GenericDatasetSettings): @field_validator("eia860m") @classmethod - def check_eia860m_date(cls, eia860m: bool) -> bool: # noqa: N805 + def check_eia860m_date(cls, eia860m: bool) -> bool: """Check 860m date-year is exactly one year after most recent working 860 year. Args: diff --git a/src/pudl/transform/epacems.py b/src/pudl/transform/epacems.py index fa6dc5fb37..07171e4ee1 100644 --- a/src/pudl/transform/epacems.py +++ b/src/pudl/transform/epacems.py @@ -55,7 +55,6 @@ def harmonize_eia_epa_orispl( ).filter( lambda x: x.plant_id_eia.nunique() > 1 # noqa: PD101 ) - if not one_to_many.empty: raise AssertionError( "The epacamd_eia crosswalk has more than one plant_id_eia value per " @@ -181,11 +180,11 @@ def transform( """Transform EPA CEMS hourly data and ready it for export to Parquet. Args: - raw_df: An extracted by not yet transformed state-year of EPA CEMS data. + raw_df: An extracted by not yet transformed year_quarter of EPA CEMS data. pudl_engine: SQLAlchemy connection engine for connecting to an existing PUDL DB. Returns: - A single year-state of EPA CEMS data + A single year_quarter of EPA CEMS data """ # Create all the table inputs used for the subtransform functions below diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py index 5f8f60b508..e2de9071cd 100644 --- a/src/pudl/transform/ferc1.py +++ b/src/pudl/transform/ferc1.py @@ -48,7 +48,7 @@ @asset def clean_xbrl_metadata_json( - raw_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]] + raw_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]], ) -> dict[str, dict[str, list[dict[str, Any]]]]: """Generate cleaned json xbrl metadata. @@ -58,7 +58,7 @@ def clean_xbrl_metadata_json( def add_source_tables_to_xbrl_metadata( - raw_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]] + raw_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]], ) -> dict[str, dict[str, list[dict[str, Any]]]]: """Add a ``source_tables`` field into metadata calculation components. diff --git a/src/pudl/workspace/datastore.py b/src/pudl/workspace/datastore.py index 809e490e7a..144c187aeb 100644 --- a/src/pudl/workspace/datastore.py +++ b/src/pudl/workspace/datastore.py @@ -177,7 +177,7 @@ class ZenodoDoiSettings(BaseSettings): eia923: ZenodoDoi = "10.5281/zenodo.10067550" eia_bulk_elec: ZenodoDoi = "10.5281/zenodo.7067367" epacamd_eia: ZenodoDoi = "10.5281/zenodo.7900974" - epacems: ZenodoDoi = "10.5281/zenodo.8235497" + epacems: ZenodoDoi = "10.5281/zenodo.10306114" ferc1: ZenodoDoi = "10.5281/zenodo.8326634" ferc2: ZenodoDoi = "10.5281/zenodo.8326697" ferc6: ZenodoDoi = "10.5281/zenodo.8326696" @@ -194,7 +194,6 @@ class ZenodoFetcher: _descriptor_cache: dict[str, DatapackageDescriptor] zenodo_dois: ZenodoDoiSettings timeout: float - http: requests.Session def __init__( self: Self, zenodo_dois: ZenodoDoiSettings | None = None, timeout: float = 15.0 diff --git a/src/pudl/workspace/resource_cache.py b/src/pudl/workspace/resource_cache.py index 745345b507..0eb8e72019 100644 --- a/src/pudl/workspace/resource_cache.py +++ b/src/pudl/workspace/resource_cache.py @@ -102,6 +102,7 @@ def get(self, resource: PudlResourceKey) -> bytes: def add(self, resource: PudlResourceKey, content: bytes): """Adds (or updates) resource to the cache with given value.""" + logger.debug(f"Adding {resource} to {self._resource_path}") if self.is_read_only(): logger.debug(f"Read only cache: ignoring set({resource})") return @@ -154,6 +155,7 @@ def get(self, resource: PudlResourceKey) -> bytes: def add(self, resource: PudlResourceKey, value: bytes): """Adds (or updates) resource to the cache with given value.""" + logger.debug(f"Adding {resource} to {self._blob.__name__}") return self._blob(resource).upload_from_string(value) def delete(self, resource: PudlResourceKey): diff --git a/test/integration/epacems_test.py b/test/integration/epacems_test.py index 64c466e4d0..3e95c5a1be 100644 --- a/test/integration/epacems_test.py +++ b/test/integration/epacems_test.py @@ -1,85 +1,61 @@ """Tests for pudl/output/epacems.py loading functions.""" +from pathlib import Path + import dask.dataframe as dd +import pandas as pd import pytest +import sqlalchemy as sa from dagster import build_init_resource_context +from pydantic import ValidationError from pudl.extract.epacems import extract from pudl.io_managers import epacems_io_manager -from pudl.metadata.classes import Resource from pudl.output.epacems import epacems, year_state_filter +from pudl.settings import EpaCemsSettings, EtlSettings @pytest.fixture(scope="module") -def epacems_year_and_state(etl_settings): - """Find the year and state defined in pudl/package_data/settings/etl_*.yml.""" +def epacems_settings(etl_settings: EtlSettings) -> EpaCemsSettings: + """Find the year and quarter defined in pudl/package_data/settings/etl_*.yml.""" # the etl_settings data structure alternates dicts and lists so indexing is a pain. return etl_settings.datasets.epacems @pytest.fixture(scope="session") -def epacems_parquet_path( - pudl_engine, # implicit dependency; ensures .parquet files exist -): - """Get path to the directory of EPA CEMS .parquet data.""" +def epacems_parquet_path(pudl_engine: sa.Engine) -> Path: + """Get path to the directory of EPA CEMS .parquet data. + + Args: + pudl_engine: An implicit dependency that ensures the .parquet files exist. + """ context = build_init_resource_context() return epacems_io_manager(context)._base_path / "hourly_emissions_epacems.parquet" -def test_epacems_subset(epacems_year_and_state, epacems_parquet_path): - """Minimal integration test of epacems(). - - Check if it returns a DataFrame. - """ - if not epacems_year_and_state: +def test_epacems_subset(epacems_settings: EpaCemsSettings, epacems_parquet_path: Path): + """Check that epacems output retrieves a non-empty dataframe.""" + if not epacems_settings: pytest.skip("EPA CEMS not in settings file and so is not being tested.") path = epacems_parquet_path - years = epacems_year_and_state.years - # Use only Idaho if multiple states are given - states = ( - epacems_year_and_state.states - if len(epacems_year_and_state.states) == 1 - else ["ID"] - ) + years = [yq.year for yq in pd.to_datetime(epacems_settings.year_quarters)] + states = ["ID"] # Test on Idaho, one of the smallest states actual = epacems( - columns=["gross_load_mw"], epacems_path=path, years=years, states=states + columns=["year", "state", "gross_load_mw"], + epacems_path=path, + years=years, + states=states, ) - assert isinstance(actual, dd.DataFrame) # nosec: B101 - assert actual.shape[0].compute() > 0 # nosec: B101 n rows + assert isinstance(actual, dd.DataFrame) + assert "gross_load_mw" in actual.columns + assert "state" in actual.columns + assert "year" in actual.columns + assert actual.shape[0].compute() > 0 def test_epacems_missing_partition(pudl_datastore_fixture): - """Check that missing partitions return an empty data frame. - - Note that this should pass for both the Fast and Full ETL because the behavior - towards a missing file is identical.""" - df = extract(year=1996, state="UT", ds=pudl_datastore_fixture) - epacems_res = Resource.from_id("hourly_emissions_epacems") - expected_cols = list(epacems_res.get_field_names()) - assert df.shape[0] == 0 # Check that no rows of data are there - # Check that all columns expected of EPACEMS data are present. - assert sorted(df.columns) == sorted(expected_cols) - - -def test_epacems_subset_input_validation(epacems_year_and_state, epacems_parquet_path): - """Check if invalid inputs raise exceptions.""" - if not epacems_year_and_state: - pytest.skip("EPA CEMS not in settings file and so is not being tested.") - path = epacems_parquet_path - valid_year = epacems_year_and_state.years[-1] - valid_state = epacems_year_and_state.states[-1] - valid_column = "gross_load_mw" - - invalid_state = "confederacy" - invalid_year = 1775 - invalid_column = "clean_coal" - combos = [ - {"years": [valid_year], "states": [valid_state], "columns": [invalid_column]}, - {"years": [valid_year], "states": [invalid_state], "columns": [valid_column]}, - {"years": [invalid_year], "states": [valid_state], "columns": [valid_column]}, - ] - for combo in combos: - with pytest.raises(ValueError): - epacems(epacems_path=path, **combo) + """Check that trying to extract a non-working partition raises ValidationError""" + with pytest.raises(ValidationError): + _ = extract(year_quarter="1994Q4", ds=pudl_datastore_fixture) def test_epacems_parallel(pudl_engine, epacems_parquet_path): @@ -89,9 +65,19 @@ def test_epacems_parallel(pudl_engine, epacems_parquet_path): # monolithic outputs. df = dd.read_parquet( epacems_parquet_path, - filters=year_state_filter(years=[2020], states=["ME"]), + filters=year_state_filter(years=[2022], states=["ME"]), index=False, engine="pyarrow", split_row_groups=True, ).compute() - assert df.shape == (96_624, 16) # nosec: B101 + assert df.year.unique() == [2022] + assert df.state.unique() == ["ME"] + + +def test_missing_cems_partition(pudl_datastore_fixture): + """Test that the extract step returns an empty df. + + Note: This could be a unit test, but it interacts with zenodo which is sometimes + slow. It must retrive the datapacakge.json associated with the archive. + """ + assert extract("2051q4", ds=pudl_datastore_fixture).empty diff --git a/test/unit/settings_test.py b/test/unit/settings_test.py index c2034f7695..e858b9871d 100644 --- a/test/unit/settings_test.py +++ b/test/unit/settings_test.py @@ -91,34 +91,37 @@ def test_default_years(self: Self): class TestEpaCemsSettings: """Test EpaCems settings validation.""" - def test_not_working_state(self: Self): - """Make sure a validation error is being thrown when given an invalid state.""" + def test_not_working_quarter(self: Self): + """Make sure a validation error is being thrown when given an invalid quarter.""" with pytest.raises(ValidationError): - EpaCemsSettings(states=["fake_state"]) + EpaCemsSettings(year_quarters=["1990q4"]) - def test_duplicate_sort_states(self: Self): - """Test states are sorted and deduplicated.""" + def test_duplicate_quarters(self: Self): + """Test year_quarters are deduplicated.""" with pytest.raises(ValidationError): - _ = EpaCemsSettings(states=["CA", "CA", "AL"]) + _ = EpaCemsSettings(year_quarters=["1999q4", "1999q4"]) - def test_default_states(self: Self): - """Test all states are used as default.""" + def test_default_quarters(self: Self): + """Test all quarters are used as default.""" returned_settings = EpaCemsSettings() - expected_states = DataSource.from_id("epacems").working_partitions["states"] - assert expected_states == returned_settings.states + expected_year_quarters = DataSource.from_id("epacems").working_partitions[ + "year_quarters" + ] + assert expected_year_quarters == returned_settings.year_quarters - def test_all_states(self: Self): - """Test all states are used as default.""" - returned_settings = EpaCemsSettings(states=["all"]) + def test_all_year_quarters(self: Self): + """Test the `all` option for the cems settings.""" + epacems_settings_all = EpaCemsSettings(year_quarters=["all"]) + working_partitions_all = DataSource.from_id("epacems").working_partitions[ + "year_quarters" + ] + assert epacems_settings_all.year_quarters == working_partitions_all - expected_states = DataSource.from_id("epacems").working_partitions["states"] - assert expected_states == returned_settings.states - - def test_none_states_raise(self: Self): + def test_none_quarters_raise(self: Self): """Test that setting a required partition to None raises an error.""" with pytest.raises(ValidationError): - _ = EpaCemsSettings(states=None) + _ = EpaCemsSettings(quarters=None) class TestEIA860Settings: @@ -255,10 +258,10 @@ def test_invalid_field_type(self: Self): def test_default_values(self: Self): """Test the correct default values are created for dagster config.""" - expected_states = EpaCemsSettings().states + expected_year_quarters = EpaCemsSettings().year_quarters assert ( - dataset_settings.config_schema.default_value["epacems"]["states"] - == expected_states + dataset_settings.config_schema.default_value["epacems"]["year_quarters"] + == expected_year_quarters ) @@ -274,9 +277,9 @@ def test_partitions_with_json_normalize(pudl_etl_settings): ) cems_parts = json_normalize(datasets["epacems"].partitions) - if list(cems_parts.columns) != ["year", "state"]: + if list(cems_parts.columns) != ["year_quarters"]: raise AssertionError( - "CEMS paritions should have year and state columns only, found:" + "CEMS paritions should have year_quarters columns only, found:" f"{cems_parts}" ) diff --git a/test/unit/workspace/datastore_test.py b/test/unit/workspace/datastore_test.py index 4583c6aff1..45db296ae8 100644 --- a/test/unit/workspace/datastore_test.py +++ b/test/unit/workspace/datastore_test.py @@ -234,8 +234,11 @@ class TestZenodoFetcher(unittest.TestCase): }, ] } - PROD_EPACEMS_DOI = "10.5281/zenodo.8235497" - PROD_EPACEMS_ZEN_ID = 8235497 # This is the last numeric part of doi + PROD_EPACEMS_DOI = datastore.ZenodoDoiSettings().epacems + # last numeric part of doi + PROD_EPACEMS_ZEN_ID = re.search( + r"^10\.(5072|5281)/zenodo\.(\d+)$", PROD_EPACEMS_DOI + ).group(2) def setUp(self): """Constructs mockable Zenodo fetcher based on MOCK_EPACEMS_DATAPACKAGE."""