cern-sis / issues-scoap3

0 stars 0 forks source link

ModuleNotFoundError: No module named 'connexion.decorators.validation' while running airflow init #239

Closed ErnestaP closed 7 months ago

ErnestaP commented 7 months ago

I found the same issue posted a few days ago on GitHub. https://github.com/apache/airflow/issues/35434

The issue appeared on Airflow 2.7.2 We are using Airflow 2.6.0

Discussion of why it is crashing: https://github.com/apache/airflow/issues/35234 In itself, this doesn't lead to any breaking changes if you're using the intended interface of Connexion, which is an application (FlaskApp or AsyncApp in Connexion 3). However, in https://github.com/apache/airflow/pull/29631, Airflow moved away from this intended interface by creating a FlaskApi directly and registering its internal blueprint on the Flask app directly. This worked in Connexion 2, since the FlaskApi created the decorated routes. But it no longer works on Connexion 3, since it doesn't contain the middleware, which is part of the FlaskApp.

Installing separately connexion==2.14.2, solved the issue.

However, I see that NEWSEST airflow uses >=2.10.0,<3.0 version of connexion.: connexion[flask]>=2.10.0,<3.0 https://github.com/apache/airflow/blob/main/setup.cfg#L81-L88

H̶o̶w̶e̶v̶e̶r̶,̶ ̶i̶t̶ ̶m̶i̶g̶h̶t̶ ̶b̶e̶ ̶a̶ ̶b̶a̶d̶ ̶p̶r̶a̶c̶t̶i̶c̶e̶ ̶t̶o̶ ̶i̶n̶s̶t̶a̶l̶l̶ ̶i̶t̶ ̶s̶e̶p̶a̶r̶a̶t̶e̶l̶y̶ ̶f̶r̶o̶m̶ ̶o̶t̶h̶e̶r̶ ̶a̶i̶r̶f̶l̶o̶w̶ ̶d̶e̶p̶e̶n̶d̶e̶n̶c̶i̶e̶s̶.̶ ̶W̶e̶ ̶s̶h̶o̶u̶l̶d̶ ̶i̶n̶s̶t̶a̶l̶l̶ ̶t̶h̶e̶ ̶c̶o̶r̶r̶e̶c̶t̶ ̶c̶o̶n̶n̶e̶x̶i̶o̶n̶ ̶v̶e̶r̶s̶i̶o̶n̶ ̶w̶i̶t̶h̶ ̶a̶i̶r̶f̶l̶o̶w̶ ̶i̶t̶s̶e̶l̶f̶ ̶o̶r̶ ̶w̶i̶t̶h̶ ̶e̶x̶t̶r̶a̶s̶(̶o̶r̶ ̶p̶r̶o̶v̶i̶d̶e̶r̶s̶)̶ ̶b̶y̶ ̶d̶e̶s̶c̶r̶i̶b̶i̶n̶g̶ ̶t̶h̶e̶m̶ ̶i̶n̶ ̶t̶h̶e̶ ̶r̶e̶q̶u̶i̶r̶e̶m̶e̶n̶t̶s̶-̶a̶i̶r̶f̶l̶o̶w̶.̶t̶x̶t̶ ̶f̶i̶l̶e̶:̶

apache-airflow[celery, postgres]==2.6.0 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.6.0/constraints-3.10.txt

https://airflow.apache.org/docs/apache-airflow/stable/extra-packages-ref.html

Full list of extras and their dependencies: https://github.com/apache/airflow/blob/main/setup.py

The full trace of error:

