Started by timer Running as SYSTEM Building remotely on Ubuntu_18.04_bioeng49 (buildslave Testing) in workspace /home/cmiss/Jenkins/workspace/SPARC-API-DEV [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] Done The recommended git tool is: NONE No credentials specified Cloning the remote Git repository Cloning repository https://github.com/nih-sparc/sparc-api.git > git init /home/cmiss/Jenkins/workspace/SPARC-API-DEV # timeout=10 Fetching upstream changes from https://github.com/nih-sparc/sparc-api.git > git --version # timeout=10 > git --version # 'git version 2.25.1' > git fetch --tags --force --progress -- https://github.com/nih-sparc/sparc-api.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url https://github.com/nih-sparc/sparc-api.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 Avoid second fetch > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision 5811603cf0fd89bceac76a035f181d268445a7bf (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 5811603cf0fd89bceac76a035f181d268445a7bf # timeout=10 Commit message: "Merge pull request #290 from nih-sparc/updating-to-mailersend" > git rev-list --no-walk 5811603cf0fd89bceac76a035f181d268445a7bf # timeout=10 [SPARC-API-DEV] $ /bin/bash /tmp/jenkins4815904977858651867.sh Requirement already satisfied: algoliasearch==2.6.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (2.6.2) Requirement already satisfied: api==0.0.7 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (0.0.7) Requirement already satisfied: APScheduler==3.7.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (3.7.0) Requirement already satisfied: boto3==1.26 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 4)) (1.26.0) Requirement already satisfied: botocore==1.29.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 5)) (1.29.0) Requirement already satisfied: certifi==2023.5.7 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 6)) (2023.5.7) Requirement already satisfied: chardet==3.0.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 7)) (3.0.4) Collecting Click==7.1.2 (from -r requirements.txt (line 8)) Using cached click-7.1.2-py2.py3-none-any.whl.metadata (2.9 kB) Requirement already satisfied: contentful==1.13.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 9)) (1.13.1) Requirement already satisfied: contentful_management==2.11.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 10)) (2.11.0) Requirement already satisfied: docutils==0.15.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 11)) (0.15.2) Requirement already satisfied: Flask==1.1.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 12)) (1.1.1) Requirement already satisfied: Flask-Caching==2.3.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 13)) (2.3.0) Requirement already satisfied: Flask-Cors==3.0.8 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 14)) (3.0.8) Requirement already satisfied: flask-marshmallow==0.10.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 15)) (0.10.1) Requirement already satisfied: google-api-python-client==2.52.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 16)) (2.52.0) Requirement already satisfied: gspread==6.2.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 17)) (6.2.1) Requirement already satisfied: gunicorn==20.0.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 18)) (20.0.4) Requirement already satisfied: httpx>=0.27.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 19)) (0.28.1) Requirement already satisfied: hubspot-api-client==9.0.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 20)) (9.0.0) Requirement already satisfied: idna==2.8 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 21)) (2.8) Requirement already satisfied: itsdangerous==1.1.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 22)) (1.1.0) Requirement already satisfied: Jinja2==2.11.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 23)) (2.11.3) Requirement already satisfied: jmespath==0.9.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 24)) (0.9.4) Requirement already satisfied: mailersend==0.5.8 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 25)) (0.5.8) Requirement already satisfied: MarkupSafe==1.1.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 26)) (1.1.1) Requirement already satisfied: markdown==3.8 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 27)) (3.8) Requirement already satisfied: marshmallow==3.2.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 28)) (3.2.2) Requirement already satisfied: nose==1.3.7 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 29)) (1.3.7) Requirement already satisfied: oauth2client==4.1.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 30)) (4.1.3) Requirement already satisfied: osparc==0.4.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 31)) (0.4.3) Requirement already satisfied: Pennsieve==6.1.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 32)) (6.1.1) Requirement already satisfied: Pennsieve2==0.1.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 33)) (0.1.2) Requirement already satisfied: Pillow in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 34)) (11.2.1) Requirement already satisfied: psycopg2-binary==2.9.10 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 35)) (2.9.10) Requirement already satisfied: public==2019.4.13 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 36)) (2019.4.13) Requirement already satisfied: pytest in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 37)) (8.4.1) Requirement already satisfied: pymongo==3.8.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 38)) (3.8.0) Requirement already satisfied: python-dateutil==2.8.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 39)) (2.8.2) Requirement already satisfied: python-dotenv==0.10.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 40)) (0.10.3) Requirement already satisfied: query-string==2019.4.13 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 41)) (2019.4.13) Requirement already satisfied: requests==2.31.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 42)) (2.31.0) Requirement already satisfied: s3transfer==0.6.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 43)) (0.6.0) Requirement already satisfied: six==1.13.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 44)) (1.13.0) Requirement already satisfied: SQLAlchemy==2.0.40 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 45)) (2.0.40) Requirement already satisfied: urllib3==1.26.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 46)) (1.26.4) Requirement already satisfied: Werkzeug==0.16.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements.txt (line 47)) (0.16.0) Requirement already satisfied: charset-normalizer<4,>=2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests==2.31.0->-r requirements.txt (line 42)) (3.4.2) Requirement already satisfied: setuptools>=0.7 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from APScheduler==3.7.0->-r requirements.txt (line 3)) (80.3.1) Requirement already satisfied: pytz in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from APScheduler==3.7.0->-r requirements.txt (line 3)) (2025.2) Requirement already satisfied: tzlocal~=2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from APScheduler==3.7.0->-r requirements.txt (line 3)) (2.1) Requirement already satisfied: cachelib<0.10.0,>=0.9.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Flask-Caching==2.3.0->-r requirements.txt (line 13)) (0.9.0) Requirement already satisfied: httplib2<1dev,>=0.15.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-python-client==2.52.0->-r requirements.txt (line 16)) (0.22.0) Requirement already satisfied: google-auth<3.0.0dev,>=1.19.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-python-client==2.52.0->-r requirements.txt (line 16)) (2.40.0) Requirement already satisfied: google-auth-httplib2>=0.1.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-python-client==2.52.0->-r requirements.txt (line 16)) (0.2.0) Requirement already satisfied: google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0dev,>=1.31.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-python-client==2.52.0->-r requirements.txt (line 16)) (2.25.0rc0) Requirement already satisfied: uritemplate<5,>=3.0.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-python-client==2.52.0->-r requirements.txt (line 16)) (4.1.1) Requirement already satisfied: google-auth-oauthlib>=0.4.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from gspread==6.2.1->-r requirements.txt (line 17)) (1.2.2) Requirement already satisfied: pyasn1>=0.1.7 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from oauth2client==4.1.3->-r requirements.txt (line 30)) (0.6.1) Requirement already satisfied: pyasn1-modules>=0.0.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from oauth2client==4.1.3->-r requirements.txt (line 30)) (0.4.2) Requirement already satisfied: rsa>=3.1.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from oauth2client==4.1.3->-r requirements.txt (line 30)) (4.0) Requirement already satisfied: configparser>=3.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (7.2.0) Requirement already satisfied: deprecated>=1.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (1.2.18) Requirement already satisfied: future>=0.15.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (1.0.0) Requirement already satisfied: futures in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (3.0.5) Requirement already satisfied: protobuf>=3.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (4.25.7) Requirement already satisfied: python-jose==3.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (3.2.0) Requirement already satisfied: semver>=2.8.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (3.0.4) Requirement already satisfied: websocket-client>=0.57.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (1.8.0) Requirement already satisfied: docopt>=0.6 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (0.6.2) Requirement already satisfied: psutil>=5.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve==6.1.1->-r requirements.txt (line 32)) (7.0.0) Requirement already satisfied: grpcio<2.0,>=1.51 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve2==0.1.2->-r requirements.txt (line 33)) (1.71.0) Requirement already satisfied: grpcio_tools<2.0,>=1.51 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve2==0.1.2->-r requirements.txt (line 33)) (1.62.3) Requirement already satisfied: pyjwt<3.0,>=2.6 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve2==0.1.2->-r requirements.txt (line 33)) (2.10.1) Requirement already satisfied: tqdm<5.0,>=4.64 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from Pennsieve2==0.1.2->-r requirements.txt (line 33)) (4.67.1) Requirement already satisfied: greenlet>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from SQLAlchemy==2.0.40->-r requirements.txt (line 45)) (3.2.1) Requirement already satisfied: typing-extensions>=4.6.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from SQLAlchemy==2.0.40->-r requirements.txt (line 45)) (4.13.2) Requirement already satisfied: ecdsa<0.15 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from python-jose==3.2.0->Pennsieve==6.1.1->-r requirements.txt (line 32)) (0.14.1) Requirement already satisfied: googleapis-common-protos<2.0.0,>=1.56.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0dev,>=1.31.5->google-api-python-client==2.52.0->-r requirements.txt (line 16)) (1.70.0) Requirement already satisfied: proto-plus<2.0.0,>=1.22.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0dev,>=1.31.5->google-api-python-client==2.52.0->-r requirements.txt (line 16)) (1.26.1) Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-auth<3.0.0dev,>=1.19.0->google-api-python-client==2.52.0->-r requirements.txt (line 16)) (5.5.2) Requirement already satisfied: pyparsing!=3.0.0,!=3.0.1,!=3.0.2,!=3.0.3,<4,>=2.4.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from httplib2<1dev,>=0.15.0->google-api-python-client==2.52.0->-r requirements.txt (line 16)) (3.2.3) Requirement already satisfied: anyio in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from httpx>=0.27.0->-r requirements.txt (line 19)) (4.9.0) Requirement already satisfied: httpcore==1.* in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from httpx>=0.27.0->-r requirements.txt (line 19)) (1.0.9) Requirement already satisfied: h11>=0.16 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from httpcore==1.*->httpx>=0.27.0->-r requirements.txt (line 19)) (0.16.0) Requirement already satisfied: exceptiongroup>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (1.2.2) Requirement already satisfied: iniconfig>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (2.1.0) Requirement already satisfied: packaging>=20 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (25.0) Requirement already satisfied: pluggy<2,>=1.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (1.6.0) Requirement already satisfied: pygments>=2.7.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (2.19.1) Requirement already satisfied: tomli>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest->-r requirements.txt (line 37)) (2.2.1) Requirement already satisfied: wrapt<2,>=1.10 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from deprecated>=1.2.0->Pennsieve==6.1.1->-r requirements.txt (line 32)) (1.17.2) Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from google-auth-oauthlib>=0.4.1->gspread==6.2.1->-r requirements.txt (line 17)) (2.0.0) Requirement already satisfied: oauthlib>=3.0.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib>=0.4.1->gspread==6.2.1->-r requirements.txt (line 17)) (3.3.1) Requirement already satisfied: sniffio>=1.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from anyio->httpx>=0.27.0->-r requirements.txt (line 19)) (1.3.1) Using cached click-7.1.2-py2.py3-none-any.whl (82 kB) Installing collected packages: Click Attempting uninstall: Click Found existing installation: click 8.2.1 Uninstalling click-8.2.1: Successfully uninstalled click-8.2.1 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. black 25.1.0 requires click>=8.0.0, but you have click 7.1.2 which is incompatible. Successfully installed Click-7.1.2 [notice] A new release of pip is available: 25.1.1 -> 25.2 [notice] To update, run: pip install --upgrade pip Collecting pytest==5.4.3 (from -r requirements-dev.txt (line 1)) Using cached pytest-5.4.3-py3-none-any.whl.metadata (7.3 kB) Requirement already satisfied: pennsieve==6.1.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements-dev.txt (line 2)) (6.1.1) Requirement already satisfied: black in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements-dev.txt (line 3)) (25.1.0) Requirement already satisfied: isort in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements-dev.txt (line 4)) (6.0.1) Requirement already satisfied: nose in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements-dev.txt (line 5)) (1.3.7) Requirement already satisfied: packaging in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from -r requirements-dev.txt (line 6)) (25.0) Requirement already satisfied: py>=1.5.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest==5.4.3->-r requirements-dev.txt (line 1)) (1.11.0) Requirement already satisfied: attrs>=17.4.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest==5.4.3->-r requirements-dev.txt (line 1)) (25.3.0) Requirement already satisfied: more-itertools>=4.0.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest==5.4.3->-r requirements-dev.txt (line 1)) (10.7.0) Collecting pluggy<1.0,>=0.12 (from pytest==5.4.3->-r requirements-dev.txt (line 1)) Using cached pluggy-0.13.1-py2.py3-none-any.whl.metadata (15 kB) Requirement already satisfied: wcwidth in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest==5.4.3->-r requirements-dev.txt (line 1)) (0.2.13) Requirement already satisfied: boto3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.26.0) Requirement already satisfied: configparser>=3.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (7.2.0) Requirement already satisfied: deprecated>=1.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.2.18) Requirement already satisfied: future>=0.15.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.0.0) Requirement already satisfied: futures in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (3.0.5) Requirement already satisfied: protobuf>=3.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (4.25.7) Requirement already satisfied: python-jose==3.2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (3.2.0) Requirement already satisfied: pytz>=2016 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (2025.2) Requirement already satisfied: requests>=2.18 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (2.31.0) Requirement already satisfied: rsa==4.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (4.0) Requirement already satisfied: semver>=2.8.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (3.0.4) Requirement already satisfied: websocket-client>=0.57.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.8.0) Requirement already satisfied: docopt>=0.6 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (0.6.2) Requirement already satisfied: psutil>=5.4 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (7.0.0) Requirement already satisfied: python-dateutil>=2.8.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (2.8.2) Requirement already satisfied: six<2.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from python-jose==3.2.0->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.13.0) Requirement already satisfied: ecdsa<0.15 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from python-jose==3.2.0->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (0.14.1) Requirement already satisfied: pyasn1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from python-jose==3.2.0->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (0.6.1) Collecting click>=8.0.0 (from black->-r requirements-dev.txt (line 3)) Using cached click-8.2.1-py3-none-any.whl.metadata (2.5 kB) Requirement already satisfied: mypy-extensions>=0.4.3 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from black->-r requirements-dev.txt (line 3)) (1.1.0) Requirement already satisfied: pathspec>=0.9.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from black->-r requirements-dev.txt (line 3)) (0.12.1) Requirement already satisfied: platformdirs>=2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from black->-r requirements-dev.txt (line 3)) (4.3.7) Requirement already satisfied: tomli>=1.1.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from black->-r requirements-dev.txt (line 3)) (2.2.1) Requirement already satisfied: typing-extensions>=4.0.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from black->-r requirements-dev.txt (line 3)) (4.13.2) Requirement already satisfied: wrapt<2,>=1.10 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from deprecated>=1.2.0->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.17.2) Requirement already satisfied: charset-normalizer<4,>=2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests>=2.18->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (3.4.2) Requirement already satisfied: idna<4,>=2.5 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests>=2.18->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (2.8) Requirement already satisfied: urllib3<3,>=1.21.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests>=2.18->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.26.4) Requirement already satisfied: certifi>=2017.4.17 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from requests>=2.18->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (2023.5.7) Requirement already satisfied: botocore<1.30.0,>=1.29.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from boto3->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (1.29.0) Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from boto3->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (0.9.4) Requirement already satisfied: s3transfer<0.7.0,>=0.6.0 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from boto3->pennsieve==6.1.1->-r requirements-dev.txt (line 2)) (0.6.0) Using cached pytest-5.4.3-py3-none-any.whl (248 kB) Using cached pluggy-0.13.1-py2.py3-none-any.whl (18 kB) Using cached click-8.2.1-py3-none-any.whl (102 kB) Installing collected packages: pluggy, click, pytest Attempting uninstall: pluggy Found existing installation: pluggy 1.6.0 Uninstalling pluggy-1.6.0: Successfully uninstalled pluggy-1.6.0 Attempting uninstall: click Found existing installation: click 7.1.2 Uninstalling click-7.1.2: Successfully uninstalled click-7.1.2 Attempting uninstall: pytest Found existing installation: pytest 8.4.1 Uninstalling pytest-8.4.1: Successfully uninstalled pytest-8.4.1 Successfully installed click-8.2.1 pluggy-0.13.1 pytest-5.4.3 [notice] A new release of pip is available: 25.1.1 -> 25.2 [notice] To update, run: pip install --upgrade pip Requirement already satisfied: pytest in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (5.4.3) Collecting pytest Using cached pytest-8.4.1-py3-none-any.whl.metadata (7.7 kB) Requirement already satisfied: exceptiongroup>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest) (1.2.2) Requirement already satisfied: iniconfig>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest) (2.1.0) Requirement already satisfied: packaging>=20 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest) (25.0) Collecting pluggy<2,>=1.5 (from pytest) Using cached pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) Requirement already satisfied: pygments>=2.7.2 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest) (2.19.1) Requirement already satisfied: tomli>=1 in /home/cmiss/python3.10.venv/lib/python3.10/site-packages (from pytest) (2.2.1) Using cached pytest-8.4.1-py3-none-any.whl (365 kB) Using cached pluggy-1.6.0-py3-none-any.whl (20 kB) Installing collected packages: pluggy, pytest Attempting uninstall: pluggy Found existing installation: pluggy 0.13.1 Uninstalling pluggy-0.13.1: Successfully uninstalled pluggy-0.13.1 Attempting uninstall: pytest Found existing installation: pytest 5.4.3 Uninstalling pytest-5.4.3: Successfully uninstalled pytest-5.4.3 Successfully installed pluggy-1.6.0 pytest-8.4.1 [notice] A new release of pip is available: 25.1.1 -> 25.2 [notice] To update, run: pip install --upgrade pip ============================= test session starts ============================== platform linux -- Python 3.10.18, pytest-8.4.1, pluggy-1.6.0 rootdir: /home/cmiss/Jenkins/workspace/SPARC-API-DEV plugins: anyio-4.9.0 collected 113 items tests/test_api.py F............................. [ 26%] tests/test_biolucida.py ............. [ 38%] tests/test_dataset_info.py Fs..ss..... [ 47%] tests/test_health.py . [ 48%] tests/test_osparc.py .............. [ 61%] tests/test_plot.py . [ 61%] tests/test_pmr.py ......... [ 69%] tests/test_scicrunch.py .................s.......... [ 94%] tests/test_segmentation_info.py .. [ 96%] tests/test_thumbnails.py ... [ 99%] tests/test_update_contentful_entries.py . [100%] =================================== FAILURES =================================== _____________________ test_direct_download_url_small_file ______________________ self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f27baeca140> conn = <urllib3.connection.HTTPSConnection object at 0x7f27baecaa40> method = 'GET' url = '/spaces/6bya4tyw8399/environments/master/entries?content_type=sparcAward' timeout = Timeout(connect=1, read=1, total=None), chunked = False httplib_request_kw = {'body': None, 'headers': {'User-Agent': 'python-requests/2.31.0', 'Accept-Encoding': 'gzip', 'Accept': '*/*', 'Connec... 'application/vnd.contentful.delivery.v1+json', 'Authorization': 'Bearer nsC2KAKBhQ3V4ztr3YciVqLEirmNoFuPDrulvW0eO6Q'}} timeout_obj = Timeout(connect=1, read=1, total=None), read_timeout = 1 def _make_request( self, conn, method, url, timeout=_Default, chunked=False, **httplib_request_kw ): """ Perform a request on a given urllib connection object taken from our pool. :param conn: a connection from one of our connection pools :param timeout: Socket timeout in seconds for the request. This can be a float or integer, which will set the same timeout value for the socket connect and the socket read, or an instance of :class:`urllib3.util.Timeout`, which gives you more fine-grained control over your timeouts. """ self.num_requests += 1 timeout_obj = self._get_timeout(timeout) timeout_obj.start_connect() conn.timeout = timeout_obj.connect_timeout # Trigger any extra validation we need to do. try: self._validate_conn(conn) except (SocketTimeout, BaseSSLError) as e: # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout. self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) raise # conn.request() calls http.client.*.request, not the method in # urllib3.request. It also calls makefile (recv) on the socket. try: if chunked: conn.request_chunked(method, url, **httplib_request_kw) else: conn.request(method, url, **httplib_request_kw) # We are swallowing BrokenPipeError (errno.EPIPE) since the server is # legitimately able to close the connection after sending a valid response. # With this behaviour, the received response is still readable. except BrokenPipeError: # Python 3 pass except IOError as e: # Python 2 and macOS/Linux # EPIPE and ESHUTDOWN are BrokenPipeError on Python 2, and EPROTOTYPE is needed on macOS # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ if e.errno not in { errno.EPIPE, errno.ESHUTDOWN, errno.EPROTOTYPE, }: raise # Reset the timeout for the recv() on the socket read_timeout = timeout_obj.read_timeout # App Engine doesn't have a sock attr if getattr(conn, "sock", None): # In Python 3 socket.py will catch EAGAIN and return None when you # try and read into the file pointer created by http.client, which # instead raises a BadStatusLine exception. Instead of catching # the exception and assuming all BadStatusLine exceptions are read # timeouts, check for a zero timeout before making the request. if read_timeout == 0: raise ReadTimeoutError( self, url, "Read timed out. (read timeout=%s)" % read_timeout ) if read_timeout is Timeout.DEFAULT_TIMEOUT: conn.sock.settimeout(socket.getdefaulttimeout()) else: # None or a value conn.sock.settimeout(read_timeout) # Receive the response from the server try: try: # Python 2.7, use buffering of HTTP responses httplib_response = conn.getresponse(buffering=True) except TypeError: # Python 3 try: httplib_response = conn.getresponse() except BaseException as e: # Remove the TypeError from the exception chain in # Python 3 (including for exceptions like SystemExit). # Otherwise it looks like a bug in the code. > six.raise_from(e, None) ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:445: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:440: in _make_request httplib_response = conn.getresponse() /usr/lib/python3.10/http/client.py:1375: in getresponse response.begin() /usr/lib/python3.10/http/client.py:318: in begin version, status, reason = self._read_status() /usr/lib/python3.10/http/client.py:279: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") /usr/lib/python3.10/socket.py:717: in readinto return self._sock.recv_into(b) /usr/lib/python3.10/ssl.py:1307: in recv_into return self.read(nbytes, buffer) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ssl.SSLSocket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6> len = 8192, buffer = <memory at 0x7f27c2c2fb80> def read(self, len=1024, buffer=None): """Read up to LEN bytes and return them. Return zero-length string on EOF.""" self._checkClosed() if self._sslobj is None: raise ValueError("Read on closed or unwrapped SSL socket.") try: if buffer is not None: > return self._sslobj.read(len, buffer) E TimeoutError: The read operation timed out /usr/lib/python3.10/ssl.py:1163: TimeoutError During handling of the above exception, another exception occurred: self = <requests.adapters.HTTPAdapter object at 0x7f27baec83a0> request = <PreparedRequest [GET]>, stream = False timeout = Timeout(connect=1, read=1, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: > resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) ../../../python3.10.venv/lib/python3.10/site-packages/requests/adapters.py:486: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:755: in urlopen retries = retries.increment( ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/util/retry.py:532: in increment raise six.reraise(type(error), error, _stacktrace) ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/packages/six.py:735: in reraise raise value ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:699: in urlopen httplib_response = self._make_request( ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:447: in _make_request self._raise_timeout(err=e, url=url, timeout_value=read_timeout) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <urllib3.connectionpool.HTTPSConnectionPool object at 0x7f27baeca140> err = TimeoutError('The read operation timed out') url = '/spaces/6bya4tyw8399/environments/master/entries?content_type=sparcAward' timeout_value = 1 def _raise_timeout(self, err, url, timeout_value): """Is the error actually a timeout? Will raise a ReadTimeout or pass""" if isinstance(err, SocketTimeout): > raise ReadTimeoutError( self, url, "Read timed out. (read timeout=%s)" % timeout_value ) E urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='preview.contentful.com', port=443): Read timed out. (read timeout=1) ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:336: ReadTimeoutError During handling of the above exception, another exception occurred: client = <FlaskClient <Flask 'app.main'>> def test_direct_download_url_small_file(client): small_s3_file = '217/files/derivative/brainstem_pig_metadata.json' > r = client.get(f"/s3-resource/{small_s3_file}?s3BucketName=prd-sparc-discover50-use1") tests/test_api.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:1029: in get return self.open(*args, **kw) ../../../python3.10.venv/lib/python3.10/site-packages/flask/testing.py:222: in open return Client.open( ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:993: in open response = self.run_wsgi_app(environ.copy(), buffered=buffered) ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:884: in run_wsgi_app rv = run_wsgi_app(self.application, environ, buffered=buffered) ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:1119: in run_wsgi_app app_rv = app(environ, start_response) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2463: in __call__ return self.wsgi_app(environ, start_response) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2449: in wsgi_app response = self.handle_exception(e) ../../../python3.10.venv/lib/python3.10/site-packages/flask_cors/extension.py:161: in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1866: in handle_exception reraise(exc_type, exc_value, tb) ../../../python3.10.venv/lib/python3.10/site-packages/flask/_compat.py:39: in reraise raise value ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2446: in wsgi_app response = self.full_dispatch_request() ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1944: in full_dispatch_request self.try_trigger_before_first_request_functions() ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1992: in try_trigger_before_first_request_functions func() app/main.py:259: in get_metrics cf_response = get_funded_projects_count(contentful) app/metrics/contentful.py:45: in get_funded_projects_count response = client.entries({ ../../../python3.10.venv/lib/python3.10/site-packages/contentful/client.py:262: in entries return self._get( ../../../python3.10.venv/lib/python3.10/site-packages/contentful/client.py:567: in _get response = retry_request(self)(self._http_get)(url, query=query) ../../../python3.10.venv/lib/python3.10/site-packages/contentful/utils.py:163: in wrapper return http_call(url, query) ../../../python3.10.venv/lib/python3.10/site-packages/contentful/client.py:547: in _http_get response = requests.get( ../../../python3.10.venv/lib/python3.10/site-packages/requests/api.py:73: in get return request("get", url, params=params, **kwargs) ../../../python3.10.venv/lib/python3.10/site-packages/requests/api.py:59: in request return session.request(method=method, url=url, **kwargs) ../../../python3.10.venv/lib/python3.10/site-packages/requests/sessions.py:589: in request resp = self.send(prep, **send_kwargs) ../../../python3.10.venv/lib/python3.10/site-packages/requests/sessions.py:703: in send r = adapter.send(request, **kwargs) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <requests.adapters.HTTPAdapter object at 0x7f27baec83a0> request = <PreparedRequest [GET]>, stream = False timeout = Timeout(connect=1, read=1, total=None), verify = True, cert = None proxies = OrderedDict() def send( self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. :param request: The :class:`PreparedRequest <PreparedRequest>` being sent. :param stream: (optional) Whether to stream the request content. :param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple. :type timeout: float or tuple or urllib3 Timeout object :param verify: (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. :rtype: requests.Response """ try: conn = self.get_connection(request.url, proxies) except LocationValueError as e: raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) url = self.request_url(request, proxies) self.add_headers( request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies, ) chunked = not (request.body is None or "Content-Length" in request.headers) if isinstance(timeout, tuple): try: connect, read = timeout timeout = TimeoutSauce(connect=connect, read=read) except ValueError: raise ValueError( f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " f"or a single float to set both timeouts to the same value." ) elif isinstance(timeout, TimeoutSauce): pass else: timeout = TimeoutSauce(connect=timeout, read=timeout) try: resp = conn.urlopen( method=request.method, url=url, body=request.body, headers=request.headers, redirect=False, assert_same_host=False, preload_content=False, decode_content=False, retries=self.max_retries, timeout=timeout, chunked=chunked, ) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request) except MaxRetryError as e: if isinstance(e.reason, ConnectTimeoutError): # TODO: Remove this in 3.0.0: see #2811 if not isinstance(e.reason, NewConnectionError): raise ConnectTimeout(e, request=request) if isinstance(e.reason, ResponseError): raise RetryError(e, request=request) if isinstance(e.reason, _ProxyError): raise ProxyError(e, request=request) if isinstance(e.reason, _SSLError): # This branch is for urllib3 v1.22 and later. raise SSLError(e, request=request) raise ConnectionError(e, request=request) except ClosedPoolError as e: raise ConnectionError(e, request=request) except _ProxyError as e: raise ProxyError(e) except (_SSLError, _HTTPError) as e: if isinstance(e, _SSLError): # This branch is for urllib3 versions earlier than v1.22 raise SSLError(e, request=request) elif isinstance(e, ReadTimeoutError): > raise ReadTimeout(e, request=request) E requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='preview.contentful.com', port=443): Read timed out. (read timeout=1) ../../../python3.10.venv/lib/python3.10/site-packages/requests/adapters.py:532: ReadTimeout ----------------------------- Captured stdout call ----------------------------- Error while setting featured dataset id: Method not allowed with this API key ____________________________ test_current_doi_list _____________________________ self = <Response [504]>, kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: > return complexjson.loads(self.text, **kwargs) ../../../python3.10.venv/lib/python3.10/site-packages/requests/models.py:971: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/json/__init__.py:346: in loads return _default_decoder.decode(s) /usr/lib/python3.10/json/decoder.py:337: in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <json.decoder.JSONDecoder object at 0x7f27c82909d0> s = '<html>\r\n<head><title>504 Gateway Time-out</title></head>\r\n<body>\r\n<center><h1>504 Gateway Time-out</h1></center>\r\n<hr><center>nginx/1.16.1</center>\r\n</body>\r\n</html>\r\n' idx = 0 def raw_decode(self, s, idx=0): """Decode a JSON document from ``s`` (a ``str`` beginning with a JSON document) and return a 2-tuple of the Python representation and the index in ``s`` where the document ended. This can be used to decode a JSON document from a string that may have extraneous data at the end. """ try: obj, end = self.scan_once(s, idx) except StopIteration as err: > raise JSONDecodeError("Expecting value", s, err.value) from None E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) /usr/lib/python3.10/json/decoder.py:355: JSONDecodeError During handling of the above exception, another exception occurred: client = <FlaskClient <Flask 'app.main'>> def test_current_doi_list(client): doi_stem = "doi:" start = timer() > r = client.get('/current_doi_list') tests/test_dataset_info.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:1029: in get return self.open(*args, **kw) ../../../python3.10.venv/lib/python3.10/site-packages/flask/testing.py:222: in open return Client.open( ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:993: in open response = self.run_wsgi_app(environ.copy(), buffered=buffered) ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:884: in run_wsgi_app rv = run_wsgi_app(self.application, environ, buffered=buffered) ../../../python3.10.venv/lib/python3.10/site-packages/werkzeug/test.py:1119: in run_wsgi_app app_rv = app(environ, start_response) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2463: in __call__ return self.wsgi_app(environ, start_response) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2449: in wsgi_app response = self.handle_exception(e) ../../../python3.10.venv/lib/python3.10/site-packages/flask_cors/extension.py:161: in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1866: in handle_exception reraise(exc_type, exc_value, tb) ../../../python3.10.venv/lib/python3.10/site-packages/flask/_compat.py:39: in reraise raise value ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:2446: in wsgi_app response = self.full_dispatch_request() ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1951: in full_dispatch_request rv = self.handle_user_exception(e) ../../../python3.10.venv/lib/python3.10/site-packages/flask_cors/extension.py:161: in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1820: in handle_user_exception reraise(exc_type, exc_value, tb) ../../../python3.10.venv/lib/python3.10/site-packages/flask/_compat.py:39: in reraise raise value ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1949: in full_dispatch_request rv = self.dispatch_request() ../../../python3.10.venv/lib/python3.10/site-packages/flask/app.py:1935: in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) app/main.py:730: in get_all_doi results = reform_aggregation_results(dataset_search(query)) app/main.py:748: in dataset_search return response.json() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Response [504]>, kwargs = {} def json(self, **kwargs): r"""Returns the json-encoded content of a response, if any. :param \*\*kwargs: Optional arguments that ``json.loads`` takes. :raises requests.exceptions.JSONDecodeError: If the response body does not contain valid json. """ if not self.encoding and self.content and len(self.content) > 3: # No encoding set. JSON RFC 4627 section 3 states we should expect # UTF-8, -16 or -32. Detect which one to use; If the detection or # decoding fails, fall back to `self.text` (using charset_normalizer to make # a best guess). encoding = guess_json_utf(self.content) if encoding is not None: try: return complexjson.loads(self.content.decode(encoding), **kwargs) except UnicodeDecodeError: # Wrong UTF codec detected; usually because it's not UTF-8 # but some other 8-bit codec. This is an RFC violation, # and the server didn't bother to tell us what codec *was* # used. pass except JSONDecodeError as e: raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) try: return complexjson.loads(self.text, **kwargs) except JSONDecodeError as e: # Catch JSON-related errors and raise as requests.JSONDecodeError # This aliases json.JSONDecodeError and simplejson.JSONDecodeError > raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) E requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ../../../python3.10.venv/lib/python3.10/site-packages/requests/models.py:975: JSONDecodeError =============================== warnings summary =============================== ../../../python3.10.venv/lib/python3.10/site-packages/apscheduler/__init__.py:1 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/apscheduler/__init__.py:1: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html from pkg_resources import get_distribution, DistributionNotFound ../../../python3.10.venv/lib/python3.10/site-packages/marshmallow/__init__.py:17 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/marshmallow/__init__.py:17: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead. __version_info__ = tuple(LooseVersion(__version__).version) ../../../python3.10.venv/lib/python3.10/site-packages/flask_marshmallow/__init__.py:34 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/flask_marshmallow/__init__.py:34: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead. __version_info__ = tuple(LooseVersion(__version__).version) ../../../python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:19 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:19: DeprecationWarning: Call to deprecated create function FileDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. DESCRIPTOR = _descriptor.FileDescriptor( ../../../python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:36 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:36: DeprecationWarning: Call to deprecated create function FieldDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _descriptor.FieldDescriptor( ../../../python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:53 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:53: DeprecationWarning: Call to deprecated create function FieldDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _descriptor.FieldDescriptor( ../../../python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:70 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:70: DeprecationWarning: Call to deprecated create function FieldDescriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _descriptor.FieldDescriptor( ../../../python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:29 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/pennsieve/cache/cache_segment_pb2.py:29: DeprecationWarning: Call to deprecated create function Descriptor(). Note: Create unlinked descriptors is going to go away. Please use get/find descriptors from generated code or query the descriptor_pool. _CACHESEGMENT = _descriptor.Descriptor( app/dbtable.py:12 /home/cmiss/Jenkins/workspace/SPARC-API-DEV/app/dbtable.py:12: MovedIn20Warning: The ``declarative_base()`` function is now available as sqlalchemy.orm.declarative_base(). (deprecated since: 2.0) (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9) base = declarative_base() ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/util/ssl_.py:281: 3 warnings tests/test_api.py: 36 warnings tests/test_biolucida.py: 13 warnings tests/test_dataset_info.py: 6 warnings tests/test_osparc.py: 17 warnings tests/test_plot.py: 1 warning tests/test_pmr.py: 4 warnings tests/test_scicrunch.py: 34 warnings tests/test_thumbnails.py: 2 warnings /home/cmiss/python3.10.venv/lib/python3.10/site-packages/urllib3/util/ssl_.py:281: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated context = SSLContext(ssl_version or PROTOCOL_TLS) ../../../python3.10.venv/lib/python3.10/site-packages/urllib3/connection.py:512: 3 warnings tests/test_api.py: 41 warnings tests/test_biolucida.py: 13 warnings tests/test_dataset_info.py: 7 warnings tests/test_osparc.py: 17 warnings tests/test_plot.py: 1 warning tests/test_pmr.py: 4 warnings tests/test_scicrunch.py: 35 warnings tests/test_thumbnails.py: 2 warnings /home/cmiss/python3.10.venv/lib/python3.10/site-packages/urllib3/connection.py:512: DeprecationWarning: ssl.match_hostname() is deprecated match_hostname(cert, asserted_hostname) ../../../python3.10.venv/lib/python3.10/site-packages/nose/importer.py:12 /home/cmiss/python3.10.venv/lib/python3.10/site-packages/nose/importer.py:12: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses from imp import find_module, load_module, acquire_lock, release_lock tests/test_health.py::test_request_response /home/cmiss/Jenkins/workspace/SPARC-API-DEV/tests/test_health.py:13: DeprecationWarning: Please use assertEqual instead. assert_equals("healthy", json_response.get("status")) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_api.py::test_direct_download_url_small_file - requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='preview.contentful.com', port=443): Read timed out. (read timeout=1) FAILED tests/test_dataset_info.py::test_current_doi_list - requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ====== 2 failed, 107 passed, 4 skipped, 250 warnings in 927.99s (0:15:27) ====== Build step 'Execute shell' marked build as failure [Slack Notifications] found #1356 as previous completed, non-aborted build [Slack Notifications] will send OnEveryFailureNotification because build matches and user preferences allow it Finished: FAILURE