From 656d497c9d5cf51127343b39a11fa0fc96641bf3 Mon Sep 17 00:00:00 2001 From: Ivan Ogasawara Date: Wed, 24 Aug 2022 13:51:11 -0400 Subject: [PATCH] feat(airflow): Add Apache Airflow to the pipeline (#74) * feat(airflow): Add Apache Airflow to the pipeline --- .env.tpl | 25 +- .github/workflows/main.yaml | 47 +- .gitignore | 3 + Data_Collection/CRON_scripts/config.py | 8 +- Makefile | 52 +- README.md | 14 +- conda/airflow.yaml | 47 + conda/conda-linux-64.lock | 232 ++-- conda/conda-osx-64.lock | 168 +-- conda/prod.yaml | 3 - docker/airflow/Dockerfile | 60 + docker/airflow/airflow.cfg | 1234 +++++++++++++++++ docker/airflow/scripts/create-admin.sh | 11 + docker/airflow/scripts/entrypoint.sh | 20 + docker/airflow/scripts/init-db.sh | 48 + docker/airflow/scripts/startup.sh | 28 + docker/airflow/scripts/webserver_config.py | 0 docker/compose-base.yaml | 39 +- docker/compose-dev.yaml | 21 +- docker/postgresql/Dockerfile | 15 +- docker/postgresql/prepare-db.sh | 21 - docker/postgresql/scripts/dev/prepare-db.sh | 19 + docker/postgresql/sql/dev/01-database.sql | 37 + .../sql/dev/02-epigraphhub.sql} | 34 +- .../sql/dev/03-privatehub.sql} | 75 + docker/sql/database.sql | 23 - docker/superset/entrypoint.sh | 2 + .../{prepare-host-db.sh => prepare-host.sh} | 9 + 28 files changed, 1990 insertions(+), 305 deletions(-) create mode 100644 conda/airflow.yaml create mode 100644 docker/airflow/Dockerfile create mode 100644 docker/airflow/airflow.cfg create mode 100755 docker/airflow/scripts/create-admin.sh create mode 100755 docker/airflow/scripts/entrypoint.sh create mode 100755 docker/airflow/scripts/init-db.sh create mode 100755 docker/airflow/scripts/startup.sh create mode 100644 docker/airflow/scripts/webserver_config.py delete mode 100644 docker/postgresql/prepare-db.sh create mode 100644 docker/postgresql/scripts/dev/prepare-db.sh create mode 100644 docker/postgresql/sql/dev/01-database.sql rename docker/{sql/epigraphhub.sql => postgresql/sql/dev/02-epigraphhub.sql} (99%) rename docker/{sql/privatehub.sql => postgresql/sql/dev/03-privatehub.sql} (67%) delete mode 100644 docker/sql/database.sql rename scripts/{prepare-host-db.sh => prepare-host.sh} (56%) diff --git a/.env.tpl b/.env.tpl index 14dcfc2e..c599b3b9 100644 --- a/.env.tpl +++ b/.env.tpl @@ -1,3 +1,19 @@ +_AIRFLOW_DB_UPGRADE="true" +_AIRFLOW_WWW_USER_CREATE="true" +_AIRFLOW_WWW_USER_USERNAME=${_AIRFLOW_WWW_USER_USERNAME} +_AIRFLOW_WWW_USER_PASSWORD=${_AIRFLOW_WWW_USER_PASSWORD} +_AIRFLOW_WWW_USER_EMAIL=${_AIRFLOW_WWW_USER_EMAIL} +_AIRFLOW_WWW_USER_FIRST_NAME=${_AIRFLOW_WWW_USER_FIRST_NAME} +_AIRFLOW_WWW_USER_LAST_NAME=${_AIRFLOW_WWW_USER_LAST_NAME} +_PIP_ADDITIONAL_REQUIREMENTS=${_PIP_ADDITIONAL_REQUIREMENTS} +AIRFLOW__API__AUTH_BACKENDS="airflow.api.auth.backend.basic_auth" +AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION=${AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION} +AIRFLOW__CORE__FERNET_KEY=${AIRFLOW__CORE__FERNET_KEY} +AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=${AIRFLOW__DATABASE__SQL_ALCHEMY_CONN} +AIRFLOW__WEBSERVER__SECRET_KEY=${AIRFLOW__WEBSERVER__SECRET_KEY} +AIRFLOW_UID=${AIRFLOW_UID} +AIRFLOW_PORT=${AIRFLOW_PORT} +AIRFLOW_FILES_PATH_DIR_HOST=${AIRFLOW_FILES_PATH_DIR_HOST} ANSIBLE_VAULT_KEY=${ANSIBLE_VAULT_KEY} ENV=${ENV} FLOWER_PORT=${FLOWER_PORT} @@ -8,8 +24,11 @@ POSTGRES_PORT=${POSTGRES_PORT} POSTGRES_USER=${POSTGRES_USER} POSTGRES_PASSWORD=${POSTGRES_PASSWORD} POSTGRES_DB=${POSTGRES_DB} -POSTGRES_DB_PRIVATE=${POSTGRES_DB_PRIVATE} -POSTGRES_DB_SANDBOX=${POSTGRES_DB_SANDBOX} +POSTGRES_EPIGRAPH_USER=${POSTGRES_EPIGRAPH_USER} +POSTGRES_EPIGRAPH_PASSWORD=${POSTGRES_EPIGRAPH_PASSWORD} +POSTGRES_EPIGRAPH_DB=${POSTGRES_EPIGRAPH_DB} +POSTGRES_EPIGRAPH_DB_PRIVATE=${POSTGRES_DB_EPIGRAPH_PRIVATE} +POSTGRES_EPIGRAPH_DB_SANDBOX=${POSTGRES_DB_EPIGRAPH_SANDBOX} RECAPTCHA_PUBLIC_KEY=${RECAPTCHA_PUBLIC_KEY} RECAPTCHA_PRIVATE_KEY=${RECAPTCHA_PRIVATE_KEY} REDIS_HOST=${REDIS_HOST} @@ -27,3 +46,5 @@ SUPERSET_MAIL_PORT=${SUPERSET_MAIL_PORT:-587} SUPERSET_MAIL_USERNAME=${SUPERSET_MAIL_USERNAME} SUPERSET_MAIL_PASSWORD=${SUPERSET_MAIL_PASSWORD} SUPERSET_MAIL_DEFAULT_SENDER=${SUPERSET_MAIL_DEFAULT_SENDER} +HOST_UID=${HOST_UID} +HOST_GID=${HOST_GID} diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ae32fa62..8f351d6e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -7,16 +7,34 @@ on: branches: [ main ] env: + AIRFLOW_FILES_PATH_DIR_HOST: /tmp/airflow + AIRFLOW_HOME: /opt/airflow + AIRFLOW_PORT: 8099 + AIRFLOW__API__AUTH_BACKENDS: airflow.api.auth.backend.basic_auth + AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: true + AIRFLOW__CORE__FERNET_KEY: rhZaG4rip4DrA4Z93rI9uqWVK2/8Tk+zSixmEe3ZZo8= + AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://dev_airflow_user:airflow_password@postgres:25432/dev_airflow + AIRFLOW__WEBSERVER__SECRET_KEY: 79197e3bef40d1d2a6cf07cb1f4c9f54e82a3bcfc6b92ed06d081856eee2 + _AIRFLOW_DB_UPGRADE: true + _AIRFLOW_WWW_USER_CREATE: true + _AIRFLOW_WWW_USER_EMAIL: admin@epigraphhub.org + _AIRFLOW_WWW_USER_FIRST_NAME: Super + _AIRFLOW_WWW_USER_LAST_NAME: Admin + _AIRFLOW_WWW_USER_PASSWORD: airflow + _AIRFLOW_WWW_USER_USERNAME: airflow ENV: dev FLOWER_PORT: 28888 FLOWER_PASSWORD: flowerpass POSTGRES_HOST: postgres POSTGRES_PORT: 25432 - POSTGRES_USER: dev_epigraph - POSTGRES_PASSWORD: dev_epigraph - POSTGRES_DB: dev_epigraphhub - POSTGRES_DB_PRIVATE: dev_privatehub - POSTGRES_DB_SANDBOX: dev_sandbox + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + POSTGRES_EPIGRAPH_USER: dev_epigraph + POSTGRES_EPIGRAPH_PASSWORD: dev_epigraph + POSTGRES_EPIGRAPH_DB: dev_epigraphhub + POSTGRES_EPIGRAPH_DB_PRIVATE: dev_privatehub + POSTGRES_EPIGRAPH_DB_SANDBOX: dev_sandbox REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: redispass @@ -36,7 +54,7 @@ jobs: main: runs-on: ubuntu-latest - timeout-minutes: 35 + timeout-minutes: 55 defaults: run: shell: bash -l {0} @@ -48,10 +66,12 @@ jobs: - uses: actions/checkout@v2 - name: setup - run: make prepare-host-db + run: make prepare-host - name: Create environment variables file run: | + export HOST_UID=$(id -u) + export HOST_GID=$(id -g) envsubst < .env.tpl > .env - uses: conda-incubator/setup-miniconda@v2 @@ -64,19 +84,18 @@ jobs: use-mamba: true miniforge-variant: Mambaforge - - name: build and start docker containers + - name: build docker containers + run: make docker-build-services + + - name: start services run: | - make docker-build - make docker-start SERVICES=superset + make docker-start SERVICES="superset airflow" - name: wait for the services are properly working run: | docker ps make docker-wait-all - - name: prepare database - run: make docker-dev-prepare-db - - name: test cron scripts run: | make docker-run-cron SERVICE=superset @@ -84,7 +103,7 @@ jobs: - name: Generate logs if: ${{ failure() }} run: | - make docker-logs SERVICES= > /tmp/docker-services.log + make docker-logs ARGS="--tail 1000" SERVICES="" > /tmp/docker-services.log - name: Archive log artifacts uses: actions/upload-artifact@v3 diff --git a/.gitignore b/.gitignore index a25480ca..18a70a92 100644 --- a/.gitignore +++ b/.gitignore @@ -152,3 +152,6 @@ cython_debug/ Data_Collection/CRON_scripts/.DS_Store Data_Collection/CRON_scripts/.DS_Store Documentation/.Rhistory + +# airflow +docker/airflow/files/logs/* diff --git a/Data_Collection/CRON_scripts/config.py b/Data_Collection/CRON_scripts/config.py index 868adebe..2dada98b 100644 --- a/Data_Collection/CRON_scripts/config.py +++ b/Data_Collection/CRON_scripts/config.py @@ -8,10 +8,10 @@ DB_HOST = os.environ.get("POSTGRES_HOST") DB_PORT = os.environ.get("POSTGRES_PORT") -DB_USER = os.environ.get("POSTGRES_USER") -DB_PASSWORD = os.environ.get("POSTGRES_PASSWORD") -DB_NAME = os.environ.get("POSTGRES_DB") -DB_NAME_PRIVATE = os.environ.get("POSTGRES_DB_PRIVATE") +DB_USER = os.environ.get("POSTGRES_EPIGRAPH_USER") +DB_PASSWORD = os.environ.get("POSTGRES_EPIGRAPH_PASSWORD") +DB_NAME = os.environ.get("POSTGRES_EPIGRAPH_DB") +DB_NAME_PRIVATE = os.environ.get("POSTGRES_EPIGRAPH_DB_PRIVATE") DB_URI = ( f"postgresql://{DB_USER}:{DB_PASSWORD}" diff --git a/Makefile b/Makefile index 59188893..4bf731fa 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,12 @@ -SERVICES:=superset +SERVICES:=superset airflow SERVICE:=superset # options: dev, prod ENV:=$(shell scripts/get-env-name.sh) CONSOLE:=bash CRON:= +ARGS:= +TIMEOUT:=90 + DOCKER=docker-compose \ --env-file .env \ @@ -13,20 +16,40 @@ DOCKER=docker-compose \ # HOST -.PHONY: prepare-host-db -prepare-host-db: - bash scripts/prepare-host-db.sh +.PHONY: prepare-host +prepare-host: + bash scripts/prepare-host.sh # DOCKER +.ONESHELL: +.PHONY:docker-pull +docker-pull: + set -e + $(DOCKER) pull ${SERVICES} + +.ONESHELL: .PHONY:docker-build docker-build: + set -e + $(DOCKER) build ${SERVICES} + +.ONESHELL: +.PHONY:docker-build-services +docker-build-services: docker-pull + set -e + $(MAKE) docker-build SERVICES="superset" $(DOCKER) build ${SERVICES} - $(DOCKER) pull ${SERVICES} .PHONY:docker-start -docker-start: prepare-host-db +docker-start: prepare-host + set -e + if [ "${ENV}" = "dev" ]; then \ + $(DOCKER) up -d postgres; \ + ./docker/healthcheck.sh postgres; \ + fi $(DOCKER) up --remove-orphans -d ${SERVICES} + $(MAKE) docker-wait SERVICE=airflow .PHONY:docker-stop docker-stop: @@ -45,7 +68,7 @@ docker-logs-follow: .PHONY: docker-wait docker-wait: - ENV=${ENV} timeout 90 ./docker/healthcheck.sh ${SERVICE} + ENV=${ENV} timeout ${TIMEOUT} ./docker/healthcheck.sh ${SERVICE} .PHONY: docker-wait-all docker-wait-all: @@ -53,12 +76,13 @@ docker-wait-all: $(MAKE) docker-wait ENV=${ENV} SERVICE="redis" $(MAKE) docker-wait ENV=${ENV} SERVICE="flower" $(MAKE) docker-wait ENV=${ENV} SERVICE="superset" + $(MAKE) docker-wait ENV=${ENV} SERVICE="airflow" .PHONY:docker-dev-prepare-db docker-dev-prepare-db: # used for development $(DOCKER) exec -T superset \ - bash /opt/EpiGraphHub/docker/postgresql/prepare-db.sh + bash /opt/EpiGraphHub/docker/postgresql/scripts/dev/prepare-db.sh .PHONY:docker-run-cron docker-run-cron: @@ -86,9 +110,15 @@ docker-get-ips: docker-console: $(DOCKER) exec ${SERVICE} ${CONSOLE} -.PHONY:docker-run-bash -docker-run-bash: - $(DOCKER) run --rm ${SERVICE} bash +.PHONY:docker-run-console +docker-run-console: + $(DOCKER) run --rm ${SERVICE} ${CONSOLE} + + +.PHONY:docker-down +docker-down: + $(DOCKER) down --volumes --remove-orphans + # conda diff --git a/README.md b/README.md index d029380e..278bbe06 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ ## About The Project ![fig1](https://user-images.githubusercontent.com/140123/165057109-f09d6e8d-6ca2-405f-b912-7e068f20e39a.png) EpigraphHub is an entirely open source Data integration platform focused on Epidemiological analyses. - + ### Built With @@ -166,9 +166,9 @@ $ conda activate epigraphhub ``` ### Docker - + ![fig2](https://user-images.githubusercontent.com/140123/165057193-c5a2b2a2-8f30-426d-9bac-8f559c01265d.png) - + The project provides three **docker-compose** files, where one is the base definition (`docker/compose-base.yaml`) and the others are one for @@ -218,6 +218,14 @@ $ ./docker/healthcheck.sh epigraphhub $ make docker-prepare-db ``` +## AIRFLOW + +Create a **FERNET KEY**: + +```bash +openssl rand -base64 32 +``` + ## Deployment The deployment is executed by **Ansible** and triggered by **GitHub Actions**. diff --git a/conda/airflow.yaml b/conda/airflow.yaml new file mode 100644 index 00000000..649197b1 --- /dev/null +++ b/conda/airflow.yaml @@ -0,0 +1,47 @@ +name: epigraphhub +channels: + - nodefaults + - conda-forge + - r +dependencies: + - airflow 2.3.3 + - fiona + - geopandas + - gsheetsdb + - inquirer + - lightgbm + - loguru + - myst-parser + - openpyxl + - pandas + - pip + - psycopg2 + - python 3.8.* + - python-dotenv + - setuptools + - sqlalchemy + # waiting for https://github.com/stanfordmlgroup/ngboost/issues/283 + # - ngboost >=0.3.12 + # dev + - pip + - docker-compose + # R + - r-base 3.6.* + - r-tidyverse + - r-shiny + - r-stringr + - r-readxl + - r-dplyr + - r-dbi + - r-vroom + - r-odbc + - r-rsocrata + - r-glue + - r-janitor + - r-here + - r-desctools + - r-lubridate + - r-isocodes + # - r-dm + - pip: + - -r pip.txt diff --git a/conda/conda-linux-64.lock b/conda/conda-linux-64.lock index a83d5d10..8ba17e93 100644 --- a/conda/conda-linux-64.lock +++ b/conda/conda-linux-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: be645eed1a7564b028842ce05365b374c1527fc186bfea27ce16b44dc6875d01 +# input_hash: ebd4ec75aad15fc90fd3fee1c54d23dc561e50705bb477026fe4b730e86c3292 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 @@ -11,13 +11,13 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee -https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-9.4.0-hd854feb_16.tar.bz2#49d4af017741e08423d1009cb547f80e +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-9.5.0-h367e8d2_16.tar.bz2#b2f784aca08d3e45288c8ea6c7602b86 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-9.4.0-hd854feb_16.tar.bz2#d1421e969cb4f032c0a17da76cf0a375 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-9.5.0-h367e8d2_16.tar.bz2#e5cfd476f10829efccf955635377cfba https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 -https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.18-ha770c72_0.tar.bz2#518b07342786b362238d22f76789ed59 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-2.19-ha770c72_0.tar.bz2#16a2b9671b6b2b68001cf366ac5f2c13 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.11-hd8ed1ab_0.tar.bz2#abc27381c4f005da588cffa1f76403ee -https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022b-h191b570_0.tar.bz2#48806dd9fc8893fc52aafbdc349e77e0 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab @@ -27,7 +27,6 @@ https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.36.1-h1 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_10.tar.bz2#9d5cdbfe24b182d4c749b86d500ac9d2 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c -https://conda.anaconda.org/conda-forge/linux-64/abseil-cpp-20211102.0-h27087fc_1.tar.bz2#b98beaf7aa865ce847b741eb28ec708d https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.6.2-h7f98852_0.tar.bz2#ce69a062b3080485b760378841240634 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2#f26ef8098fab1f719c91eb760d63381a @@ -43,19 +42,20 @@ https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b8 https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20211102.0-cxx17_h48a1fff_2.tar.bz2#d578878b4c709016abd31e7d071fa676 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.13-h166bdaf_0.tar.bz2#4b5bee2e957570197327d0b20a718891 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a6416_1.tar.bz2#759c6f385ca4110f5fb185d404d306a3 -https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-9.4.0-h79bfe98_16.tar.bz2#3082a94f07235397be398173d6d81d79 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.21-pthreads_h78a6416_0.tar.bz2#8220a603d6822487affcaaf72960fca1 +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-9.5.0-hf86b28c_16.tar.bz2#ec3fd069cef36cc9d3a8ad258e7fe3ed https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d https://conda.anaconda.org/conda-forge/linux-64/libspatialindex-1.9.3-h9c3ff4c_4.tar.bz2#d87fbe9c0ff589e802ff13872980bfd9 https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.7.0-h7f98852_0.tar.bz2#913570ed14b42cf48ccbba364af20302 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_2.tar.bz2#99c0160c84e61348aa8eb2949b24e6d3 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.4-h166bdaf_0.tar.bz2#ac2ccf7323d21f2994e4d1f5da664f37 https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2#4049ebfd3190b580dffe76daed26155a @@ -68,7 +68,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001. https://conda.anaconda.org/conda-forge/linux-64/re2-2022.04.01-h27087fc_0.tar.bz2#7221140e556c2a65c93dbbc8675a7bea https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2#7362f0042e95681f5d371c46c83ebd08 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.9-hbd366e4_1.tar.bz2#418adb239781d9690afc6b1a05514c37 -https://conda.anaconda.org/conda-forge/linux-64/tzcode-2022a-h166bdaf_0.tar.bz2#e9dc6be4e271364d258b1dd074c014b3 +https://conda.anaconda.org/conda-forge/linux-64/tzcode-2022b-h166bdaf_0.tar.bz2#5b69786e83d879aa4f6e88b1dc5e2f79 https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2#d6b0b50b49eccfe0be0373be628be0f3 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 @@ -76,68 +76,70 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.t https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2#1e15f6ad85a7d743a2ac68dae6c82b98 https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 -https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/abseil-cpp-20211102.0-h93e1e8c_2.tar.bz2#65ec2296e79f399729e8880469d00a74 https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.5.11-h95a6274_0.tar.bz2#d4e7b241fb22dd3d7be1171f813d5da3 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.11-ha31a3da_7.tar.bz2#2fdb96aaab883abc0766ff76c0a34483 -https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-9.4.0-h03d3576_16.tar.bz2#e46c9e254375d427655b6881886b87ef +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-9.5.0-h6c5bc03_16.tar.bz2#5be4a0800b96a0cbfcac8b56e2b1177e https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_openblas.tar.bz2#04eb983975a1be3e57d6d667414cd774 +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h9772cbc_4.tar.bz2#dd3e1941dd06f64cb88647d2f7ff8aaa +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_openblas.tar.bz2#d9b7a8639171f6c6fa0a983edabcfe2b https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-hdcd2b5c_1.tar.bz2#6fe9e31c2b8d0b022626ccac13e6ca3c +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_4.tar.bz2#6b611734b73d639c084ac4be2fcd996a +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.20.1-h6239696_1.tar.bz2#bf67493aaf20c966f6c0d61d4bddf98b https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h30b5eef_8.tar.bz2#f66c7e0fe5d2e2511bc8e6dfbc24b790 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.39.2-h753d276_1.tar.bz2#90136dc0a305db4e1df24945d431457b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-haa6b8db_3.tar.bz2#89acee135f0809a18a1f4537390aa2dd https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_1.tar.bz2#7a268cf1386d271e576e35ae82149ef2 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/s2n-1.0.10-h9b69904_0.tar.bz2#9708c3ac26c20b4c4549cbe8fef937eb https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.3-h9d8b166_3.tar.bz2#933cb0804fca6edcfb64332e93d86a1e https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_4.tar.bz2#a6b5e941bc2998fbd59c84645247c2c7 https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.10.5-hfb6a706_0.tar.bz2#47d6b88b0c42a8c9877f3993b49f052d https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.1-h83bc5f7_3.tar.bz2#37baca23e60af4130cfc03e8ab9f8e22 https://conda.anaconda.org/conda-forge/linux-64/boost-cpp-1.74.0-h312852a_4.tar.bz2#22ee6de84c28eb7bd76802cf071c5d25 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz2#5746d6202ba2abad4a4707f2a2462795 -https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-9.4.0-h391b98a_10.tar.bz2#74b03e7cf35c6315f905b730ffbcf1c7 -https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-9.4.0-h0003116_16.tar.bz2#a464df4d5a4fbe43e347923d6221ef84 -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-9.4.0-h03d3576_16.tar.bz2#98494038827f8906f3029b3db94930ff -https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h10796ff_3.tar.bz2#21a8d66dc17f065023b33145c42652fe +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-hca18f0e_0.tar.bz2#4e54cbfc47b8c74c2ecc1e7730d8edce +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-9.5.0-h4258300_10.tar.bz2#897012edfc84de8c62de3d29a5c6bc9b +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-9.5.0-h3c9b8b6_16.tar.bz2#794900c13250baa8cd3404d70606cfb0 +https://conda.anaconda.org/conda-forge/linux-64/grpc-cpp-1.45.2-he70e3f0_3.tar.bz2#617b18fc828b4e3c7e695742ab81fa2e +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-9.5.0-h6c5bc03_16.tar.bz2#49d1d0e8f97e628be5b448fe71cd4f82 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_openblas.tar.bz2#20bae26d0a1db73f758fc3754cab4719 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.72.1-h2d90d5f_0.tar.bz2#ebeadbb5fbc44052eeb6f96a2136e3c2 -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f -https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230 -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a -https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.20.1-h6239696_0.tar.bz2#21c9de21934a18e094fc6534d787581e -https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_openblas.tar.bz2#955d993f41f9354bf753d29864ea20ad https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.16.0-h519c5ea_1.tar.bz2#f1eede77e2dab7a4392dabc746913d52 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-h0d92c0b_2.tar.bz2#7c73d1e16e1a02d95dee85ec6b5574ab +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-h0e0dad5_3.tar.bz2#5627d42c13a9b117ae1701c6e195624f https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h72842e0_0.tar.bz2#bd14fdf5b9ee5568056a40a6a2f41866 -https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_0.tar.bz2#2d9e11c1183391882e95fec81d0d71c8 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_0.tar.bz2#2cf5cb4cd116a78e639977eb61ad9987 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.7.5-h6c59b99_0.tar.bz2#884b5f46b907b1f9b4a2aa60d75b4d32 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.2-h4ff8645_1.tar.bz2#2676ec698ce91567fca50654ac1b18ba https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-hb7b940f_3.tar.bz2#ea4d0879e40211fa26f38d8986db1bbe https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.10-h583eb01_0.tar.bz2#906893193434d971b6f92839086f430d https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.2-h7f98852_0.tar.bz2#12a61e640b8894504326aadafccbb790 https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.2.7-h3541f99_13.tar.bz2#39768ba0fe69c241d54703a7f5e3119f https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d -https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-9.4.0-hf0ab688_10.tar.bz2#d5bb7daa1db6baf5880c21cd0f26061c -https://conda.anaconda.org/conda-forge/linux-64/grpc-cpp-1.45.2-he70e3f0_3.tar.bz2#617b18fc828b4e3c7e695742ab81fa2e +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-9.5.0-hdb51d14_10.tar.bz2#05c8e77b0910e2551582ad509f5d82bc https://conda.anaconda.org/conda-forge/linux-64/gsl-2.6-he838d99_2.tar.bz2#d54a10784d331d7b13f8af19acf297b7 -https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-9.4.0-h0316aca_10.tar.bz2#e12e127b391c92fa2f0d09dce6661ecb +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-9.5.0-h43f449f_10.tar.bz2#082df69bef15ac548ed328686fe99da5 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.83.1-h7bff187_0.tar.bz2#d0c278476dba3b29ee13203784672ab1 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h238a007_1014.tar.bz2#abd8e196ad04781818acef26cc451d66 https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-hd57d9b9_0.tar.bz2#91b38e297e1cc79f88f7cbf7bdb248e0 -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_1.tar.bz2#424fabaabbfb6ec60492d3aba900f513 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 -https://conda.anaconda.org/conda-forge/linux-64/orc-1.7.5-h6c59b99_0.tar.bz2#884b5f46b907b1f9b4a2aa60d75b4d32 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.13-h582c2e5_0_cpython.tar.bz2#8ec74710472994e2411a8020fa8589ce https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2#f59c1242cc1dd93e72c2ee2b360979eb @@ -146,7 +148,7 @@ https://conda.anaconda.org/conda-forge/noarch/anyjson-0.3.3-pyhd8ed1ab_1004.tar. https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12 -https://conda.anaconda.org/conda-forge/noarch/attrs-22.1.0-pyh71513ae_0.tar.bz2#b10c888ee1372e73d6d57a40d3f8e490 +https://conda.anaconda.org/conda-forge/noarch/attrs-22.1.0-pyh71513ae_1.tar.bz2#6d3ccbc56256204925bfa8378722792f https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.8.186-hb4091e7_3.tar.bz2#3c08d9ee5cb4fe57774405a429f12351 https://conda.anaconda.org/conda-forge/noarch/backoff-2.1.2-pyhd8ed1ab_0.tar.bz2#d02e889937175119b88bf176221cda44 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd @@ -154,11 +156,11 @@ https://conda.anaconda.org/conda-forge/noarch/blinker-1.4-py_1.tar.bz2#fa509a091 https://conda.anaconda.org/conda-forge/noarch/boto-2.49.0-py_0.tar.bz2#eff2d6d409ea32c4ccd7fad21a27989b https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a https://conda.anaconda.org/conda-forge/noarch/cachelib-0.4.1-pyhd8ed1ab_0.tar.bz2#23c1f358325e034591e7b96179319ac6 -https://conda.anaconda.org/conda-forge/noarch/cachetools-5.0.0-pyhd8ed1ab_0.tar.bz2#fadf619797a005b4aacbfc3003d80545 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.2.0-pyhd8ed1ab_0.tar.bz2#c6653a1ed0c4a48ace64ab68a0bf9b27 https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-py_0.tar.bz2#808c46dc56ae4a796830129aaf1b51ec +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.0.0-h9a35b8e_0.tar.bz2#6b214116ecabe2c5457a93b9763de61d -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e -https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/noarch/colour-0.1.5-py_0.tar.bz2#71b82c5b05fa41dbd41a2fd01b10043a https://conda.anaconda.org/conda-forge/noarch/crashtest-0.3.1-pyhd8ed1ab_0.tar.bz2#b8477552274c1cfdb533e954c76523f1 @@ -166,14 +168,12 @@ https://conda.anaconda.org/conda-forge/noarch/cron-descriptor-1.2.24-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/linux-64/curl-7.83.1-h7bff187_0.tar.bz2#ba33b9995f5e691e4f439422d6efafc7 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 -https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.5-pyhd8ed1ab_0.tar.bz2#f15c3912378a07726093cc94d1e13251 https://conda.anaconda.org/conda-forge/noarch/distro-1.6.0-pyhd8ed1ab_0.tar.bz2#751b2c62ee84dba7d9e1f9d50d41fb61 https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-py_1.tar.bz2#a9ed63e45579cfef026a916af2bc27c9 https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.0.1-py_1001.tar.bz2#2ca571121f480d1c2b90782463924873 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.7.1-pyhd8ed1ab_0.tar.bz2#7556872687250e0ea038eb503da3c44b +https://conda.anaconda.org/conda-forge/noarch/filelock-3.8.0-pyhd8ed1ab_0.tar.bz2#10f0218dbd493ab2e5dc6759ddea4526 https://conda.anaconda.org/conda-forge/noarch/flit-core-3.7.1-pyhd8ed1ab_0.tar.bz2#f93822cba5c20161560661988a88f2c0 -https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 https://conda.anaconda.org/conda-forge/noarch/func_timeout-4.3.5-py_0.tar.bz2#668c99f4673c1c851832438636dde63e https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85 https://conda.anaconda.org/conda-forge/noarch/graphlib-backport-1.0.3-pyhd8ed1ab_0.tar.bz2#33c122658a309cc9fc0b1dda47a02a84 @@ -183,7 +183,7 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b5 https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/infinity-1.5-pyhd8ed1ab_0.tar.bz2#18b1fd34f0fecda60c9f081d5d38764b https://conda.anaconda.org/conda-forge/noarch/iso8601-1.0.2-pyhd8ed1ab_0.tar.bz2#11b77b8c97ced152f8f5cd700f627117 -https://conda.anaconda.org/conda-forge/noarch/itsdangerous-1.1.0-py_0.tar.bz2#8afda875561afffed1115fd247fdd61e +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2#9800ad1699b42612478755a2d26c722d https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85c22a3beb102a48cd123df84c2a6 @@ -196,25 +196,27 @@ https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.5-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/parsedatetime-2.6-pyh9f0ad1d_0.tar.bz2#32eaf2e190820f495ae92d25acf63544 https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2#a4eea5bff523f26442405bc5d1f52adb https://conda.anaconda.org/conda-forge/noarch/pgsanity-0.2.9-pyhd8ed1ab_0.tar.bz2#9028c9b055707daba005b78f11f84ab0 -https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.12.52-pyhd8ed1ab_0.tar.bz2#4ba86d4b984028a23a3c34faa49ea476 +https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.12.53-pyhd8ed1ab_0.tar.bz2#bfb2e91098d41ff2a908e2f968715417 https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.8.3-pyhd8ed1ab_0.tar.bz2#0f2d0da112ff6fd76cc3ce038d72d2c9 +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.5.2-pyhd8ed1ab_1.tar.bz2#2fb3f88922e7aec26ba652fcdfe13950 https://conda.anaconda.org/conda-forge/linux-64/postgresql-14.2-h2510834_0.tar.bz2#4b2d032512ae19e2b215fa48643970b9 https://conda.anaconda.org/conda-forge/linux-64/proj-8.2.0-h277dcde_0.tar.bz2#7ba8c7a9bf1c2fedf4a6d6dc92839baf https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.4.8-py_0.tar.bz2#06d04c9f8f72ac77911db942eda24fb9 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.4.0-pyhd8ed1ab_0.tar.bz2#9620c5c6170db8f9570777bfb6244088 https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2#edf8651c4379d9d1495ad6229622d150 https://conda.anaconda.org/conda-forge/noarch/pymeeus-0.5.10-pyhd8ed1ab_0.tar.bz2#0b1ec35896f21c67ec11452ff10d9926 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc https://conda.anaconda.org/conda-forge/noarch/python-editor-1.0.4-py_0.tar.bz2#eaaf29a0644f9407f98a4665f45880c4 https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-2_cp38.tar.bz2#bfbb29d517281e78ac53e48d21e6e860 -https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.2.1-pyhd8ed1ab_0.tar.bz2#974bca71d00364630f63f31fa7e059cb https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2#7dd824593f3a861130ac17c6571546e2 -https://conda.anaconda.org/conda-forge/noarch/readchar-3.1.0-pyhd8ed1ab_0.tar.bz2#4c9f901313a2454c3499237d7d45d3a2 +https://conda.anaconda.org/conda-forge/noarch/readchar-4.0.1-pyhd8ed1ab_0.tar.bz2#1c247513cf8178f692aeafbf55b0dff1 https://conda.anaconda.org/conda-forge/noarch/requestsexceptions-1.4.0-py_0.tar.bz2#cedf3ef3827c2732e80f7c84074f3a1d https://conda.anaconda.org/conda-forge/noarch/resolvelib-0.5.4-pyhd8ed1ab_0.tar.bz2#89107e4dac516df78d53a2a729402f60 -https://conda.anaconda.org/conda-forge/noarch/shellingham-1.4.0-pyh44b312d_0.tar.bz2#437655338696f9d0dfdb0a024e66b255 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.0-pyhd8ed1ab_0.tar.bz2#65bacdee3cac51e49f45d530bbd5e90f https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d @@ -230,34 +232,32 @@ https://conda.anaconda.org/conda-forge/noarch/texttable-1.6.4-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/typing-3.10.0.0-pyhd8ed1ab_0.tar.bz2#e6573ac68718f17b9d4f5c8eda3190f2 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.10.0.2-pyha770c72_0.tar.bz2#85dfd487a244bbe2cf7019ce8a39b5bc -https://conda.anaconda.org/conda-forge/noarch/vine-1.3.0-py_0.tar.bz2#0ca5810262fa964e3902a5f89d6f7a0b +https://conda.anaconda.org/conda-forge/noarch/vine-5.0.0-pyhd8ed1ab_1.tar.bz2#7cb5b514698cfd164ad5103e58e1e201 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.3.3-pyhd8ed1ab_0.tar.bz2#1aebd3cc43ffb4bb09646f60e03c50cd -https://conda.anaconda.org/conda-forge/noarch/werkzeug-1.0.1-pyh9f0ad1d_0.tar.bz2#a9f0ed0e6ba014c4e42543bda09e0035 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.0.3-pyhd8ed1ab_1.tar.bz2#369e03b5f96efd7942c7bc9571d6ff9c https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.6.0-pyhd8ed1ab_0.tar.bz2#486833444c99269cf51cd23d09004f0b -https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c -https://conda.anaconda.org/conda-forge/noarch/amqp-2.6.1-pyh9f0ad1d_0.tar.bz2#7e007457befb031180f6459921be113b +https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2#a3508a0c850745b875de88aea4c40cc5 +https://conda.anaconda.org/conda-forge/noarch/amqp-5.1.1-pyhd8ed1ab_0.tar.bz2#a59814fb9125df2a852373254c76cc08 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda https://conda.anaconda.org/conda-forge/linux-64/billiard-3.6.4.0-py38h0a891b7_2.tar.bz2#4747c5480ed1d5670fcffe1b1684bddd https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py38hfa26641_7.tar.bz2#2d92c467863b5ceaecf4d77bbede3ee3 https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 -https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py38h4a40e3a_0.tar.bz2#a970d201055ec06a75db83bf25447eb2 -https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py38h578d9bd_3.tar.bz2#00f6c9f68ebab0e9288c1d222b492def -https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f -https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.0.0-py38h578d9bd_0.tar.bz2#6b662233a63a82c5e0385660d2f77f23 +https://conda.anaconda.org/conda-forge/linux-64/click-8.1.3-py38h578d9bd_0.tar.bz2#a863b3d0df14d2d5335d917eef8523f6 https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyh9f0ad1d_0.tar.bz2#159273f717a11e53b2656f8b6521a5e2 https://conda.anaconda.org/conda-forge/noarch/convertdate-2.4.0-pyhd8ed1ab_0.tar.bz2#1f0f49ac9977393b07de93002db5ad5c https://conda.anaconda.org/conda-forge/noarch/docker-pycreds-0.4.0-py_0.tar.bz2#c69f19038efee4eb534623610d0c2053 https://conda.anaconda.org/conda-forge/noarch/dockerpty-0.4.1-py_0.tar.bz2#adc1506522174ee7db12e5e25c09214f https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py38h578d9bd_1.tar.bz2#40086fd82fe8af5a0ccc769245f67c6a -https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.3.0-py38h0a891b7_1.tar.bz2#7a3319eee53c41427ae01db58b48b0dc -https://conda.anaconda.org/conda-forge/linux-64/future-0.18.2-py38h578d9bd_5.tar.bz2#8658059c99ca16e4f5fb322aa23eeac8 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.3.1-py38h0a891b7_0.tar.bz2#8dd5f885987c99775e7407d7fce01309 https://conda.anaconda.org/conda-forge/noarch/geopy-2.2.0-pyhd8ed1ab_0.tar.bz2#07259c829ac940ca470525a74d4b5eb1 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.0-h90a4e78_5.tar.bz2#512429d22b756a8b04efce724021dc22 https://conda.anaconda.org/conda-forge/noarch/h11-0.13.0-pyhd8ed1ab_1.tar.bz2#e7cf19f1afe6b3a6a4a9fa383080ebd1 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-3.1.1-h83ec7ef_0.tar.bz2#ca8faaee04a83e3c4d6f708a35ac2ec3 https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2#b2355343d6315c892543200231d7154a https://conda.anaconda.org/conda-forge/noarch/httplib2-0.20.4-pyhd8ed1ab_0.tar.bz2#3e95f321d7ea7811acf87c288c426095 https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py38h578d9bd_0.tar.bz2#037225c33a50e99c5d4f86fac90f6de8 @@ -272,29 +272,28 @@ https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.1-nompi_h329d8a1_1 https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.0.1-hf3ee066_12.tar.bz2#38bf1ccc90ada343288327181e6511d0 https://conda.anaconda.org/conda-forge/linux-64/loguru-0.6.0-py38h578d9bd_1.tar.bz2#15bed48675c66a4b0e73bf3db16069b1 https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-2.1.0-pyhd8ed1ab_0.tar.bz2#d821ebc1ebe21d4cac2555278c2cd970 -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h0a891b7_4.tar.bz2#d182e0c60439427453ed4a7abd28ef0d +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py38h0a891b7_1.tar.bz2#20d003ad5f584e212c299f64cac46c05 https://conda.anaconda.org/conda-forge/noarch/mo-imports-3.149.20327-pyhd8ed1ab_0.tar.bz2#465160d635d3bc1db6d0d400b53bc0b0 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.4-py38h43d8883_0.tar.bz2#77c7c5052edf906b9567f83b46f99be3 https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.2-py38h0a891b7_1.tar.bz2#5f4f65f3f23fc49d301951dff45c7375 https://conda.anaconda.org/conda-forge/linux-64/netifaces-0.11.0-py38h0a891b7_0.tar.bz2#b6a204aa818d2f882427fab7183569ae -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py38h3a7f9d9_0.tar.bz2#90cf44c14b2bfe19ce7b875979b90cb9 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.1-py38h6ae9a64_0.tar.bz2#9ec24c7acb2252816f1f6b6687317432 https://conda.anaconda.org/conda-forge/noarch/openpyxl-3.0.9-pyhd8ed1ab_0.tar.bz2#e3006b1924f1d2e6e01b55c820d8e5a0 https://conda.anaconda.org/conda-forge/noarch/orderedmultidict-1.0.1-py_0.tar.bz2#9312ee579d28ad5023c1f20e832c6d16 https://conda.anaconda.org/conda-forge/noarch/outcome-1.2.0-pyhd8ed1ab_0.tar.bz2#3dbb9ece72652131f12d66e889da7c0a https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_0.tar.bz2#7ef61f9084bda76b2f7a668ec5d1499a +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_1.tar.bz2#b3738ab363ee3311b4624f9a5abc424c https://conda.anaconda.org/conda-forge/linux-64/poetry-core-1.0.8-py38h578d9bd_1.tar.bz2#5ae3f8ef29a84af8e7298320139894b8 https://conda.anaconda.org/conda-forge/noarch/polyline-1.4.0-py_0.tar.bz2#baf96575fd6e20743d67e4c5c39787c4 +https://conda.anaconda.org/conda-forge/linux-64/poppler-21.11.0-ha39eefc_0.tar.bz2#e8fa8792970ec9278e9ae7e4d0ff2841 https://conda.anaconda.org/conda-forge/noarch/prison-0.2.1-pyhd8ed1ab_0.tar.bz2#98c44171005d25481db2f826d55df237 https://conda.anaconda.org/conda-forge/linux-64/psycopg2-2.9.3-py38h497a2fe_0.tar.bz2#9c045d44bb6ead4aa046f2613fa6908b https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.2.7-py_0.tar.bz2#ad1e886d09700b2304975335f714bd9c https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.18.1-py38h0a891b7_1.tar.bz2#baf653aaed8aa675798cbf810c01434e https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/noarch/python-dotenv-0.20.0-pyhd8ed1ab_0.tar.bz2#9c113379ac0729312b59b5e65906d6e6 https://conda.anaconda.org/conda-forge/linux-64/python-geohash-0.8.5-py38hfa26641_4.tar.bz2#481d4eea9eca8da6c18b45eada52570f -https://conda.anaconda.org/conda-forge/noarch/python3-openid-3.2.0-pyhd8ed1ab_0.tar.bz2#4bed2c2a67fa9ebac662fed6bfaf1ad0 https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h0a891b7_4.tar.bz2#ba24ff01bb38c5cd5be54b45ef685db3 https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 @@ -305,10 +304,10 @@ https://conda.anaconda.org/conda-forge/linux-64/sniffio-1.2.0-py38h578d9bd_3.tar https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.3.24-py38h0a891b7_1.tar.bz2#55536efc1bf10b27f274e66686b3a5b1 https://conda.anaconda.org/conda-forge/linux-64/sqloxide-0.1.15-py38h0287bc9_2.tar.bz2#ed7b20e29b349325190cf23e3716b5a1 https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.5.3-h2038895_0.tar.bz2#3cd4a7ae95455f267e279a1b896e0bb7 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.1-pyha770c72_0.tar.bz2#3347f5e2f9c13d792ae71bcefa8a5603 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.4-pyha770c72_0.tar.bz2#c57d6a6abb22c3796add680597ee0096 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-3.10.0.2-hd8ed1ab_0.tar.bz2#786c3b0de977da13146a2eaaa091ac46 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h0a891b7_1.tar.bz2#83df0e9e3faffc295f12607438691465 -https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.16.2-py38h578d9bd_0.tar.bz2#a01038c7c46c4a52fba1645c17a8c8cb +https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.16.3-py38h578d9bd_0.tar.bz2#b830ca0aaf8992855af9001f0c2d7b2e https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.14.1-py38h0a891b7_0.tar.bz2#14e17bea0174aca806baaa23d2bb320e https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.2.0-pyhd8ed1ab_0.tar.bz2#68c9a0ab410c72abd24cbaac57703519 https://conda.anaconda.org/conda-forge/noarch/apispec-3.3.2-py_0.tar.bz2#8c953044db8dc1231a671b69d8ba6c42 @@ -320,6 +319,9 @@ https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6. https://conda.anaconda.org/conda-forge/noarch/bleach-3.3.1-pyhd8ed1ab_0.tar.bz2#41c16b233ae28fa75019842836b55254 https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 https://conda.anaconda.org/conda-forge/noarch/cleo-0.8.1-pyhd8ed1ab_2.tar.bz2#4c82b11a3d06031bd58e7d869f53d965 +https://conda.anaconda.org/conda-forge/noarch/click-didyoumean-0.3.0-pyhd8ed1ab_0.tar.bz2#a49aa7bc1a82485f6a0a8849dcfefcad +https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f +https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 https://conda.anaconda.org/conda-forge/noarch/croniter-1.3.5-pyhd8ed1ab_0.tar.bz2#d54807dd9d24152f471ab2629e39430b https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.4-py38h2b5fc30_0.tar.bz2#28e9acd6f13ed29f27d5550a1cf0554b https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.13-pyh6c4a22f_0.tar.bz2#071a67ab79c2f570dc955db6720aa502 @@ -327,14 +329,14 @@ https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.34.4-py38h0a891b7_0.tar.bz2#7ac14fa19454e00f50d9a39506bcc3c6 https://conda.anaconda.org/conda-forge/noarch/furl-2.1.3-pyhd8ed1ab_0.tar.bz2#0ffa727cee59a05c0142c395d89ef6a7 https://conda.anaconda.org/conda-forge/linux-64/gunicorn-20.1.0-py38h578d9bd_2.tar.bz2#5971f3cc8cc030c9f6f5a0ea0a93d3ef -https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-3.1.1-h83ec7ef_0.tar.bz2#ca8faaee04a83e3c4d6f708a35ac2ec3 https://conda.anaconda.org/conda-forge/noarch/holidays-0.10.3-pyh9f0ad1d_0.tar.bz2#d318ec2d915860c714c38f83927edf4a -https://conda.anaconda.org/conda-forge/noarch/humanize-4.2.3-pyhd8ed1ab_0.tar.bz2#23f37f3fd7e2d9bf76ecb20192a03d51 +https://conda.anaconda.org/conda-forge/noarch/humanize-4.3.0-pyhd8ed1ab_0.tar.bz2#40a250f93507f76fe881c02d546440bf https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.11.4-hd8ed1ab_0.tar.bz2#9a1925fdb91c81437b8012e48ede6851 -https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.7.2-pyhd8ed1ab_0.tar.bz2#8f9d5dbb36efeaebc8d567237bccf24e -https://conda.anaconda.org/conda-forge/linux-64/kombu-4.6.11-py38h32f6830_0.tar.bz2#34777ade8bc35afd70fc6a221449f90b +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.9.1-pyhd8ed1ab_0.tar.bz2#8331d25cc09613d11c0bed6b68d2b833 +https://conda.anaconda.org/conda-forge/linux-64/kombu-5.2.4-py38h578d9bd_1.tar.bz2#c7c4b0afef7e88b0115cfd36a4e2365a +https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.4.0-hf890fe0_9.tar.bz2#e25ba972c56fcb7a300aa5ca33c9c5d4 https://conda.anaconda.org/conda-forge/noarch/mako-1.2.1-pyhd8ed1ab_0.tar.bz2#013adf4a461ccd7ab25f9285ec882918 https://conda.anaconda.org/conda-forge/noarch/markdown-3.4.1-pyhd8ed1ab_0.tar.bz2#50d5bcf9693d8c1e7db6b1150b5c4ee5 https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.17.0-pyhd8ed1ab_0.tar.bz2#86cdc64d949e69ef328dee13b9289251 @@ -342,14 +344,15 @@ https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.3.0-pyhd8ed1ab_0 https://conda.anaconda.org/conda-forge/noarch/mo-dots-4.22.21108-pyhd8ed1ab_0.tar.bz2#8a96156fff6c16dd1ec4110b96b3efad https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.3.5-py38h43a58ef_0.tar.bz2#171cc96da3b1a0ebd4bf2b5586b7cda3 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.48.10-h54213e6_2.tar.bz2#b7ed7c76c9360db1f91afba2e220007b https://conda.anaconda.org/conda-forge/linux-64/pendulum-2.1.2-py38h0a891b7_4.tar.bz2#d555361a1ecbb43a06c228c28aa187c8 -https://conda.anaconda.org/conda-forge/noarch/pip-22.2.1-pyhd8ed1ab_0.tar.bz2#0cbcd1fa7291fe72dc8f848907510498 -https://conda.anaconda.org/conda-forge/linux-64/poppler-21.11.0-ha39eefc_0.tar.bz2#e8fa8792970ec9278e9ae7e4d0ff2841 +https://conda.anaconda.org/conda-forge/noarch/pip-22.2.2-pyhd8ed1ab_0.tar.bz2#0b43abe4d3ee93e82742d37def53a836 https://conda.anaconda.org/conda-forge/linux-64/pycares-4.0.0-py38h0a891b7_1.tar.bz2#fcd50f358ca3b90479efa7ce749c6ec7 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py38h0a891b7_1.tar.bz2#30d4ddfbcc8ae797ab32d189a5749980 https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.3.0-py38hdd21e9b_0.tar.bz2#ceb8ec641cd5faa40b568f8ca008b6dc -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py38hea3f02b_2.tar.bz2#71f2dd6099c193da621ead62efba14a9 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-0.20.0-pyhd8ed1ab_0.tar.bz2#9c113379ac0729312b59b5e65906d6e6 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.9.0-py38hea3f02b_0.tar.bz2#d19e23bb56b31d2504a0ff4d46b7aabc https://conda.anaconda.org/conda-forge/linux-64/shapely-1.8.0-py38h800f7b8_4.tar.bz2#5fb9a3af4ebd8b21ca099e107306be72 https://conda.anaconda.org/conda-forge/linux-64/trio-0.21.0-py38h578d9bd_0.tar.bz2#635bfc42b4cdcbf54112fb7d7cd0165d https://conda.anaconda.org/conda-forge/linux-64/wsproto-1.1.0-py38h578d9bd_1.tar.bz2#234c59c046d707a6441e18168d27b633 @@ -362,56 +365,45 @@ https://conda.anaconda.org/conda-forge/noarch/ansible-core-2.13.2-pyhd8ed1ab_0.t https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.tar.bz2#a0b402db58f73aaab8ee0ca1025a362e https://conda.anaconda.org/conda-forge/linux-64/bcrypt-3.2.2-py38h0a891b7_0.tar.bz2#42b5b8a19e3da17320f28349012281d3 https://conda.anaconda.org/conda-forge/noarch/branca-0.5.0-pyhd8ed1ab_0.tar.bz2#d96c4ccb1e66b1c1f507dd12c226749a -https://conda.anaconda.org/conda-forge/noarch/celery-4.4.6-pyh9f0ad1d_0.tar.bz2#816e09ad6c800d5595d02479be6c8fba https://conda.anaconda.org/conda-forge/noarch/dnspython-2.2.1-pyhd8ed1ab_0.tar.bz2#470ec3688fa9c2a4bd764ba064ef4895 -https://conda.anaconda.org/conda-forge/noarch/flask-1.1.4-pyhd8ed1ab_0.tar.bz2#63a883114dff04051d6da14614abad6c +https://conda.anaconda.org/conda-forge/noarch/flask-2.1.3-pyhd8ed1ab_0.tar.bz2#4b95b1c750d6d737905cdb447f097b9c +https://conda.anaconda.org/conda-forge/linux-64/gdal-3.4.0-py38hcf2042a_9.tar.bz2#5a2139a310b810954fdfb6f605e70bd9 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.11.1-pyha770c72_0.tar.bz2#5926cac706ea9c090e8cc72cd80dee83 -https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.4.0-hf890fe0_9.tar.bz2#e25ba972c56fcb7a300aa5ca33c9c5d4 https://conda.anaconda.org/conda-forge/noarch/marshmallow-enum-1.5.1-pyh9f0ad1d_3.tar.bz2#67c5202bf14543cd1bb97f129d3f26dd https://conda.anaconda.org/conda-forge/noarch/marshmallow-sqlalchemy-0.26.1-pyhd8ed1ab_0.tar.bz2#ec0b788dbf26d06cb770a955c01780a2 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py38h826bfd8_1.tar.bz2#2726cea4b977031563cb3d2ae813a695 https://conda.anaconda.org/conda-forge/noarch/mo-kwargs-4.22.21108-pyhd8ed1ab_0.tar.bz2#437e7f171e2b069c644a1afb44acc53e -https://conda.anaconda.org/conda-forge/linux-64/pango-1.48.10-h54213e6_2.tar.bz2#b7ed7c76c9360db1f91afba2e220007b https://conda.anaconda.org/conda-forge/noarch/parquet-cpp-1.5.1-2.tar.bz2#79a5f78c42817594ae016a7896521a97 -https://conda.anaconda.org/conda-forge/noarch/pbr-5.9.0-pyhd8ed1ab_0.tar.bz2#3e7b95a8fa94cec79224506310b59b01 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-1.7.1-py_0.tar.bz2#617ab4f8c5e481fdeabe55d7a1e14798 +https://conda.anaconda.org/conda-forge/noarch/pbr-5.10.0-pyhd8ed1ab_0.tar.bz2#6cfd80f8f255415a400c5a2728087fce https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/linux-64/r-base-3.6.3-hbcea092_8.tar.bz2#b1902e2c0c57a6ebfbf833db492d6f19 https://conda.anaconda.org/conda-forge/noarch/redis-py-4.3.4-pyhd8ed1ab_0.tar.bz2#059c1b12ae7e390e4858bd3018894540 -https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.1.1-py38hf80bbf7_0.tar.bz2#cf4d22e16908a4288f21c18ae28a8b23 -https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.2-py38h578d9bd_1.tar.bz2#d3937ef211f98cc81a29966f2ac9f677 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.1.2-py38h0b08f9b_0.tar.bz2#cbd1e67a0e0b88837d46fcb06c1ea141 +https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py38h578d9bd_0.tar.bz2#b009629a619d880b73ba2b8c585705b4 https://conda.anaconda.org/conda-forge/noarch/trio-websocket-0.9.2-pyhd8ed1ab_0.tar.bz2#7acf3fc982eef23b24aed10e80d5dc99 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee https://conda.anaconda.org/conda-forge/noarch/wtforms-json-0.3.3-py_0.tar.bz2#c373b85cde8d6ecfeff5688eac8d4123 https://conda.anaconda.org/conda-forge/linux-64/blessed-1.19.1-py38h578d9bd_1.tar.bz2#fd18c5d7ca06563889b1da307eaca453 https://conda.anaconda.org/conda-forge/noarch/email-validator-1.2.1-pyhd8ed1ab_0.tar.bz2#ba8f992c4a1030e44a57e7955784b7f8 +https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.20-py38h8228012_4.tar.bz2#9a699423aa5152d3c0117854f98659fa https://conda.anaconda.org/conda-forge/noarch/flask-babel-2.0.0-pyh9f0ad1d_0.tar.bz2#c6a2186ba633de0a6bec774210f1bf38 -https://conda.anaconda.org/conda-forge/noarch/flask-caching-1.11.1-pyhd8ed1ab_0.tar.bz2#ea15fba238bb083b21e83f1857086480 +https://conda.anaconda.org/conda-forge/noarch/flask-caching-1.10.1-pyhd8ed1ab_0.tar.bz2#b711284e4fb54851a9040c8c6c9f19c1 https://conda.anaconda.org/conda-forge/noarch/flask-compress-1.12-pyhd8ed1ab_0.tar.bz2#c3da321f6321a1b9ec992ece2422000b -https://conda.anaconda.org/conda-forge/noarch/flask-jwt-extended-3.25.1-pyhd8ed1ab_0.tar.bz2#b77dfd818e1224c969a71af4bdd2dbe4 -https://conda.anaconda.org/conda-forge/noarch/flask-login-0.4.1-py_0.tar.bz2#c6829f3a2de7981a44f0a661a3f8a2c5 +https://conda.anaconda.org/conda-forge/noarch/flask-jwt-extended-4.4.4-pyhd8ed1ab_0.tar.bz2#8b821d6d19bd8168d4eceeef0df0bb63 +https://conda.anaconda.org/conda-forge/noarch/flask-login-0.6.2-pyhd8ed1ab_0.tar.bz2#427457b9179d5f1d65b11ca7761e60ee https://conda.anaconda.org/conda-forge/noarch/flask-mail-0.9.1-py_2.tar.bz2#083af8cde25430f3e489d2571c523604 -https://conda.anaconda.org/conda-forge/noarch/flask-openid-1.3.0-pyhd8ed1ab_0.tar.bz2#b537163b272bcaef3c03b2ed43db6352 https://conda.anaconda.org/conda-forge/noarch/flask-sqlalchemy-2.5.1-pyhd8ed1ab_0.tar.bz2#8b7ac14ba322af98dde494364bef9e23 https://conda.anaconda.org/conda-forge/noarch/flask-talisman-0.7.0-py_0.tar.bz2#66c139924f540926e26a971c0f139a6b -https://conda.anaconda.org/conda-forge/noarch/flask-wtf-0.14.3-py_0.tar.bz2#cda9543789d25ae35ac265b906af4e63 -https://conda.anaconda.org/conda-forge/linux-64/gdal-3.4.0-py38hcf2042a_9.tar.bz2#5a2139a310b810954fdfb6f605e70bd9 -https://conda.anaconda.org/conda-forge/linux-64/keyring-23.7.0-py38h578d9bd_0.tar.bz2#8f774553393f9a86594528150067c21a +https://conda.anaconda.org/conda-forge/noarch/flask-wtf-0.15.1-pyhd8ed1ab_0.tar.bz2#343c46424510e6627a0c8a9a6587e6e5 +https://conda.anaconda.org/conda-forge/linux-64/keyring-23.8.2-py38h578d9bd_0.tar.bz2#a8ec31f294ccf87e9080b9f240ffb000 https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.2-py38h709712a_0.tar.bz2#6f0da2aa7d377e4ed5b4301e509b7312 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1 https://conda.anaconda.org/conda-forge/noarch/mo-logs-4.23.21108-pyhd8ed1ab_0.tar.bz2#49851304d72efbe992d6f1225ed2470b https://conda.anaconda.org/conda-forge/noarch/os-service-types-1.7.0-pyh9f0ad1d_0.tar.bz2#4f270f68fdcd3c23a5a769afd9969499 https://conda.anaconda.org/conda-forge/noarch/paramiko-2.11.0-pyhd8ed1ab_0.tar.bz2#74a35060bbae98fbf7cfeaba2336152f https://conda.anaconda.org/conda-forge/noarch/passlib-1.7.4-pyh9f0ad1d_0.tar.bz2#6a5c798488ee4f274ae8cb1ec1e57ce1 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.30-pyha770c72_0.tar.bz2#f5f08dc71d7e24572b131d5fb0ad1ebc https://conda.anaconda.org/conda-forge/linux-64/pyarrow-5.0.0-py38h9f6a473_35_cpu.tar.bz2#a1d9e3eefff7bd735c7d51ea4f507e3c -https://conda.anaconda.org/conda-forge/linux-64/r-base-3.6.3-hbcea092_8.tar.bz2#b1902e2c0c57a6ebfbf833db492d6f19 -https://conda.anaconda.org/conda-forge/linux-64/slackclient-2.5.0-py38_0.tar.bz2#9ec1ed4e8147abab1322e8f0d19a1522 -https://conda.anaconda.org/conda-forge/noarch/stevedore-4.0.0-pyhd8ed1ab_0.tar.bz2#72900e7872d6551fa7f0c65faef3eedc -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.11-pyhd8ed1ab_0.tar.bz2#0738978569b10669bdef41c671252dd1 -https://conda.anaconda.org/conda-forge/noarch/dogpile.cache-1.1.8-pyhd8ed1ab_0.tar.bz2#1d53ef309576bf9bff31ea10f16912eb -https://conda.anaconda.org/conda-forge/noarch/email_validator-1.2.1-hd8ed1ab_0.tar.bz2#9ed75a3278aad184ff42cce8d54b5a48 -https://conda.anaconda.org/conda-forge/linux-64/fiona-1.8.20-py38h8228012_4.tar.bz2#9a699423aa5152d3c0117854f98659fa -https://conda.anaconda.org/conda-forge/noarch/flask-migrate-3.1.0-pyhd8ed1ab_0.tar.bz2#8764f7206bb295d9de3c17f59d34af9c -https://conda.anaconda.org/conda-forge/noarch/moz-sql-parser-4.40.21126-pyhd8ed1ab_0.tar.bz2#ae6a1bcd02f41b606fd135e040d8b93b https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r36h6115d3f_2.tar.bz2#89894bf1427eea74d7adb24bf93858dc https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.2.1-r36hcfec24a_0.tar.bz2#a68a9f91b9a47d9fd91828ab5dfc5c06 https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_3-r36hcfec24a_1004.tar.bz2#7b2420c7f6304a3c7797019540195a4a @@ -466,15 +458,14 @@ https://conda.anaconda.org/conda-forge/noarch/r-withr-2.4.2-r36hc72bb7e_0.tar.bz https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.23-r36hcfec24a_0.tar.bz2#0c1dab0b9a36afe63bcb2e4979c5fe4b https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_4-r36h6115d3f_3.tar.bz2#91bc68235baf69adc0d5c3473da4e291 https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.2.1-r36hcfec24a_1.tar.bz2#bc1fd242bea4ca615e85652f7598b271 -https://conda.anaconda.org/conda-forge/noarch/requests-2.26.0-pyhd8ed1ab_1.tar.bz2#358581cc782802270d77c454c73a811a -https://conda.anaconda.org/conda-forge/noarch/selenium-4.3.0-pyhd8ed1ab_0.tar.bz2#026ecaf90dbb1b97ab41146c34feda64 -https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.37.9-pyhd8ed1ab_1.tar.bz2#8d10003777ffbf9e9bc4eba1efdccd87 -https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.12.11-pyhd8ed1ab_0.tar.bz2#6eefee9888f33f150b5d44d616b1a613 -https://conda.anaconda.org/conda-forge/linux-64/docker-py-5.0.3-py38h578d9bd_2.tar.bz2#fc84def17a1ef65905f1c061c7743237 -https://conda.anaconda.org/conda-forge/noarch/flask-appbuilder-3.4.5-pyhd8ed1ab_0.tar.bz2#0d5a279e592b0380e62638b9f70c8ec7 -https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058 -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.9.1-pyh6c4a22f_0.tar.bz2#e2537e3d4fe2e83d22b1bc0a38e89d11 -https://conda.anaconda.org/conda-forge/noarch/keystoneauth1-5.0.0-pyhd8ed1ab_0.tar.bz2#76866869eb09fa5590be7ecb9b4a6a7a +https://conda.anaconda.org/conda-forge/linux-64/slackclient-2.5.0-py38_0.tar.bz2#9ec1ed4e8147abab1322e8f0d19a1522 +https://conda.anaconda.org/conda-forge/noarch/stevedore-4.0.0-pyhd8ed1ab_0.tar.bz2#72900e7872d6551fa7f0c65faef3eedc +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.11-pyhd8ed1ab_0.tar.bz2#0738978569b10669bdef41c671252dd1 +https://conda.anaconda.org/conda-forge/noarch/dogpile.cache-1.1.8-pyhd8ed1ab_0.tar.bz2#1d53ef309576bf9bff31ea10f16912eb +https://conda.anaconda.org/conda-forge/noarch/email_validator-1.2.1-hd8ed1ab_0.tar.bz2#9ed75a3278aad184ff42cce8d54b5a48 +https://conda.anaconda.org/conda-forge/noarch/flask-migrate-3.1.0-pyhd8ed1ab_0.tar.bz2#8764f7206bb295d9de3c17f59d34af9c +https://conda.anaconda.org/conda-forge/noarch/moz-sql-parser-4.40.21126-pyhd8ed1ab_0.tar.bz2#ae6a1bcd02f41b606fd135e040d8b93b +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.30-hd8ed1ab_0.tar.bz2#858786ed872fc7c1920eb0c23c03e97a https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.1-r36hcfec24a_2.tar.bz2#e7bf2c91fa07e3ebbcfdc85d3f30b16c https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.0.5-r36hcfec24a_0.tar.bz2#dea9a5cc90c167c5379a64c8d738ca8c https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.0.5-r36hcfec24a_0.tar.bz2#ae6d853237e9a358219a6d13d4d18451 @@ -500,14 +491,16 @@ https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.0.2-r36hc72bb7e_0.ta https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.4.0-r36h6115d3f_2.tar.bz2#2e6d27855dd00e5478bc774f1c45078c https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.31-r36hc72bb7e_0.tar.bz2#db2beb4d11b5e1e9fd712ebea3fe8d4a https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.2-r36h0357c0b_1.tar.bz2#4d1903695b7654249b201dbcef40e285 -https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.9.1-py_0.tar.bz2#402668adee8fcba9a9c265cdc2a88f5a -https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyh6c4a22f_0.tar.bz2#6537cf1d2ebe0ee7bbb64849cdb04b00 -https://conda.anaconda.org/conda-forge/linux-64/docker-compose-1.29.2-py38h578d9bd_1.tar.bz2#eda8a203662acf2ffa5bdd67c14cba06 -https://conda.anaconda.org/conda-forge/noarch/geopandas-0.11.1-pyhd8ed1ab_0.tar.bz2#22ee242115979b9762df981ccc9b1e3a -https://conda.anaconda.org/conda-forge/noarch/gsheetsdb-0.1.9-0.tar.bz2#89f3ea53a86af8aa1d387f728cab989e -https://conda.anaconda.org/conda-forge/noarch/myst-parser-0.18.0-pyhd8ed1ab_0.tar.bz2#2462c20986524fb050087a68fd97253d -https://conda.anaconda.org/conda-forge/linux-64/openstacksdk-0.100.0-py38h578d9bd_0.tar.bz2#a7c03f753590780ea9af885bb0baf194 -https://conda.anaconda.org/conda-forge/linux-64/poetry-1.1.14-py38h578d9bd_0.tar.bz2#47e4edf18c5458492a468343b1b4ce61 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a +https://conda.anaconda.org/conda-forge/noarch/selenium-4.4.0-pyhd8ed1ab_0.tar.bz2#c9778cdc90d38367644c3058a4af0d53 +https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.37.9-pyhd8ed1ab_1.tar.bz2#8d10003777ffbf9e9bc4eba1efdccd87 +https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.12.11-pyhd8ed1ab_0.tar.bz2#6eefee9888f33f150b5d44d616b1a613 +https://conda.anaconda.org/conda-forge/noarch/click-repl-0.2.0-pyhd8ed1ab_0.tar.bz2#e18a67c7a7808b74df0ded854ffe672b +https://conda.anaconda.org/conda-forge/linux-64/docker-py-5.0.3-py38h578d9bd_2.tar.bz2#fc84def17a1ef65905f1c061c7743237 +https://conda.anaconda.org/conda-forge/noarch/flask-appbuilder-4.1.3-pyhd8ed1ab_0.tar.bz2#50c616fbff5e70edfb4a137b6b5ab8a1 +https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.10.0-pyh6c4a22f_0.tar.bz2#fe04deb524df4f39425865f9e64b3f77 +https://conda.anaconda.org/conda-forge/noarch/keystoneauth1-5.0.0-pyhd8ed1ab_0.tar.bz2#76866869eb09fa5590be7ecb9b4a6a7a https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.0-r36hc72bb7e_0.tar.bz2#5603084374f5cd7c3538be4742cb4fd3 https://conda.anaconda.org/conda-forge/noarch/r-desc-1.3.0-r36hc72bb7e_0.tar.bz2#c4534164db1fe10b653aa956e23b3c91 https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_7-r36h03ef668_0.tar.bz2#a5d290d33abe726f37e7d41e114247ff @@ -524,9 +517,15 @@ https://conda.anaconda.org/conda-forge/noarch/r-scales-1.1.1-r36h6115d3f_0.tar.b https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.4_2-r36h6115d3f_1.tar.bz2#ff41f460fc62264511c82bf052e78143 https://conda.anaconda.org/conda-forge/noarch/r-snakecase-0.11.0-r36h6115d3f_2.tar.bz2#787204f9da330b53b8cd5f91f25ec816 https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.3.8-r36hcfec24a_1.tar.bz2#2dde6620da31d161937f6042df908bcb -https://conda.anaconda.org/conda-forge/noarch/superset-2.0.0-pyhd8ed1ab_0.tar.bz2#bec824c5de180f3835f55f09c8f05989 -https://conda.anaconda.org/conda-forge/linux-64/ansible-6.1.0-py38h578d9bd_0.tar.bz2#098fed46014b493c42315e6a8a243ca8 -https://conda.anaconda.org/conda-forge/noarch/inquirer-2.9.2-pyhd8ed1ab_0.tar.bz2#a22d4ce03df489f7faf1ce9853f4feb2 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.9.1-py_0.tar.bz2#402668adee8fcba9a9c265cdc2a88f5a +https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyhd8ed1ab_1.tar.bz2#cd1129e88f6278787212624e1b7a8001 +https://conda.anaconda.org/conda-forge/noarch/celery-5.2.7-pyhd8ed1ab_0.tar.bz2#52a7763bc552589e721708b5872da9b5 +https://conda.anaconda.org/conda-forge/linux-64/docker-compose-1.29.2-py38h578d9bd_1.tar.bz2#eda8a203662acf2ffa5bdd67c14cba06 +https://conda.anaconda.org/conda-forge/noarch/geopandas-0.11.1-pyhd8ed1ab_0.tar.bz2#22ee242115979b9762df981ccc9b1e3a +https://conda.anaconda.org/conda-forge/noarch/gsheetsdb-0.1.9-0.tar.bz2#89f3ea53a86af8aa1d387f728cab989e +https://conda.anaconda.org/conda-forge/noarch/myst-parser-0.18.0-pyhd8ed1ab_0.tar.bz2#2462c20986524fb050087a68fd97253d +https://conda.anaconda.org/conda-forge/linux-64/openstacksdk-0.100.0-py38h578d9bd_0.tar.bz2#a7c03f753590780ea9af885bb0baf194 +https://conda.anaconda.org/conda-forge/linux-64/poetry-1.1.14-py38h578d9bd_0.tar.bz2#47e4edf18c5458492a468343b1b4ce61 https://conda.anaconda.org/conda-forge/noarch/r-blob-1.2.1-r36h6115d3f_1.tar.bz2#ff7e59b4cc4e32db77c50b568d7ace1e https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.2.5.1-r36hc72bb7e_0.tar.bz2#10e12ab0cfbd1b4cb73f22d13bafcbf0 https://conda.anaconda.org/conda-forge/linux-64/r-gld-2.6.2-r36hcdcec82_1.tar.bz2#9f23628cd133aa8ccb2907fb35c169f3 @@ -538,6 +537,8 @@ https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.6.1-r36hc72bb7e_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/r-pkgload-1.2.1-r36h03ef668_0.tar.bz2#5ce4de8e420e8ee614a93b599c815b4a https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.8-r36hc72bb7e_0.tar.bz2#3fbb1893a8680b52f1597b3cbd415915 https://conda.anaconda.org/conda-forge/linux-64/r-tidyselect-1.1.1-r36hc72bb7e_0.tar.bz2#142e407c4afa4606485b9c78e17fabe0 +https://conda.anaconda.org/conda-forge/linux-64/ansible-6.2.0-py38h578d9bd_0.tar.bz2#84d0b62f7362e37ad7ead42860f6eb7f +https://conda.anaconda.org/conda-forge/noarch/inquirer-2.9.2-pyhd8ed1ab_0.tar.bz2#a22d4ce03df489f7faf1ce9853f4feb2 https://conda.anaconda.org/conda-forge/linux-64/r-desctools-0.99.41-r36h5ee154c_0.tar.bz2#c1d717c9428dbf425a14a927f260760a https://conda.anaconda.org/conda-forge/noarch/r-gargle-1.1.0-r36hc72bb7e_0.tar.bz2#795eff06bddcca92f68450bdafe2d957 https://conda.anaconda.org/conda-forge/linux-64/r-odbc-1.3.2-r36h03ef668_0.tar.bz2#2552af59199c9f4e5a20a2dc715946f4 @@ -546,6 +547,7 @@ https://conda.anaconda.org/conda-forge/noarch/r-reprex-2.0.0-r36hc72bb7e_0.tar.b https://conda.anaconda.org/r/noarch/r-rsocrata-1.7.9_5-r36h6115d3f_0.tar.bz2#28160000c4f031c92926d64f904c847c https://conda.anaconda.org/conda-forge/noarch/r-shiny-1.6.0-r36hc72bb7e_0.tar.bz2#3bcbfecbe075e3f6455e188181deb7df https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.1.2-r36hcfec24a_0.tar.bz2#7724e18b0a792788f22a7ceb37d86f49 +https://conda.anaconda.org/conda-forge/noarch/superset-2.0.0-pyhd8ed1ab_1.tar.bz2#1d805b8dd683c3e90f4b1b1d20a9a6a2 https://conda.anaconda.org/conda-forge/noarch/r-cellranger-1.1.0-r36h6115d3f_1003.tar.bz2#42e96bb270ff38e5b1cfe683ceec0fc5 https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.0.6-r36h03ef668_1.tar.bz2#b3fa0432e54c5bf002430aaa60020974 https://conda.anaconda.org/conda-forge/noarch/r-forcats-0.5.1-r36hc72bb7e_0.tar.bz2#52dedd5eb9453e4c8a03b6bb5f465b96 diff --git a/conda/conda-osx-64.lock b/conda/conda-osx-64.lock index 7735c762..efb9ca58 100644 --- a/conda/conda-osx-64.lock +++ b/conda/conda-osx-64.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: b62f55b48a4d5cc678432a8e71aa5a0b2cb1902ad7b0888e8df3100cf6a9fcf3 +# input_hash: 388d17e61ebe043daa338c794edf179854193f00b4086d8fea108b25b97c9263 @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.6.2-h0d85af4_0.tar.bz2#0f72a3415c40ead80c978fec230f49ee @@ -18,29 +18,28 @@ https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-hac89ed1_2.tar.bz2#60d90a3 https://conda.anaconda.org/conda-forge/osx-64/json-c-0.15-hcb556a6_0.tar.bz2#be82ba36a7d6ffa646c7c2f510727736 https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-h5eb16cf_7.tar.bz2#898a296a93b36e42a065963bb4504f2b https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.6-hce7ea42_0.tar.bz2#ac504a8074ae8add8b837a93d7bc33ca -https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.12-hac89ed1_0.tar.bz2#3e2e03ff8bcdd49315541a80e4e9023d +https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.13-h775f41a_0.tar.bz2#9751c945d288bc6cebcf91e934efd4aa https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2#79dc2be110b2a3d1e97ec21f691c50ad https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2#ccb34fb14960ad8b125962d3d79b31a9 https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-9.3.0-h6c81a4c_23.tar.bz2#d66ac79367c179bf53520066430565e8 https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.16-haf1e3a3_0.tar.bz2#c5fab167412a52e491c8e11453ae016f https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2#24632c09ed931af617fe6d5292919cab https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.7.0-h0d85af4_0.tar.bz2#d11cd97b8c35f9c803a1f45491d373a5 -https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.3-hac89ed1_2.tar.bz2#61aed82bca4746f9d201712ca10a2c07 +https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.4-h775f41a_0.tar.bz2#28807bef802a354f9c164e7ab242c5cb https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.12-hfe4f2af_2.tar.bz2#1d676bbaa2599f22121dd5bbea455c2e https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-14.0.4-ha654fa7_0.tar.bz2#5d5ab9ab83ce21422be84ecfd3142201 https://conda.anaconda.org/conda-forge/osx-64/make-4.3-h22f3db7_1.tar.bz2#ac4a1dd58e6d821c518ae0011e8592b7 https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.3-h96cf925_1.tar.bz2#76217ebfbb163ff2770a261f955a5861 -https://conda.anaconda.org/conda-forge/osx-64/pandoc-2.18-h694c41f_0.tar.bz2#42f9f041e9d250ee3bc7332b8d28e0a2 +https://conda.anaconda.org/conda-forge/osx-64/pandoc-2.19-h694c41f_0.tar.bz2#89c124401946f776ac7570c5d42390ff https://conda.anaconda.org/conda-forge/osx-64/pixman-0.40.0-hbcb3906_0.tar.bz2#09a583a6f172715be21d93aaa1b42d71 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.11-hd8ed1ab_0.tar.bz2#abc27381c4f005da588cffa1f76403ee https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2#addd19059de62181cd11ae8f4ef26084 -https://conda.anaconda.org/conda-forge/osx-64/tzcode-2022a-h5eb16cf_0.tar.bz2#44a073f556c78b2d6b726752c541fc31 -https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/osx-64/tzcode-2022b-h775f41a_0.tar.bz2#4e567ae20c38ba9fa9f002014544b915 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022b-h191b570_0.tar.bz2#48806dd9fc8893fc52aafbdc349e77e0 https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.9-h35c211d_0.tar.bz2#c5049997b2e98edfbcdd294582f66281 https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2#86ac76d6bf1cbb9621943eb3bd9ae36e -https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.5-haf1e3a3_1.tar.bz2#41116deb499e9bc58048c297d6403ce6 +https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2#a72f9d4ea13d55d745ff1ed594747f10 https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2#d7e08fcf8259d742156188e8762b4d20 -https://conda.anaconda.org/conda-forge/osx-64/abseil-cpp-20211102.0-h96cf925_1.tar.bz2#e40ba79e9308d5295c91d2f0ac2f6c25 https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.11-h0010a65_7.tar.bz2#c86bc781dc7b3ba4e6130ffb14da0d6b https://conda.anaconda.org/conda-forge/osx-64/expat-2.4.8-h96cf925_0.tar.bz2#529d357c143fb98b9af77d687f82a3e0 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 @@ -49,16 +48,21 @@ https://conda.anaconda.org/conda-forge/osx-64/gettext-0.19.8.1-hd1a6beb_1008.tar https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2#3f59cc77a929537e42120faf104e0d16 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h2e338ed_1001.tar.bz2#5f6e7f98caddd0fc2d345b207531814c +https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h0623a88_4.tar.bz2#4e0c236f082ac1864b3380b6728fcf7b https://conda.anaconda.org/conda-forge/osx-64/icu-68.2-he49afe7_0.tar.bz2#c5de93735153d0d334a6b841e763fdb2 https://conda.anaconda.org/conda-forge/osx-64/isl-0.22.1-hb1e8313_2.tar.bz2#d875acf04fcf1e4d5f3e179e0799363d https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2#f9d6a4c82889d5ecedec1d90eb673c55 +https://conda.anaconda.org/conda-forge/osx-64/libabseil-20211102.0-cxx17_hd8326b1_2.tar.bz2#bfedd4a280a0a0bb73bbc9eba5d242a5 https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-h5eb16cf_7.tar.bz2#2f53da3dfe9d14ef4666ad2558df8615 https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-h5eb16cf_7.tar.bz2#16993c3cd38b5ad4980b0934ac308ef6 https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2#6016a8a1d0e63cac3de2c352cd40208b https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-9.3.0-h6c81a4c_23.tar.bz2#a6956ceb628b14594613cefee5127a7a https://conda.anaconda.org/conda-forge/osx-64/libllvm13-13.0.1-h64f94b2_2.tar.bz2#bac1c6f12f44f40e19274e6e04e9bad5 https://conda.anaconda.org/conda-forge/osx-64/libllvm14-14.0.4-h41df66c_0.tar.bz2#fb8b5e6baa2ed5a65a4cfd992acffd04 +https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h5481273_4.tar.bz2#20f30f6e91d3bec3fc24325b9a0ff5f1 +https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-3.20.1-hfa58983_1.tar.bz2#f56f8816ba8ffc806fbb3f77839d3ec4 https://conda.anaconda.org/conda-forge/osx-64/libspatialindex-1.9.3-he49afe7_4.tar.bz2#b1c13764417c32fa87fac733caa82a64 +https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.39.2-h5a3d3bf_1.tar.bz2#bc1e00a31f0fef21929a1b9a3a9f7e8e https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.13-h0d85af4_1004.tar.bz2#eb7860935e14aec936065cbc21a1a962 https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.3-he49afe7_1.tar.bz2#05c08241b66631c00ca4f9e0b75320bc https://conda.anaconda.org/conda-forge/osx-64/nspr-4.32-hcd9eead_1.tar.bz2#8d7d6d0d86b10bd80e2096058c240a45 @@ -70,45 +74,44 @@ https://conda.anaconda.org/conda-forge/osx-64/snappy-1.1.9-h6e38e02_1.tar.bz2#ff https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2#f9ff42ccf809a21ba6f8607f8de36108 https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2#8e9480d9c47061db2ed1b4ecce519a7f https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.12-hfe4f2af_2.tar.bz2#fe7ebd3b35b8f26f6a7d0af481a21721 +https://conda.anaconda.org/conda-forge/osx-64/abseil-cpp-20211102.0-hd638f34_2.tar.bz2#70b87170a8eb02e6dfecdcf83fb3e85e https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.5.11-hd2e2f4b_0.tar.bz2#09bd616bd04399d208dc06b909a5e1c0 https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-h5eb16cf_7.tar.bz2#6ae0a8419a03d0d9675f319bef66d3aa https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.9.14-h694c41f_1.tar.bz2#bfebc1f663c38331b8d0dca32a515e95 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h3f81eb7_0.tar.bz2#6afb5b1664496c575117efe9aa2c9ba9 https://conda.anaconda.org/conda-forge/osx-64/glog-0.6.0-h8ac2a54_0.tar.bz2#69eb97ca709a136c53fdca1f2fd33ddf -https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-hefd3b78_3.tar.bz2#07bbe01a1cabdb9ec0d35524e09f4db4 https://conda.anaconda.org/conda-forge/osx-64/krb5-1.19.3-hb49756b_0.tar.bz2#e60363be26ab2a74326c06195d638447 https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp14-14.0.4-default_h55ffa42_0.tar.bz2#e26b7a841f7c4b1612b8df173bfcb2ad https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.10-h815e4d9_4.tar.bz2#adc6c89498c5f6fe5ba874d8259e7eeb https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-9_3_0_h6c81a4c_23.tar.bz2#60f48cef2d50674e0428c5579b6c3f66 https://conda.anaconda.org/conda-forge/osx-64/libglib-2.72.1-hfbcb929_0.tar.bz2#df60046c5ef9df0b5e2b2047915c934d -https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.47.0-h942079c_0.tar.bz2#86fc370e607a269b64ac6fa5d29e55e8 -https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h5a3d3bf_3.tar.bz2#bb43320880baa655d8837477fd18807b -https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-3.20.1-h2292cb8_0.tar.bz2#271ea7275ec6b91180306dcc30cce6ae +https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.47.0-h7cbc4dc_1.tar.bz2#a2bb3253049f51bc521d748451536d70 https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h0d74fd6_8.tar.bz2#97a1c29c68188c656b71e39c97d2e4ef -https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.10.0-h52ee1ee_2.tar.bz2#8c8f3804e8e252b47443cfe8e40eddf9 +https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.10.0-h7535e13_3.tar.bz2#acc1797f7b89018eeba2029c56dfdf0c https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.9.12-h93ec3fd_0.tar.bz2#3bb7e5cd72ee6520ce6e26600a1283db -https://conda.anaconda.org/conda-forge/osx-64/libzip-1.9.2-hab082e8_0.tar.bz2#b5398199964621c680de8dd0ced9cfc4 +https://conda.anaconda.org/conda-forge/osx-64/libzip-1.9.2-h3ad4413_1.tar.bz2#1f22d7bc7ffd031b0cf3a5a2d257a6bf https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-14.0.4-h41df66c_0.tar.bz2#766281931b17e3f609abec4e0bbfa282 https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h57ddcff_0.tar.bz2#e0dcb354df4ad4f79539d57e4f8ec1bd -https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.39.2-hd9f0692_0.tar.bz2#eea4504fd46050a22d482addde6ae7c7 +https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.39.2-hd9f0692_1.tar.bz2#34e7b04c8819880a496b5b18bc884176 https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-h49f0cf7_3.tar.bz2#7bef1276592e76da81806b20c2ddacd0 https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.10-h7b58acd_0.tar.bz2#846a63a046f67d5e7998c2a1608a2a30 https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.3-h379762d_3.tar.bz2#6ccb9a3fa3e1115f0a19af9a31f0131f -https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-ha9df2e0_2.tar.bz2#6e5b0ab35f8e4c407c3d2f25b51bc274 +https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-hb844be6_4.tar.bz2#d77d67cec46711b61b2cdd273689e70e https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.10.5-h35aa462_0.tar.bz2#2647690fb7719e72da8a547c2c845708 https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.1-h97e831e_3.tar.bz2#c7bcd688fb5236757648a8b85b8fb7f0 https://conda.anaconda.org/conda-forge/osx-64/boost-cpp-1.74.0-hff03dee_4.tar.bz2#7c49bc0e1d27a21ef936d27b4a849370 https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-h5eb16cf_7.tar.bz2#d3320319f06d6adb52ed01e1839475a1 https://conda.anaconda.org/conda-forge/osx-64/clang-14-14.0.4-default_h55ffa42_0.tar.bz2#bb9de1537a65d6dc6a25fb9f81f64bae -https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 +https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.94-h10f422b_0.tar.bz2#04362a8c05bc8daac6b004979029a19b https://conda.anaconda.org/conda-forge/osx-64/grpc-cpp-1.45.2-h9067f4e_3.tar.bz2#80a6fc95a163050206be367cd3505e25 https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-h1e06c2b_10.tar.bz2#7923b80d48e60eb74976654192964ee6 https://conda.anaconda.org/conda-forge/osx-64/libcurl-7.83.1-h372c54d_0.tar.bz2#393526f4c307ded911957e3723e34bed -https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.20-openmp_h4e9756f_1.tar.bz2#3822c1977aefa5d41244384aee897a82 +https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.21-openmp_h1027af7_0.tar.bz2#bce1459fa63167d22157c1b10f8ec643 https://conda.anaconda.org/conda-forge/osx-64/libpq-14.2-hea3049e_0.tar.bz2#9255136193510925442242380c3f579e https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.16.0-h9702cd6_1.tar.bz2#d5b6e66507bfaa85e35624ca745776af -https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.4.0-h4aaeabe_2.tar.bz2#c9091305aaee48b056796aaebf0b2698 +https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.4.0-h5e0c7b4_3.tar.bz2#dc8de12a82ac940edaaee12803b86c42 https://conda.anaconda.org/conda-forge/osx-64/mpc-1.2.1-hbb51d92_0.tar.bz2#9f46d6ad4c460679ee997abc10da3bac https://conda.anaconda.org/conda-forge/osx-64/nss-3.78-ha8197d3_0.tar.bz2#0927d191f392959c876b7eab924efd01 https://conda.anaconda.org/conda-forge/osx-64/orc-1.7.5-h4856350_0.tar.bz2#ad05141f778b1bc331b49ee6d6a62f72 @@ -118,7 +121,7 @@ https://conda.anaconda.org/conda-forge/noarch/anyjson-0.3.3-pyhd8ed1ab_1004.tar. https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b https://conda.anaconda.org/conda-forge/noarch/async_generator-1.10-py_0.tar.bz2#d56c596e61b1c4952acf0a9920856c12 -https://conda.anaconda.org/conda-forge/noarch/attrs-22.1.0-pyh71513ae_0.tar.bz2#b10c888ee1372e73d6d57a40d3f8e490 +https://conda.anaconda.org/conda-forge/noarch/attrs-22.1.0-pyh71513ae_1.tar.bz2#6d3ccbc56256204925bfa8378722792f https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.2.7-hb9330a7_13.tar.bz2#d7319f5973bc93e63eb1b32dbb4d03b8 https://conda.anaconda.org/conda-forge/noarch/backoff-2.1.2-pyhd8ed1ab_0.tar.bz2#d02e889937175119b88bf176221cda44 https://conda.anaconda.org/conda-forge/noarch/backports-1.0-py_2.tar.bz2#0da16b293affa6ac31812376f8eb79dd @@ -126,13 +129,13 @@ https://conda.anaconda.org/conda-forge/noarch/blinker-1.4-py_1.tar.bz2#fa509a091 https://conda.anaconda.org/conda-forge/noarch/boto-2.49.0-py_0.tar.bz2#eff2d6d409ea32c4ccd7fad21a27989b https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a https://conda.anaconda.org/conda-forge/noarch/cachelib-0.4.1-pyhd8ed1ab_0.tar.bz2#23c1f358325e034591e7b96179319ac6 -https://conda.anaconda.org/conda-forge/noarch/cachetools-5.0.0-pyhd8ed1ab_0.tar.bz2#fadf619797a005b4aacbfc3003d80545 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.2.0-pyhd8ed1ab_0.tar.bz2#c6653a1ed0c4a48ace64ab68a0bf9b27 https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-py_0.tar.bz2#808c46dc56ae4a796830129aaf1b51ec +https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82 https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h3eff9a4_10.tar.bz2#a7552b2de2f52bbf8b726d982507b1ef https://conda.anaconda.org/conda-forge/osx-64/cfitsio-4.0.0-hb20e66c_0.tar.bz2#c4a6bba037bbb254a214282a528147fe -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/osx-64/clang-14.0.4-h694c41f_0.tar.bz2#7c8851ee02c340f08b9f3d874c3b65a1 -https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/noarch/colour-0.1.5-py_0.tar.bz2#71b82c5b05fa41dbd41a2fd01b10043a https://conda.anaconda.org/conda-forge/noarch/crashtest-0.3.1-pyhd8ed1ab_0.tar.bz2#b8477552274c1cfdb533e954c76523f1 @@ -140,14 +143,12 @@ https://conda.anaconda.org/conda-forge/noarch/cron-descriptor-1.2.24-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/osx-64/curl-7.83.1-h372c54d_0.tar.bz2#751e7246045a30deda6aa999c16f6cd4 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 -https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.5-pyhd8ed1ab_0.tar.bz2#f15c3912378a07726093cc94d1e13251 https://conda.anaconda.org/conda-forge/noarch/distro-1.6.0-pyhd8ed1ab_0.tar.bz2#751b2c62ee84dba7d9e1f9d50d41fb61 https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-py_1.tar.bz2#a9ed63e45579cfef026a916af2bc27c9 https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.0.1-py_1001.tar.bz2#2ca571121f480d1c2b90782463924873 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.7.1-pyhd8ed1ab_0.tar.bz2#7556872687250e0ea038eb503da3c44b +https://conda.anaconda.org/conda-forge/noarch/filelock-3.8.0-pyhd8ed1ab_0.tar.bz2#10f0218dbd493ab2e5dc6759ddea4526 https://conda.anaconda.org/conda-forge/noarch/flit-core-3.7.1-pyhd8ed1ab_0.tar.bz2#f93822cba5c20161560661988a88f2c0 -https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.13.94-h10f422b_0.tar.bz2#04362a8c05bc8daac6b004979029a19b https://conda.anaconda.org/conda-forge/noarch/func_timeout-4.3.5-py_0.tar.bz2#668c99f4673c1c851832438636dde63e https://conda.anaconda.org/conda-forge/noarch/geographiclib-1.52-pyhd8ed1ab_0.tar.bz2#6880e7100ebae550a33ce26663316d85 https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-9.3.0-h9cc0e5e_23.tar.bz2#e906ccf40e156c6aa1e7804a1db4b849 @@ -158,14 +159,13 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b5 https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/infinity-1.5-pyhd8ed1ab_0.tar.bz2#18b1fd34f0fecda60c9f081d5d38764b https://conda.anaconda.org/conda-forge/noarch/iso8601-1.0.2-pyhd8ed1ab_0.tar.bz2#11b77b8c97ced152f8f5cd700f627117 -https://conda.anaconda.org/conda-forge/noarch/itsdangerous-1.1.0-py_0.tar.bz2#8afda875561afffed1115fd247fdd61e +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2#07d85c22a3beb102a48cd123df84c2a6 https://conda.anaconda.org/conda-forge/noarch/korean_lunar_calendar-0.2.1-pyh9f0ad1d_0.tar.bz2#62bcb1690068f169868c09e0ed3cd8bf https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b -https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-15_osx64_openblas.tar.bz2#48c26d27a96c71cfae2621311aa06215 +https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-16_osx64_openblas.tar.bz2#644d63e9379867490b67bace400b2a0f https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-h8fd9edb_1014.tar.bz2#10d981c033091fd139cb9914a495cc30 -https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.2.3-hf64df63_1.tar.bz2#6709a2e06240f9112b7185cc2c1dfa7e https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2#c104d98e09c47519950cffb8dd5b4f10 https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2#f8dab71fdc13b1bf29a01248b156d268 https://conda.anaconda.org/conda-forge/noarch/mo-future-3.147.20327-pyhd8ed1ab_0.tar.bz2#257be6bb1a9873266eba845e5eeeba49 @@ -175,25 +175,27 @@ https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.4.0-h6e7aa92_1.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/parsedatetime-2.6-pyh9f0ad1d_0.tar.bz2#32eaf2e190820f495ae92d25acf63544 https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2#a4eea5bff523f26442405bc5d1f52adb https://conda.anaconda.org/conda-forge/noarch/pgsanity-0.2.9-pyhd8ed1ab_0.tar.bz2#9028c9b055707daba005b78f11f84ab0 -https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.12.52-pyhd8ed1ab_0.tar.bz2#4ba86d4b984028a23a3c34faa49ea476 +https://conda.anaconda.org/conda-forge/noarch/phonenumbers-8.12.53-pyhd8ed1ab_0.tar.bz2#bfb2e91098d41ff2a908e2f968715417 https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.8.3-pyhd8ed1ab_0.tar.bz2#0f2d0da112ff6fd76cc3ce038d72d2c9 +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2#89e3c7cdde7d3aaa2aee933b604dd07f https://conda.anaconda.org/conda-forge/noarch/platformdirs-2.5.2-pyhd8ed1ab_1.tar.bz2#2fb3f88922e7aec26ba652fcdfe13950 https://conda.anaconda.org/conda-forge/osx-64/postgresql-14.2-he8fe76e_0.tar.bz2#a91ff62c7d45b8725c19efffea7bc1b4 https://conda.anaconda.org/conda-forge/osx-64/proj-8.2.0-h1512c50_0.tar.bz2#02cdb62960ede4d53be7fe279b93a367 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.4.8-py_0.tar.bz2#06d04c9f8f72ac77911db942eda24fb9 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.4.0-pyhd8ed1ab_0.tar.bz2#9620c5c6170db8f9570777bfb6244088 https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2#edf8651c4379d9d1495ad6229622d150 https://conda.anaconda.org/conda-forge/noarch/pymeeus-0.5.10-pyhd8ed1ab_0.tar.bz2#0b1ec35896f21c67ec11452ff10d9926 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc https://conda.anaconda.org/conda-forge/noarch/python-editor-1.0.4-py_0.tar.bz2#eaaf29a0644f9407f98a4665f45880c4 https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.8-2_cp38.tar.bz2#156803acb0247c263c9586f190b72f1c -https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.2.1-pyhd8ed1ab_0.tar.bz2#974bca71d00364630f63f31fa7e059cb https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2#7dd824593f3a861130ac17c6571546e2 -https://conda.anaconda.org/conda-forge/noarch/readchar-3.1.0-pyhd8ed1ab_0.tar.bz2#4c9f901313a2454c3499237d7d45d3a2 +https://conda.anaconda.org/conda-forge/noarch/readchar-4.0.1-pyhd8ed1ab_0.tar.bz2#1c247513cf8178f692aeafbf55b0dff1 https://conda.anaconda.org/conda-forge/noarch/requestsexceptions-1.4.0-py_0.tar.bz2#cedf3ef3827c2732e80f7c84074f3a1d https://conda.anaconda.org/conda-forge/noarch/resolvelib-0.5.4-pyhd8ed1ab_0.tar.bz2#89107e4dac516df78d53a2a729402f60 -https://conda.anaconda.org/conda-forge/noarch/shellingham-1.4.0-pyh44b312d_0.tar.bz2#437655338696f9d0dfdb0a024e66b255 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.0-pyhd8ed1ab_0.tar.bz2#65bacdee3cac51e49f45d530bbd5e90f https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d @@ -209,36 +211,34 @@ https://conda.anaconda.org/conda-forge/noarch/texttable-1.6.4-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/typing-3.10.0.0-pyhd8ed1ab_0.tar.bz2#e6573ac68718f17b9d4f5c8eda3190f2 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.10.0.2-pyha770c72_0.tar.bz2#85dfd487a244bbe2cf7019ce8a39b5bc -https://conda.anaconda.org/conda-forge/noarch/vine-1.3.0-py_0.tar.bz2#0ca5810262fa964e3902a5f89d6f7a0b +https://conda.anaconda.org/conda-forge/noarch/vine-5.0.0-pyhd8ed1ab_1.tar.bz2#7cb5b514698cfd164ad5103e58e1e201 https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2#3563be4c5611a44210d9ba0c16113136 https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.3.3-pyhd8ed1ab_0.tar.bz2#1aebd3cc43ffb4bb09646f60e03c50cd -https://conda.anaconda.org/conda-forge/noarch/werkzeug-1.0.1-pyh9f0ad1d_0.tar.bz2#a9f0ed0e6ba014c4e42543bda09e0035 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.0.3-pyhd8ed1ab_1.tar.bz2#369e03b5f96efd7942c7bc9571d6ff9c https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/xyzservices-2022.6.0-pyhd8ed1ab_0.tar.bz2#486833444c99269cf51cd23d09004f0b -https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c -https://conda.anaconda.org/conda-forge/noarch/amqp-2.6.1-pyh9f0ad1d_0.tar.bz2#7e007457befb031180f6459921be113b +https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.1-pyhd8ed1ab_0.tar.bz2#a3508a0c850745b875de88aea4c40cc5 +https://conda.anaconda.org/conda-forge/noarch/amqp-5.1.1-pyhd8ed1ab_0.tar.bz2#a59814fb9125df2a852373254c76cc08 https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.8.186-h766a74d_3.tar.bz2#0dc120b4121d7aafc66a7ddcdd23bfd9 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda https://conda.anaconda.org/conda-forge/osx-64/billiard-3.6.4.0-py38h0dd4459_2.tar.bz2#78a555a798b49486fc0f2bbe1d09074b https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.0.9-py38h038c8f4_7.tar.bz2#2cdd0880dc3725e61907733a01bfcc4f https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 -https://conda.anaconda.org/conda-forge/osx-64/cairo-1.16.0-he43a7df_1008.tar.bz2#9a7c5be2c238f69157979bd1987bac82 https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.6.15-py38h50d1736_0.tar.bz2#15c9cfd8dba4059423e558bed3a10ed9 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.1-py38h86886aa_0.tar.bz2#fe186a0e00ae437c95dac9df968bd5b4 -https://conda.anaconda.org/conda-forge/osx-64/chardet-4.0.0-py38h50d1736_3.tar.bz2#d8a1fc5986e11a9acb93374dc19f2622 +https://conda.anaconda.org/conda-forge/osx-64/chardet-5.0.0-py38h50d1736_0.tar.bz2#4744c38d972fd9369f06a825511eea5b https://conda.anaconda.org/conda-forge/osx-64/clangxx-14.0.4-default_h55ffa42_0.tar.bz2#edefb0f4aa4e6dcc7f2d5436edc9e17e -https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f -https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 +https://conda.anaconda.org/conda-forge/osx-64/click-8.1.3-py38h50d1736_0.tar.bz2#b889134c7ab7be0bd69cd879db0b9134 https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyh9f0ad1d_0.tar.bz2#159273f717a11e53b2656f8b6521a5e2 https://conda.anaconda.org/conda-forge/noarch/convertdate-2.4.0-pyhd8ed1ab_0.tar.bz2#1f0f49ac9977393b07de93002db5ad5c https://conda.anaconda.org/conda-forge/noarch/docker-pycreds-0.4.0-py_0.tar.bz2#c69f19038efee4eb534623610d0c2053 https://conda.anaconda.org/conda-forge/noarch/dockerpty-0.4.1-py_0.tar.bz2#adc1506522174ee7db12e5e25c09214f https://conda.anaconda.org/conda-forge/osx-64/docutils-0.18.1-py38h50d1736_1.tar.bz2#e822e3f052bd5216f620d618b3b6d4d7 -https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.3.0-py38hed1de0f_1.tar.bz2#fef8e479fb938d60cd6453471cc6f330 -https://conda.anaconda.org/conda-forge/osx-64/future-0.18.2-py38h50d1736_5.tar.bz2#acaea98a0d9f14580661dc67e713335b +https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.3.1-py38h35d34b1_0.tar.bz2#48c1640b9df3fa7cc62fb8ffdf7165d7 https://conda.anaconda.org/conda-forge/noarch/geopy-2.2.0-pyhd8ed1ab_0.tar.bz2#07259c829ac940ca470525a74d4b5eb1 https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.0-h9e3163f_5.tar.bz2#8b5c325b6c2ca8eee830365e5e467c39 https://conda.anaconda.org/conda-forge/noarch/h11-0.13.0-pyhd8ed1ab_1.tar.bz2#e7cf19f1afe6b3a6a4a9fa383080ebd1 +https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-3.1.1-h159f659_0.tar.bz2#78bfa25e78c846358a8f7bfd619f926f https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2#b2355343d6315c892543200231d7154a https://conda.anaconda.org/conda-forge/noarch/httplib2-0.20.4-pyhd8ed1ab_0.tar.bz2#3e95f321d7ea7811acf87c288c426095 https://conda.anaconda.org/conda-forge/osx-64/importlib-metadata-4.11.4-py38h50d1736_0.tar.bz2#0d6e3d579cdc3b3ec70bb174cf8802ba @@ -248,14 +248,14 @@ https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.32-pyhd8ed1ab_0.tar.bz2#09150b51b0528a31a0f6500b96fdde82 https://conda.anaconda.org/conda-forge/osx-64/kealib-1.4.15-h4dab1bc_0.tar.bz2#4425cd34a2591e1f7e4270eafe7f58e0 https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py38hf58141a_0.tar.bz2#ac2bc074b10eb2191698a347509d8639 -https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-15_osx64_openblas.tar.bz2#2d26f8ba1e89bcc2704ac7a38d4cc74c +https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-16_osx64_openblas.tar.bz2#28592eab0f05bcf9969789e87f754e11 https://conda.anaconda.org/conda-forge/osx-64/libdap4-3.20.6-h3e144a0_2.tar.bz2#55e0706347eb18f3616808366236bcaa -https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-15_osx64_openblas.tar.bz2#8679c41f1fcb5b54aaecce18ec3e1875 +https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-16_osx64_openblas.tar.bz2#406ad426aade5578b90544cc2ed4a79b https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.8.1-nompi_h6609ca0_102.tar.bz2#dbe48fe1abd40239cdf759037f5c8abd https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.0.1-h24415ee_12.tar.bz2#7f90f55a961c82612932c0e53b3036f7 https://conda.anaconda.org/conda-forge/osx-64/loguru-0.6.0-py38h50d1736_1.tar.bz2#786df2a40daba9e76d8bdbb39bc14e15 https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-2.1.0-pyhd8ed1ab_0.tar.bz2#d821ebc1ebe21d4cac2555278c2cd970 -https://conda.anaconda.org/conda-forge/osx-64/markupsafe-1.1.1-py38h0dd4459_4.tar.bz2#6557e3a267daa768fdd21a53791603a8 +https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.1-py38hed1de0f_1.tar.bz2#a353e85eb742fcfa2496c9f64b053354 https://conda.anaconda.org/conda-forge/noarch/mo-imports-3.149.20327-pyhd8ed1ab_0.tar.bz2#465160d635d3bc1db6d0d400b53bc0b0 https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.4-py38hf58141a_0.tar.bz2#8c39670ff6784781ba40a708662faf01 https://conda.anaconda.org/conda-forge/osx-64/multidict-6.0.2-py38hed1de0f_1.tar.bz2#a891e455d2c1014bc0781cd30322703a @@ -265,18 +265,17 @@ https://conda.anaconda.org/conda-forge/noarch/orderedmultidict-1.0.1-py_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/outcome-1.2.0-pyhd8ed1ab_0.tar.bz2#3dbb9ece72652131f12d66e889da7c0a https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2#5909e7b978141dd80d28dbf9de627827 -https://conda.anaconda.org/conda-forge/osx-64/pillow-9.2.0-py38h21af888_0.tar.bz2#04cb7ec8f94e5dd3004092ac8359e7df +https://conda.anaconda.org/conda-forge/osx-64/pillow-9.2.0-py38h0be0e1e_1.tar.bz2#3b528b3c007f8ba5853c6d9c750ec344 https://conda.anaconda.org/conda-forge/osx-64/poetry-core-1.0.8-py38h50d1736_1.tar.bz2#e3cbaea616802278a3c3e68151ca9c6b https://conda.anaconda.org/conda-forge/noarch/polyline-1.4.0-py_0.tar.bz2#baf96575fd6e20743d67e4c5c39787c4 +https://conda.anaconda.org/conda-forge/osx-64/poppler-21.11.0-h9573804_0.tar.bz2#373d35f55451ec5b087c4dddb255f41d https://conda.anaconda.org/conda-forge/noarch/prison-0.2.1-pyhd8ed1ab_0.tar.bz2#98c44171005d25481db2f826d55df237 https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.3-py38h05cbfbd_0.tar.bz2#e620b6e81af49938fbe4abffa90c89a2 https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.2.7-py_0.tar.bz2#ad1e886d09700b2304975335f714bd9c https://conda.anaconda.org/conda-forge/osx-64/pyrsistent-0.18.1-py38hed1de0f_1.tar.bz2#229c11f55782475285b8f507cad315d5 https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py38h50d1736_5.tar.bz2#b417ade9775612d9a2520b12bbab2cb0 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/noarch/python-dotenv-0.20.0-pyhd8ed1ab_0.tar.bz2#9c113379ac0729312b59b5e65906d6e6 https://conda.anaconda.org/conda-forge/osx-64/python-geohash-0.8.5-py38h038c8f4_4.tar.bz2#d18626a596882b492eb4a5742fe02ee7 -https://conda.anaconda.org/conda-forge/noarch/python3-openid-3.2.0-pyhd8ed1ab_0.tar.bz2#4bed2c2a67fa9ebac662fed6bfaf1ad0 https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0-py38hed1de0f_4.tar.bz2#827c0e27214cb208fa43fe4d6230546e https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 @@ -287,10 +286,10 @@ https://conda.anaconda.org/conda-forge/osx-64/sniffio-1.2.0-py38h50d1736_3.tar.b https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-1.3.24-py38hed1de0f_1.tar.bz2#60599b80f3e303a7ecd601516f62b5ff https://conda.anaconda.org/conda-forge/osx-64/sqloxide-0.1.15-py38hcf38349_2.tar.bz2#c5b37a0ba4310b27bdbff61c36dab1d9 https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.5.3-hca4410a_0.tar.bz2#f9d9c34a4ae4f8b188381dd35f3e23f6 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.1-pyha770c72_0.tar.bz2#3347f5e2f9c13d792ae71bcefa8a5603 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.4-pyha770c72_0.tar.bz2#c57d6a6abb22c3796add680597ee0096 https://conda.anaconda.org/conda-forge/noarch/typing-extensions-3.10.0.2-hd8ed1ab_0.tar.bz2#786c3b0de977da13146a2eaaa091ac46 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py38hed1de0f_1.tar.bz2#34183d6d0779b670415f6e48d0f4fa6d -https://conda.anaconda.org/conda-forge/osx-64/virtualenv-20.16.2-py38h50d1736_0.tar.bz2#0ce9b16bddeefa8561d86e2e7fb705a0 +https://conda.anaconda.org/conda-forge/osx-64/virtualenv-20.16.3-py38h50d1736_0.tar.bz2#de8a64e75034876148fcc282237da181 https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.14.1-py38h0dd4459_0.tar.bz2#8b8f871a42e8c3ebd60fd6ab745153c5 https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.2.0-pyhd8ed1ab_0.tar.bz2#68c9a0ab410c72abd24cbaac57703519 https://conda.anaconda.org/conda-forge/noarch/apispec-3.3.2-py_0.tar.bz2#8c953044db8dc1231a671b69d8ba6c42 @@ -301,6 +300,9 @@ https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6. https://conda.anaconda.org/conda-forge/noarch/bleach-3.3.1-pyhd8ed1ab_0.tar.bz2#41c16b233ae28fa75019842836b55254 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py38hed1de0f_1004.tar.bz2#157c0392031cd8d8c3153f92121642de https://conda.anaconda.org/conda-forge/noarch/cleo-0.8.1-pyhd8ed1ab_2.tar.bz2#4c82b11a3d06031bd58e7d869f53d965 +https://conda.anaconda.org/conda-forge/noarch/click-didyoumean-0.3.0-pyhd8ed1ab_0.tar.bz2#a49aa7bc1a82485f6a0a8849dcfefcad +https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f +https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-14.0.4-h6df654d_0.tar.bz2#39c0169a3ab059d48b033a389becdfdc https://conda.anaconda.org/conda-forge/noarch/croniter-1.3.5-pyhd8ed1ab_0.tar.bz2#d54807dd9d24152f471ab2629e39430b https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.4-py38h0f8513e_0.tar.bz2#ecb981de30cbb99043b5399039c7446b @@ -310,28 +312,29 @@ https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.34.4-py38h0dd4459_0.ta https://conda.anaconda.org/conda-forge/noarch/furl-2.1.3-pyhd8ed1ab_0.tar.bz2#0ffa727cee59a05c0142c395d89ef6a7 https://conda.anaconda.org/conda-forge/osx-64/gsl-2.6-h71c5fe9_2.tar.bz2#6468b455b2234916ebc07c2058611a3d https://conda.anaconda.org/conda-forge/osx-64/gunicorn-20.1.0-py38h50d1736_2.tar.bz2#ed3f3aa580263192b67e99113feda184 -https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-3.1.1-h159f659_0.tar.bz2#78bfa25e78c846358a8f7bfd619f926f https://conda.anaconda.org/conda-forge/noarch/holidays-0.10.3-pyh9f0ad1d_0.tar.bz2#d318ec2d915860c714c38f83927edf4a -https://conda.anaconda.org/conda-forge/noarch/humanize-4.2.3-pyhd8ed1ab_0.tar.bz2#23f37f3fd7e2d9bf76ecb20192a03d51 +https://conda.anaconda.org/conda-forge/noarch/humanize-4.3.0-pyhd8ed1ab_0.tar.bz2#40a250f93507f76fe881c02d546440bf https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.11.4-hd8ed1ab_0.tar.bz2#9a1925fdb91c81437b8012e48ede6851 -https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.7.2-pyhd8ed1ab_0.tar.bz2#8f9d5dbb36efeaebc8d567237bccf24e -https://conda.anaconda.org/conda-forge/osx-64/kombu-4.6.11-py38h32f6830_0.tar.bz2#c2a97f587367ab3532ff25179589bb96 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.9.1-pyhd8ed1ab_0.tar.bz2#8331d25cc09613d11c0bed6b68d2b833 +https://conda.anaconda.org/conda-forge/osx-64/kombu-5.2.4-py38h50d1736_1.tar.bz2#437d5c7689427668e5f043db8646ee2e +https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.4.0-h6e0c36c_9.tar.bz2#e704af70228b55eafbb148449cb77101 https://conda.anaconda.org/conda-forge/noarch/mako-1.2.1-pyhd8ed1ab_0.tar.bz2#013adf4a461ccd7ab25f9285ec882918 https://conda.anaconda.org/conda-forge/noarch/markdown-3.4.1-pyhd8ed1ab_0.tar.bz2#50d5bcf9693d8c1e7db6b1150b5c4ee5 https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.17.0-pyhd8ed1ab_0.tar.bz2#86cdc64d949e69ef328dee13b9289251 https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.3.0-pyhd8ed1ab_0.tar.bz2#adf9129f76ca651869acf2219fac2050 https://conda.anaconda.org/conda-forge/noarch/mo-dots-4.22.21108-pyhd8ed1ab_0.tar.bz2#8a96156fff6c16dd1ec4110b96b3efad https://conda.anaconda.org/conda-forge/noarch/munch-2.5.0-py_0.tar.bz2#31d9e9be500e25ff0050bc9f57a6bcd7 -https://conda.anaconda.org/conda-forge/osx-64/numpy-1.23.1-py38h604f2a5_0.tar.bz2#41bf5f397b17a1619a43756163e785c9 +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.22.1-py38h9d72dae_0.tar.bz2#ed3ef3277218c60e995937b771872104 +https://conda.anaconda.org/conda-forge/osx-64/pango-1.48.10-h056538c_2.tar.bz2#223f4846f40a8c14467bddb24f652985 https://conda.anaconda.org/conda-forge/osx-64/pendulum-2.1.2-py38hed1de0f_4.tar.bz2#aa096e9615cec1573329c8c8822a347d -https://conda.anaconda.org/conda-forge/noarch/pip-22.2.1-pyhd8ed1ab_0.tar.bz2#0cbcd1fa7291fe72dc8f848907510498 -https://conda.anaconda.org/conda-forge/osx-64/poppler-21.11.0-h9573804_0.tar.bz2#373d35f55451ec5b087c4dddb255f41d +https://conda.anaconda.org/conda-forge/noarch/pip-22.2.2-pyhd8ed1ab_0.tar.bz2#0b43abe4d3ee93e82742d37def53a836 https://conda.anaconda.org/conda-forge/osx-64/pycares-4.0.0-py38h0dd4459_1.tar.bz2#96dc4b05a24f0d6f487697fa38bcef17 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/osx-64/pynacl-1.5.0-py38hed1de0f_1.tar.bz2#0bf8396c4f77cd71284e2cafd94c2bf0 https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.3.0-py38h9fb0c80_0.tar.bz2#8e81e53aca8d77ea2f87c16f6a65d96c +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-0.20.0-pyhd8ed1ab_0.tar.bz2#9c113379ac0729312b59b5e65906d6e6 https://conda.anaconda.org/conda-forge/osx-64/trio-0.21.0-py38h50d1736_0.tar.bz2#1e91102a7512cb5094ebe9818a361376 https://conda.anaconda.org/conda-forge/osx-64/wsproto-1.1.0-py38h50d1736_1.tar.bz2#e6b3d7cbe456ee77f1e2185a18da785a https://conda.anaconda.org/conda-forge/noarch/wtforms-2.3.3-pyhd8ed1ab_0.tar.bz2#74a244400f647303ea097b321f2b3f91 @@ -344,23 +347,20 @@ https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-21.3.0-pyhd8ed1ab_0.ta https://conda.anaconda.org/conda-forge/osx-64/arrow-cpp-5.0.0-py38h430e7ab_35_cpu.tar.bz2#115cf95a44dbedacb422534586eea6e7 https://conda.anaconda.org/conda-forge/osx-64/bcrypt-3.2.2-py38h0dd4459_0.tar.bz2#12012841eae8a43d1e5c2946951882fa https://conda.anaconda.org/conda-forge/noarch/branca-0.5.0-pyhd8ed1ab_0.tar.bz2#d96c4ccb1e66b1c1f507dd12c226749a -https://conda.anaconda.org/conda-forge/noarch/celery-4.4.6-pyh9f0ad1d_0.tar.bz2#816e09ad6c800d5595d02479be6c8fba https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-14.0.4-h7fcd477_0.tar.bz2#d81ce4ea83433bea77d3977c939a6e59 https://conda.anaconda.org/conda-forge/noarch/dnspython-2.2.1-pyhd8ed1ab_0.tar.bz2#470ec3688fa9c2a4bd764ba064ef4895 -https://conda.anaconda.org/conda-forge/noarch/flask-1.1.4-pyhd8ed1ab_0.tar.bz2#63a883114dff04051d6da14614abad6c -https://conda.anaconda.org/conda-forge/osx-64/keyring-23.7.0-py38h50d1736_0.tar.bz2#5fc1b3e31309dcf31d67da1660ff70cf -https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.4.0-h6e0c36c_9.tar.bz2#e704af70228b55eafbb148449cb77101 +https://conda.anaconda.org/conda-forge/noarch/flask-2.1.3-pyhd8ed1ab_0.tar.bz2#4b95b1c750d6d737905cdb447f097b9c +https://conda.anaconda.org/conda-forge/osx-64/gdal-3.4.0-py38hf509309_9.tar.bz2#d7a09e891e7d68accda352a21d04ab5a +https://conda.anaconda.org/conda-forge/osx-64/keyring-23.8.2-py38h50d1736_0.tar.bz2#9c362aac42a431d29e38e7e4ee63b742 https://conda.anaconda.org/conda-forge/noarch/marshmallow-enum-1.5.1-pyh9f0ad1d_3.tar.bz2#67c5202bf14543cd1bb97f129d3f26dd https://conda.anaconda.org/conda-forge/noarch/marshmallow-sqlalchemy-0.26.1-pyhd8ed1ab_0.tar.bz2#ec0b788dbf26d06cb770a955c01780a2 -https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.2-py38h1b6b9d1_1.tar.bz2#afedc6d569b984289a5c2b220c042f3b +https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.3-py38h2894597_0.tar.bz2#8d5e69b6787022e25dee40a3ec1e38ef https://conda.anaconda.org/conda-forge/noarch/mo-kwargs-4.22.21108-pyhd8ed1ab_0.tar.bz2#437e7f171e2b069c644a1afb44acc53e https://conda.anaconda.org/conda-forge/osx-64/pandas-1.3.5-py38ha53d530_0.tar.bz2#a4d09a4b0d7155fd05cd76848ba2864e -https://conda.anaconda.org/conda-forge/osx-64/pango-1.48.10-h056538c_2.tar.bz2#223f4846f40a8c14467bddb24f652985 -https://conda.anaconda.org/conda-forge/noarch/pbr-5.9.0-pyhd8ed1ab_0.tar.bz2#3e7b95a8fa94cec79224506310b59b01 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-1.7.1-py_0.tar.bz2#617ab4f8c5e481fdeabe55d7a1e14798 +https://conda.anaconda.org/conda-forge/noarch/pbr-5.10.0-pyhd8ed1ab_0.tar.bz2#6cfd80f8f255415a400c5a2728087fce https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 https://conda.anaconda.org/conda-forge/noarch/redis-py-4.3.4-pyhd8ed1ab_0.tar.bz2#059c1b12ae7e390e4858bd3018894540 -https://conda.anaconda.org/conda-forge/osx-64/scipy-1.8.1-py38hb261484_2.tar.bz2#ade170b0a41ce9af15ef0017bafe5607 +https://conda.anaconda.org/conda-forge/osx-64/scipy-1.9.0-py38hb261484_0.tar.bz2#047a80ed0c95c6b0c5d8eed1cd1d1536 https://conda.anaconda.org/conda-forge/osx-64/shapely-1.8.0-py38hf12dc69_4.tar.bz2#c844ecec659a8234deef1016e2dedd79 https://conda.anaconda.org/conda-forge/noarch/trio-websocket-0.9.2-pyhd8ed1ab_0.tar.bz2#7acf3fc982eef23b24aed10e80d5dc99 https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.5-pyh9f0ad1d_2.tar.bz2#5266fcd697043c59621fda522b3d78ee @@ -368,49 +368,51 @@ https://conda.anaconda.org/conda-forge/noarch/wtforms-json-0.3.3-py_0.tar.bz2#c3 https://conda.anaconda.org/conda-forge/osx-64/blessed-1.19.1-py38h50d1736_1.tar.bz2#3b04eb0edd6b9e0a1fcbba9b0802acc4 https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-14.0.4-h3a95cd4_2.tar.bz2#a069b871f2df19703e46b0e56626c3c9 https://conda.anaconda.org/conda-forge/noarch/email-validator-1.2.1-pyhd8ed1ab_0.tar.bz2#ba8f992c4a1030e44a57e7955784b7f8 +https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.20-py38h2077077_4.tar.bz2#ba3007c682fa5ce3b458976cfe78e9b0 https://conda.anaconda.org/conda-forge/noarch/flask-babel-2.0.0-pyh9f0ad1d_0.tar.bz2#c6a2186ba633de0a6bec774210f1bf38 -https://conda.anaconda.org/conda-forge/noarch/flask-caching-1.11.1-pyhd8ed1ab_0.tar.bz2#ea15fba238bb083b21e83f1857086480 +https://conda.anaconda.org/conda-forge/noarch/flask-caching-1.10.1-pyhd8ed1ab_0.tar.bz2#b711284e4fb54851a9040c8c6c9f19c1 https://conda.anaconda.org/conda-forge/noarch/flask-compress-1.12-pyhd8ed1ab_0.tar.bz2#c3da321f6321a1b9ec992ece2422000b -https://conda.anaconda.org/conda-forge/noarch/flask-jwt-extended-3.25.1-pyhd8ed1ab_0.tar.bz2#b77dfd818e1224c969a71af4bdd2dbe4 -https://conda.anaconda.org/conda-forge/noarch/flask-login-0.4.1-py_0.tar.bz2#c6829f3a2de7981a44f0a661a3f8a2c5 +https://conda.anaconda.org/conda-forge/noarch/flask-jwt-extended-4.4.4-pyhd8ed1ab_0.tar.bz2#8b821d6d19bd8168d4eceeef0df0bb63 +https://conda.anaconda.org/conda-forge/noarch/flask-login-0.6.2-pyhd8ed1ab_0.tar.bz2#427457b9179d5f1d65b11ca7761e60ee https://conda.anaconda.org/conda-forge/noarch/flask-mail-0.9.1-py_2.tar.bz2#083af8cde25430f3e489d2571c523604 -https://conda.anaconda.org/conda-forge/noarch/flask-openid-1.3.0-pyhd8ed1ab_0.tar.bz2#b537163b272bcaef3c03b2ed43db6352 https://conda.anaconda.org/conda-forge/noarch/flask-sqlalchemy-2.5.1-pyhd8ed1ab_0.tar.bz2#8b7ac14ba322af98dde494364bef9e23 https://conda.anaconda.org/conda-forge/noarch/flask-talisman-0.7.0-py_0.tar.bz2#66c139924f540926e26a971c0f139a6b -https://conda.anaconda.org/conda-forge/noarch/flask-wtf-0.14.3-py_0.tar.bz2#cda9543789d25ae35ac265b906af4e63 -https://conda.anaconda.org/conda-forge/osx-64/gdal-3.4.0-py38hf509309_9.tar.bz2#d7a09e891e7d68accda352a21d04ab5a +https://conda.anaconda.org/conda-forge/noarch/flask-wtf-0.15.1-pyhd8ed1ab_0.tar.bz2#343c46424510e6627a0c8a9a6587e6e5 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.11.1-pyha770c72_0.tar.bz2#5926cac706ea9c090e8cc72cd80dee83 https://conda.anaconda.org/conda-forge/noarch/mo-logs-4.23.21108-pyhd8ed1ab_0.tar.bz2#49851304d72efbe992d6f1225ed2470b https://conda.anaconda.org/conda-forge/noarch/os-service-types-1.7.0-pyh9f0ad1d_0.tar.bz2#4f270f68fdcd3c23a5a769afd9969499 https://conda.anaconda.org/conda-forge/noarch/paramiko-2.11.0-pyhd8ed1ab_0.tar.bz2#74a35060bbae98fbf7cfeaba2336152f https://conda.anaconda.org/conda-forge/noarch/parquet-cpp-1.5.1-2.tar.bz2#79a5f78c42817594ae016a7896521a97 https://conda.anaconda.org/conda-forge/noarch/passlib-1.7.4-pyh9f0ad1d_0.tar.bz2#6a5c798488ee4f274ae8cb1ec1e57ce1 -https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.1.1-py38h4ade575_0.tar.bz2#4dd768bf6f535465b35fa09585a99ca9 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.30-pyha770c72_0.tar.bz2#f5f08dc71d7e24572b131d5fb0ad1ebc +https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.1.2-py38h27a3d75_0.tar.bz2#93e5c149000d384cb95731717804571a https://conda.anaconda.org/conda-forge/osx-64/slackclient-2.5.0-py38_0.tar.bz2#ecfd23b034d92c5dde845831689fc268 https://conda.anaconda.org/conda-forge/noarch/stevedore-4.0.0-pyhd8ed1ab_0.tar.bz2#72900e7872d6551fa7f0c65faef3eedc https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.11-pyhd8ed1ab_0.tar.bz2#0738978569b10669bdef41c671252dd1 https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-14.0.4-he1dbc44_2.tar.bz2#a82006ea176018f37f7c34c3c3d08630 https://conda.anaconda.org/conda-forge/noarch/dogpile.cache-1.1.8-pyhd8ed1ab_0.tar.bz2#1d53ef309576bf9bff31ea10f16912eb https://conda.anaconda.org/conda-forge/noarch/email_validator-1.2.1-hd8ed1ab_0.tar.bz2#9ed75a3278aad184ff42cce8d54b5a48 -https://conda.anaconda.org/conda-forge/osx-64/fiona-1.8.20-py38h2077077_4.tar.bz2#ba3007c682fa5ce3b458976cfe78e9b0 https://conda.anaconda.org/conda-forge/noarch/flask-migrate-3.1.0-pyhd8ed1ab_0.tar.bz2#8764f7206bb295d9de3c17f59d34af9c https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-9.3.0-h18f7dce_15.tar.bz2#48f985e599ff223cd8acea3595d2cbe5 https://conda.anaconda.org/conda-forge/osx-64/lightgbm-3.3.2-py38hffa2396_0.tar.bz2#045522678020fcb48f1a45fdda50aa4c https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.4.3-pyhd8ed1ab_0.tar.bz2#908bbfb54da154042c5cbda77b37a3d1 https://conda.anaconda.org/conda-forge/noarch/moz-sql-parser-4.40.21126-pyhd8ed1ab_0.tar.bz2#ae6a1bcd02f41b606fd135e040d8b93b +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.30-hd8ed1ab_0.tar.bz2#858786ed872fc7c1920eb0c23c03e97a https://conda.anaconda.org/conda-forge/osx-64/pyarrow-5.0.0-py38h83ad6b9_35_cpu.tar.bz2#8aa71351545efae8f2a1bb2c2e6b1bde -https://conda.anaconda.org/conda-forge/noarch/requests-2.26.0-pyhd8ed1ab_1.tar.bz2#358581cc782802270d77c454c73a811a -https://conda.anaconda.org/conda-forge/noarch/selenium-4.3.0-pyhd8ed1ab_0.tar.bz2#026ecaf90dbb1b97ab41146c34feda64 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a +https://conda.anaconda.org/conda-forge/noarch/selenium-4.4.0-pyhd8ed1ab_0.tar.bz2#c9778cdc90d38367644c3058a4af0d53 https://conda.anaconda.org/conda-forge/noarch/sqlalchemy-utils-0.37.9-pyhd8ed1ab_1.tar.bz2#8d10003777ffbf9e9bc4eba1efdccd87 https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.12.11-pyhd8ed1ab_0.tar.bz2#6eefee9888f33f150b5d44d616b1a613 +https://conda.anaconda.org/conda-forge/noarch/click-repl-0.2.0-pyhd8ed1ab_0.tar.bz2#e18a67c7a7808b74df0ded854ffe672b https://conda.anaconda.org/conda-forge/osx-64/docker-py-5.0.3-py38h50d1736_2.tar.bz2#ce00d0931086aee63cbd8eb8c2628b8f -https://conda.anaconda.org/conda-forge/noarch/flask-appbuilder-3.4.5-pyhd8ed1ab_0.tar.bz2#0d5a279e592b0380e62638b9f70c8ec7 +https://conda.anaconda.org/conda-forge/noarch/flask-appbuilder-4.1.3-pyhd8ed1ab_0.tar.bz2#50c616fbff5e70edfb4a137b6b5ab8a1 https://conda.anaconda.org/conda-forge/noarch/folium-0.12.1.post1-pyhd8ed1ab_1.tar.bz2#44912901b45260e4338447b9d46f7058 -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.9.1-pyh6c4a22f_0.tar.bz2#e2537e3d4fe2e83d22b1bc0a38e89d11 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.10.0-pyh6c4a22f_0.tar.bz2#fe04deb524df4f39425865f9e64b3f77 https://conda.anaconda.org/conda-forge/noarch/keystoneauth1-5.0.0-pyhd8ed1ab_0.tar.bz2#76866869eb09fa5590be7ecb9b4a6a7a https://conda.anaconda.org/conda-forge/osx-64/r-base-3.6.3-h9d5097c_8.tar.bz2#6a13add8d7fdd4e2fec6e9bb23488600 https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.9.1-py_0.tar.bz2#402668adee8fcba9a9c265cdc2a88f5a -https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyh6c4a22f_0.tar.bz2#6537cf1d2ebe0ee7bbb64849cdb04b00 +https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyhd8ed1ab_1.tar.bz2#cd1129e88f6278787212624e1b7a8001 +https://conda.anaconda.org/conda-forge/noarch/celery-5.2.7-pyhd8ed1ab_0.tar.bz2#52a7763bc552589e721708b5872da9b5 https://conda.anaconda.org/conda-forge/osx-64/docker-compose-1.29.2-py38h50d1736_1.tar.bz2#07499fab013f89d26547bd9cf3a6e456 https://conda.anaconda.org/conda-forge/noarch/geopandas-0.11.1-pyhd8ed1ab_0.tar.bz2#22ee242115979b9762df981ccc9b1e3a https://conda.anaconda.org/conda-forge/noarch/gsheetsdb-0.1.9-0.tar.bz2#89f3ea53a86af8aa1d387f728cab989e @@ -471,8 +473,7 @@ https://conda.anaconda.org/conda-forge/noarch/r-withr-2.4.2-r36hc72bb7e_0.tar.bz https://conda.anaconda.org/conda-forge/osx-64/r-xfun-0.23-r36h28b5c78_0.tar.bz2#cd90dcb722026bca9f092b313704daea https://conda.anaconda.org/conda-forge/noarch/r-xtable-1.8_4-r36h6115d3f_3.tar.bz2#91bc68235baf69adc0d5c3473da4e291 https://conda.anaconda.org/conda-forge/osx-64/r-yaml-2.2.1-r36h066c5db_1.tar.bz2#04d6dbb7f880d22a0aa902524802c1b4 -https://conda.anaconda.org/conda-forge/noarch/superset-2.0.0-pyhd8ed1ab_0.tar.bz2#bec824c5de180f3835f55f09c8f05989 -https://conda.anaconda.org/conda-forge/osx-64/ansible-6.1.0-py38h50d1736_0.tar.bz2#45c68bdf6c50de7f201652ff16b3d567 +https://conda.anaconda.org/conda-forge/osx-64/ansible-6.2.0-py38h50d1736_0.tar.bz2#1dbc4b9f7920232e2a73bb5801cd7b46 https://conda.anaconda.org/conda-forge/noarch/inquirer-2.9.2-pyhd8ed1ab_0.tar.bz2#a22d4ce03df489f7faf1ce9853f4feb2 https://conda.anaconda.org/conda-forge/osx-64/r-askpass-1.1-r36h28b5c78_2.tar.bz2#ae2961263c6f578ed5ee7a89cfd64989 https://conda.anaconda.org/conda-forge/osx-64/r-bit64-4.0.5-r36h28b5c78_0.tar.bz2#208ce5d12db21f2769172f9bfb4c9e1d @@ -499,6 +500,7 @@ https://conda.anaconda.org/conda-forge/noarch/r-rprojroot-2.0.2-r36hc72bb7e_0.ta https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.4.0-r36h6115d3f_2.tar.bz2#2e6d27855dd00e5478bc774f1c45078c https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.31-r36hc72bb7e_0.tar.bz2#db2beb4d11b5e1e9fd712ebea3fe8d4a https://conda.anaconda.org/conda-forge/osx-64/r-xml2-1.3.2-r36hc5da6b9_1.tar.bz2#83cd362699122a4c79c004d7a531436c +https://conda.anaconda.org/conda-forge/noarch/superset-2.0.0-pyhd8ed1ab_1.tar.bz2#1d805b8dd683c3e90f4b1b1d20a9a6a2 https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.0-r36hc72bb7e_0.tar.bz2#5603084374f5cd7c3538be4742cb4fd3 https://conda.anaconda.org/conda-forge/noarch/r-desc-1.3.0-r36hc72bb7e_0.tar.bz2#c4534164db1fe10b653aa956e23b3c91 https://conda.anaconda.org/conda-forge/osx-64/r-e1071-1.7_7-r36h9951f98_0.tar.bz2#d720809f428195574b13682f440c044e diff --git a/conda/prod.yaml b/conda/prod.yaml index 316135c9..575ec100 100644 --- a/conda/prod.yaml +++ b/conda/prod.yaml @@ -9,7 +9,6 @@ dependencies: - gsheetsdb - inquirer - flask-mail - - flask >=1.1.0,<2.0.0 - lightgbm - loguru - myst-parser @@ -32,8 +31,6 @@ dependencies: - sphinx - pip - docker-compose - # TypeError: entry_points() got an unexpected keyword argument 'group' - # - markdown 3.3.4 # R - r-base 3.6.* - r-tidyverse diff --git a/docker/airflow/Dockerfile b/docker/airflow/Dockerfile new file mode 100644 index 00000000..872c3618 --- /dev/null +++ b/docker/airflow/Dockerfile @@ -0,0 +1,60 @@ +FROM epigraphhub/superset:latest + +ENV AIRFLOW_HOME=/opt/airflow +ENV ENV_NAME=epigraphhub +ENV DEBIAN_FRONTEND=noninteractive + +# ref: https://stackoverflow.com/questions/44331836/apt-get-install-tzdata-noninteractive +RUN sudo ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime + +# ref: https://hub.docker.com/r/apache/airflow/dockerfile +RUN sudo apt-get update -y \ + && sudo apt-get install -y --no-install-recommends \ + apt-transport-https \ + apt-utils \ + build-essential \ + ca-certificates \ + gnupg \ + dirmngr \ + freetds-bin \ + freetds-dev \ + gosu \ + ldap-utils \ + libffi-dev \ + libpq-dev \ + libsasl2-2 \ + libsasl2-dev \ + libsasl2-modules \ + libssl-dev \ + locales \ + lsb-release \ + nodejs \ + openssh-client \ + postgresql-client \ + sasl2-bin \ + software-properties-common \ + sqlite3 \ + sudo \ + unixodbc \ + unixodbc-dev \ + yarn \ + && sudo rm -rf /var/lib/apt/lists/* \ + /var/cache/apt/archives \ + /tmp/* + +COPY ./conda/airflow.yaml /tmp/airflow.yaml +COPY ./conda/pip.txt /tmp/pip.txt +RUN mamba env create -n ${ENV_NAME} --file /tmp/airflow.yaml --force + +RUN sudo mkdir -p /opt/scripts /sources /opt/airflow \ + && sudo chown -R epigraphhub:epigraphhub /opt/scripts \ + && sudo chown -R epigraphhub:epigraphhub /sources \ + && sudo chown -R epigraphhub:epigraphhub /opt/airflow + +COPY --chown=epigraphhub ./docker/airflow/airflow.cfg /opt/airflow/airflow.cfg +COPY --chown=epigraphhub ./docker/airflow/scripts/*.sh /opt/scripts/ +COPY --chown=epigraphhub ./docker/airflow/scripts/entrypoint.sh /opt/entrypoint.sh +COPY --chown=epigraphhub ./docker/airflow/scripts/webserver_config.py /opt/airflow/webserver_config.py + +ENTRYPOINT [ "/opt/entrypoint.sh" ] +CMD /opt/scripts/startup.sh diff --git a/docker/airflow/airflow.cfg b/docker/airflow/airflow.cfg new file mode 100644 index 00000000..487d356e --- /dev/null +++ b/docker/airflow/airflow.cfg @@ -0,0 +1,1234 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + + +# This is the template for Airflow's default configuration. When Airflow is +# imported, it looks for a configuration file at $AIRFLOW_HOME/airflow.cfg. If +# it doesn't exist, Airflow uses this template to generate it by replacing +# variables in curly braces with their global values from configuration.py. + +# Users should not modify this file; they should customize the generated +# airflow.cfg instead. + + +# ----------------------- TEMPLATE BEGINS HERE ----------------------- + +[core] +# The folder where your airflow pipelines live, most likely a +# subfolder in a code repository. This path must be absolute. +dags_folder = /opt/airflow/dags + +# Hostname by providing a path to a callable, which will resolve the hostname. +# The format is "package.function". +# +# For example, default value "socket.getfqdn" means that result from getfqdn() of "socket" +# package will be used as hostname. +# +# No argument should be required in the function specified. +# If using IP address as hostname is preferred, use value ``airflow.utils.net.get_host_ip_address`` +hostname_callable = socket.getfqdn + +# Default timezone in case supplied date times are naive +# can be utc (default), system, or any IANA timezone string (e.g. Europe/Amsterdam) +default_timezone = utc + +# The executor class that airflow should use. Choices include +# ``SequentialExecutor``, ``LocalExecutor``, ``CeleryExecutor``, ``DaskExecutor``, +# ``KubernetesExecutor``, ``CeleryKubernetesExecutor`` or the +# full import path to the class when using a custom executor. +executor = LocalExecutor + +# This defines the maximum number of task instances that can run concurrently per scheduler in +# Airflow, regardless of the worker count. Generally this value, multiplied by the number of +# schedulers in your cluster, is the maximum number of task instances with the running +# state in the metadata database. +parallelism = 32 + +# The maximum number of task instances allowed to run concurrently in each DAG. To calculate +# the number of tasks that is running concurrently for a DAG, add up the number of running +# tasks for all DAG runs of the DAG. This is configurable at the DAG level with ``max_active_tasks``, +# which is defaulted as ``max_active_tasks_per_dag``. +# +# An example scenario when this would be useful is when you want to stop a new dag with an early +# start date from stealing all the executor slots in a cluster. +max_active_tasks_per_dag = 16 + +# Are DAGs paused by default at creation +dags_are_paused_at_creation = True + +# The maximum number of active DAG runs per DAG. The scheduler will not create more DAG runs +# if it reaches the limit. This is configurable at the DAG level with ``max_active_runs``, +# which is defaulted as ``max_active_runs_per_dag``. +max_active_runs_per_dag = 16 + +# Whether to load the DAG examples that ship with Airflow. It's good to +# get started, but you probably want to set this to ``False`` in a production +# environment +load_examples = False + +# Path to the folder containing Airflow plugins +plugins_folder = /opt/airflow/plugins + +# Should tasks be executed via forking of the parent process ("False", +# the speedier option) or by spawning a new python process ("True" slow, +# but means plugin changes picked up by tasks straight away) +execute_tasks_new_python_interpreter = False + +# Secret key to save connection passwords in the db +# fernet_key = + +# Whether to disable pickling dags +donot_pickle = True + +# How long before timing out a python file import +dagbag_import_timeout = 30.0 + +# Should a traceback be shown in the UI for dagbag import errors, +# instead of just the exception message +dagbag_import_error_tracebacks = True + +# If tracebacks are shown, how many entries from the traceback should be shown +dagbag_import_error_traceback_depth = 2 + +# How long before timing out a DagFileProcessor, which processes a dag file +dag_file_processor_timeout = 50 + +# The class to use for running task instances in a subprocess. +# Choices include StandardTaskRunner, CgroupTaskRunner or the full import path to the class +# when using a custom task runner. +task_runner = StandardTaskRunner + +# If set, tasks without a ``run_as_user`` argument will be run with this user +# Can be used to de-elevate a sudo user running Airflow when executing tasks +default_impersonation = + +# What security module to use (for example kerberos) +security = + +# Turn unit test mode on (overwrites many configuration options with test +# values at runtime) +unit_test_mode = False + +# Whether to enable pickling for xcom (note that this is insecure and allows for +# RCE exploits). +enable_xcom_pickling = False + +# When a task is killed forcefully, this is the amount of time in seconds that +# it has to cleanup after it is sent a SIGTERM, before it is SIGKILLED +killed_task_cleanup_time = 60 + +# Whether to override params with dag_run.conf. If you pass some key-value pairs +# through ``airflow dags backfill -c`` or +# ``airflow dags trigger -c``, the key-value pairs will override the existing ones in params. +dag_run_conf_overrides_params = True + +# When discovering DAGs, ignore any files that don't contain the strings ``DAG`` and ``airflow``. +dag_discovery_safe_mode = True + +# The pattern syntax used in the ".airflowignore" files in the DAG directories. Valid values are +# ``regexp`` or ``glob``. +dag_ignore_file_syntax = regexp + +# The number of retries each task is going to have by default. Can be overridden at dag or task level. +default_task_retries = 0 + +# The weighting method used for the effective total priority weight of the task +default_task_weight_rule = downstream + +# The default task execution_timeout value for the operators. Expected an integer value to +# be passed into timedelta as seconds. If not specified, then the value is considered as None, +# meaning that the operators are never timed out by default. +default_task_execution_timeout = + +# Updating serialized DAG can not be faster than a minimum interval to reduce database write rate. +min_serialized_dag_update_interval = 30 + +# If True, serialized DAGs are compressed before writing to DB. +# Note: this will disable the DAG dependencies view +compress_serialized_dags = False + +# Fetching serialized DAG can not be faster than a minimum interval to reduce database +# read rate. This config controls when your DAGs are updated in the Webserver +min_serialized_dag_fetch_interval = 10 + +# Maximum number of Rendered Task Instance Fields (Template Fields) per task to store +# in the Database. +# All the template_fields for each of Task Instance are stored in the Database. +# Keeping this number small may cause an error when you try to view ``Rendered`` tab in +# TaskInstance view for older tasks. +max_num_rendered_ti_fields_per_task = 30 + +# On each dagrun check against defined SLAs +check_slas = True + +# Path to custom XCom class that will be used to store and resolve operators results +# Example: xcom_backend = path.to.CustomXCom +xcom_backend = airflow.models.xcom.BaseXCom + +# By default Airflow plugins are lazily-loaded (only loaded when required). Set it to ``False``, +# if you want to load plugins whenever 'airflow' is invoked via cli or loaded from module. +lazy_load_plugins = True + +# By default Airflow providers are lazily-discovered (discovery and imports happen only when required). +# Set it to False, if you want to discover providers whenever 'airflow' is invoked via cli or +# loaded from module. +lazy_discover_providers = True + +# Hide sensitive Variables or Connection extra json keys from UI and task logs when set to True +# +# (Connection passwords are always hidden in logs) +hide_sensitive_var_conn_fields = True + +# A comma-separated list of extra sensitive keywords to look for in variables names or connection's +# extra JSON. +sensitive_var_conn_names = + +# Task Slot counts for ``default_pool``. This setting would not have any effect in an existing +# deployment where the ``default_pool`` is already created. For existing deployments, users can +# change the number of slots using Webserver, API or the CLI +default_pool_task_slot_count = 128 + +# The maximum list/dict length an XCom can push to trigger task mapping. If the pushed list/dict has a +# length exceeding this value, the task pushing the XCom will be failed automatically to prevent the +# mapped tasks from clogging the scheduler. +max_map_length = 1024 + +[database] +# The SqlAlchemy connection string to the metadata database. +# SqlAlchemy supports many different database engines. +# More information here: +# http://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html#database-uri +# sql_alchemy_conn = sqlite:////opt/airflow/airflow.db + +# Extra engine specific keyword args passed to SQLAlchemy's create_engine, as a JSON-encoded value +# Example: sql_alchemy_engine_args = {{"arg1": True}} +# sql_alchemy_engine_args = + +# The encoding for the databases +sql_engine_encoding = utf-8 + +# Collation for ``dag_id``, ``task_id``, ``key`` columns in case they have different encoding. +# By default this collation is the same as the database collation, however for ``mysql`` and ``mariadb`` +# the default is ``utf8mb3_bin`` so that the index sizes of our index keys will not exceed +# the maximum size of allowed index when collation is set to ``utf8mb4`` variant +# (see https://github.com/apache/airflow/pull/17603#issuecomment-901121618). +# sql_engine_collation_for_ids = + +# If SqlAlchemy should pool database connections. +sql_alchemy_pool_enabled = True + +# The SqlAlchemy pool size is the maximum number of database connections +# in the pool. 0 indicates no limit. +sql_alchemy_pool_size = 5 + +# The maximum overflow size of the pool. +# When the number of checked-out connections reaches the size set in pool_size, +# additional connections will be returned up to this limit. +# When those additional connections are returned to the pool, they are disconnected and discarded. +# It follows then that the total number of simultaneous connections the pool will allow +# is pool_size + max_overflow, +# and the total number of "sleeping" connections the pool will allow is pool_size. +# max_overflow can be set to ``-1`` to indicate no overflow limit; +# no limit will be placed on the total number of concurrent connections. Defaults to ``10``. +sql_alchemy_max_overflow = 10 + +# The SqlAlchemy pool recycle is the number of seconds a connection +# can be idle in the pool before it is invalidated. This config does +# not apply to sqlite. If the number of DB connections is ever exceeded, +# a lower config value will allow the system to recover faster. +sql_alchemy_pool_recycle = 1800 + +# Check connection at the start of each connection pool checkout. +# Typically, this is a simple statement like "SELECT 1". +# More information here: +# https://docs.sqlalchemy.org/en/14/core/pooling.html#disconnect-handling-pessimistic +sql_alchemy_pool_pre_ping = True + +# The schema to use for the metadata database. +# SqlAlchemy supports databases with the concept of multiple schemas. +sql_alchemy_schema = + +# Import path for connect args in SqlAlchemy. Defaults to an empty dict. +# This is useful when you want to configure db engine args that SqlAlchemy won't parse +# in connection string. +# See https://docs.sqlalchemy.org/en/14/core/engines.html#sqlalchemy.create_engine.params.connect_args +# sql_alchemy_connect_args = + +# Whether to load the default connections that ship with Airflow. It's good to +# get started, but you probably want to set this to ``False`` in a production +# environment +load_default_connections = True + +# Number of times the code should be retried in case of DB Operational Errors. +# Not all transactions will be retried as it can cause undesired state. +# Currently it is only used in ``DagFileProcessor.process_file`` to retry ``dagbag.sync_to_db``. +max_db_retries = 3 + +[logging] +# The folder where airflow should store its log files. +# This path must be absolute. +# There are a few existing configurations that assume this is set to the default. +# If you choose to override this you may need to update the dag_processor_manager_log_location and +# dag_processor_manager_log_location settings as well. +base_log_folder = /opt/airflow/logs + +# Airflow can store logs remotely in AWS S3, Google Cloud Storage or Elastic Search. +# Set this to True if you want to enable remote logging. +remote_logging = False + +# Users must supply an Airflow connection id that provides access to the storage +# location. Depending on your remote logging service, this may only be used for +# reading logs, not writing them. +remote_log_conn_id = + +# Path to Google Credential JSON file. If omitted, authorization based on `the Application Default +# Credentials +# `__ will +# be used. +google_key_path = + +# Storage bucket URL for remote logging +# S3 buckets should start with "s3://" +# Cloudwatch log groups should start with "cloudwatch://" +# GCS buckets should start with "gs://" +# WASB buckets should start with "wasb" just to help Airflow select correct handler +# Stackdriver logs should start with "stackdriver://" +remote_base_log_folder = + +# Use server-side encryption for logs stored in S3 +encrypt_s3_logs = False + +# Logging level. +# +# Supported values: ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``. +logging_level = DEBUG + +# Logging level for celery. If not set, it uses the value of logging_level +# +# Supported values: ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``. +celery_logging_level = + +# Logging level for Flask-appbuilder UI. +# +# Supported values: ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG``. +fab_logging_level = WARNING + +# Logging class +# Specify the class that will specify the logging configuration +# This class has to be on the python classpath +# Example: logging_config_class = my.path.default_local_settings.LOGGING_CONFIG +logging_config_class = + +# Flag to enable/disable Colored logs in Console +# Colour the logs when the controlling terminal is a TTY. +colored_console_log = True + +# Log format for when Colored logs is enabled +colored_log_format = [%%(blue)s%%(asctime)s%%(reset)s] {{%%(blue)s%%(filename)s:%%(reset)s%%(lineno)d}} %%(log_color)s%%(levelname)s%%(reset)s - %%(log_color)s%%(message)s%%(reset)s +colored_formatter_class = airflow.utils.log.colored_log.CustomTTYColoredFormatter + +# Format of Log line +log_format = [%%(asctime)s] {{%%(filename)s:%%(lineno)d}} %%(levelname)s - %%(message)s +simple_log_format = %%(asctime)s %%(levelname)s - %%(message)s + +# Specify prefix pattern like mentioned below with stream handler TaskHandlerWithCustomFormatter +# Example: task_log_prefix_template = {{ti.dag_id}}-{{ti.task_id}}-{{execution_date}}-{{try_number}} +task_log_prefix_template = + +# Formatting for how airflow generates file names/paths for each task run. +# log_filename_template = dag_id={{{{ ti.dag_id }}}}/run_id={{{{ ti.run_id }}}}/task_id={{{{ ti.task_id }}}}/{{%% if ti.map_index >= 0 %%}}map_index={{{{ ti.map_index }}}}/{{%% endif %%}}attempt={{{{ try_number }}}}.log + +# Formatting for how airflow generates file names for log +# log_processor_filename_template = {{{{ filename }}}}.log + +# Full path of dag_processor_manager logfile. +dag_processor_manager_log_location = /opt/airflow/logs/dag_processor_manager/dag_processor_manager.log + +# Name of handler to read task instance logs. +# Defaults to use ``task`` handler. +task_log_reader = task + +# A comma\-separated list of third-party logger names that will be configured to print messages to +# consoles\. +# Example: extra_logger_names = connexion,sqlalchemy +extra_logger_names = + +# When you start an airflow worker, airflow starts a tiny web server +# subprocess to serve the workers local log files to the airflow main +# web server, who then builds pages and sends them to users. This defines +# the port on which the logs are served. It needs to be unused, and open +# visible from the main web server to connect into the workers. +worker_log_server_port = 8793 + +[metrics] + +# StatsD (https://github.com/etsy/statsd) integration settings. +# Enables sending metrics to StatsD. +statsd_on = False +statsd_host = localhost +statsd_port = 8125 +statsd_prefix = airflow + +# If you want to avoid sending all the available metrics to StatsD, +# you can configure an allow list of prefixes (comma separated) to send only the metrics that +# start with the elements of the list (e.g: "scheduler,executor,dagrun") +statsd_allow_list = + +# A function that validate the StatsD stat name, apply changes to the stat name if necessary and return +# the transformed stat name. +# +# The function should have the following signature: +# def func_name(stat_name: str) -> str: +stat_name_handler = + +# To enable datadog integration to send airflow metrics. +statsd_datadog_enabled = False + +# List of datadog tags attached to all metrics(e.g: key1:value1,key2:value2) +statsd_datadog_tags = + +# If you want to utilise your own custom StatsD client set the relevant +# module path below. +# Note: The module path must exist on your PYTHONPATH for Airflow to pick it up +# statsd_custom_client_path = + +[secrets] +# Full class name of secrets backend to enable (will precede env vars and metastore in search path) +# Example: backend = airflow.providers.amazon.aws.secrets.systems_manager.SystemsManagerParameterStoreBackend +backend = + +# The backend_kwargs param is loaded into a dictionary and passed to __init__ of secrets backend class. +# See documentation for the secrets backend you are using. JSON is expected. +# Example for AWS Systems Manager ParameterStore: +# ``{{"connections_prefix": "/airflow/connections", "profile_name": "default"}}`` +backend_kwargs = + +[cli] +# In what way should the cli access the API. The LocalClient will use the +# database directly, while the json_client will use the api running on the +# webserver +api_client = airflow.api.client.local_client + +# If you set web_server_url_prefix, do NOT forget to append it here, ex: +# ``endpoint_url = http://localhost:8080/myroot`` +# So api will look like: ``http://localhost:8080/myroot/api/experimental/...`` +endpoint_url = http://localhost:8080 + +[debug] +# Used only with ``DebugExecutor``. If set to ``True`` DAG will fail with first +# failed task. Helpful for debugging purposes. +fail_fast = False + +[api] +# Enables the deprecated experimental API. Please note that these APIs do not have access control. +# The authenticated user has full access. +# +# .. warning:: +# +# This `Experimental REST API `__ is +# deprecated since version 2.0. Please consider using +# `the Stable REST API `__. +# For more information on migration, see +# `RELEASE_NOTES.rst `_ +enable_experimental_api = False + +# Comma separated list of auth backends to authenticate users of the API. See +# https://airflow.apache.org/docs/apache-airflow/stable/security/api.html for possible values. +# ("airflow.api.auth.backend.default" allows all requests for historic reasons) +auth_backends = airflow.api.auth.backend.session + +# Used to set the maximum page limit for API requests +maximum_page_limit = 100 + +# Used to set the default page limit when limit is zero. A default limit +# of 100 is set on OpenApi spec. However, this particular default limit +# only work when limit is set equal to zero(0) from API requests. +# If no limit is supplied, the OpenApi spec default is used. +fallback_page_limit = 100 + +# The intended audience for JWT token credentials used for authorization. This value must match on the client and server sides. If empty, audience will not be tested. +# Example: google_oauth2_audience = project-id-random-value.apps.googleusercontent.com +google_oauth2_audience = + +# Path to Google Cloud Service Account key file (JSON). If omitted, authorization based on +# `the Application Default Credentials +# `__ will +# be used. +# Example: google_key_path = /files/service-account-json +google_key_path = + +# Used in response to a preflight request to indicate which HTTP +# headers can be used when making the actual request. This header is +# the server side response to the browser's +# Access-Control-Request-Headers header. +access_control_allow_headers = + +# Specifies the method or methods allowed when accessing the resource. +access_control_allow_methods = + +# Indicates whether the response can be shared with requesting code from the given origins. +# Separate URLs with space. +access_control_allow_origins = + +[lineage] +# what lineage backend to use +backend = + +[atlas] +sasl_enabled = False +host = +port = 21000 +username = +password = + +[operators] +# The default owner assigned to each new operator, unless +# provided explicitly or passed via ``default_args`` +default_owner = airflow +default_cpus = 1 +default_ram = 512 +default_disk = 512 +default_gpus = 0 + +# Default queue that tasks get assigned to and that worker listen on. +default_queue = default + +# Is allowed to pass additional/unused arguments (args, kwargs) to the BaseOperator operator. +# If set to False, an exception will be thrown, otherwise only the console message will be displayed. +allow_illegal_arguments = False + +[hive] +# Default mapreduce queue for HiveOperator tasks +default_hive_mapred_queue = + +# Template for mapred_job_name in HiveOperator, supports the following named parameters +# hostname, dag_id, task_id, execution_date +# mapred_job_name_template = + +[webserver] +# The base url of your website as airflow cannot guess what domain or +# cname you are using. This is used in automated emails that +# airflow sends to point links to the right web server +base_url = http://localhost:8080 + +# Default timezone to display all dates in the UI, can be UTC, system, or +# any IANA timezone string (e.g. Europe/Amsterdam). If left empty the +# default value of core/default_timezone will be used +# Example: default_ui_timezone = America/New_York +default_ui_timezone = UTC + +# The ip specified when starting the web server +web_server_host = 0.0.0.0 + +# The port on which to run the web server +web_server_port = 8080 + +# Paths to the SSL certificate and key for the web server. When both are +# provided SSL will be enabled. This does not change the web server port. +web_server_ssl_cert = + +# Paths to the SSL certificate and key for the web server. When both are +# provided SSL will be enabled. This does not change the web server port. +web_server_ssl_key = + +# The type of backend used to store web session data, can be 'database' or 'securecookie' +# Example: session_backend = securecookie +session_backend = database + +# Number of seconds the webserver waits before killing gunicorn master that doesn't respond +web_server_master_timeout = 120 + +# Number of seconds the gunicorn webserver waits before timing out on a worker +web_server_worker_timeout = 120 + +# Number of workers to refresh at a time. When set to 0, worker refresh is +# disabled. When nonzero, airflow periodically refreshes webserver workers by +# bringing up new ones and killing old ones. +worker_refresh_batch_size = 1 + +# Number of seconds to wait before refreshing a batch of workers. +worker_refresh_interval = 6000 + +# If set to True, Airflow will track files in plugins_folder directory. When it detects changes, +# then reload the gunicorn. +reload_on_plugin_change = False + +# Secret key used to run your flask app. It should be as random as possible. However, when running +# more than 1 instances of webserver, make sure all of them use the same ``secret_key`` otherwise +# one of them will error with "CSRF session token is missing". +# The webserver key is also used to authorize requests to Celery workers when logs are retrieved. +# The token generated using the secret key has a short expiry time though - make sure that time on +# ALL the machines that you run airflow components on is synchronized (for example using ntpd) +# otherwise you might get "forbidden" errors when the logs are accessed. +# secret_key = + +# Number of workers to run the Gunicorn web server +workers = 4 + +# The worker class gunicorn should use. Choices include +# sync (default), eventlet, gevent +worker_class = sync + +# Log files for the gunicorn webserver. '-' means log to stderr. +access_logfile = - + +# Log files for the gunicorn webserver. '-' means log to stderr. +error_logfile = - + +# Access log format for gunicorn webserver. +# default format is %%(h)s %%(l)s %%(u)s %%(t)s "%%(r)s" %%(s)s %%(b)s "%%(f)s" "%%(a)s" +# documentation - https://docs.gunicorn.org/en/stable/settings.html#access-log-format +access_logformat = + +# Expose the configuration file in the web server +expose_config = False + +# Expose hostname in the web server +expose_hostname = True + +# Expose stacktrace in the web server +expose_stacktrace = True + +# Default DAG view. Valid values are: ``grid``, ``graph``, ``duration``, ``gantt``, ``landing_times`` +dag_default_view = grid + +# Default DAG orientation. Valid values are: +# ``LR`` (Left->Right), ``TB`` (Top->Bottom), ``RL`` (Right->Left), ``BT`` (Bottom->Top) +dag_orientation = LR + +# The amount of time (in secs) webserver will wait for initial handshake +# while fetching logs from other worker machine +log_fetch_timeout_sec = 5 + +# Time interval (in secs) to wait before next log fetching. +log_fetch_delay_sec = 2 + +# Distance away from page bottom to enable auto tailing. +log_auto_tailing_offset = 30 + +# Animation speed for auto tailing log display. +log_animation_speed = 1000 + +# By default, the webserver shows paused DAGs. Flip this to hide paused +# DAGs by default +hide_paused_dags_by_default = False + +# Consistent page size across all listing views in the UI +page_size = 100 + +# Define the color of navigation bar +navbar_color = #fff + +# Default dagrun to show in UI +default_dag_run_display_number = 25 + +# Enable werkzeug ``ProxyFix`` middleware for reverse proxy +enable_proxy_fix = False + +# Number of values to trust for ``X-Forwarded-For``. +# More info: https://werkzeug.palletsprojects.com/en/0.16.x/middleware/proxy_fix/ +proxy_fix_x_for = 1 + +# Number of values to trust for ``X-Forwarded-Proto`` +proxy_fix_x_proto = 1 + +# Number of values to trust for ``X-Forwarded-Host`` +proxy_fix_x_host = 1 + +# Number of values to trust for ``X-Forwarded-Port`` +proxy_fix_x_port = 1 + +# Number of values to trust for ``X-Forwarded-Prefix`` +proxy_fix_x_prefix = 1 + +# Set secure flag on session cookie +cookie_secure = False + +# Set samesite policy on session cookie +cookie_samesite = Lax + +# Default setting for wrap toggle on DAG code and TI log views. +default_wrap = False + +# Allow the UI to be rendered in a frame +x_frame_enabled = True + +# Send anonymous user activity to your analytics tool +# choose from google_analytics, segment, or metarouter +# analytics_tool = + +# Unique ID of your account in the analytics tool +# analytics_id = + +# 'Recent Tasks' stats will show for old DagRuns if set +show_recent_stats_for_completed_runs = True + +# Update FAB permissions and sync security manager roles +# on webserver startup +update_fab_perms = True + +# The UI cookie lifetime in minutes. User will be logged out from UI after +# ``session_lifetime_minutes`` of non-activity +session_lifetime_minutes = 43200 + +# Sets a custom page title for the DAGs overview page and site title for all pages +# instance_name = + +# Whether the custom page title for the DAGs overview page contains any Markup language +instance_name_has_markup = False + +# How frequently, in seconds, the DAG data will auto-refresh in graph or grid view +# when auto-refresh is turned on +auto_refresh_interval = 3 + +# Boolean for displaying warning for publicly viewable deployment +warn_deployment_exposure = True + +# Comma separated string of view events to exclude from dag audit view. +# All other events will be added minus the ones passed here. +# The audit logs in the db will not be affected by this parameter. +audit_view_excluded_events = gantt,landing_times,tries,duration,calendar,graph,grid,tree,tree_data + +# Comma separated string of view events to include in dag audit view. +# If passed, only these events will populate the dag audit view. +# The audit logs in the db will not be affected by this parameter. +# Example: audit_view_included_events = dagrun_cleared,failed +# audit_view_included_events = + +[email] + +# Configuration email backend and whether to +# send email alerts on retry or failure +# Email backend to use +email_backend = airflow.utils.email.send_email_smtp + +# Email connection to use +email_conn_id = smtp_default + +# Whether email alerts should be sent when a task is retried +default_email_on_retry = True + +# Whether email alerts should be sent when a task failed +default_email_on_failure = True + +# File that will be used as the template for Email subject (which will be rendered using Jinja2). +# If not set, Airflow uses a base template. +# Example: subject_template = /path/to/my_subject_template_file +# subject_template = + +# File that will be used as the template for Email content (which will be rendered using Jinja2). +# If not set, Airflow uses a base template. +# Example: html_content_template = /path/to/my_html_content_template_file +# html_content_template = + +# Email address that will be used as sender address. +# It can either be raw email or the complete address in a format ``Sender Name `` +# Example: from_email = Airflow +# from_email = + +[smtp] + +# If you want airflow to send emails on retries, failure, and you want to use +# the airflow.utils.email.send_email_smtp function, you have to configure an +# smtp server here +smtp_host = localhost +smtp_starttls = True +smtp_ssl = False +# Example: smtp_user = airflow +# smtp_user = +# Example: smtp_password = airflow +# smtp_password = +smtp_port = 25 +smtp_mail_from = airflow@example.com +smtp_timeout = 30 +smtp_retry_limit = 5 + +[sentry] + +# Sentry (https://docs.sentry.io) integration. Here you can supply +# additional configuration options based on the Python platform. See: +# https://docs.sentry.io/error-reporting/configuration/?platform=python. +# Unsupported options: ``integrations``, ``in_app_include``, ``in_app_exclude``, +# ``ignore_errors``, ``before_breadcrumb``, ``transport``. +# Enable error reporting to Sentry +sentry_on = false +sentry_dsn = + +# Dotted path to a before_send function that the sentry SDK should be configured to use. +# before_send = + +[local_kubernetes_executor] + +# This section only applies if you are using the ``LocalKubernetesExecutor`` in +# ``[core]`` section above +# Define when to send a task to ``KubernetesExecutor`` when using ``LocalKubernetesExecutor``. +# When the queue of a task is the value of ``kubernetes_queue`` (default ``kubernetes``), +# the task is executed via ``KubernetesExecutor``, +# otherwise via ``LocalExecutor`` +kubernetes_queue = kubernetes + +[celery_kubernetes_executor] + +# This section only applies if you are using the ``CeleryKubernetesExecutor`` in +# ``[core]`` section above +# Define when to send a task to ``KubernetesExecutor`` when using ``CeleryKubernetesExecutor``. +# When the queue of a task is the value of ``kubernetes_queue`` (default ``kubernetes``), +# the task is executed via ``KubernetesExecutor``, +# otherwise via ``CeleryExecutor`` +kubernetes_queue = kubernetes + +[celery] + +# This section only applies if you are using the CeleryExecutor in +# ``[core]`` section above +# The app name that will be used by celery +celery_app_name = airflow.executors.celery_executor + +# The concurrency that will be used when starting workers with the +# ``airflow celery worker`` command. This defines the number of task instances that +# a worker will take, so size up your workers based on the resources on +# your worker box and the nature of your tasks +worker_concurrency = 16 + +# The maximum and minimum concurrency that will be used when starting workers with the +# ``airflow celery worker`` command (always keep minimum processes, but grow +# to maximum if necessary). Note the value should be max_concurrency,min_concurrency +# Pick these numbers based on resources on worker box and the nature of the task. +# If autoscale option is available, worker_concurrency will be ignored. +# http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-autoscale +# Example: worker_autoscale = 16,12 +# worker_autoscale = + +# Used to increase the number of tasks that a worker prefetches which can improve performance. +# The number of processes multiplied by worker_prefetch_multiplier is the number of tasks +# that are prefetched by a worker. A value greater than 1 can result in tasks being unnecessarily +# blocked if there are multiple workers and one worker prefetches tasks that sit behind long +# running tasks while another worker has unutilized processes that are unable to process the already +# claimed blocked tasks. +# https://docs.celeryproject.org/en/stable/userguide/optimizing.html#prefetch-limits +worker_prefetch_multiplier = 1 + +# Specify if remote control of the workers is enabled. +# When using Amazon SQS as the broker, Celery creates lots of ``.*reply-celery-pidbox`` queues. You can +# prevent this by setting this to false. However, with this disabled Flower won't work. +worker_enable_remote_control = true + +# Umask that will be used when starting workers with the ``airflow celery worker`` +# in daemon mode. This control the file-creation mode mask which determines the initial +# value of file permission bits for newly created files. +worker_umask = 0o077 + +# The Celery broker URL. Celery supports RabbitMQ, Redis and experimentally +# a sqlalchemy database. Refer to the Celery documentation for more information. +broker_url = redis://redis:6379/0 + +# The Celery result_backend. When a job finishes, it needs to update the +# metadata of the job. Therefore it will post a message on a message bus, +# or insert it into a database (depending of the backend) +# This status is used by the scheduler to update the state of the task +# The use of a database is highly recommended +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-result-backend-settings +result_backend = db+postgresql://postgres:airflow@postgres/airflow + +# Celery Flower is a sweet UI for Celery. Airflow has a shortcut to start +# it ``airflow celery flower``. This defines the IP that Celery Flower runs on +flower_host = 0.0.0.0 + +# The root URL for Flower +# Example: flower_url_prefix = /flower +flower_url_prefix = + +# This defines the port that Celery Flower runs on +flower_port = 5555 + +# Securing Flower with Basic Authentication +# Accepts user:password pairs separated by a comma +# Example: flower_basic_auth = user1:password1,user2:password2 +flower_basic_auth = + +# How many processes CeleryExecutor uses to sync task state. +# 0 means to use max(1, number of cores - 1) processes. +sync_parallelism = 0 + +# Import path for celery configuration options +celery_config_options = airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG +ssl_active = False +ssl_key = +ssl_cert = +ssl_cacert = + +# Celery Pool implementation. +# Choices include: ``prefork`` (default), ``eventlet``, ``gevent`` or ``solo``. +# See: +# https://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency +# https://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html +pool = prefork + +# The number of seconds to wait before timing out ``send_task_to_executor`` or +# ``fetch_celery_task_state`` operations. +operation_timeout = 1.0 + +# Celery task will report its status as 'started' when the task is executed by a worker. +# This is used in Airflow to keep track of the running tasks and if a Scheduler is restarted +# or run in HA mode, it can adopt the orphan tasks launched by previous SchedulerJob. +task_track_started = True + +# Time in seconds after which adopted tasks which are queued in celery are assumed to be stalled, +# and are automatically rescheduled. This setting does the same thing as ``stalled_task_timeout`` but +# applies specifically to adopted tasks only. When set to 0, the ``stalled_task_timeout`` setting +# also applies to adopted tasks. +task_adoption_timeout = 600 + +# Time in seconds after which tasks queued in celery are assumed to be stalled, and are automatically +# rescheduled. Adopted tasks will instead use the ``task_adoption_timeout`` setting if specified. +# When set to 0, automatic clearing of stalled tasks is disabled. +stalled_task_timeout = 0 + +# The Maximum number of retries for publishing task messages to the broker when failing +# due to ``AirflowTaskTimeout`` error before giving up and marking Task as failed. +task_publish_max_retries = 3 + +# Worker initialisation check to validate Metadata Database connection +worker_precheck = False + +[celery_broker_transport_options] + +# This section is for specifying options which can be passed to the +# underlying celery broker transport. See: +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_transport_options +# The visibility timeout defines the number of seconds to wait for the worker +# to acknowledge the task before the message is redelivered to another worker. +# Make sure to increase the visibility timeout to match the time of the longest +# ETA you're planning to use. +# visibility_timeout is only supported for Redis and SQS celery brokers. +# See: +# http://docs.celeryproject.org/en/master/userguide/configuration.html#std:setting-broker_transport_options +# Example: visibility_timeout = 21600 +# visibility_timeout = + +[dask] + +# This section only applies if you are using the DaskExecutor in +# [core] section above +# The IP address and port of the Dask cluster's scheduler. +cluster_address = 127.0.0.1:8786 + +# TLS/ SSL settings to access a secured Dask scheduler. +tls_ca = +tls_cert = +tls_key = + +[scheduler] +# Task instances listen for external kill signal (when you clear tasks +# from the CLI or the UI), this defines the frequency at which they should +# listen (in seconds). +job_heartbeat_sec = 5 + +# The scheduler constantly tries to trigger new tasks (look at the +# scheduler section in the docs for more information). This defines +# how often the scheduler should run (in seconds). +scheduler_heartbeat_sec = 5 + +# The number of times to try to schedule each DAG file +# -1 indicates unlimited number +num_runs = -1 + +# Controls how long the scheduler will sleep between loops, but if there was nothing to do +# in the loop. i.e. if it scheduled something then it will start the next loop +# iteration straight away. +scheduler_idle_sleep_time = 1 + +# Number of seconds after which a DAG file is parsed. The DAG file is parsed every +# ``min_file_process_interval`` number of seconds. Updates to DAGs are reflected after +# this interval. Keeping this number low will increase CPU usage. +min_file_process_interval = 30 + +# How often (in seconds) to check for stale DAGs (DAGs which are no longer present in +# the expected files) which should be deactivated. +deactivate_stale_dags_interval = 60 + +# How often (in seconds) to scan the DAGs directory for new files. Default to 5 minutes. +dag_dir_list_interval = 300 + +# How often should stats be printed to the logs. Setting to 0 will disable printing stats +print_stats_interval = 30 + +# How often (in seconds) should pool usage stats be sent to StatsD (if statsd_on is enabled) +pool_metrics_interval = 5.0 + +# If the last scheduler heartbeat happened more than scheduler_health_check_threshold +# ago (in seconds), scheduler is considered unhealthy. +# This is used by the health check in the "/health" endpoint +scheduler_health_check_threshold = 30 + +# How often (in seconds) should the scheduler check for orphaned tasks and SchedulerJobs +orphaned_tasks_check_interval = 300.0 +child_process_log_directory = /opt/airflow/logs/scheduler + +# Local task jobs periodically heartbeat to the DB. If the job has +# not heartbeat in this many seconds, the scheduler will mark the +# associated task instance as failed and will re-schedule the task. +scheduler_zombie_task_threshold = 300 + +# How often (in seconds) should the scheduler check for zombie tasks. +zombie_detection_interval = 10.0 + +# Turn off scheduler catchup by setting this to ``False``. +# Default behavior is unchanged and +# Command Line Backfills still work, but the scheduler +# will not do scheduler catchup if this is ``False``, +# however it can be set on a per DAG basis in the +# DAG definition (catchup) +catchup_by_default = True + +# Setting this to True will make first task instance of a task +# ignore depends_on_past setting. A task instance will be considered +# as the first task instance of a task when there is no task instance +# in the DB with an execution_date earlier than it., i.e. no manual marking +# success will be needed for a newly added task to be scheduled. +ignore_first_depends_on_past_by_default = True + +# This changes the batch size of queries in the scheduling main loop. +# If this is too high, SQL query performance may be impacted by +# complexity of query predicate, and/or excessive locking. +# Additionally, you may hit the maximum allowable query length for your db. +# Set this to 0 for no limit (not advised) +max_tis_per_query = 512 + +# Should the scheduler issue ``SELECT ... FOR UPDATE`` in relevant queries. +# If this is set to False then you should not run more than a single +# scheduler at once +use_row_level_locking = True + +# Max number of DAGs to create DagRuns for per scheduler loop. +max_dagruns_to_create_per_loop = 10 + +# How many DagRuns should a scheduler examine (and lock) when scheduling +# and queuing tasks. +max_dagruns_per_loop_to_schedule = 20 + +# Should the Task supervisor process perform a "mini scheduler" to attempt to schedule more tasks of the +# same DAG. Leaving this on will mean tasks in the same DAG execute quicker, but might starve out other +# dags in some circumstances +schedule_after_task_execution = True + +# The scheduler can run multiple processes in parallel to parse dags. +# This defines how many processes will run. +parsing_processes = 2 + +# One of ``modified_time``, ``random_seeded_by_host`` and ``alphabetical``. +# The scheduler will list and sort the dag files to decide the parsing order. +# +# * ``modified_time``: Sort by modified time of the files. This is useful on large scale to parse the +# recently modified DAGs first. +# * ``random_seeded_by_host``: Sort randomly across multiple Schedulers but with same order on the +# same host. This is useful when running with Scheduler in HA mode where each scheduler can +# parse different DAG files. +# * ``alphabetical``: Sort by filename +file_parsing_sort_mode = modified_time + +# Whether the dag processor is running as a standalone process or it is a subprocess of a scheduler +# job. +standalone_dag_processor = False + +# Only applicable if `[scheduler]standalone_dag_processor` is true and callbacks are stored +# in database. Contains maximum number of callbacks that are fetched during a single loop. +max_callbacks_per_loop = 20 + +# Turn off scheduler use of cron intervals by setting this to False. +# DAGs submitted manually in the web UI or with trigger_dag will still run. +use_job_schedule = True + +# Allow externally triggered DagRuns for Execution Dates in the future +# Only has effect if schedule_interval is set to None in DAG +allow_trigger_in_future = False + +# DAG dependency detector class to use +dependency_detector = airflow.serialization.serialized_objects.DependencyDetector + +# How often to check for expired trigger requests that have not run yet. +trigger_timeout_check_interval = 15 + +[triggerer] +# How many triggers a single Triggerer will run at once, by default. +default_capacity = 1000 + +# [kerberos] +# ccache = /tmp/airflow_krb5_ccache +# +# # gets augmented with fqdn +# principal = airflow +# reinit_frequency = 3600 +# kinit_path = kinit +# keytab = airflow.keytab +# +# # Allow to disable ticket forwardability. +# forwardable = True +# +# # Allow to remove source IP from token, useful when using token behind NATted Docker host. +# include_ip = True + +[github_enterprise] +api_rev = v3 + +[elasticsearch] +# Elasticsearch host +host = + +# Format of the log_id, which is used to query for a given tasks logs +log_id_template = {{dag_id}}-{{task_id}}-{{run_id}}-{{map_index}}-{{try_number}} + +# Used to mark the end of a log stream for a task +end_of_log_mark = end_of_log + +# Qualified URL for an elasticsearch frontend (like Kibana) with a template argument for log_id +# Code will construct log_id using the log_id template from the argument above. +# NOTE: scheme will default to https if one is not provided +# Example: frontend = http://localhost:5601/app/kibana#/discover?_a=(columns:!(message),query:(language:kuery,query:'log_id: "{{log_id}}"'),sort:!(log.offset,asc)) +frontend = + +# Write the task logs to the stdout of the worker, rather than the default files +write_stdout = False + +# Instead of the default log formatter, write the log lines as JSON +json_format = False + +# Log fields to also attach to the json output, if enabled +json_fields = asctime, filename, lineno, levelname, message + +# The field where host name is stored (normally either `host` or `host.name`) +host_field = host + +# The field where offset is stored (normally either `offset` or `log.offset`) +offset_field = offset + +[elasticsearch_configs] +use_ssl = False +verify_certs = True + +[kubernetes] +# Path to the YAML pod file that forms the basis for KubernetesExecutor workers. +pod_template_file = + +# The repository of the Kubernetes Image for the Worker to Run +worker_container_repository = + +# The tag of the Kubernetes Image for the Worker to Run +worker_container_tag = + +# The Kubernetes namespace where airflow workers should be created. Defaults to ``default`` +namespace = default + +# If True, all worker pods will be deleted upon termination +delete_worker_pods = True + +# If False (and delete_worker_pods is True), +# failed worker pods will not be deleted so users can investigate them. +# This only prevents removal of worker pods where the worker itself failed, +# not when the task it ran failed. +delete_worker_pods_on_failure = False + +# Number of Kubernetes Worker Pod creation calls per scheduler loop. +# Note that the current default of "1" will only launch a single pod +# per-heartbeat. It is HIGHLY recommended that users increase this +# number to match the tolerance of their kubernetes cluster for +# better performance. +worker_pods_creation_batch_size = 1 + +# Allows users to launch pods in multiple namespaces. +# Will require creating a cluster-role for the scheduler +multi_namespace_mode = False + +# Use the service account kubernetes gives to pods to connect to kubernetes cluster. +# It's intended for clients that expect to be running inside a pod running on kubernetes. +# It will raise an exception if called from a process not running in a kubernetes environment. +in_cluster = True + +# When running with in_cluster=False change the default cluster_context or config_file +# options to Kubernetes client. Leave blank these to use default behaviour like ``kubectl`` has. +# cluster_context = + +# Path to the kubernetes configfile to be used when ``in_cluster`` is set to False +# config_file = + +# Keyword parameters to pass while calling a kubernetes client core_v1_api methods +# from Kubernetes Executor provided as a single line formatted JSON dictionary string. +# List of supported params are similar for all core_v1_apis, hence a single config +# variable for all apis. See: +# https://raw.githubusercontent.com/kubernetes-client/python/41f11a09995efcd0142e25946adc7591431bfb2f/kubernetes/client/api/core_v1_api.py +kube_client_request_args = + +# Optional keyword arguments to pass to the ``delete_namespaced_pod`` kubernetes client +# ``core_v1_api`` method when using the Kubernetes Executor. +# This should be an object and can contain any of the options listed in the ``v1DeleteOptions`` +# class defined here: +# https://github.com/kubernetes-client/python/blob/41f11a09995efcd0142e25946adc7591431bfb2f/kubernetes/client/models/v1_delete_options.py#L19 +# Example: delete_option_kwargs = {{"grace_period_seconds": 10}} +delete_option_kwargs = + +# Enables TCP keepalive mechanism. This prevents Kubernetes API requests to hang indefinitely +# when idle connection is time-outed on services like cloud load balancers or firewalls. +enable_tcp_keepalive = True + +# When the `enable_tcp_keepalive` option is enabled, TCP probes a connection that has +# been idle for `tcp_keep_idle` seconds. +tcp_keep_idle = 120 + +# When the `enable_tcp_keepalive` option is enabled, if Kubernetes API does not respond +# to a keepalive probe, TCP retransmits the probe after `tcp_keep_intvl` seconds. +tcp_keep_intvl = 30 + +# When the `enable_tcp_keepalive` option is enabled, if Kubernetes API does not respond +# to a keepalive probe, TCP retransmits the probe `tcp_keep_cnt number` of times before +# a connection is considered to be broken. +tcp_keep_cnt = 6 + +# Set this to false to skip verifying SSL certificate of Kubernetes python client. +verify_ssl = True + +# How long in seconds a worker can be in Pending before it is considered a failure +worker_pods_pending_timeout = 300 + +# How often in seconds to check if Pending workers have exceeded their timeouts +worker_pods_pending_timeout_check_interval = 120 + +# How often in seconds to check for task instances stuck in "queued" status without a pod +worker_pods_queued_check_interval = 60 + +# How many pending pods to check for timeout violations in each check interval. +# You may want this higher if you have a very large cluster and/or use ``multi_namespace_mode``. +worker_pods_pending_timeout_batch_size = 100 + +[sensors] +# Sensor default timeout, 7 days by default (7 * 24 * 60 * 60). +default_timeout = 604800 + +[smart_sensor] +# When `use_smart_sensor` is True, Airflow redirects multiple qualified sensor tasks to +# smart sensor task. +use_smart_sensor = False + +# `shard_code_upper_limit` is the upper limit of `shard_code` value. The `shard_code` is generated +# by `hashcode % shard_code_upper_limit`. +shard_code_upper_limit = 10000 + +# The number of running smart sensor processes for each service. +shards = 5 + +# comma separated sensor classes support in smart_sensor. +sensors_enabled = NamedHivePartitionSensor diff --git a/docker/airflow/scripts/create-admin.sh b/docker/airflow/scripts/create-admin.sh new file mode 100755 index 00000000..d6cd19c9 --- /dev/null +++ b/docker/airflow/scripts/create-admin.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -e + +airflow users create \ + --username ${_AIRFLOW_WWW_USER_USERNAME} \ + --password ${_AIRFLOW_WWW_USER_PASSWORD} \ + --email ${_AIRFLOW_WWW_USER_EMAIL} \ + --firstname ${_AIRFLOW_WWW_USER_FIRST_NAME} \ + --lastname ${_AIRFLOW_WWW_USER_LAST_NAME} \ + --role Admin diff --git a/docker/airflow/scripts/entrypoint.sh b/docker/airflow/scripts/entrypoint.sh new file mode 100755 index 00000000..f26d5992 --- /dev/null +++ b/docker/airflow/scripts/entrypoint.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +set -e + +# prepare the conda environment +is_conda_in_path=$(echo $PATH|grep -m 1 --count /opt/conda/) + +if [ $is_conda_in_path == 0 ]; then + export PATH="/opt/conda/condabin:/opt/conda/bin:$PATH" + echo "[II] included conda to the PATH" +fi + +echo "[II] activate epigraphhub" +source activate epigraphhub + +if [ $# -ne 0 ] + then + echo "Running: ${@}" + $(${@}) +fi diff --git a/docker/airflow/scripts/init-db.sh b/docker/airflow/scripts/init-db.sh new file mode 100755 index 00000000..5d018276 --- /dev/null +++ b/docker/airflow/scripts/init-db.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# source: https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml + +if [[ -z "${AIRFLOW_UID}" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: AIRFLOW_UID not set!\e[0m" + echo "If you are on Linux, you SHOULD follow the instructions below to set " + echo "AIRFLOW_UID environment variable, otherwise files will be owned by root." + echo "For other operating systems you can get rid of the warning with manually created .env file:" + echo " See: https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#setting-the-right-airflow-user" + echo +fi +one_meg=1048576 +mem_available=$(($(getconf _PHYS_PAGES) * $(getconf PAGE_SIZE) / one_meg)) +cpus_available=$(grep -cE 'cpu[0-9]+' /proc/stat) +disk_available=$(df / | tail -1 | awk '{print $4}') +warning_resources="false" +if (( mem_available < 4000 )) ; then + echo + echo -e "\033[1;33mWARNING!!!: Not enough memory available for Docker.\e[0m" + echo "At least 4GB of memory required. You have $(numfmt --to iec $((mem_available * one_meg)))" + echo + warning_resources="true" +fi +if (( cpus_available < 2 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough CPUS available for Docker.\e[0m" + echo "At least 2 CPUs recommended. You have ${cpus_available}" + echo + warning_resources="true" +fi +if (( disk_available < one_meg * 10 )); then + echo + echo -e "\033[1;33mWARNING!!!: Not enough Disk space available for Docker.\e[0m" + echo "At least 10 GBs recommended. You have $(numfmt --to iec $((disk_available * 1024 )))" + echo + warning_resources="true" +fi +if [[ ${warning_resources} == "true" ]]; then + echo + echo -e "\033[1;33mWARNING!!!: You have not enough resources to run Airflow (see above)!\e[0m" + echo "Please follow the instructions to increase amount of resources available:" + echo " https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#before-you-begin" + echo +fi +mkdir -p /sources/logs /sources/dags /sources/plugins + +airflow db init diff --git a/docker/airflow/scripts/startup.sh b/docker/airflow/scripts/startup.sh new file mode 100755 index 00000000..b4daa6dd --- /dev/null +++ b/docker/airflow/scripts/startup.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +set -e + +# initdb +echo "=========== init-db ===========" +. /opt/scripts/init-db.sh + +# create admin user +echo "=========== init-db ===========" +. /opt/scripts/create-admin.sh + +# start airflow +echo "========= airflow webserver =========" +airflow webserver & +sleep 10 + +# start scheduler +echo "========= airflow scheduler =========" +airflow scheduler & +sleep 10 + +# just to keep the prompt blocked +mkdir -p /tmp/empty +cd /tmp/empty + +echo "========= DONE =========" +python -m http.server diff --git a/docker/airflow/scripts/webserver_config.py b/docker/airflow/scripts/webserver_config.py new file mode 100644 index 00000000..e69de29b diff --git a/docker/compose-base.yaml b/docker/compose-base.yaml index 1f0d80b1..bec34a32 100644 --- a/docker/compose-base.yaml +++ b/docker/compose-base.yaml @@ -13,8 +13,9 @@ services: args: # note: if you want to use a specific UID and GID, ensure to add it to # the .env file - - UID=${UID:-1000} - - GID=${GID:-1000} + - UID=${HOST_UID:-1000} + - GID=${HOST_GID:-1000} + user: "epigraphhub:epigraphhub" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8088/health"] interval: 60s @@ -30,6 +31,40 @@ services: - redis - flower + airflow: + hostname: airflow + restart: unless-stopped + env_file: + - ../.env + build: + context: .. + dockerfile: docker/airflow/Dockerfile + args: + # note: if you want to use a specific UID and GID, ensure to add it to + # the .env file + - UID=${HOST_UID:-1000} + - GID=${HOST_GID:-1000} + environment: + AIRFLOW_UID: "${HOST_UID:-1000}" + user: "epigraphhub:epigraphhub" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 10 + start_period: 40s # requires docker-compose 3.4 + volumes: + - ..:/opt/EpiGraphHub + - ${SUPERSET_DB_PATH_DIR_HOST}:/opt/data/superset/ + - ${AIRFLOW_FILES_PATH_DIR_HOST}/dags:/opt/airflow/dags + - ${AIRFLOW_FILES_PATH_DIR_HOST}/logs:/opt/airflow/logs + - ${AIRFLOW_FILES_PATH_DIR_HOST}/plugins:/opt/airflow/plugins + ports: + - ${AIRFLOW_PORT}:8080 + depends_on: + - redis + - flower + redis: image: redis:alpine hostname: redis diff --git a/docker/compose-dev.yaml b/docker/compose-dev.yaml index 441e0dee..d1d3aeec 100644 --- a/docker/compose-dev.yaml +++ b/docker/compose-dev.yaml @@ -8,16 +8,21 @@ services: - flower postgres: + env_file: + - ../.env + ports: + - ${POSTGRES_PORT}:${POSTGRES_PORT} environment: # overwrite .env default variables - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=postgres - ports: - - ${POSTGRES_PORT}:25432 - healthcheck: - test: ["CMD-SHELL", "pg_isready -p ${POSTGRES_PORT} -U postgres"] - interval: 10s - timeout: 5s - retries: 10 - command: -p 25432 + volumes: + - ./postgresql/sql/dev/:/docker-entrypoint-initdb.d/ + - pgdata:/var/lib/postgresql/data + command: -p ${POSTGRES_PORT} + + + +volumes: + pgdata: diff --git a/docker/postgresql/Dockerfile b/docker/postgresql/Dockerfile index e3b63b84..13852389 100644 --- a/docker/postgresql/Dockerfile +++ b/docker/postgresql/Dockerfile @@ -1,10 +1,11 @@ FROM postgis/postgis:14-3.2 ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update -y \ - && apt-get install -y \ - postgresql-14-plr \ - postgresql-14-postgis-3-scripts \ - postgresql-plpython3-14 \ - postgresql-contrib \ - && rm -rf /var/lib/apt/lists/* +RUN apt-get -qq update --yes \ + && apt-get -qq install --yes --no-install-recommends \ + build-essential ca-certificates \ + postgresql-14-plr \ + postgresql-14-postgis-3-scripts \ + postgresql-plpython3-14 \ + postgresql-contrib \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/postgresql/prepare-db.sh b/docker/postgresql/prepare-db.sh deleted file mode 100644 index 536fc9cd..00000000 --- a/docker/postgresql/prepare-db.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# ================================= -# NOTE: USE IT JUST FOR DEVELOPMENT -# ================================= - -set -ex - -DOCKER_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )" - -echo "[II] CREATE DATABASE" -psql "postgresql://postgres:postgres@$POSTGRES_HOST:$POSTGRES_PORT/postgres" \ - < ${DOCKER_DIR}/sql/database.sql - -echo "[II] LOAD EPIGRAPHHUB DUMP" -psql "postgresql://postgres:postgres@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB" \ - < ${DOCKER_DIR}/sql/epigraphhub.sql - -echo "[II] LOAD PRIVATE DUMP" -psql "postgresql://postgres:postgres@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB_PRIVATE" \ - < ${DOCKER_DIR}/sql/privatehub.sql diff --git a/docker/postgresql/scripts/dev/prepare-db.sh b/docker/postgresql/scripts/dev/prepare-db.sh new file mode 100644 index 00000000..c2d113ab --- /dev/null +++ b/docker/postgresql/scripts/dev/prepare-db.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# ================================= +# NOTE: USE IT JUST FOR DEVELOPMENT +# ================================= + +set -ex + +DOCKER_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd ../../.. && pwd )" +PSQL_CONNECTION="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}" + +echo "[II] CREATE DATABASE" +psql "${PSQL_CONNECTION}/postgres" < ${DOCKER_DIR}/sql/dev/database.sql + +echo "[II] LOAD EPIGRAPHHUB DUMP" +psql "${PSQL_CONNECTION}/${POSTGRES_EPIGRAPH_DB}" < ${DOCKER_DIR}/sql/dev/epigraphhub.sql + +echo "[II] LOAD PRIVATE DUMP" +psql "${PSQL_CONNECTION}/${POSTGRES_EPIGRAPH_DB_PRIVATE}" < ${DOCKER_DIR}/sql/dev/privatehub.sql diff --git a/docker/postgresql/sql/dev/01-database.sql b/docker/postgresql/sql/dev/01-database.sql new file mode 100644 index 00000000..e7c9dd80 --- /dev/null +++ b/docker/postgresql/sql/dev/01-database.sql @@ -0,0 +1,37 @@ +/* Used for development only */ + +DROP DATABASE IF EXISTS dev_epigraphhub; +DROP DATABASE IF EXISTS dev_privatehub; +DROP DATABASE IF EXISTS dev_sandbox; +DROP DATABASE IF EXISTS dev_airflow; + +DROP ROLE IF EXISTS dev_admin; +DROP ROLE IF EXISTS dev_airflow_user; + +CREATE ROLE dev_admin; +ALTER ROLE dev_admin + WITH SUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS; +ALTER USER dev_admin WITH PASSWORD 'admin'; + +CREATE ROLE dev_airflow_user; +ALTER ROLE dev_airflow_user + WITH SUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS; +ALTER USER dev_airflow_user + WITH PASSWORD 'airflow_password'; + +DROP ROLE IF EXISTS dev_epigraph; +CREATE ROLE dev_epigraph; +ALTER ROLE dev_epigraph + WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS; +ALTER USER dev_epigraph + WITH PASSWORD 'dev_epigraph'; + +DROP ROLE IF EXISTS dev_external; +CREATE ROLE dev_external; +ALTER ROLE dev_external + WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION NOBYPASSRLS; +COMMENT ON ROLE dev_external IS 'External analysts with read-only access to some databases'; + +CREATE DATABASE dev_epigraphhub OWNER dev_epigraph; +CREATE DATABASE dev_privatehub OWNER dev_epigraph; +CREATE DATABASE dev_airflow OWNER dev_airflow_user; diff --git a/docker/sql/epigraphhub.sql b/docker/postgresql/sql/dev/02-epigraphhub.sql similarity index 99% rename from docker/sql/epigraphhub.sql rename to docker/postgresql/sql/dev/02-epigraphhub.sql index a34fb91b..36ac1351 100644 --- a/docker/sql/epigraphhub.sql +++ b/docker/postgresql/sql/dev/02-epigraphhub.sql @@ -5,6 +5,8 @@ -- Dumped from database version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) -- Dumped by pg_dump version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) +\c dev_epigraphhub + SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; @@ -44,7 +46,7 @@ CREATE SCHEMA switzerland; ALTER SCHEMA switzerland OWNER TO dev_admin; -- --- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -- CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; @@ -58,31 +60,31 @@ COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; -- --- Name: plpython3u; Type: EXTENSION; Schema: -; Owner: +-- Name: plpython3u; Type: EXTENSION; Schema: -; Owner: -- CREATE EXTENSION IF NOT EXISTS plpython3u WITH SCHEMA pg_catalog; -- --- Name: EXTENSION plpython3u; Type: COMMENT; Schema: -; Owner: +-- Name: EXTENSION plpython3u; Type: COMMENT; Schema: -; Owner: -- COMMENT ON EXTENSION plpython3u IS 'PL/Python3U untrusted procedural language'; -- --- Name: plpythonu; Type: EXTENSION; Schema: -; Owner: +-- Name: plpython3u; Type: EXTENSION; Schema: -; Owner: -- -CREATE EXTENSION IF NOT EXISTS plpythonu WITH SCHEMA pg_catalog; +CREATE EXTENSION IF NOT EXISTS plpython3u WITH SCHEMA pg_catalog; -- --- Name: EXTENSION plpythonu; Type: COMMENT; Schema: -; Owner: +-- Name: EXTENSION plpython3u; Type: COMMENT; Schema: -; Owner: -- -COMMENT ON EXTENSION plpythonu IS 'PL/PythonU untrusted procedural language'; +COMMENT ON EXTENSION plpython3u IS 'PL/PythonU untrusted procedural language'; -- @@ -107,12 +109,27 @@ CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; -- --- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: -- COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions'; +-- +-- Name: postgis_raster; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS postgis_raster WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis_raster; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis_raster IS 'PostGIS geometry, geography, and raster spatial types and functions'; + + + SET default_tablespace = ''; SET default_with_oids = false; @@ -28685,7 +28702,6 @@ GRANT SELECT ON TABLE public.iso_alpha3_country_codes TO dev_external; GRANT SELECT ON TABLE public.raster_columns TO dev_external; - -- -- Name: TABLE raster_overviews; Type: ACL; Schema: public; Owner: postgres -- diff --git a/docker/sql/privatehub.sql b/docker/postgresql/sql/dev/03-privatehub.sql similarity index 67% rename from docker/sql/privatehub.sql rename to docker/postgresql/sql/dev/03-privatehub.sql index fb950a98..dc12ffe2 100644 --- a/docker/sql/privatehub.sql +++ b/docker/postgresql/sql/dev/03-privatehub.sql @@ -5,6 +5,8 @@ -- Dumped from database version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) -- Dumped by pg_dump version 10.19 (Ubuntu 10.19-0ubuntu0.18.04.1) +\c dev_privatehub + SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; @@ -46,6 +48,79 @@ CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; +-- +-- Name: plpython3u; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpython3u WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpython3u; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpython3u IS 'PL/Python3U untrusted procedural language'; + + +-- +-- Name: plpython3u; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpython3u WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpython3u; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpython3u IS 'PL/PythonU untrusted procedural language'; + + +-- +-- Name: plr; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plr WITH SCHEMA public; + + +-- +-- Name: EXTENSION plr; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plr IS 'load R interpreter and execute R script from within a database'; + + +-- +-- Name: postgis; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions'; + + +-- +-- Name: postgis_raster; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS postgis_raster WITH SCHEMA public; + + +-- +-- Name: EXTENSION postgis_raster; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION postgis_raster IS 'PostGIS geometry, geography, and raster spatial types and functions'; + + + + + SET default_tablespace = ''; SET default_with_oids = false; diff --git a/docker/sql/database.sql b/docker/sql/database.sql deleted file mode 100644 index 2ddb909b..00000000 --- a/docker/sql/database.sql +++ /dev/null @@ -1,23 +0,0 @@ -/* Used for development only */ - -DROP DATABASE IF EXISTS dev_epigraphhub; -DROP DATABASE IF EXISTS dev_privatehub; -DROP DATABASE IF EXISTS dev_sandbox; - -DROP ROLE IF EXISTS dev_admin; -CREATE ROLE dev_admin; -ALTER ROLE dev_admin WITH SUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS; -ALTER USER dev_admin WITH PASSWORD 'admin'; - -DROP ROLE IF EXISTS dev_epigraph; -CREATE ROLE dev_epigraph; -ALTER ROLE dev_epigraph WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS; -ALTER USER dev_epigraph WITH PASSWORD 'dev_epigraph'; - -DROP ROLE IF EXISTS dev_external; -CREATE ROLE dev_external; -ALTER ROLE dev_external WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION NOBYPASSRLS; -COMMENT ON ROLE dev_external IS 'External analysts with read-only access to some databases'; - -CREATE DATABASE dev_epigraphhub OWNER dev_epigraph; -CREATE DATABASE dev_privatehub OWNER dev_epigraph; diff --git a/docker/superset/entrypoint.sh b/docker/superset/entrypoint.sh index 7a9c5b92..2e7f795b 100755 --- a/docker/superset/entrypoint.sh +++ b/docker/superset/entrypoint.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -ex + # prepare the conda environment is_conda_in_path=$(echo $PATH|grep -m 1 --count /opt/conda/) diff --git a/scripts/prepare-host-db.sh b/scripts/prepare-host.sh similarity index 56% rename from scripts/prepare-host-db.sh rename to scripts/prepare-host.sh index fcabb497..35e797d5 100755 --- a/scripts/prepare-host-db.sh +++ b/scripts/prepare-host.sh @@ -4,6 +4,15 @@ PROJECT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. export $(echo $(cat ${PROJECT_PATH}/.env | sed 's/#.*//g'| xargs) | envsubst) set -ex + +# superset mkdir -p ${SUPERSET_DB_PATH_DIR_HOST} sqlite3 ${SUPERSET_DB_PATH_HOST} "VACUUM;" ".quit" chmod -R 777 ${SUPERSET_DB_PATH_DIR_HOST} + +# airflow +mkdir -p ${AIRFLOW_FILES_PATH_DIR_HOST} +mkdir -p ${AIRFLOW_FILES_PATH_DIR_HOST}/logs +mkdir -p ${AIRFLOW_FILES_PATH_DIR_HOST}/logs/scheduler +mkdir -p ${AIRFLOW_FILES_PATH_DIR_HOST}/dags +mkdir -p ${AIRFLOW_FILES_PATH_DIR_HOST}/plugins