airflow db init
/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/configuration.py:481 FutureWarning: The 'dag_default_view' setting in [webserver] has the old default value of 'tree'. This value has been changed to 'grid' in the running config, but please update your config before Apache Airflow 3.0.
/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/configuration.py:481 FutureWarning: The 'log_filename_template' setting in [logging] has the old default value of '{{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log'. This value has been changed to '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' in the running config, but please update your config before Apache Airflow 3.0.
DB: ***localhost/airflow
[2023-11-08T13:09:28.893+0000] {migration.py:213} INFO - Context impl PostgresqlImpl.
[2023-11-08T13:09:28.893+0000] {migration.py:216} INFO - Will assume transactional DDL.
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.10.11/x64/bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/__main__.py", line 48, in main
    args.func(args)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/cli/cli_config.py", line 51, in command
    return func(*args, **kwargs)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/cli/commands/db_command.py", line 37, in initdb
    db.initdb()
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/utils/session.py", line 76, in wrapper
    return func(*args, session=session, **kwargs)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/utils/db.py", line 715, in initdb
    _create_db_from_orm(session=session)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/utils/db.py", line 703, in _create_db_from_orm
    command.stamp(config, "head")
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/command.py", line 685, in stamp
    script.run_env()
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/base.py", line [57](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:6:58)9, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 93, in load_python_file
    module = load_module_py(module_id, path)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 109, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/migrations/env.py", line 117, in <module>
    run_migrations_online()
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/migrations/env.py", line 111, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/runtime/environment.py", line 938, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/runtime/migration.py", line 612, in run_migrations
    for step in self._migrations_fn(heads, self):
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/command.py", line 673, in do_stamp
    return script._stamp_revs(util.to_tuple(destination_revs), rev)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/base.py", line 494, in _stamp_revs
    self.revision_map.filter_for_lineage(
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/revision.py", line 680, in filter_for_lineage
    id_, branch_label = self._resolve_revision_number(check_against)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/revision.py", line 754, in _resolve_revision_number
    self._revision_map
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 1113, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/revision.py", line 197, in _revision_map
    for revision in self._generator():
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/base.py", line 149, in _load_revisions
    script = Script._from_filename(self, dir_name, filename)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/script/base.py", line 1035, in _from_filename
    module = util.load_python_file(dir_, filename)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 93, in load_python_file
    module = load_module_py(module_id, path)
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/alembic/util/pyfiles.py", line 109, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/migrations/versions/0074_2_0_0_resource_based_permissions.py", line 30, in <module>
    from airflow.www.app import cached_app
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/www/app.py", line 50, in <module>
    from airflow.www.extensions.init_views import (
  File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/airflow/www/extensions/init_views.py", line 24, in <module>
    from connexion.decorators.validation import RequestBodyValidator
ModuleNotFoundError: No module named 'connexion.decorators.validation'
make: *** [Makefile:26: airflow] Error 1

Notes: build airflow Dockerfile : https://airflow.apache.org/docs/docker-stack/build.html

ErnestaP commented 7 months ago

From pip installation we can see that the connexion version, which was installed, was wrong:

Collecting connexion>=2.10.0 (from connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading connexion-3.0.1-py3-none-any.whl.metadata (12 kB)
Collecting cron-descriptor>=1.2.24 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))

My suggestion, just install it separately, since it's coming from from airflow[celery,postgres]==2.6.0.

Trace:

Run pip install --upgrade pip
  pip install --upgrade pip
  pip install --no-cache-dir --upgrade setuptools
  pip install --no-cache-dir --upgrade wheel
  pip install -r requirements.txt -r requirements-test.txt -r requirements-airflow.txt
  shell: /usr/bin/bash -e {0}
  env:
    AIRFLOW_HOME: /home/runner/work/workflows/workflows
    REGISTRY: registry.cern.ch
    IMAGE: cern-sis/workflows
    pythonLocation: /opt/hostedtoolcache/Python/3.10.11/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.10.11/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.11/x64
    Python[2](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:2)_ROOT_DIR: /opt/hostedtoolcache/Python/[3](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:3).10.11/x6[4](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:4)
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.11/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.10.11/x64/lib
Requirement already satisfied: pip in /opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages (23.0.1)
Collecting pip
  Downloading pip-23.3.1-py3-none-any.whl.metadata (3.[5](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:5) kB)
Downloading pip-23.3.1-py3-none-any.whl (2.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 16.6 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 23.0.1
    Uninstalling pip-23.0.1:
      Successfully uninstalled pip-23.0.1
Successfully installed pip-23.3.1
Requirement already satisfied: setuptools in /opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages (65.5.0)
Collecting setuptools
  Downloading setuptools-68.2.2-py3-none-any.whl.metadata (6.3 kB)
Downloading setuptools-68.2.2-py3-none-any.whl (807 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 807.9/807.9 kB 18.6 MB/s eta 0:00:00
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 65.5.0
    Uninstalling setuptools-65.5.0:
      Successfully uninstalled setuptools-65.5.0
Successfully installed setuptools-68.2.2
Collecting wheel
  Downloading wheel-0.41.3-py3-none-any.whl.metadata (2.2 kB)
Downloading wheel-0.41.3-py3-none-any.whl (65 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.8/65.8 kB 5.0 MB/s eta 0:00:00
Installing collected packages: wheel
Successfully installed wheel-0.41.3
Collecting structlog==23.1.0 (from -r requirements.txt (line 1))
  Downloading structlog-23.1.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.4/62.4 kB 3.6 MB/s eta 0:00:00
Collecting paramiko==3.1.0 (from -r requirements.txt (line 2))
  Downloading paramiko-3.1.0-py3-none-any.whl (211 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.2/211.2 kB 9.4 MB/s eta 0:00:00
Collecting boto3==1.26.76 (from -r requirements.txt (line 3))
  Downloading boto3-1.26.76-py3-none-any.whl (132 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 132.7/132.7 kB 10.1 MB/s eta 0:00:00
Collecting backoff==1.10.0 (from -r requirements.txt (line 4))
  Downloading backoff-1.10.0-py2.py3-none-any.whl (31 kB)
Collecting bleach==6.0.0 (from -r requirements.txt (line 5))
  Downloading bleach-6.0.0-py3-none-any.whl (162 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 162.5/162.5 kB 11.6 MB/s eta 0:00:00
Collecting idutils==1.2.1 (from -r requirements.txt (line 6))
  Downloading idutils-1.2.1-py2.py3-none-any.whl (14 kB)
Collecting inspire-utils==3.0.25 (from -r requirements.txt (line 7))
  Downloading inspire-utils-3.0.25.tar.gz (16 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting furl==2.1.3 (from -r requirements.txt (line 8))
  Downloading furl-2.1.3-py2.py3-none-any.whl (20 kB)
Collecting busypie==0.4.5 (from -r requirements.txt (line 9))
  Downloading busypie-0.4.5-py3-none-any.whl (12 kB)
Collecting pydantic==1.10.7 (from -r requirements.txt (line 10))
  Downloading pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 22.1 MB/s eta 0:00:00
Collecting jsonschema==4.17.3 (from -r requirements.txt (line 11))
  Downloading jsonschema-4.17.3-py3-none-any.whl (90 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.4/90.4 kB 25.3 MB/s eta 0:00:00
Collecting plyvel==1.5.0 (from -r requirements.txt (line 12))
  Downloading plyvel-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (769 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 769.3/769.3 kB 38.1 MB/s eta 0:00:00
Collecting pre-commit==3.2.2 (from -r requirements-test.txt (line 1))
  Downloading pre_commit-3.2.2-py2.py3-none-any.whl (202 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 202.7/202.7 kB 43.1 MB/s eta 0:00:00
Collecting pytest==7.3.1 (from -r requirements-test.txt (line 2))
  Downloading pytest-7.3.1-py3-none-any.whl (320 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 320.5/320.5 kB 35.5 MB/s eta 0:00:00
Collecting coverage==7.2.4 (from -r requirements-test.txt (line 3))
  Downloading coverage-7.2.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (228 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 228.2/228.2 kB 42.5 MB/s eta 0:00:00
Collecting pytest-cov==4.0.0 (from -r requirements-test.txt (line 4))
  Downloading pytest_cov-4.0.0-py3-none-any.whl (21 kB)
Collecting pytest-vcr==1.0.2 (from -r requirements-test.txt (line 5))
  Downloading pytest_vcr-1.0.2-py2.py3-none-any.whl (4.1 kB)
Collecting pytest-datadir==1.3.1 (from -r requirements-test.txt (line 6))
  Downloading pytest_datadir-1.3.1-py2.py3-none-any.whl (5.9 kB)
Collecting freezegun==1.2.1 (from -r requirements-test.txt (line 7))
  Downloading freezegun-1.2.1-py3-none-any.whl (16 kB)
Collecting requests-mock==1.10.0 (from -r requirements-test.txt (line 8))
  Downloading requests_mock-1.10.0-py2.py3-none-any.whl (28 kB)
Collecting apache-airflow==2.[6](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:6).0 (from apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow-2.6.0-py3-none-any.whl (12.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.1/12.1 MB [7](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:7)9.[8](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:8) MB/s eta 0:00:00
Collecting bcrypt>=3.2 (from paramiko==3.1.0->-r requirements.txt (line 2))
  Downloading bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl (5[9](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:9)3 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 593.7/593.7 kB 82.1 MB/s eta 0:00:00
Collecting cryptography>=3.3 (from paramiko==3.1.0->-r requirements.txt (line 2))
  Downloading cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl.metadata (5.2 kB)
Collecting pynacl>=1.5 (from paramiko==3.1.0->-r requirements.txt (line 2))
  Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 kB 91.2 MB/s eta 0:00:00
Collecting botocore<1.30.0,>=1.29.76 (from boto3==1.26.76->-r requirements.txt (line 3))
  Downloading botocore-1.29.165-py3-none-any.whl.metadata (5.9 kB)
Collecting jmespath<2.0.0,>=0.7.1 (from boto3==1.26.76->-r requirements.txt (line 3))
  Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting s3transfer<0.7.0,>=0.6.0 (from boto3==1.26.76->-r requirements.txt (line 3))
  Downloading s3transfer-0.6.2-py3-none-any.whl.metadata (1.8 kB)
Collecting six>=1.9.0 (from bleach==6.0.0->-r requirements.txt (line 5))
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting webencodings (from bleach==6.0.0->-r requirements.txt (line 5))
  Downloading webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
Collecting isbnlib>=3.[10](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:10).8 (from idutils==1.2.1->-r requirements.txt (line 6))
  Downloading isbnlib-3.10.14-py2.py3-none-any.whl (52 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.5/52.5 kB 14.2 MB/s eta 0:00:00
Collecting Unidecode>=1.0.22,~=1.0 (from inspire-utils==3.0.25->-r requirements.txt (line 7))
  Downloading Unidecode-1.3.7-py3-none-any.whl.metadata (13 kB)
Collecting babel>=2.5.1,~=2.0 (from inspire-utils==3.0.25->-r requirements.txt (line 7))
  Downloading Babel-2.13.1-py3-none-any.whl.metadata (1.6 kB)
Collecting lxml>=4.4.0,~=4.0 (from inspire-utils==3.0.25->-r requirements.txt (line 7))
  Downloading lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl.metadata (3.8 kB)
Collecting nameparser>=0.5.3,~=0.0 (from inspire-utils==3.0.25->-r requirements.txt (line 7))
  Downloading nameparser-0.5.8-py2.py3-none-any.whl (20 kB)
Collecting python-dateutil>=2.6.1,~=2.0 (from inspire-utils==3.0.25->-r requirements.txt (line 7))
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 46.3 MB/s eta 0:00:00
Collecting orderedmultidict>=1.0.1 (from furl==2.1.3->-r requirements.txt (line 8))
  Downloading orderedmultidict-1.0.1-py2.py3-none-any.whl ([11](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:11) kB)
Collecting typing-extensions>=4.2.0 (from pydantic==1.10.7->-r requirements.txt (line 10))
  Downloading typing_extensions-4.8.0-py3-none-any.whl.metadata (3.0 kB)
Collecting attrs>=17.4.0 (from jsonschema==4.17.3->-r requirements.txt (line 11))
  Downloading attrs-23.1.0-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.2/61.2 kB 17.9 MB/s eta 0:00:00
Collecting pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 (from jsonschema==4.17.3->-r requirements.txt (line 11))
  Downloading pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (27 kB)
Collecting cfgv>=2.0.0 (from pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading cfgv-3.4.0-py2.py3-none-any.whl.metadata (8.5 kB)
Collecting identify>=1.0.0 (from pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading identify-2.5.31-py2.py3-none-any.whl.metadata (4.4 kB)
Collecting nodeenv>=0.11.1 (from pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading nodeenv-1.8.0-py2.py3-none-any.whl.metadata (21 kB)
Collecting pyyaml>=5.1 (from pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting virtualenv>=20.10.0 (from pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading virtualenv-20.24.6-py3-none-any.whl.metadata (4.5 kB)
Collecting iniconfig (from pytest==7.3.1->-r requirements-test.txt (line 2))
  Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Collecting packaging (from pytest==7.3.1->-r requirements-test.txt (line 2))
  Downloading packaging-23.2-py3-none-any.whl.metadata (3.2 kB)
Collecting pluggy<2.0,>=0.[12](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:12) (from pytest==7.3.1->-r requirements-test.txt (line 2))
  Downloading pluggy-1.3.0-py3-none-any.whl.metadata (4.3 kB)
Collecting exceptiongroup>=1.0.0rc8 (from pytest==7.3.1->-r requirements-test.txt (line 2))
  Downloading exceptiongroup-1.1.3-py3-none-any.whl.metadata (6.1 kB)
Collecting tomli>=1.0.0 (from pytest==7.3.1->-r requirements-test.txt (line 2))
  Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting vcrpy (from pytest-vcr==1.0.2->-r requirements-test.txt (line 5))
  Downloading vcrpy-5.1.0-py2.py3-none-any.whl.metadata (4.0 kB)
Collecting requests<3,>=2.3 (from requests-mock==1.10.0->-r requirements-test.txt (line 8))
  Downloading requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting alembic<2.0,>=1.6.3 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading alembic-1.12.1-py3-none-any.whl.metadata (7.3 kB)
Collecting argcomplete>=1.10 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading argcomplete-3.1.4-py3-none-any.whl.metadata (16 kB)
Collecting asgiref (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading asgiref-3.7.2-py3-none-any.whl.metadata (9.2 kB)
Collecting blinker (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading blinker-1.7.0-py3-none-any.whl.metadata (1.9 kB)
Collecting cattrs>=22.1.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading cattrs-23.1.2-py3-none-any.whl.metadata (9.3 kB)
Collecting colorlog<5.0,>=4.0.2 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading colorlog-4.8.0-py2.py3-none-any.whl (10 kB)
Collecting configupdater>=3.1.1 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading ConfigUpdater-3.1.1-py2.py3-none-any.whl (34 kB)
Collecting connexion>=2.10.0 (from connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading connexion-3.0.1-py3-none-any.whl.metadata (12 kB)
Collecting cron-descriptor>=1.2.24 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading cron_descriptor-1.4.0.tar.gz (29 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting croniter>=0.3.17 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading croniter-2.0.1-py2.py3-none-any.whl.metadata (24 kB)
Collecting deprecated>=1.2.[13](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:13) (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Deprecated-1.2.[14](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:14)-py2.py3-none-any.whl.metadata (5.4 kB)
Collecting dill>=0.2.2 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading dill-0.3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting flask<2.3,>=2.2 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask-2.2.5-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 kB 32.5 MB/s eta 0:00:00
Collecting flask-appbuilder==4.3.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_AppBuilder-4.3.0-py3-none-any.whl (2.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 111.6 MB/s eta 0:00:00
Collecting flask-caching>=1.5.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_Caching-2.1.0-py3-none-any.whl.metadata (2.2 kB)
Collecting flask-login>=0.6.2 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_Login-0.6.3-py3-none-any.whl.metadata (5.8 kB)
Collecting flask-session>=0.4.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading flask_session-0.5.0-py3-none-any.whl (7.2 kB)
Collecting flask-wtf>=0.[15](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:15) (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading flask_wtf-1.2.1-py3-none-any.whl.metadata (3.4 kB)
Collecting graphviz>=0.12 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading graphviz-0.20.1-py3-none-any.whl (47 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 47.0/47.0 kB 15.0 MB/s eta 0:00:00
Collecting gunicorn>=20.1.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading gunicorn-21.2.0-py3-none-any.whl.metadata (4.1 kB)
Collecting httpx (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading httpx-0.25.1-py3-none-any.whl.metadata (7.1 kB)
Collecting itsdangerous>=2.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting jinja2>=3.0.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 42.4 MB/s eta 0:00:00
Collecting lazy-object-proxy (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (63 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.3/63.3 kB 22.7 MB/s eta 0:00:00
Collecting linkify-it-py>=2.0.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading linkify_it_py-2.0.2-py3-none-any.whl (19 kB)
Collecting lockfile>=0.12.2 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading lockfile-0.12.2-py2.py3-none-any.whl (13 kB)
Collecting markdown>=3.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Markdown-3.5.1-py3-none-any.whl.metadata (7.1 kB)
Collecting markdown-it-py>=2.1.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting markupsafe>=1.1.1 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)
Collecting marshmallow-oneofschema>=2.0.1 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl (5.8 kB)
Collecting mdit-py-plugins>=0.3.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading mdit_py_plugins-0.4.0-py3-none-any.whl.metadata (2.7 kB)
Collecting pathspec~=0.9.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading pathspec-0.9.0-py2.py3-none-any.whl (31 kB)
Collecting pendulum>=2.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading pendulum-2.1.2.tar.gz (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.2/81.2 kB 26.2 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting psutil>=4.2.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (21 kB)
Collecting pygments>=2.0.1 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Pygments-2.[16](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:16).1-py3-none-any.whl.metadata (2.5 kB)
Collecting pyjwt>=2.0.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading PyJWT-2.8.0-py3-none-any.whl.metadata (4.2 kB)
Collecting python-daemon>=3.0.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading python_daemon-3.0.1-py3-none-any.whl (31 kB)
Collecting python-nvd3>=0.15.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading python-nvd3-0.15.0.tar.gz (31 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting python-slugify>=5.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading python_slugify-8.0.1-py2.py3-none-any.whl (9.7 kB)
Collecting rfc3339-validator>=0.1.4 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading rfc3339_validator-0.1.4-py2.py3-none-any.whl (3.5 kB)
Collecting rich>=12.4.4 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading rich-13.6.0-py3-none-any.whl.metadata (18 kB)
Collecting rich-argparse>=1.0.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading rich_argparse-1.4.0-py3-none-any.whl.metadata (14 kB)
Collecting setproctitle>=1.1.8 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading setproctitle-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_[17](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:18)_x86_64.manylinux2014_x86_64.whl.metadata (9.9 kB)
Collecting sqlalchemy<2.0,>=1.4 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (10.0 kB)
Collecting sqlalchemy-jsonfield>=1.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading SQLAlchemy_JSONField-1.0.1.post0-py3-none-any.whl (10 kB)
Collecting tabulate>=0.7.5 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading tabulate-0.9.0-py3-none-any.whl (35 kB)
Collecting tenacity!=8.2.0,>=6.2.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading tenacity-8.2.3-py3-none-any.whl.metadata (1.0 kB)
Collecting termcolor>=1.1.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading termcolor-2.3.0-py3-none-any.whl (6.9 kB)
Collecting unicodecsv>=0.14.1 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading unicodecsv-0.14.1.tar.gz (10 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting werkzeug>=2.0 (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading werkzeug-3.0.1-py3-none-any.whl.metadata (4.1 kB)
Collecting apache-airflow-providers-common-sql (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_common_sql-1.8.0-py3-none-any.whl.metadata (5.8 kB)
Collecting apache-airflow-providers-ftp (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_ftp-3.6.0-py3-none-any.whl.metadata (5.6 kB)
Collecting apache-airflow-providers-http (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_http-4.6.0-py3-none-any.whl.metadata (4.6 kB)
Collecting apache-airflow-providers-imap (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_imap-3.4.0-py3-none-any.whl.metadata (4.4 kB)
Collecting apache-airflow-providers-sqlite (from apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_sqlite-3.5.0-py3-none-any.whl.metadata (5.8 kB)
Collecting celery<6,>=5.2.3 (from apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading celery-5.3.4-py3-none-any.whl.metadata (21 kB)
Collecting flower>=1.0.0 (from apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading flower-2.0.1-py2.py3-none-any.whl.metadata (4.5 kB)
Collecting apache-airflow-providers-celery (from apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_celery-3.4.1-py3-none-any.whl.metadata (5.9 kB)
Collecting apache-airflow-providers-postgres (from apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apache_airflow_providers_postgres-5.7.1-py3-none-any.whl.metadata (6.3 kB)
Collecting apispec<6,>=3.3 (from apispec[yaml]<6,>=3.3->flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading apispec-5.2.2-py3-none-any.whl (29 kB)
Collecting colorama<1,>=0.3.9 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Collecting click<9,>=8 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting email-validator<2,>=1.0.5 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading email_validator-1.3.1-py2.py3-none-any.whl (22 kB)
Collecting Flask-Babel<3,>=1 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_Babel-2.0.0-py3-none-any.whl (9.3 kB)
Collecting Flask-Limiter<4,>3 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_Limiter-3.5.0-py3-none-any.whl.metadata (6.3 kB)
Collecting Flask-SQLAlchemy<3,>=2.4 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_SQLAlchemy-2.5.1-py2.py3-none-any.whl (17 kB)
Collecting Flask-JWT-Extended<5.0.0,>=4.0.0 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Flask_JWT_Extended-4.5.3-py2.py3-none-any.whl.metadata (3.9 kB)
Collecting marshmallow<4,>=3 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading marshmallow-3.20.1-py3-none-any.whl.metadata (7.8 kB)
Collecting marshmallow-enum<2,>=1.5.1 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB)
Collecting marshmallow-sqlalchemy<0.27.0,>=0.22.0 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading marshmallow_sqlalchemy-0.26.1-py2.py3-none-any.whl (15 kB)
Collecting prison<1.0.0,>=0.2.1 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading prison-0.2.1-py2.py3-none-any.whl (5.8 kB)
Collecting sqlalchemy-utils<1,>=0.32.21 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading SQLAlchemy_Utils-0.41.1-py3-none-any.whl (92 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 92.6/92.6 kB 30.2 MB/s eta 0:00:00
Collecting WTForms<4 (from flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading wtforms-3.1.1-py3-none-any.whl.metadata (5.3 kB)
Collecting Mako (from alembic<2.0,>=1.6.3->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading Mako-1.2.4-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.7/78.7 kB 27.4 MB/s eta 0:00:00
Collecting urllib3<1.27,>=1.25.4 (from botocore<1.30.0,>=1.29.76->boto3==1.26.76->-r requirements.txt (line 3))
  Downloading urllib3-1.26.[18](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:19)-py2.py3-none-any.whl.metadata (48 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.9/48.9 kB 15.9 MB/s eta 0:00:00
Collecting billiard<5.0,>=4.1.0 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading billiard-4.2.0-py3-none-any.whl.metadata (4.4 kB)
Collecting kombu<6.0,>=5.3.2 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading kombu-5.3.3-py3-none-any.whl.metadata (3.1 kB)
Collecting vine<6.0,>=5.0.0 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading vine-5.1.0-py3-none-any.whl.metadata (2.7 kB)
Collecting click-didyoumean>=0.3.0 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading click_didyoumean-0.3.0-py3-none-any.whl (2.7 kB)
Collecting click-repl>=0.2.0 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading click_repl-0.3.0-py3-none-any.whl.metadata (3.6 kB)
Collecting click-plugins>=1.1.1 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
Collecting tzdata>=2022.7 (from celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading tzdata-2023.3-py2.py3-none-any.whl (341 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 341.8/341.8 kB 64.8 MB/s eta 0:00:00
Collecting inflection>=0.3.1 (from connexion>=2.10.0->connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading inflection-0.5.1-py2.py3-none-any.whl (9.5 kB)
Collecting python-multipart>=0.0.5 (from connexion>=2.10.0->connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading python_multipart-0.0.6-py3-none-any.whl (45 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.7/45.7 kB 15.0 MB/s eta 0:00:00
Collecting starlette>=0.27 (from connexion>=2.10.0->connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading starlette-0.32.0.post1-py3-none-any.whl.metadata (5.8 kB)
Collecting a2wsgi>=1.7 (from connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading a2wsgi-1.8.0-py3-none-any.whl.metadata (2.8 kB)
Collecting pytz>2021.1 (from croniter>=0.3.17->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading pytz-2023.3.post1-py2.py3-none-any.whl.metadata (22 kB)
Collecting cffi>=1.12 (from cryptography>=3.3->paramiko==3.1.0->-r requirements.txt (line 2))
  Downloading cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting wrapt<2,>=1.10 (from deprecated>=1.2.13->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.4/78.4 kB 24.5 MB/s eta 0:00:00
Collecting cachelib<0.10.0,>=0.9.0 (from flask-caching>=1.5.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading cachelib-0.9.0-py3-none-any.whl (15 kB)
Collecting tornado<7.0.0,>=5.0.0 (from flower>=1.0.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.5 kB)
Collecting prometheus-client>=0.8.0 (from flower>=1.0.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading prometheus_client-0.18.0-py3-none-any.whl.metadata (26 kB)
Collecting humanize (from flower>=1.0.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading humanize-4.8.0-py3-none-any.whl.metadata (7.8 kB)
Collecting anyio (from httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading anyio-4.0.0-py3-none-any.whl.metadata (4.5 kB)
Collecting certifi (from httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Using cached certifi-2023.7.22-py3-none-any.whl.metadata (2.2 kB)
Collecting httpcore (from httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading httpcore-1.0.1-py3-none-any.whl.metadata (20 kB)
Collecting idna (from httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading idna-3.4-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB [19](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:20).5 MB/s eta 0:00:00
Collecting sniffio (from httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading sniffio-1.3.0-py3-none-any.whl (10 kB)
Collecting uc-micro-py (from linkify-it-py>=2.0.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading uc_micro_py-1.0.2-py3-none-any.whl (6.2 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.1.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Requirement already satisfied: setuptools in /opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages (from nodeenv>=0.11.1->pre-commit==3.2.2->-r requirements-test.txt (line 1)) (68.2.2)
Collecting pytzdata>=[20](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:21)20.1 (from pendulum>=2.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 490.0/490.0 kB 77.4 MB/s eta 0:00:00
Collecting docutils (from python-daemon>=3.0.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading docutils-0.20.1-py3-none-any.whl.metadata (2.8 kB)
Collecting text-unidecode>=1.3 (from python-slugify>=5.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading text_unidecode-1.3-py2.py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.2/78.2 kB 25.3 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2 (from requests<3,>=2.3->requests-mock==1.10.0->-r requirements-test.txt (line 8))
  Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
Collecting greenlet!=0.4.17 (from sqlalchemy<2.0,>=1.4->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (3.7 kB)
Collecting distlib<1,>=0.3.7 (from virtualenv>=20.10.0->pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading distlib-0.3.7-py2.py3-none-any.whl.metadata (5.1 kB)
Collecting filelock<4,>=3.12.2 (from virtualenv>=20.10.0->pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading filelock-3.13.1-py3-none-any.whl.metadata (2.8 kB)
Collecting platformdirs<4,>=3.9.1 (from virtualenv>=20.10.0->pre-commit==3.2.2->-r requirements-test.txt (line 1))
  Downloading platformdirs-3.11.0-py3-none-any.whl.metadata (11 kB)
Collecting google-re2>=1.0 (from apache-airflow-providers-celery->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading google_re2-1.1-3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (2.1 kB)
Collecting sqlparse>=0.4.2 (from apache-airflow-providers-common-sql->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading sqlparse-0.4.4-py3-none-any.whl (41 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.2/41.2 kB 12.5 MB/s eta 0:00:00
Collecting aiohttp (from apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)
Collecting requests-toolbelt (from apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading requests_toolbelt-1.0.0-py2.py3-none-any.whl (54 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.5/54.5 kB 16.2 MB/s eta 0:00:00
Collecting psycopg2-binary>=2.8.0 (from apache-airflow-providers-postgres->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)
Collecting yarl (from vcrpy->pytest-vcr==1.0.2->-r requirements-test.txt (line 5))
  Downloading yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 268.8/268.8 kB 59.5 MB/s eta 0:00:00
Collecting pycparser (from cffi>=1.12->cryptography>=3.3->paramiko==3.1.0->-r requirements.txt (line 2))
  Downloading pycparser-2.[21](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:22)-py2.py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.7/118.7 kB 35.8 MB/s eta 0:00:00
Collecting prompt-toolkit>=3.0.36 (from click-repl>=0.2.0->celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading prompt_toolkit-3.0.39-py3-none-any.whl.metadata (6.4 kB)
Collecting dnspython>=1.15.0 (from email-validator<2,>=1.0.5->flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading dnspython-2.4.2-py3-none-any.whl.metadata (4.9 kB)
Collecting limits>=2.8 (from Flask-Limiter<4,>3->flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading limits-3.6.0-py3-none-any.whl.metadata (7.3 kB)
Collecting ordered-set<5,>4 (from Flask-Limiter<4,>3->flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading ordered_set-4.1.0-py3-none-any.whl (7.6 kB)
Collecting amqp<6.0.0,>=5.1.1 (from kombu<6.0,>=5.3.2->celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading amqp-5.2.0-py3-none-any.whl.metadata (8.9 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp->apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.5/114.5 kB 26.5 MB/s eta 0:00:00
Collecting async-timeout<5.0,>=4.0.0a3 (from aiohttp->apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Collecting frozenlist>=1.1.1 (from aiohttp->apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.2 kB)
Collecting aiosignal>=1.1.2 (from aiohttp->apache-airflow-providers-http->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting h11<0.15,>=0.13 (from httpcore->httpx->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 2.8 MB/s eta 0:00:00
Collecting importlib-resources>=1.3 (from limits>=2.8->Flask-Limiter<4,>3->flask-appbuilder==4.3.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading importlib_resources-6.1.1-py3-none-any.whl.metadata (4.1 kB)
Collecting wcwidth (from prompt-toolkit>=3.0.36->click-repl>=0.2.0->celery<6,>=5.2.3->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 1))
  Downloading wcwidth-0.2.9-py2.py3-none-any.whl.metadata (14 kB)
Downloading alembic-1.12.1-py3-none-any.whl ([22](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:23)6 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.8/226.8 kB 44.5 MB/s eta 0:00:00
Downloading argcomplete-3.1.4-py3-none-any.whl (41 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.6/41.6 kB 12.5 MB/s eta 0:00:00
Downloading Babel-2.13.1-py3-none-any.whl (10.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.1/10.1 MB 108.2 MB/s eta 0:00:00
Downloading botocore-1.29.165-py3-none-any.whl (11.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.0/11.0 MB 118.3 MB/s eta 0:00:00
Downloading cattrs-[23](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:24).1.2-py3-none-any.whl (50 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.8/50.8 kB 17.5 MB/s eta 0:00:00
Downloading celery-5.3.4-py3-none-any.whl (421 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 421.4/421.4 kB 73.3 MB/s eta 0:00:00
Downloading cfgv-3.4.0-py2.py3-none-any.whl (7.2 kB)
Downloading connexion-3.0.1-py3-none-any.whl (110 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.4/110.4 kB 31.8 MB/s eta 0:00:00
Downloading asgiref-3.7.2-py3-none-any.whl ([24](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:25) kB)
Downloading croniter-2.0.1-py2.py3-none-any.whl (19 kB)
Downloading cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl (4.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 MB 115.6 MB/s eta 0:00:00
Downloading Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB)
Downloading dill-0.3.7-py3-none-any.whl (115 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 115.3/115.3 kB 24.3 MB/s eta 0:00:00
Downloading exceptiongroup-1.1.3-py3-none-any.whl (14 kB)
Downloading Flask_Caching-2.1.0-py3-none-any.whl (28 kB)
Downloading Flask_Login-0.6.3-py3-none-any.whl (17 kB)
Downloading flask_wtf-1.2.1-py3-none-any.whl (12 kB)
Downloading flower-2.0.1-py2.py3-none-any.whl (383 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 383.6/383.6 kB 62.9 MB/s eta 0:00:00
Downloading gunicorn-21.2.0-py3-none-any.whl (80 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.2/80.2 kB 24.9 MB/s eta 0:00:00
Downloading httpx-0.[25](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:26).1-py3-none-any.whl (75 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 75.0/75.0 kB 20.5 MB/s eta 0:00:00
Downloading identify-2.5.31-py2.py3-none-any.whl (98 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.9/98.9 kB 24.5 MB/s eta 0:00:00
Downloading lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl (7.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.9/7.9 MB 115.7 MB/s eta 0:00:00
Downloading Markdown-3.5.1-py3-none-any.whl (102 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 102.2/102.2 kB 27.0 MB/s eta 0:00:00
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 28.8 MB/s eta 0:00:00
Downloading MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Downloading mdit_py_plugins-0.4.0-py3-none-any.whl (54 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.1/54.1 kB 15.6 MB/s eta 0:00:00
Downloading nodeenv-1.8.0-py2.py3-none-any.whl (22 kB)
Downloading packaging-23.2-py3-none-any.whl (53 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.0/53.0 kB 17.6 MB/s eta 0:00:00
Downloading pluggy-1.3.0-py3-none-any.whl (18 kB)
Downloading psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 283.6/283.6 kB 61.1 MB/s eta 0:00:00
Downloading Pygments-2.16.1-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 98.9 MB/s eta 0:00:00
Downloading PyJWT-2.8.0-py3-none-any.whl (22 kB)
Downloading pyrsistent-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (117 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.7/117.7 kB 28.9 MB/s eta 0:00:00
Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 kB 85.6 MB/s eta 0:00:00
Downloading requests-2.31.0-py3-none-any.whl (62 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 19.0 MB/s eta 0:00:00
Downloading rich-13.6.0-py3-none-any.whl (239 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 239.8/239.8 kB 58.9 MB/s eta 0:00:00
Downloading rich_argparse-1.4.0-py3-none-any.whl (19 kB)
Downloading s3transfer-0.6.2-py3-none-any.whl (79 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 kB 25.4 MB/s eta 0:00:00
Downloading setproctitle-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30 kB)
Downloading SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 102.2 MB/s eta 0:00:00
Downloading tenacity-8.2.3-py3-none-any.whl (24 kB)
Downloading typing_extensions-4.8.0-py3-none-any.whl (31 kB)
Downloading Unidecode-1.3.7-py3-none-any.whl (235 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 235.5/235.5 kB 49.2 MB/s eta 0:00:00
Downloading virtualenv-20.24.6-py3-none-any.whl (3.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 120.3 MB/s eta 0:00:00
Downloading werkzeug-3.0.1-py3-none-any.whl (2[26](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:27) kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.7/226.7 kB 56.7 MB/s eta 0:00:00
Downloading apache_airflow_providers_celery-3.4.1-py3-none-any.whl (32 kB)
Downloading apache_airflow_providers_common_sql-1.8.0-py3-none-any.whl (31 kB)
Downloading apache_airflow_providers_ftp-3.6.0-py3-none-any.whl (18 kB)
Downloading apache_airflow_providers_http-4.6.0-py3-none-any.whl (24 kB)
Downloading apache_airflow_providers_imap-3.4.0-py3-none-any.whl (17 kB)
Downloading apache_airflow_providers_postgres-5.7.1-py3-none-any.whl (18 kB)
Downloading apache_airflow_providers_sqlite-3.5.0-py3-none-any.whl (13 kB)
Downloading blinker-1.7.0-py3-none-any.whl (13 kB)
Downloading vcrpy-5.1.0-py2.py3-none-any.whl (41 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.0/42.0 kB 12.4 MB/s eta 0:00:00
Downloading a2wsgi-1.8.0-py3-none-any.whl (12 kB)
Downloading billiard-4.2.0-py3-none-any.whl (86 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.7/86.7 kB 30.6 MB/s eta 0:00:00
Using cached certifi-2023.7.22-py3-none-any.whl (158 kB)
Downloading cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (443 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 443.9/443.9 kB 67.7 MB/s eta 0:00:00
Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.1/142.1 kB 37.0 MB/s eta 0:00:00
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 31.2 MB/s eta 0:00:00
Downloading click_repl-0.3.0-py3-none-any.whl (10 kB)
Downloading distlib-0.3.7-py2.py3-none-any.whl (468 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 468.9/468.9 kB 68.4 MB/s eta 0:00:00
Downloading filelock-3.13.1-py3-none-any.whl (11 kB)
Downloading Flask_JWT_Extended-4.5.3-py2.py3-none-any.whl (22 kB)
Downloading Flask_Limiter-3.5.0-py3-none-any.whl (28 kB)
Downloading google_re2-1.1-3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (511 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 511.3/511.3 kB 72.0 MB/s eta 0:00:00
Downloading greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (613 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 613.2/613.2 kB 61.7 MB/s eta 0:00:00
Downloading kombu-5.3.3-py3-none-any.whl (199 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.1/199.1 kB 48.2 MB/s eta 0:00:00
Downloading marshmallow-3.20.1-py3-none-any.whl (49 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 49.4/49.4 kB 16.1 MB/s eta 0:00:00
Downloading platformdirs-3.11.0-py3-none-any.whl (17 kB)
Downloading prometheus_client-0.18.0-py3-none-any.whl (61 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.5/61.5 kB 17.8 MB/s eta 0:00:00
Downloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 111.2 MB/s eta 0:00:00
Downloading pytz-2023.3.post1-py2.py3-none-any.whl (502 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 502.5/502.5 kB 83.4 MB/s eta 0:00:00
Downloading starlette-0.32.0.post1-py3-none-any.whl (70 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.0/70.0 kB 21.2 MB/s eta 0:00:00
Downloading anyio-4.0.0-py3-none-any.whl (83 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 83.1/83.1 kB 21.7 MB/s eta 0:00:00
Downloading tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4[27](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:28) kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 427.7/427.7 kB 64.8 MB/s eta 0:00:00
Downloading urllib3-1.26.18-py2.py3-none-any.whl (143 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.8/143.8 kB 32.6 MB/s eta 0:00:00
Downloading vine-5.1.0-py3-none-any.whl (9.6 kB)
Downloading wtforms-3.1.1-py3-none-any.whl (145 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 145.4/145.4 kB 27.3 MB/s eta 0:00:00
Downloading aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 85.5 MB/s eta 0:00:00
Downloading docutils-0.20.1-py3-none-any.whl (572 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 572.7/572.7 kB 80.4 MB/s eta 0:00:00
Downloading httpcore-1.0.1-py3-none-any.whl (76 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.9/76.9 kB 17.4 MB/s eta 0:00:00
Downloading humanize-4.8.0-py3-none-any.whl (117 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.1/117.1 kB 25.6 MB/s eta 0:00:00
Downloading amqp-5.2.0-py3-none-any.whl (50 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.9/50.9 kB 14.9 MB/s eta 0:00:00
Downloading async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Downloading dnspython-2.4.2-py3-none-any.whl (300 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 300.4/300.4 kB 56.3 MB/s eta 0:00:00
Downloading frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (225 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 225.7/225.7 kB 51.3 MB/s eta 0:00:00
Downloading limits-3.6.0-py3-none-any.whl (42 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.0/43.0 kB 8.8 MB/s eta 0:00:00
Downloading prompt_toolkit-3.0.39-py3-none-any.whl (385 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 385.2/385.2 kB 62.6 MB/s eta 0:00:00
Downloading importlib_resources-6.1.1-py3-none-any.whl (33 kB)
Downloading wcwidth-0.2.9-py2.py3-none-any.whl (102 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 102.3/102.3 kB 24.9 MB/s eta 0:00:00
Building wheels for collected packages: inspire-utils, cron-descriptor, pendulum, python-nvd3, unicodecsv
  Building wheel for inspire-utils (setup.py): started
  Building wheel for inspire-utils (setup.py): finished with status 'done'
  Created wheel for inspire-utils: filename=inspire_utils-3.0.25-py3-none-any.whl size=24080 sha256=311e66d12b59b91d467fa4a7f724b9e1b00275cf07c52f37acd00ebef9a4821a
  Stored in directory: /home/runner/.cache/pip/wheels/a0/2f/3a/52463ef4fbe815ce8e8339a487b9b9ff3fa8a1de6aaaf09e3b
  Building wheel for cron-descriptor (setup.py): started
  Building wheel for cron-descriptor (setup.py): finished with status 'done'
  Created wheel for cron-descriptor: filename=cron_descriptor-1.4.0-py3-none-any.whl size=49836 sha256=98472ac75d67542baf5a3d105b557f[28](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:29)5d69042b08ca3bfa5f162304b882eff6
  Stored in directory: /home/runner/.cache/pip/wheels/98/ff/fb/d908f2[29](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:30)155ad6b65c7a34e9d35774fd1f40579241c3a5f924
  Building wheel for pendulum (pyproject.toml): started
  Building wheel for pendulum (pyproject.toml): finished with status 'done'
  Created wheel for pendulum: filename=pendulum-2.1.2-cp[31](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:32)0-cp310-manylinux_2_35_x86_64.whl size=160033 sha256=691e1a6908bb584217f0ac0f7f6c2265594aa04f17db99c2d1ae0d78969e6a33
  Stored in directory: /home/runner/.cache/pip/wheels/2e/41/ed/f113e4c9dc10f6c846d69f412e9cd9aa429960a3e2e485a4f9
  Building wheel for python-nvd3 (setup.py): started
  Building wheel for python-nvd3 (setup.py): finished with status 'done'
  Created wheel for python-nvd3: filename=python_nvd3-0.15.0-py3-none-any.whl size=38144 sha256=eef5b0161e124d78466aad94d433658ad9a1b5501351747795b7a058259fbb19
  Stored in directory: /home/runner/.cache/pip/wheels/80/e7/4e/d99e473adde7dd21b9938d4d[32](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:33)bf823ca[33](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:34)4e7979632d6a64c
  Building wheel for unicodecsv (setup.py): started
  Building wheel for unicodecsv (setup.py): finished with status 'done'
  Created wheel for unicodecsv: filename=unicodecsv-0.14.1-py3-none-any.whl size=10746 sha256=fcc4b0b812a472949ce76f86b40f92fb75f117bdd0210ec8f623c88defae35ef
  Stored in directory: /home/runner/.cache/pip/wheels/9c/ea/66/8e45247b09052a933eb1a680b7c64802298faba58aac9b[34](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:35)6b
Successfully built inspire-utils cron-descriptor pendulum python-nvd3 unicodecsv
Installing collected packages: webencodings, wcwidth, unicodecsv, text-unidecode, pytz, plyvel, nameparser, lockfile, isbnlib, distlib, cron-descriptor, colorlog, wrapt, vine, urllib3, Unidecode, uc-micro-py, tzdata, typing-extensions, tornado, tomli, termcolor, tenacity, tabulate, structlog, sqlparse, sniffio, six, setproctitle, pyyaml, pytzdata, python-slugify, python-multipart, pyrsistent, pyjwt, pygments, pycparser, psycopg2-binary, psutil, prompt-toolkit, prometheus-client, pluggy, platformdirs, pathspec, packaging, ordered-set, nodeenv, multidict, mdurl, markupsafe, markdown, lxml, lazy-object-proxy, jmespath, itsdangerous, iniconfig, inflection, importlib-resources, idna, identify, humanize, h11, greenlet, graphviz, google-re2, frozenlist, filelock, exceptiongroup, docutils, dnspython, dill, coverage, configupdater, colorama, click, charset-normalizer, cfgv, certifi, cachelib, busypie, blinker, billiard, bcrypt, backoff, babel, attrs, async-timeout, argcomplete, apispec, a2wsgi, yarl, WTForms, werkzeug, virtualenv, sqlalchemy, rfc33[39](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:40)-validator, requests, python-dateutil, python-daemon, pytest, pydantic, prison, orderedmultidict, marshmallow, markdown-it-py, Mako, linkify-it-py, jsonschema, jinja2, idutils, httpcore, gunicorn, email-validator, deprecated, click-repl, click-plugins, click-didyoumean, cffi, cattrs, bleach, asgiref, anyio, amqp, aiosignal, vcrpy, starlette, sqlalchemy-utils, sqlalchemy-jsonfield, rich, requests-toolbelt, requests-mock, python-nvd3, pytest-datadir, pytest-cov, pynacl, pre-commit, pendulum, mdit-py-plugins, marshmallow-sqlalchemy, marshmallow-oneofschema, marshmallow-enum, limits, kombu, inspire-utils, httpx, furl, freezegun, flask, cryptography, croniter, botocore, alembic, aiohttp, s3transfer, rich-argparse, pytest-vcr, paramiko, flask-wtf, Flask-SQLAlchemy, flask-session, flask-login, Flask-Limiter, Flask-JWT-Extended, flask-caching, Flask-Babel, connexion, celery, flower, flask-appbuilder, boto3, apache-airflow-providers-sqlite, apache-airflow-providers-imap, apache-airflow-providers-http, apache-airflow-providers-ftp, apache-airflow-providers-common-sql, apache-airflow, apache-airflow-providers-postgres, apache-airflow-providers-celery
Successfully installed Flask-Babel-2.0.0 Flask-JWT-Extended-4.5.3 Flask-Limiter-3.5.0 Flask-SQLAlchemy-2.5.1 Mako-1.2.4 Unidecode-1.3.7 WTForms-3.1.1 a2wsgi-1.8.0 aiohttp-3.8.6 aiosignal-1.3.1 alembic-1.12.1 amqp-5.2.0 anyio-4.0.0 apache-airflow-2.6.0 apache-airflow-providers-celery-3.4.1 apache-airflow-providers-common-sql-1.8.0 apache-airflow-providers-ftp-3.6.0 apache-airflow-providers-http-4.6.0 apache-airflow-providers-imap-3.4.0 apache-airflow-providers-postgres-5.7.1 apache-airflow-providers-sqlite-3.5.0 apispec-5.2.2 argcomplete-3.1.4 asgiref-3.7.2 async-timeout-4.0.3 attrs-23.1.0 babel-2.13.1 backoff-1.10.0 bcrypt-4.0.1 billiard-4.2.0 bleach-6.0.0 blinker-1.7.0 boto3-1.26.76 botocore-1.29.165 busypie-0.4.5 cachelib-0.9.0 cattrs-23.1.2 celery-5.3.4 certifi-2023.7.22 cffi-1.16.0 cfgv-3.4.0 charset-normalizer-3.3.2 click-8.1.7 click-didyoumean-0.3.0 click-plugins-1.1.1 click-repl-0.3.0 colorama-0.4.6 colorlog-4.8.0 configupdater-3.1.1 connexion-3.0.1 coverage-7.2.4 cron-descriptor-1.4.0 croniter-2.0.1 cryptography-[41](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:42).0.5 deprecated-1.2.14 dill-0.3.7 distlib-0.3.7 dnspython-2.4.2 docutils-0.20.1 email-validator-1.3.1 exceptiongroup-1.1.3 filelock-3.13.1 flask-2.2.5 flask-appbuilder-4.3.0 flask-caching-2.1.0 flask-login-0.6.3 flask-session-0.5.0 flask-wtf-1.2.1 flower-2.0.1 freezegun-1.2.1 frozenlist-1.4.0 furl-2.1.3 google-re2-1.1 graphviz-0.20.1 greenlet-3.0.1 gunicorn-21.2.0 h11-0.14.0 httpcore-1.0.1 httpx-0.25.1 humanize-4.8.0 identify-2.5.31 idna-3.4 idutils-1.2.1 importlib-resources-6.1.1 inflection-0.5.1 iniconfig-2.0.0 inspire-utils-3.0.25 isbnlib-3.10.14 itsdangerous-2.1.2 jinja2-3.1.2 jmespath-1.0.1 jsonschema-4.17.3 kombu-5.3.3 lazy-object-proxy-1.9.0 limits-3.6.0 linkify-it-py-2.0.2 lockfile-0.12.2 lxml-4.9.3 markdown-3.5.1 markdown-it-py-3.0.0 markupsafe-2.1.3 marshmallow-3.20.1 marshmallow-enum-1.5.1 marshmallow-oneofschema-3.0.1 marshmallow-sqlalchemy-0.26.1 mdit-py-plugins-0.4.0 mdurl-0.1.2 multidict-6.0.4 nameparser-0.5.8 nodeenv-1.8.0 ordered-set-4.1.0 orderedmultidict-1.0.1 packaging-23.2 paramiko-3.1.0 pathspec-0.9.0 pendulum-2.1.2 platformdirs-3.11.0 pluggy-1.3.0 plyvel-1.5.0 pre-commit-3.2.2 prison-0.2.1 prometheus-client-0.18.0 prompt-toolkit-3.0.39 psutil-5.9.6 psycopg2-binary-2.9.9 pycparser-2.21 pydantic-1.10.7 pygments-2.16.1 pyjwt-2.8.0 pynacl-1.5.0 pyrsistent-0.20.0 pytest-7.3.1 pytest-cov-4.0.0 pytest-datadir-1.3.1 pytest-vcr-1.0.2 python-daemon-3.0.1 python-dateutil-2.8.2 python-multipart-0.0.6 python-nvd3-0.15.0 python-slugify-8.0.1 pytz-2023.3.post1 pytzdata-2020.1 pyyaml-6.0.1 requests-2.31.0 requests-mock-1.10.0 requests-toolbelt-1.0.0 rfc3339-validator-0.1.4 rich-13.6.0 rich-argparse-1.4.0 s3transfer-0.6.2 setproctitle-1.3.3 six-1.16.0 sniffio-1.3.0 sqlalchemy-1.4.[50](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:51) sqlalchemy-jsonfield-1.0.1.post0 sqlalchemy-utils-0.41.1 sqlparse-0.4.4 starlette-0.32.0.post1 structlog-23.1.0 tabulate-0.9.0 tenacity-8.2.3 termcolor-2.3.0 text-unidecode-1.3 tomli-2.0.1 tornado-6.3.3 typing-extensions-4.8.0 tzdata-[202](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:5:203)3.3 uc-micro-py-[1](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:6:1).0.2 unicodecsv-0.[14](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:6:15).1 urllib3-1.26.18 vcrpy-5.1.0 vine-5.1.0 virtualenv-20.24.6 wcwidth-0.2.9 webencodings-0.5.1 werkzeug-3.0.1 wrapt-1.[15](https://github.com/cern-sis/workflows/actions/runs/6798678353/job/18483300052#step:6:16).0 yarl-1.9.2
ErnestaP commented 7 months ago

Also, I see that the last push to the docker image was done 6 months ago:

Screenshot 2023-11-08 at 14 44 50

while the issue regarding the connexion crash was 2 weeks ago (28th of Oct): https://github.com/apache/airflow/issues/35234

The change regarding the upper version limit was added also 28th of Oct: https://github.com/apache/airflow/blob/f592b2c40bd23a7bb1e3b471e47c5d1968f70a45/setup.cfg

pamfilos commented 7 months ago

FYI the way we have constraints in the requirements file, doesn't work it should be part of the pip install -r req1 -r req2 -c constraints

ErnestaP commented 7 months ago

Are you sure about it?

ErnestaP commented 7 months ago

Just for information: docs how to install constraints: https://pip.pypa.io/en/stable/user_guide/#constraints-files it can be URL: https://github.com/pypa/pip/issues/11955

pamfilos commented 7 months ago

Are you sure about it?

you can check it locally if it has effect (else why have the constraints if they don't constrain )

it should not be part of the requirements-airflow.txt, but part of the pip install command

so:

pip install -r requirements.txt -r requirements-test.txt -r requirements-airflow.txt -c https://raw.githubusercontent.com/apache/airflow/constraints-2.6.0/constraints-3.10.txt
ErnestaP commented 7 months ago

Sadly, I tried before, it didn't work on github actions. you can check the following log:

Collecting connexion>=2.10.0 (from connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 3))
  Downloading connexion-3.0.1-py3-none-any.whl.metadata (12 kB)

However, I found more elegant solution that works: https://stackoverflow.com/questions/34645821/pip-constraints-files Tests are passing: https://github.com/cern-sis/workflows/actions/runs/6799447166/job/18485781699

Please let me know when you will be done with checking. I will prepare the PR for review: squashing the commits, removing comments, etc.

pamfilos commented 7 months ago

Sadly, I tried before, it didn't work on github actions. you can check the following log:

Collecting connexion>=2.10.0 (from connexion[flask]>=2.10.0->apache-airflow==2.6.0->apache-airflow[celery,postgres]==2.6.0->-r requirements-airflow.txt (line 3))
  Downloading connexion-3.0.1-py3-none-any.whl.metadata (12 kB)

However, I found more elegant solution that works: https://stackoverflow.com/questions/34645821/pip-constraints-files Tests are passing: https://github.com/cern-sis/workflows/actions/runs/6799447166/job/18485781699

Please let me know when you will be done with checking. I will prepare the PR for review: squashing the commits, removing comments, etc.

For some reason the action didn't even take into considaration the change for the constraints. see: https://github.com/cern-sis/workflows/pull/180/checks#step:5:5

potiuk commented 7 months ago

Yeah we are using constrainst for many years in Airflow and they are designed to specificlly prevent our users from hitting similar problems (aka reproduciibly install airflow) https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html

I designed and implemented and had a few talks about it and I was actully thinking that some day this approach could make it into a PEP and some common "reproducible installation" mechanism for python packages, but I thought it's really edge case for complex software like Airflow with 670 (!) dependencies in total and being both a library (where you need to keep dependency flexibility) and application (where you want stuff to install reproducibly. I'd love to hear if others have some thought about it :)