From 70def633f16d0eaef80a5c3e12500d394a4d6eba Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Wed, 20 Jan 2021 22:36:57 +0000 Subject: [PATCH 1/3] Replace pipenv with poetry. Update all dependencies --- Makefile | 16 +- lib/galaxy/dependencies/conda-file.sh | 26 -- lib/galaxy/dependencies/dev-requirements.txt | 233 +++++++++++++++++- lib/galaxy/dependencies/lint-requirements.txt | 4 + .../dependencies/pinned-lint-requirements.txt | 11 + .../dependencies/pinned-requirements.txt | 190 +++++++++++++- .../default/pinned-dev-requirements.txt | 74 ------ .../pipfiles/default/pinned-requirements.txt | 194 --------------- .../dependencies/pipfiles/docker/Dockerfile | 15 -- .../dependencies/pipfiles/docker/Makefile | 7 - .../pipfiles/docker/docker_script.sh | 5 - .../dependencies/pipfiles/flake8/Pipfile | 15 -- .../pipfiles/flake8/pinned-requirements.txt | 18 -- lib/galaxy/dependencies/pipfiles/update.sh | 60 ----- lib/galaxy/dependencies/update.sh | 21 ++ .../dependencies/update_lint_requirements.sh | 12 + .../default/Pipfile => pyproject.toml | 147 +++++------ scripts/common_startup.sh | 2 +- tox.ini | 3 +- 19 files changed, 550 insertions(+), 503 deletions(-) delete mode 100755 lib/galaxy/dependencies/conda-file.sh mode change 120000 => 100644 lib/galaxy/dependencies/dev-requirements.txt create mode 100644 lib/galaxy/dependencies/lint-requirements.txt create mode 100644 lib/galaxy/dependencies/pinned-lint-requirements.txt mode change 120000 => 100644 lib/galaxy/dependencies/pinned-requirements.txt delete mode 100644 lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt delete mode 100644 lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt delete mode 100644 lib/galaxy/dependencies/pipfiles/docker/Dockerfile delete mode 100644 lib/galaxy/dependencies/pipfiles/docker/Makefile delete mode 100644 lib/galaxy/dependencies/pipfiles/docker/docker_script.sh delete mode 100644 lib/galaxy/dependencies/pipfiles/flake8/Pipfile delete mode 100644 lib/galaxy/dependencies/pipfiles/flake8/pinned-requirements.txt delete mode 100755 lib/galaxy/dependencies/pipfiles/update.sh create mode 100755 lib/galaxy/dependencies/update.sh create mode 100755 lib/galaxy/dependencies/update_lint_requirements.sh rename lib/galaxy/dependencies/pipfiles/default/Pipfile => pyproject.toml (68%) diff --git a/Makefile b/Makefile index 938f7bf63fd..a2fa6ec4956 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Location of virtualenv used for development. VENV?=.venv # Source virtualenv to execute command (flake8, sphinx, twine, etc...) -IN_VENV=if [ -f $(VENV)/bin/activate ]; then . $(VENV)/bin/activate; fi; +IN_VENV=if [ -f "$(VENV)/bin/activate" ]; then . "$(VENV)/bin/activate"; fi; RELEASE_CURR:=16.01 RELEASE_CURR_MINOR_NEXT:=$(shell $(IN_VENV) python scripts/bootstrap_history.py --print-next-minor-version) RELEASE_NEXT:=16.04 @@ -55,9 +55,6 @@ open-docs: docs _open-docs ## generate Sphinx HTML documentation and open in bro open-project: ## open project on github $(OPEN_RESOURCE) $(PROJECT_URL) -lint: ## check style using tox and flake8 for Python 2 and Python 3 - $(IN_VENV) tox -e py27-lint && tox -e py34-lint - uwsgi-rebuild-validation: ## rebuild uwsgi_config.yml kwalify schema against latest uwsgi master. $(CONFIG_MANAGE) build_uwsgi_yaml @@ -132,14 +129,11 @@ release-check-blocking-prs: ## Check github for release blocking PRs release-bootstrap-history: ## bootstrap history for a new release $(IN_VENV) python scripts/bootstrap_history.py --release $(RELEASE_CURR) -build-dependencies-docker: ## Builds the docker container used for dependency updates - $(MAKE) -C lib/galaxy/dependencies/pipfiles/docker +update-lint-requirements: + ./lib/galaxy/dependencies/update_lint_requirements.sh -update-dependencies: build-dependencies-docker ## update linting + dev dependencies - sh lib/galaxy/dependencies/pipfiles/update.sh -d - -update-and-commit-dependencies: build-dependencies-docker ## update and commit linting + dev dependencies - sh lib/galaxy/dependencies/pipfiles/update.sh -d -c +update-dependencies: update-lint-requirements ## update pinned and dev dependencies + $(IN_VENV) ./lib/galaxy/dependencies/update.sh node-deps: ## Install NodeJS dependencies. ifndef YARN diff --git a/lib/galaxy/dependencies/conda-file.sh b/lib/galaxy/dependencies/conda-file.sh deleted file mode 100755 index e9291c6a2d8..00000000000 --- a/lib/galaxy/dependencies/conda-file.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# -# Conda does not have all of Galaxy's dependencies, and the list of which ones it does is always changing. As a result, -# it's not possible to keep a conda requirements file up to date. However, with Conda >= 4.4, we can use Conda itself to -# determine which dependencies it can install. Pip will be used (upon Galaxy startup) to install the rest. -# -# You should use this script like so: -# -# conda create --override-channels -c conda-forge -c bioconda -c defaults \ -# -n --file <(lib/galaxy/dependencies/conda-file.sh) python=2.7 - -here=$(dirname $0) - -if ! command -v conda >/dev/null; then - printf "$0: command not found: conda\n" >&2 - printf "hint: did you run 'conda activate base'?\n" >&2 - exit 1 -fi - -printf "Filtering out Galaxy requirements not available from Conda:" >&2 -egrep -iv $( \ - conda create --override-channels -c conda-forge -c bioconda -c defaults \ - -n _gx_test_env --dry-run --file <(sed 's/;.*//' $here/pinned-requirements.txt) python=2.7 2>&1 \ - | grep '^\s*-' | grep -v https: | awk '{print $NF}' | paste -s -d'|' \ -) $here/pinned-requirements.txt | sed 's/;.*//' -printf " done\n" >&2 diff --git a/lib/galaxy/dependencies/dev-requirements.txt b/lib/galaxy/dependencies/dev-requirements.txt deleted file mode 120000 index ff2937ac59c..00000000000 --- a/lib/galaxy/dependencies/dev-requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pipfiles/default/pinned-dev-requirements.txt \ No newline at end of file diff --git a/lib/galaxy/dependencies/dev-requirements.txt b/lib/galaxy/dependencies/dev-requirements.txt new file mode 100644 index 00000000000..91a8791ac52 --- /dev/null +++ b/lib/galaxy/dependencies/dev-requirements.txt @@ -0,0 +1,232 @@ +--extra-index-url https://wheels.galaxyproject.org/simple + +adal==1.2.5 +aiofiles==0.6.0 +alabaster==0.7.12; python_version >= "3.5" +amqp==5.0.3; python_version >= "3.6" +appdirs==1.4.4; python_version >= "3.6" +argcomplete==1.12.2; python_version >= "3.6" and python_version < "4" +atomicwrites==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") +attmap==0.12.11 +attrs==20.3.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +babel==2.9.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +bagit==1.7.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.4.0" and python_version < "4" and python_version >= "3.6" +bcrypt==3.2.0; python_version >= "3.6" +bdbag==1.5.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0" and python_version < "4") +beaker==1.11.0 +bioblend==0.14.0; python_version >= "3.5" +bleach==3.2.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +boltons==20.2.1 +boto3==1.16.57 +boto==2.49.0 +botocore==1.19.57 +bx-python==0.8.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +cachecontrol==0.11.7; python_version >= "3.6" and python_version < "4" +cached-property==1.5.2; python_version < "3.8" and python_version >= "3.6" +cachetools==4.2.0; python_version >= "3.5" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") +certifi==2020.12.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +cffi==1.14.4; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +chardet==4.0.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +cheetah3==3.2.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +click==7.1.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +cliff==3.6.0; python_version >= "3.6" +cloudauthz==0.6.0 +cloudbridge==2.1.0 +cmd2==1.4.0; python_version >= "3.6" +colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") +coloredlogs==15.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" +commonmark==0.9.1 +coverage==5.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +cryptography==3.3.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +cwltool==3.0.20201109103151; python_version >= "3.6" and python_version < "4" +dataclasses==0.8; python_version >= "3.6" and python_version < "3.7" +debtcollector==2.2.0; python_version >= "3.6" +decorator==4.4.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.6" +defusedxml==0.7.0rc2; python_version >= "3.0" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.0" +deprecated==1.2.11; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +deprecation==2.1.0 +dictobj==0.4 +docopt==0.6.2 +docutils==0.16; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +dogpile.cache==1.1.1; python_version >= "3.6" +ecdsa==0.14.1; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" +fabric3==1.14.post1 +fastapi-utils==0.2.1; python_version >= "3.6" and python_version < "4.0" +fastapi==0.63.0; python_version >= "3.6" +funcsigs==1.0.2 +future==0.18.2; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +galaxy-sequence-utils==1.1.5 +google-api-core==1.25.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +google-api-python-client==1.12.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +google-auth-httplib2==0.0.4; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +google-auth==1.24.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +googleapis-common-protos==1.52.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +gunicorn==20.0.4; python_version >= "3.4" +gxformat2==0.15.0 +h11==0.12.0; python_version >= "3.6" +h5py==3.1.0; python_version >= "3.6" +httplib2==0.18.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +humanfriendly==9.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" +idna==2.10; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +imagesize==1.2.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.5" +importlib-metadata==3.4.0; python_version < "3.8" and python_version >= "3.6" and (python_version == "3.6" or python_version == "3.7") and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.4.0" and python_version >= "3.6" and python_version < "3.8") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6") +importlib-resources==5.1.0; python_version < "3.7" and python_version >= "3.6" +iniconfig==1.1.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +isa-rwval==0.10.9 +iso8601==0.1.13; python_version >= "3.6" +isodate==0.6.0; python_version >= "3.6" and python_version < "4" +jinja2==2.11.2; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5" +jmespath==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6" +jsonpatch==1.28; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +jsonpointer==2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +keystoneauth1==4.3.0; python_version >= "3.6" +kombu==5.0.2; python_version >= "3.6" +lockfile==0.12.2; python_version >= "3.6" and python_version < "4" +lxml==4.6.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +mako==1.1.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +markdown==3.3.3; python_version >= "3.6" +markupsafe==1.1.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +mercurial==5.6.1 +mirakuru==2.3.0; python_version >= "3.6" +mistune==0.8.4; python_version >= "3.6" and python_version < "4" +msgpack==1.0.2; python_version >= "3.6" +munch==2.5.0; python_version >= "3.6" +mypy-extensions==0.4.3; python_version >= "3.6" and python_version < "4" +netaddr==0.8.0; python_version >= "3.6" +netifaces==0.10.9; python_version >= "3.6" +networkx==1.11; python_version >= "3.6" and python_version < "4" +nodeenv==1.5.0 +nose==1.3.7 +nosehtml==0.4.6 +numpy==1.19.5; python_version >= "3.6" +oauth2client==4.1.3 +oauthlib==3.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +openstacksdk==0.52.0; python_version >= "3.6" +os-client-config==2.1.0; python_version >= "3.6" +os-service-types==1.7.0; python_version >= "3.6" +osc-lib==2.3.1; python_version >= "3.6" +oslo.config==8.4.0; python_version >= "3.6" +oslo.context==3.1.1; python_version >= "3.6" +oslo.i18n==5.0.1; python_version >= "3.6" +oslo.log==4.4.0; python_version >= "3.6" +oslo.serialization==4.0.1; python_version >= "3.6" +oslo.utils==4.7.0; python_version >= "3.6" +oyaml==1.0 +packaging==20.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +paramiko==2.7.2 +parsley==1.3 +paste==3.5.0 +pastedeploy==2.1.1 +pastescript==3.2.0 +pbr==5.5.1; python_version >= "3.6" +pluggy==0.13.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +port-for==0.4; python_version >= "3.6" +prettytable==0.7.2; python_version >= "3.6" +protobuf==3.14.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +prov==1.5.1; python_version >= "3.6" and python_version < "4" +psutil==5.8.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pulsar-galaxy-lib==0.14.0.dev4 +py==1.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +pyasn1-modules==0.2.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +pyasn1==0.4.8; python_version >= "3.5" and python_version < "4" +pycparser==2.20; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +pycryptodome==3.9.9; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pydantic==1.7.3; python_version >= "3.6" and python_version < "4.0" +pydot==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.4.0" +pyeventsystem==0.1.0 +pyfaidx==0.5.9.2 +pygithub==1.54.1; python_version >= "3.6" +pygments==2.7.4; python_version >= "3.5" +pyinotify==0.9.6; sys_platform != "win32" and sys_platform != "darwin" and sys_platform != "sunos5" and python_version >= "3.6" +pyjwt==1.7.1; python_version >= "3.6" +pykwalify==1.8.0 +pynacl==1.4.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +pyparsing==2.4.7; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +pyperclip==1.8.1; python_version >= "3.6" +pyreadline==2.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" and sys_platform == "win32" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" and sys_platform == "win32" +pysam==0.16.0.1 +pytest-cov==2.11.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +pytest-html==3.1.1; python_version >= "3.6" +pytest-metadata==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +pytest-mock==3.5.1; python_version >= "3.5" +pytest-postgresql==2.5.2; python_version >= "3.6" +pytest-pythonpath==0.7.3 +pytest-shard==0.1.2; python_version >= "3.6" +pytest==6.2.1; python_version >= "3.6" +python-dateutil==2.8.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.3.0" +python-irodsclient==0.8.5 +python-jose==3.2.0 +python-keystoneclient==4.1.1; python_version >= "3.6" +python-neutronclient==7.2.1; python_version >= "3.6" +python-novaclient==17.2.1; python_version >= "3.6" +python-swiftclient==3.10.1 +python3-openid==3.2.0; python_version >= "3.0" +pytz==2020.5; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6" +pyuwsgi==2.0.19.1.post0 +pyyaml==5.4.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +rdflib-jsonld==0.5.0; python_version >= "3.6" and python_version < "4" +rdflib==4.2.2; python_version >= "3.6" and python_version < "4" +recommonmark==0.7.1 +refgenconf==0.9.3 +repoze.lru==0.7 +requests-oauthlib==1.3.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +requests-toolbelt==0.9.1; python_version >= "3.5" +requests==2.25.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +requestsexceptions==1.4.0; python_version >= "3.6" +responses==0.12.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +rfc3986==1.4.0; python_version >= "3.6" +routes==2.5.1 +rsa==4.7; python_version >= "3.5" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") +ruamel.yaml.clib==0.2.2; platform_python_implementation == "CPython" and python_version < "3.8" and python_version >= "3.6" +ruamel.yaml==0.16.5; python_version >= "3.6" and python_version < "4" +s3transfer==0.3.4 +schema-salad==7.0.20201119201711; python_version >= "3.6" and python_version < "4" +selenium==3.141.0 +setuptools-scm==5.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +shellescape==3.4.1; python_version >= "3.6" and python_version < "4" +simplejson==3.17.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6" +six==1.15.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version >= "3.6" and python_version < "4" +snowballstemmer==2.1.0; python_version >= "3.5" +social-auth-core==3.3.0 +sortedcontainers==2.3.0 +sphinx-markdown-tables==0.0.15 +sphinx-rtd-theme==0.5.1 +sphinx==3.4.3; python_version >= "3.5" +sphinxcontrib-applehelp==1.0.2; python_version >= "3.5" +sphinxcontrib-devhelp==1.0.2; python_version >= "3.5" +sphinxcontrib-htmlhelp==1.0.3; python_version >= "3.5" +sphinxcontrib-jsmath==1.0.1; python_version >= "3.5" +sphinxcontrib-qthelp==1.0.3; python_version >= "3.5" +sphinxcontrib-serializinghtml==1.1.4; python_version >= "3.5" +sqlalchemy-migrate==0.13.0 +sqlalchemy-utils==0.36.7 +sqlalchemy==1.3.22; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +sqlitedict==1.7.0 +sqlparse==0.4.1; python_version >= "3.5" +starlette==0.13.6; python_version >= "3.6" and python_version < "4.0" +stevedore==3.3.0; python_version >= "3.6" +svgwrite==1.4.1; python_version >= "3.6" +tempita==0.5.2 +tenacity==6.3.1 +testfixtures==6.17.1 +toml==0.10.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +tqdm==4.56.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +twill==2.0.1 +typing-extensions==3.7.4.3; python_version >= "3.6" and python_version < "3.8" +tzlocal==2.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version < "4" +ubiquerg==0.6.1 +unidecode==1.1.2; python_version >= "3.0" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.0" +uritemplate==3.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +urllib3==1.26.2; python_version >= "2.7" and python_full_version < "3.0.0" and python_version != "3.4" or python_full_version >= "3.5.0" and python_version < "4" and python_version != "3.4" +uvicorn==0.13.3 +vine==5.0.0; python_version >= "3.6" +watchdog==1.0.2; python_version >= "3.6" +wcwidth==0.2.5; python_version >= "3.6" +webencodings==0.5.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +webob==1.8.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +whoosh==2.7.4 +wrapt==1.12.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +xmlrunner==1.7.7 +yacman==0.7.0 +zipp==3.4.0; python_version < "3.7" and python_version >= "3.6" +zipstream-new==1.1.8 diff --git a/lib/galaxy/dependencies/lint-requirements.txt b/lib/galaxy/dependencies/lint-requirements.txt new file mode 100644 index 00000000000..98ec924ae6d --- /dev/null +++ b/lib/galaxy/dependencies/lint-requirements.txt @@ -0,0 +1,4 @@ +flake8 +flake8-bugbear +flake8-import-order +mypy diff --git a/lib/galaxy/dependencies/pinned-lint-requirements.txt b/lib/galaxy/dependencies/pinned-lint-requirements.txt new file mode 100644 index 00000000000..62b69cd286d --- /dev/null +++ b/lib/galaxy/dependencies/pinned-lint-requirements.txt @@ -0,0 +1,11 @@ +attrs==20.3.0 +flake8==3.8.4 +flake8-bugbear==20.11.1 +flake8-import-order==0.18.1 +mccabe==0.6.1 +mypy==0.790 +mypy-extensions==0.4.3 +pycodestyle==2.6.0 +pyflakes==2.2.0 +typed-ast==1.4.2 +typing-extensions==3.7.4.3 diff --git a/lib/galaxy/dependencies/pinned-requirements.txt b/lib/galaxy/dependencies/pinned-requirements.txt deleted file mode 120000 index 26ec2b5e875..00000000000 --- a/lib/galaxy/dependencies/pinned-requirements.txt +++ /dev/null @@ -1 +0,0 @@ -pipfiles/default/pinned-requirements.txt \ No newline at end of file diff --git a/lib/galaxy/dependencies/pinned-requirements.txt b/lib/galaxy/dependencies/pinned-requirements.txt new file mode 100644 index 00000000000..0057ce73582 --- /dev/null +++ b/lib/galaxy/dependencies/pinned-requirements.txt @@ -0,0 +1,189 @@ +--extra-index-url https://wheels.galaxyproject.org/simple + +adal==1.2.5 +aiofiles==0.6.0 +amqp==5.0.3; python_version >= "3.6" +appdirs==1.4.4; python_version >= "3.6" +argcomplete==1.12.2; python_version >= "3.6" and python_version < "4" +attmap==0.12.11 +attrs==20.3.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +babel==2.9.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +bagit==1.7.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.4.0" and python_version < "4" and python_version >= "3.6" +bcrypt==3.2.0; python_version >= "3.6" +bdbag==1.5.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0" and python_version < "4") +beaker==1.11.0 +bioblend==0.14.0; python_version >= "3.5" +bleach==3.2.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +boltons==20.2.1 +boto3==1.16.57 +boto==2.49.0 +botocore==1.19.57 +bx-python==0.8.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +cachecontrol==0.11.7; python_version >= "3.6" and python_version < "4" +cached-property==1.5.2; python_version < "3.8" and python_version >= "3.6" +cachetools==4.2.0; python_version >= "3.5" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") +certifi==2020.12.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +cffi==1.14.4; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +chardet==4.0.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +cheetah3==3.2.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +click==7.1.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +cliff==3.6.0; python_version >= "3.6" +cloudauthz==0.6.0 +cloudbridge==2.1.0 +cmd2==1.4.0; python_version >= "3.6" +colorama==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +coloredlogs==15.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" +cryptography==3.3.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" +cwltool==3.0.20201109103151; python_version >= "3.6" and python_version < "4" +dataclasses==0.8; python_version >= "3.6" and python_version < "3.7" +debtcollector==2.2.0; python_version >= "3.6" +decorator==4.4.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.2.0" and python_version >= "3.6" +defusedxml==0.7.0rc2; python_version >= "3.0" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.0" +deprecation==2.1.0 +dictobj==0.4 +docopt==0.6.2 +docutils==0.16; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +dogpile.cache==1.1.1; python_version >= "3.6" +ecdsa==0.14.1; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" +fabric3==1.14.post1 +fastapi-utils==0.2.1; python_version >= "3.6" and python_version < "4.0" +fastapi==0.63.0; python_version >= "3.6" +funcsigs==1.0.2 +future==0.18.2; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +galaxy-sequence-utils==1.1.5 +google-api-core==1.25.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +google-api-python-client==1.12.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +google-auth-httplib2==0.0.4; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +google-auth==1.24.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +googleapis-common-protos==1.52.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +gxformat2==0.15.0 +h11==0.12.0; python_version >= "3.6" +h5py==3.1.0; python_version >= "3.6" +httplib2==0.18.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +humanfriendly==9.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" +idna==2.10; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +importlib-metadata==3.4.0; python_version < "3.8" and python_version >= "3.6" and (python_version == "3.6" or python_version == "3.7") +importlib-resources==5.1.0; python_version < "3.7" and python_version >= "3.6" +isa-rwval==0.10.9 +iso8601==0.1.13; python_version >= "3.6" +isodate==0.6.0; python_version >= "3.6" and python_version < "4" +jmespath==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6" +jsonpatch==1.28; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +jsonpointer==2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +keystoneauth1==4.3.0; python_version >= "3.6" +kombu==5.0.2; python_version >= "3.6" +lockfile==0.12.2; python_version >= "3.6" and python_version < "4" +lxml==4.6.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +mako==1.1.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +markdown==3.3.3; python_version >= "3.6" +markupsafe==1.1.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +mercurial==5.6.1 +mistune==0.8.4; python_version >= "3.6" and python_version < "4" +msgpack==1.0.2; python_version >= "3.6" +munch==2.5.0; python_version >= "3.6" +mypy-extensions==0.4.3; python_version >= "3.6" and python_version < "4" +netaddr==0.8.0; python_version >= "3.6" +netifaces==0.10.9; python_version >= "3.6" +networkx==1.11; python_version >= "3.6" and python_version < "4" +nodeenv==1.5.0 +nose==1.3.7 +numpy==1.19.5; python_version >= "3.6" +oauth2client==4.1.3 +oauthlib==3.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +openstacksdk==0.52.0; python_version >= "3.6" +os-client-config==2.1.0; python_version >= "3.6" +os-service-types==1.7.0; python_version >= "3.6" +osc-lib==2.3.1; python_version >= "3.6" +oslo.config==8.4.0; python_version >= "3.6" +oslo.context==3.1.1; python_version >= "3.6" +oslo.i18n==5.0.1; python_version >= "3.6" +oslo.log==4.4.0; python_version >= "3.6" +oslo.serialization==4.0.1; python_version >= "3.6" +oslo.utils==4.7.0; python_version >= "3.6" +oyaml==1.0 +packaging==20.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +paramiko==2.7.2 +parsley==1.3 +paste==3.5.0 +pastedeploy==2.1.1 +pastescript==3.2.0 +pbr==5.5.1; python_version >= "3.6" +prettytable==0.7.2; python_version >= "3.6" +protobuf==3.14.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +prov==1.5.1; python_version >= "3.6" and python_version < "4" +psutil==5.8.0; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pulsar-galaxy-lib==0.14.0.dev4 +pyasn1-modules==0.2.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" +pyasn1==0.4.8; python_version >= "3.5" and python_version < "4" +pycparser==2.20; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +pycryptodome==3.9.9; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +pydantic==1.7.3; python_version >= "3.6" and python_version < "4.0" +pydot==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.4.0" +pyeventsystem==0.1.0 +pyfaidx==0.5.9.2 +pyinotify==0.9.6; sys_platform != "win32" and sys_platform != "darwin" and sys_platform != "sunos5" and python_version >= "3.6" +pyjwt==1.7.1 +pykwalify==1.8.0 +pynacl==1.4.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +pyparsing==2.4.7; (python_version >= "2.6" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +pyperclip==1.8.1; python_version >= "3.6" +pyreadline==2.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" and sys_platform == "win32" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" and sys_platform == "win32" +pysam==0.16.0.1 +python-dateutil==2.8.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.3.0" +python-jose==3.2.0 +python-keystoneclient==4.1.1; python_version >= "3.6" +python-neutronclient==7.2.1; python_version >= "3.6" +python-novaclient==17.2.1; python_version >= "3.6" +python-swiftclient==3.10.1 +python3-openid==3.2.0; python_version >= "3.0" +pytz==2020.5; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6" +pyuwsgi==2.0.19.1.post0 +pyyaml==5.4.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") +rdflib-jsonld==0.5.0; python_version >= "3.6" and python_version < "4" +rdflib==4.2.2; python_version >= "3.6" and python_version < "4" +refgenconf==0.9.3 +repoze.lru==0.7 +requests-oauthlib==1.3.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +requests-toolbelt==0.9.1; python_version >= "3.5" +requests==2.25.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") +requestsexceptions==1.4.0; python_version >= "3.6" +rfc3986==1.4.0; python_version >= "3.6" +routes==2.5.1 +rsa==4.7; python_version >= "3.5" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") +ruamel.yaml.clib==0.2.2; platform_python_implementation == "CPython" and python_version < "3.8" and python_version >= "3.6" +ruamel.yaml==0.16.5; python_version >= "3.6" and python_version < "4" +s3transfer==0.3.4 +schema-salad==7.0.20201119201711; python_version >= "3.6" and python_version < "4" +setuptools-scm==5.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" +shellescape==3.4.1; python_version >= "3.6" and python_version < "4" +simplejson==3.17.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6" +six==1.15.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version >= "3.6" and python_version < "4" +social-auth-core==3.3.0 +sortedcontainers==2.3.0 +sqlalchemy-migrate==0.13.0 +sqlalchemy-utils==0.36.7 +sqlalchemy==1.3.22; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") +sqlitedict==1.7.0 +sqlparse==0.4.1; python_version >= "3.5" +starlette==0.13.6; python_version >= "3.6" and python_version < "4.0" +stevedore==3.3.0; python_version >= "3.6" +svgwrite==1.4.1; python_version >= "3.6" +tempita==0.5.2 +tenacity==6.3.1 +tqdm==4.56.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +typing-extensions==3.7.4.3; python_version >= "3.6" and python_version < "3.8" +tzlocal==2.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version < "4" +ubiquerg==0.6.1 +unidecode==1.1.2; python_version >= "3.0" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.0" +uritemplate==3.0.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" +urllib3==1.26.2; python_version >= "2.7" and python_full_version < "3.0.0" and python_version != "3.4" or python_full_version >= "3.5.0" and python_version < "4" and python_version != "3.4" +uvicorn==0.13.3 +vine==5.0.0; python_version >= "3.6" +wcwidth==0.2.5; python_version >= "3.6" +webencodings==0.5.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" +webob==1.8.6; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.3.0") +whoosh==2.7.4 +wrapt==1.12.1; python_version >= "3.6" +yacman==0.7.0 +zipp==3.4.0; python_version < "3.7" and python_version >= "3.6" +zipstream-new==1.1.8 diff --git a/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt b/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt deleted file mode 100644 index 99638356df3..00000000000 --- a/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt +++ /dev/null @@ -1,74 +0,0 @@ -# -# These requirements were autogenerated by pipenv -# To regenerate from the project's Pipfile, run: -# -# pipenv lock --requirements --dev-only -# - --i https://wheels.galaxyproject.org/simple ---extra-index-url https://pypi.python.org/simple -alabaster==0.7.12 -attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -babel==2.9.0 -certifi==2020.12.5 -chardet==3.0.4 -commonmark==0.9.1 -coverage==5.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' -deprecated==1.2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -docutils==0.16 -gunicorn==20.0.4 -idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -imagesize==1.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -importlib-metadata==3.1.1; python_version == '3.6' and python_version < '3.8' -iniconfig==1.1.1 -jinja2==2.11.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -markdown==3.3.3 -markupsafe==1.1.1 -mirakuru==2.3.0; python_version >= '3.6' -nose==1.3.7 -nosehtml==0.4.6 -packaging==20.7; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -port-for==0.4 -prettytable==0.7.2 -psutil==5.7.3 -py==1.9.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pygithub==1.54 -pygments==2.7.3; python_version >= '3.5' -pyjwt==1.7.1 -pyparsing==2.4.7 -pytest-cov==2.10.1 -pytest-html==3.1.0 -pytest-metadata==1.11.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' -pytest-mock==3.3.1 -pytest-postgresql==2.5.2 -pytest-pythonpath==0.7.3 -pytest-shard==0.1.1 -pytest==6.1.2 -python-irodsclient==0.8.5 -pytz==2020.4 -recommonmark==0.6.0 -requests==2.24.0 -responses==0.12.1 -selenium==3.141.0 -six==1.15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -snowballstemmer==2.0.0 -sphinx-markdown-tables==0.0.15 -sphinx-rtd-theme==0.5.0 -sphinx==3.3.1 -sphinxcontrib-applehelp==1.0.2; python_version >= '3.5' -sphinxcontrib-devhelp==1.0.2; python_version >= '3.5' -sphinxcontrib-htmlhelp==1.0.3; python_version >= '3.5' -sphinxcontrib-jsmath==1.0.1; python_version >= '3.5' -sphinxcontrib-qthelp==1.0.3; python_version >= '3.5' -sphinxcontrib-serializinghtml==1.1.4; python_version >= '3.5' -testfixtures==6.16.0 -toml==0.10.2; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' -twill==2.0.1 -urllib3==1.25.11; python_version != '3.4' -watchdog==1.0.0 -wcwidth==0.2.5; sys_platform != 'win32' -wrapt==1.12.1 -xmlrunner==1.7.7 -zipp==3.4.0; python_version < '3.8' diff --git a/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt b/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt deleted file mode 100644 index 672dc270335..00000000000 --- a/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt +++ /dev/null @@ -1,194 +0,0 @@ -# -# These requirements were autogenerated by pipenv -# To regenerate from the project's Pipfile, run: -# -# pipenv lock --requirements -# - --i https://wheels.galaxyproject.org/simple ---extra-index-url https://pypi.python.org/simple -adal==1.2.5 -aiofiles==0.6.0 -amqp==5.0.2; python_version >= '3.6' -appdirs==1.4.4 -argcomplete==1.12.2 -attmap==0.12.11 -attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -babel==2.9.0 -bagit==1.7.0 -bcrypt==3.2.0; python_version >= '3.6' -bdbag==1.5.6 -beaker==1.11.0 -bioblend==0.14.0 -bleach==3.2.1 -boltons==20.2.1 -boto3==1.16.33 -boto==2.49.0 -botocore==1.19.33 -bx-python==0.8.9 -cachecontrol==0.11.7 -cached-property==1.5.2; python_version < '3.8' -cachetools==4.1.1; python_version ~= '3.5' -certifi==2020.12.5 -cffi==1.14.4 -chardet==3.0.4 -cheetah3==3.2.6 -click==7.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -cliff==3.5.0; python_version >= '3.6' -cloudauthz==0.6.0 -cloudbridge==2.1.0 -cmd2==1.4.0; python_version >= '3.5' -colorama==0.4.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -coloredlogs==14.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -cryptography==3.3.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' -cwltool==3.0.20201109103151 -dataclasses==0.8; python_version < '3.7' -debtcollector==2.2.0; python_version >= '3.6' -decorator==4.4.2 -defusedxml==0.6.0; python_version >= '3.0' -deprecation==2.1.0 -dictobj==0.4 -docopt==0.6.2 -docutils==0.16 -dogpile.cache==1.1.1; python_version >= '3.6' -ecdsa==0.14.1; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' -fabric3==1.14.post1 -fastapi-utils==0.2.1 -fastapi==0.62.0 -future==0.18.2 -galaxy-sequence-utils==1.1.5 -google-api-core==1.23.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -google-api-python-client==1.12.8; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -google-auth-httplib2==0.0.4 -google-auth==1.23.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -googleapis-common-protos==1.52.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -gxformat2==0.15.0 -h11==0.11.0 -h5py==3.1.0 -httplib2==0.18.1 -humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -importlib-metadata==3.1.1; python_version == '3.6' and python_version < '3.8' -importlib-resources==3.3.0; python_version < '3.7' -isa-rwval==0.10.9 -iso8601==0.1.13 -isodate==0.6.0 -jmespath==0.10.0; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' -jsonpatch==1.28; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -jsonpointer==2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -keystoneauth1==4.3.0; python_version >= '3.6' -kombu==5.0.2 -lockfile==0.12.2 -lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -mako==1.1.3 -markdown==3.3.3 -markupsafe==1.1.1 -mercurial==5.6.1 -mistune==0.8.4 -msgpack==1.0.0 -munch==2.5.0 -mypy-extensions==0.4.3 -netaddr==0.8.0 -netifaces==0.10.9 -networkx==1.11 -nodeenv==1.5.0 -nose==1.3.7 -numpy==1.19.4 -oauth2client==4.1.3 -oauthlib==3.1.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -openstacksdk==0.52.0; python_version >= '3.6' -os-client-config==2.1.0 -os-service-types==1.7.0 -osc-lib==2.3.0; python_version >= '3.6' -oslo.config==8.4.0; python_version >= '3.6' -oslo.context==3.1.1; python_version >= '3.6' -oslo.i18n==5.0.1; python_version >= '3.6' -oslo.log==4.4.0; python_version >= '3.6' -oslo.serialization==4.0.1; python_version >= '3.6' -oslo.utils==4.7.0; python_version >= '3.6' -oyaml==1.0 -packaging==20.7; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -paramiko==2.7.2 -parsley==1.3 -paste==3.5.0 -pastedeploy==2.1.1 -pastescript==3.2.0 -pbr==5.5.1; python_version >= '2.6' -prettytable==0.7.2 -protobuf==3.14.0 -prov==1.5.1 -psutil==5.7.3 -pulsar-galaxy-lib==0.14.0.dev4 -pyasn1-modules==0.2.8 -pyasn1==0.4.8 -pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pycryptodome==3.9.9 -pydantic==1.7.3; python_version >= '3.6' -pydot==1.4.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyeventsystem==0.1.0 -pyfaidx==0.5.9.2 -pyinotify==0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and sys_platform != 'sunos5' -pyjwt==1.7.1 -pykwalify==1.7.0 -pynacl==1.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyparsing==2.4.7 -pyperclip==1.8.1 -pysam==0.16.0.1 -python-dateutil==2.8.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -python-jose==3.2.0 -python-keystoneclient==4.1.1; python_version >= '3.6' -python-neutronclient==7.2.1; python_version >= '3.6' -python-novaclient==17.2.1; python_version >= '3.6' -python-swiftclient==3.10.1 -python3-openid==3.2.0; python_version >= '3.0' -pytz==2020.4 -pyuwsgi==2.0.19.1.post0 -pyyaml==5.3.1 -rdflib-jsonld==0.5.0 -rdflib==4.2.2 -refgenconf==0.9.3 -repoze.lru==0.7 -requests-oauthlib==1.3.0 -requests-toolbelt==0.9.1 -requests==2.24.0 -requestsexceptions==1.4.0 -rfc3986==1.4.0 -routes==2.5.1 -rsa==4.6; python_version >= '3.5' -ruamel.yaml.clib==0.2.2; python_version < '3.8' and platform_python_implementation == 'CPython' -ruamel.yaml==0.16.5 -s3transfer==0.3.3 -schema-salad==7.0.20201119201711; python_version >= '3.6' -setuptools-scm==4.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -shellescape==3.4.1 -simplejson==3.17.2; python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2, 3.3' -six==1.15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -social-auth-core[openidconnect]==3.3.0 -sortedcontainers==2.3.0 -sqlalchemy-migrate==0.13.0 -sqlalchemy-utils==0.36.7 -sqlalchemy==1.3.20 -sqlitedict==1.7.0 -sqlparse==0.4.1 -starlette==0.13.6; python_version >= '3.6' -stevedore==3.3.0; python_version >= '3.6' -svgwrite==1.4 -tempita==0.5.2 -tenacity==6.2.0 -tqdm==4.54.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -typing-extensions==3.7.4.3; python_version < '3.8' -tzlocal==2.1 -ubiquerg==0.6.1 -unidecode==1.1.1; python_version >= '3.0' -uritemplate==3.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -urllib3==1.25.11; python_version != '3.4' -uvicorn==0.13.0 -vine==5.0.0; python_version >= '3.6' -wcwidth==0.2.5; sys_platform != 'win32' -webencodings==0.5.1 -webob==1.8.6 -whoosh==2.7.4 -wrapt==1.12.1 -yacman==0.7.0 -zipp==3.4.0; python_version < '3.8' -zipstream-new==1.1.8 diff --git a/lib/galaxy/dependencies/pipfiles/docker/Dockerfile b/lib/galaxy/dependencies/pipfiles/docker/Dockerfile deleted file mode 100644 index be4763d5186..00000000000 --- a/lib/galaxy/dependencies/pipfiles/docker/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.6 - -ENV DEBIAN_FRONTEND noninteractive -ENV LC_ALL C.UTF-8 -ENV LANG C.UTF-8 - -# Install Pipenv -RUN apt-get update && apt-get -y upgrade -RUN pip install pipenv - -ADD docker_script.sh /docker_script.sh - -WORKDIR /working - -CMD bash /docker_script.sh diff --git a/lib/galaxy/dependencies/pipfiles/docker/Makefile b/lib/galaxy/dependencies/pipfiles/docker/Makefile deleted file mode 100644 index 64560d35f8e..00000000000 --- a/lib/galaxy/dependencies/pipfiles/docker/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - if ! docker inspect galaxy/update-python-dependencies >/dev/null 2>&1; then \ - docker build --no-cache -t galaxy/update-python-dependencies .; \ - fi - -clean: - docker rmi --force galaxy/update-python-dependencies diff --git a/lib/galaxy/dependencies/pipfiles/docker/docker_script.sh b/lib/galaxy/dependencies/pipfiles/docker/docker_script.sh deleted file mode 100644 index 0f6e7dd8b41..00000000000 --- a/lib/galaxy/dependencies/pipfiles/docker/docker_script.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -pipenv lock -v -pipenv lock -r > pinned-requirements.txt -pipenv lock -r --dev-only > pinned-dev-requirements.txt diff --git a/lib/galaxy/dependencies/pipfiles/flake8/Pipfile b/lib/galaxy/dependencies/pipfiles/flake8/Pipfile deleted file mode 100644 index 37e5ba2e60b..00000000000 --- a/lib/galaxy/dependencies/pipfiles/flake8/Pipfile +++ /dev/null @@ -1,15 +0,0 @@ -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - -[dev-packages] - - -[packages] -flake8 = "*" -flake8-bugbear = "*" -flake8-import-order = "*" - -[requires] -python_version = "3.6" diff --git a/lib/galaxy/dependencies/pipfiles/flake8/pinned-requirements.txt b/lib/galaxy/dependencies/pipfiles/flake8/pinned-requirements.txt deleted file mode 100644 index 2f35a72138d..00000000000 --- a/lib/galaxy/dependencies/pipfiles/flake8/pinned-requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -# -# These requirements were autogenerated by pipenv -# To regenerate from the project's Pipfile, run: -# -# pipenv lock --requirements -# - --i https://pypi.python.org/simple -attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -flake8-bugbear==20.11.1 -flake8-import-order==0.18.1 -flake8==3.8.4 -importlib-metadata==3.1.1; python_version < '3.8' -mccabe==0.6.1 -pycodestyle==2.6.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyflakes==2.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -typing-extensions==3.7.4.3; python_version < '3.8' -zipp==3.4.0; python_version >= '3.6' diff --git a/lib/galaxy/dependencies/pipfiles/update.sh b/lib/galaxy/dependencies/pipfiles/update.sh deleted file mode 100755 index 18f03853393..00000000000 --- a/lib/galaxy/dependencies/pipfiles/update.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -set -e - -usage() { -cat << EOF -Usage: ${0##*/} [-c] [-d] - -Use pipenv to regenerate locked and hashed versions of Galaxy dependencies. -Use -c to automatically commit these changes (be sure you have no staged git -changes). -Use -d to rebuild with Pipenv from the galaxy/update-python-dependencies -container. This container can be built by running 'make' from the docker -subdirectory. - -EOF -} - -commit=0 -docker=0 -while getopts ":hcd" opt; do - case "$opt" in - c) - commit=1 - ;; - d) - docker=1 - ;; - h) - usage - exit 0 - ;; - *) - usage >&2 - exit 1 - ;; - esac -done - -THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)" -ENVS="flake8 -default" - -export PIPENV_IGNORE_VIRTUALENVS=1 -for env in $ENVS; do - cd "$THIS_DIRECTORY/$env" - if [ "$docker" -eq 1 ]; then - docker run -v "$(pwd):/working" -t 'galaxy/update-python-dependencies' - else - sh ../docker/docker_script.sh - fi - - if ! grep '==' pinned-dev-requirements.txt ; then - rm -f pinned-dev-requirements.txt - fi -done - -if [ "$commit" -eq 1 ]; then - git add -u "$THIS_DIRECTORY" - git commit -m "Rev and re-lock Galaxy dependencies" -fi diff --git a/lib/galaxy/dependencies/update.sh b/lib/galaxy/dependencies/update.sh new file mode 100755 index 00000000000..b874c9abf07 --- /dev/null +++ b/lib/galaxy/dependencies/update.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +# You can pass one or more package specifications to this script to add only +# them without updating all the rest of the requirements. + +if [ -z "$VIRTUAL_ENV" ]; then + echo "Please run this script inside a virtual environment!" + exit 1 +fi + +THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)" + +pip install --upgrade pip setuptools poetry +if [ $# -gt 0 ]; then + poetry add --lock "$@" +else + poetry update -vv --lock +fi +poetry export -f requirements.txt --without-hashes --output "$THIS_DIRECTORY/pinned-requirements.txt" +poetry export --dev -f requirements.txt --without-hashes --output "$THIS_DIRECTORY/dev-requirements.txt" diff --git a/lib/galaxy/dependencies/update_lint_requirements.sh b/lib/galaxy/dependencies/update_lint_requirements.sh new file mode 100755 index 00000000000..53fc1293b06 --- /dev/null +++ b/lib/galaxy/dependencies/update_lint_requirements.sh @@ -0,0 +1,12 @@ +#!/bin/sh +set -e + +THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)" + +LINT_VENV=$(mktemp -d "${TMPDIR:-/tmp}/lint_venv.XXXXXXXXXX") +virtualenv -p python3 "${LINT_VENV}" +. "${LINT_VENV}/bin/activate" +pip install --upgrade pip setuptools +pip install -r "${THIS_DIRECTORY}/lint-requirements.txt" +pip freeze -l > "${THIS_DIRECTORY}/pinned-lint-requirements.txt" +rm -rf "${LINT_VENV}" diff --git a/lib/galaxy/dependencies/pipfiles/default/Pipfile b/pyproject.toml similarity index 68% rename from lib/galaxy/dependencies/pipfiles/default/Pipfile rename to pyproject.toml index fc391f87850..ed7b211549e 100644 --- a/lib/galaxy/dependencies/pipfiles/default/Pipfile +++ b/pyproject.toml @@ -1,14 +1,79 @@ -[[source]] -url = "https://wheels.galaxyproject.org/simple" -verify_ssl = true +[tool.poetry] name = "galaxy" +version = "21.01" +description = "Galaxy is an open, web-based platform for accessible, reproducible, and transparent computational research." +authors = ["Galaxy Contributors"] +license = "AFL-3.0" +readme = "README.rst" +homepage = "https://galaxyproject.org/" +repository = "https://github.com/galaxyproject/galaxy/" +documentation = "https://docs.galaxyproject.org/" -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" +[[tool.poetry.source]] +name = "galaxyproject" +url = "https://wheels.galaxyproject.org/simple" -[dev-packages] +[tool.poetry.dependencies] +aiofiles = "*" +Babel = "*" +bdbag = "*" +Beaker = "1.11.0" +bioblend = "*" +bleach = "*" +boltons = "*" +boto = "*" +bx-python = "*" +Cheetah3 = "*" +cloudauthz = "==0.6.0" +cloudbridge = "*" +cwltool = "==3.0.20201109103151" +dictobj = "*" +docutils = "*" +Fabric3 = "*" +fastapi = "*" +fastapi-utils = "*" +future = "*" +galaxy_sequence_utils = "*" +gxformat2 = "*" +h5py = "!=2.7.0, !=2.7.1" +isa-rwval = "*" +kombu = "*" +Mako = "*" +Markdown = "*" +MarkupSafe = "*" +Mercurial = "*" +nodeenv = "*" +nose = "*" +numpy = "*" +paramiko = "*" +Parsley = "*" +Paste = "*" +psutil = "*" +pulsar-galaxy-lib = "==0.14.0.dev4" +pycryptodome = "*" +pykwalify = "*" +pyparsing = "*" +pysam = "*" +python = "^3.6" +pyuwsgi = "*" +PyYAML = "*" +refgenconf = ">=0.7.0" +requests = "*" +Routes = "*" +social-auth-core = {version = "==3.3.0", extras = ["openidconnect"]} +sortedcontainers = "*" +SQLAlchemy = "*" +sqlalchemy-migrate = "*" +SQLAlchemy-Utils = "!=0.36.8" # https://github.com/kvesteri/sqlalchemy-utils/issues/462 +sqlitedict = "*" +sqlparse = "*" +svgwrite = "*" +uvicorn = "*" +WebOb = "*" +Whoosh = "*" +zipstream-new = "*" + +[tool.poetry.dev-dependencies] gunicorn = "*" lxml = "!=4.2.2" NoseHTML = "*" @@ -16,6 +81,7 @@ pygithub = "*" pytest = "*" pytest-cov = "*" pytest-html = "*" +python-irodsclient = "*" pytest-mock = "*" pytest-pythonpath = "*" pytest-postgresql = "*" @@ -29,68 +95,3 @@ sphinx_rtd_theme = "*" testfixtures = "*" twill = "*" watchdog = "*" -python-irodsclient = "*" - -[packages] -numpy = "*" -bx-python = "*" -MarkupSafe = "*" -Markdown = "*" -# Optional requirement for markdown export. -# Weasyprint = "==0.42" -PyYAML = "*" -SQLAlchemy = "*" -SQLAlchemy-Utils = "!=0.36.8" # https://github.com/kvesteri/sqlalchemy-utils/issues/462 -Mercurial = "*" -nodeenv = "*" -pycryptodome = "*" -pyuwsgi = "*" -pysam = "*" -bdbag = "*" -bleach = "*" -cwltool = "==3.0.20201109103151" -isa-rwval = "*" -boltons = "*" -Paste = "*" -docutils = "*" -uvicorn = "*" -fastapi = "*" -fastapi-utils = "*" -aiofiles = "*" -Routes = "*" -WebOb = "*" -Mako = "*" -Babel = "*" -Beaker = "*" -dictobj = "*" -nose = "*" -Parsley = "*" -sortedcontainers = "*" -Whoosh = "*" -galaxy_sequence_utils = "*" -h5py = "!=2.7.0, !=2.7.1" -pykwalify = "*" -"Cheetah3" = "*" -requests = "<2.25" # PyGitHub 1.54 requires requests < 2.25 -bioblend = "*" -boto = "*" -kombu = "*" -psutil = "*" -pulsar-galaxy-lib = "==0.14.0.dev4" -sqlalchemy-migrate = "*" -sqlitedict = "*" -sqlparse = "*" -svgwrite = "*" -pyparsing = "*" -"Fabric3" = "*" -paramiko = "*" -cloudbridge = "*" -social-auth-core = {version = "==3.3.0", extras = ['openidconnect']} -cloudauthz = "==0.6.0" -gxformat2 = "*" -refgenconf = ">=0.7.0" -future = "*" -zipstream-new = "*" - -[requires] -python_version = "3.6" diff --git a/scripts/common_startup.sh b/scripts/common_startup.sh index bba0815904b..5902644992c 100755 --- a/scripts/common_startup.sh +++ b/scripts/common_startup.sh @@ -192,7 +192,7 @@ fi requirement_args="-r requirements.txt" if [ $DEV_WHEELS -eq 1 ]; then - requirement_args="$requirement_args -r ${GALAXY_DEV_REQUIREMENTS}" + requirement_args="-r ${GALAXY_DEV_REQUIREMENTS}" fi [ "$CI" = 'true' ] && export PIP_PROGRESS_BAR=off diff --git a/tox.ini b/tox.ini index bbbdc82dc0c..0c67927158b 100644 --- a/tox.ini +++ b/tox.ini @@ -28,9 +28,8 @@ setenv = check_indexes: GALAXY_TEST_FORCE_DATABASE_MIGRATION=1 check_indexes: GALAXY_SKIP_CLIENT_BUILD=1 deps = - lint,lint_docstring,lint_docstring_include_list: -rlib/galaxy/dependencies/pipfiles/flake8/pinned-requirements.txt + lint,lint_docstring,lint_docstring_include_list,mypy: -rlib/galaxy/dependencies/pinned-lint-requirements.txt unit: mock-ssh-server - mypy: mypy [testenv:mulled] commands = bash run_tests.sh --skip-venv -u test/unit/tool_util/mulled From 582398d35afd20961fa562c670c2fb1ca19d1e5f Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 20 Jan 2021 09:42:08 -0500 Subject: [PATCH 2/3] Fix jwt usage for 2.0 compat --- lib/galaxy/authnz/custos_authnz.py | 6 +++--- lib/galaxy/webapps/galaxy/controllers/authnz.py | 2 +- test/unit/authnz/test_custos_authnz.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/authnz/custos_authnz.py b/lib/galaxy/authnz/custos_authnz.py index 32180411516..39c5b5d3653 100644 --- a/lib/galaxy/authnz/custos_authnz.py +++ b/lib/galaxy/authnz/custos_authnz.py @@ -77,7 +77,7 @@ class CustosAuthnz(IdentityProvider): # Get nonce from token['id_token'] and validate. 'nonce' in the # id_token is a hash of the nonce stored in the NONCE_COOKIE_NAME # cookie. - id_token_decoded = jwt.decode(id_token, verify=False) + id_token_decoded = jwt.decode(id_token, options={"verify_signature": False}) nonce_hash = id_token_decoded['nonce'] self._validate_nonce(trans, nonce_hash) @@ -144,7 +144,7 @@ class CustosAuthnz(IdentityProvider): # Get nonce from token['id_token'] and validate. 'nonce' in the # id_token is a hash of the nonce stored in the NONCE_COOKIE_NAME # cookie. - userinfo = jwt.decode(id_token, verify=False) + userinfo = jwt.decode(id_token, options={"verify_signature": False}) # Get userinfo and create Galaxy user record email = userinfo['email'] @@ -180,7 +180,7 @@ class CustosAuthnz(IdentityProvider): raise Exception("User is not associated with provider {}".format(self.config["provider"])) if len(provider_tokens) > 1: for idx, token in enumerate(provider_tokens): - id_token_decoded = jwt.decode(token.id_token, verify=False) + id_token_decoded = jwt.decode(token.id_token, options={"verify_signature": False}) if (id_token_decoded['email'] == email): index = idx trans.sa_session.delete(provider_tokens[index]) diff --git a/lib/galaxy/webapps/galaxy/controllers/authnz.py b/lib/galaxy/webapps/galaxy/controllers/authnz.py index 8b28a5f44e9..f3b11fcde4b 100644 --- a/lib/galaxy/webapps/galaxy/controllers/authnz.py +++ b/lib/galaxy/webapps/galaxy/controllers/authnz.py @@ -42,7 +42,7 @@ class OIDC(JSAppLauncher): rtv.append({'id': trans.app.security.encode_id(authnz.id), 'provider': authnz.provider, 'email': authnz.uid}) # Add cilogon and custos identities for token in trans.user.custos_auth: - userinfo = jwt.decode(token.id_token, verify=False) + userinfo = jwt.decode(token.id_token, options={"verify_signature": False}) rtv.append({'id': trans.app.security.encode_id(token.id), 'provider': token.provider, 'email': userinfo['email']}) return rtv diff --git a/test/unit/authnz/test_custos_authnz.py b/test/unit/authnz/test_custos_authnz.py index 2b71f40d16b..c74de23feea 100644 --- a/test/unit/authnz/test_custos_authnz.py +++ b/test/unit/authnz/test_custos_authnz.py @@ -83,7 +83,7 @@ class CustosAuthnzTestCase(unittest.TestCase): @property def test_id_token(self): - return jwt.encode({'nonce': self.test_nonce_hash}, key=None, algorithm=None).decode() + return jwt.encode({'nonce': self.test_nonce_hash}, key=None, algorithm=None) def mock_create_oauth2_session(self, custos_authnz): orig_create_oauth2_session = custos_authnz._create_oauth2_session @@ -365,7 +365,7 @@ class CustosAuthnzTestCase(unittest.TestCase): 'email': self.test_email, 'preferred_username': self.test_username, 'sub': self.test_sub}, - key=None, algorithm=None).decode() + key=None, algorithm=None) self._raw_token = { "access_token": self.test_access_token, From 4339fd72c08201f67a40c90171d7b80ad7df9b9f Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Thu, 21 Jan 2021 20:28:57 +0000 Subject: [PATCH 3/3] Make tests work with both PyJWT 1.7.1 and 2.0.1 --- test/unit/authnz/test_custos_authnz.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/unit/authnz/test_custos_authnz.py b/test/unit/authnz/test_custos_authnz.py index c74de23feea..4a201a5cd9f 100644 --- a/test/unit/authnz/test_custos_authnz.py +++ b/test/unit/authnz/test_custos_authnz.py @@ -15,6 +15,7 @@ import requests from galaxy.authnz import custos_authnz from galaxy.model import CustosAuthnzToken, User +from galaxy.util import unicodify from ..unittest_utils.galaxy_mock import MockTrans @@ -83,7 +84,7 @@ class CustosAuthnzTestCase(unittest.TestCase): @property def test_id_token(self): - return jwt.encode({'nonce': self.test_nonce_hash}, key=None, algorithm=None) + return unicodify(jwt.encode({'nonce': self.test_nonce_hash}, key=None, algorithm=None)) def mock_create_oauth2_session(self, custos_authnz): orig_create_oauth2_session = custos_authnz._create_oauth2_session @@ -360,12 +361,12 @@ class CustosAuthnzTestCase(unittest.TestCase): ) self.assertEqual(0, len(self.trans.sa_session.items)) - test_id_token = jwt.encode({ + test_id_token = unicodify(jwt.encode({ 'nonce': self.test_nonce_hash, 'email': self.test_email, 'preferred_username': self.test_username, - 'sub': self.test_sub}, - key=None, algorithm=None) + 'sub': self.test_sub + }, key=None, algorithm=None)) self._raw_token = { "access_token": self.test_access_token,