diff --git a/.github/workflows/materialization_ci.yml b/.github/workflows/materialization_ci.yml index 6f4b701a..91053339 100644 --- a/.github/workflows/materialization_ci.yml +++ b/.github/workflows/materialization_ci.yml @@ -33,10 +33,10 @@ jobs: options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - - name: Set up Python 3.9 + - name: Set up Python 3.11 uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: 3.11 - uses: actions/cache@v2 with: path: ~/.cache/pip @@ -47,7 +47,7 @@ jobs: with: auto-update-conda: true auto-activate-base: true - python-version: 3.9 + python-version: 3.11 - name: Install dependencies shell: bash -l {0} run: | diff --git a/Dockerfile b/Dockerfile index 728a6880..2923ab8d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM tiangolo/uwsgi-nginx-flask:python3.9 +FROM tiangolo/uwsgi-nginx-flask:python3.11 ENV UWSGI_INI /app/uwsgi.ini RUN mkdir -p /home/nginx/.cloudvolume/secrets \ diff --git a/requirements.in b/requirements.in index 27ecf01a..d1b6c145 100644 --- a/requirements.in +++ b/requirements.in @@ -19,11 +19,11 @@ flask-restx flask-accepts geoalchemy2>=0.9.2 alembic -celery>=5.2.3 +celery>=5.4.0 cachetools gevent gcsfs>=0.8.0 -pyarrow==3.0.0 +pyarrow flask_cors numpy>=1.20 emannotationschemas>=5.11.0 diff --git a/requirements.txt b/requirements.txt index 2f7a3687..42c75973 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,80 +1,66 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile requirements.in -# -aiohttp==3.8.1 +# This file was autogenerated by uv via the following command: +# uv pip compile requirements.in +aiohappyeyeballs==2.4.0 + # via aiohttp +aiohttp==3.10.5 # via gcsfs -aiosignal==1.2.0 +aiosignal==1.3.1 # via aiohttp -alembic==1.7.6 +alembic==1.13.2 # via # -r requirements.in # dynamicannotationdb -amqp==5.0.9 +amqp==5.2.0 # via kombu aniso8601==9.0.1 # via flask-restx -appnope==0.1.4 - # via ipython -async-timeout==4.0.2 - # via aiohttp +asttokens==2.4.1 + # via stack-data atomicwrites==1.4.1 # via neuroglancer -attrs==23.2.0 +attrs==24.2.0 # via # aiohttp # caveclient # jsonschema - # pytest -backcall==0.2.0 - # via ipython -billiard==3.6.4.0 + # nglui +billiard==4.2.0 # via celery -blosc2==2.5.1 - # via tables -boto3==1.21.3 +blinker==1.8.2 + # via flask +boto3==1.35.5 # via # cloud-files # cloud-volume -botocore==1.24.3 +botocore==1.35.5 # via # boto3 # s3transfer -brotli==1.0.9 - # via cloud-files -brotlipy==0.7.0 - # via urllib3 -cachetools==5.0.0 +brotli==1.1.0 + # via + # cloud-files + # urllib3 +cachetools==5.5.0 # via # -r requirements.in # caveclient # google-auth # middle-auth-client -caveclient==5.22.0 +caveclient==5.25.2 # via # -r requirements.in # nglui -celery==5.2.5 +celery==5.4.0 # via -r requirements.in -certifi==2021.10.8 - # via - # requests - # urllib3 -cffi==1.15.0 - # via - # brotlipy - # cryptography -chardet==4.0.0 +certifi==2024.7.4 + # via requests +chardet==5.2.0 # via # cloud-files # cloud-volume -charset-normalizer==2.0.12 - # via - # aiohttp - # requests -click==8.1.2 +charset-normalizer==3.3.2 + # via requests +click==8.1.7 # via # celery # click-didyoumean @@ -82,58 +68,53 @@ click==8.1.2 # click-repl # cloud-files # compressed-segmentation - # compresso # flask -click-didyoumean==0.3.0 + # microviewer +click-didyoumean==0.3.1 # via celery click-plugins==1.1.1 # via celery -click-repl==0.2.0 +click-repl==0.3.0 # via celery -cloud-files==4.7.0 +cloud-files==4.27.0 # via # -r requirements.in # cloud-volume -cloud-volume==8.5.4 +cloud-volume==10.4.0 # via -r requirements.in -compressed-segmentation==2.1.1 +compressed-segmentation==2.3.1 # via cloud-volume -compresso==3.0.0 - # via cloud-volume -crc32c==2.2.post0 +crc32c==2.7.post1 # via cloud-files -cryptography==36.0.1 - # via - # pyopenssl - # urllib3 decorator==5.1.1 # via # gcsfs # ipython - # networkx -deflate==0.3.0 +deflate==0.7.0 # via cloud-files -deprecated==1.2.13 - # via - # limits - # redis -dill==0.3.4 +deprecated==1.2.14 + # via limits +dill==0.3.8 # via # multiprocess # pathos -dracopy==1.0.1 +dracopy==1.4.0 # via cloud-volume dynamicannotationdb==5.9.2 # via -r requirements.in -emannotationschemas==5.17.0 +emannotationschemas==5.11.0 # via # -r requirements.in # dynamicannotationdb +executing==2.0.1 + # via stack-data fasteners==0.19 - # via google-apitools -fastremap==1.12.2 + # via + # cloud-files + # google-apitools +fastremap==1.15.0 # via cloud-volume -flask==2.0.2 +flask==3.0.3 # via # -r requirements.in # flask-admin @@ -145,51 +126,47 @@ flask==2.0.2 # middle-auth-client flask-accepts==0.18.4 # via -r requirements.in -flask-admin==1.6.0 +flask-admin==1.6.1 # via -r requirements.in -flask-cors==3.0.10 - # via - # -r requirements.in - # emannotationschemas -flask-limiter[redis]==3.3.0 +flask-cors==4.0.1 + # via -r requirements.in +flask-limiter==3.8.0 # via -r requirements.in -flask-marshmallow==0.14.0 +flask-marshmallow==1.2.1 # via -r requirements.in -flask-restx==0.5.1 +flask-restx==1.3.0 # via # -r requirements.in # flask-accepts flask-sqlalchemy==2.5.1 # via -r requirements.in -fpzip==1.1.5 - # via cloud-volume -frozenlist==1.3.0 +frozenlist==1.4.1 # via # aiohttp # aiosignal -fsspec==2022.01.0 +fsspec==2024.6.1 # via gcsfs furl==2.1.3 # via middle-auth-client -gcsfs==2022.1.0 +gcsfs==2024.6.1 # via -r requirements.in geoalchemy2==0.11.1 # via # -r requirements.in # dynamicannotationdb # emannotationschemas -gevent==21.12.0 +gevent==24.2.1 # via # -r requirements.in # cloud-files # cloud-volume -google-api-core==2.4.0 +google-api-core==2.19.1 # via # google-cloud-core # google-cloud-storage google-apitools==0.5.32 # via neuroglancer -google-auth==2.6.0 +google-auth==2.34.0 # via # cloud-files # cloud-volume @@ -199,60 +176,60 @@ google-auth==2.6.0 # google-cloud-core # google-cloud-storage # neuroglancer -google-auth-oauthlib==0.4.6 +google-auth-oauthlib==1.2.1 # via gcsfs -google-cloud-core==2.2.2 +google-cloud-core==2.4.1 # via # cloud-files # cloud-volume # google-cloud-storage -google-cloud-storage==2.1.0 +google-cloud-storage==2.18.2 # via # cloud-files # cloud-volume # gcsfs -google-crc32c==1.3.0 +google-crc32c==1.5.0 # via # cloud-files + # google-cloud-storage # google-resumable-media -google-resumable-media==2.1.0 +google-resumable-media==2.7.2 # via google-cloud-storage -googleapis-common-protos==1.54.0 +googleapis-common-protos==1.64.0 # via google-api-core -greenlet==1.1.2 +greenlet==3.0.3 # via gevent httplib2==0.22.0 # via # google-apitools # oauth2client -idna==3.3 +idna==3.8 # via # requests - # urllib3 # yarl -importlib-metadata==4.10.1 - # via markdown -importlib-resources==5.4.0 - # via limits +importlib-resources==6.4.4 + # via + # flask-restx + # limits inflection==0.5.1 # via python-jsonschema-objects -iniconfig==1.1.1 +iniconfig==2.0.0 # via pytest -ipython==7.31.1 +ipython==8.26.0 # via # caveclient # nglui -itsdangerous==2.0.1 +itsdangerous==2.2.0 # via flask -jedi==0.18.1 +jedi==0.19.1 # via ipython -jinja2==3.0.3 +jinja2==3.1.4 # via flask -jmespath==0.10.0 +jmespath==1.0.1 # via # boto3 # botocore -json5==0.9.6 +json5==0.9.25 # via cloud-volume jsonschema==3.2.0 # via @@ -263,20 +240,21 @@ jsonschema==3.2.0 # emannotationschemas # flask-restx # python-jsonschema-objects -kombu==5.2.3 +kombu==5.4.0 # via celery -limits==3.3.1 +limits==3.13.0 # via flask-limiter -mako==1.1.6 +mako==1.3.5 # via alembic -markdown==3.3.6 +markdown==3.7 # via python-jsonschema-objects -markdown-it-py==2.2.0 +markdown-it-py==3.0.0 # via rich -markupsafe==2.0.1 +markupsafe==2.1.5 # via # jinja2 # mako + # werkzeug # wtforms marshmallow==3.5.1 # via @@ -288,178 +266,153 @@ marshmallow==3.5.1 # marshmallow-sqlalchemy marshmallow-jsonschema==0.10.0 # via emannotationschemas -marshmallow-sqlalchemy==0.27.0 +marshmallow-sqlalchemy==0.28.2 # via -r requirements.in -matplotlib-inline==0.1.3 +matplotlib-inline==0.1.7 # via ipython mdurl==0.1.2 # via markdown-it-py -middle-auth-client==3.11.0 +microviewer==1.9.0 + # via cloud-volume +middle-auth-client==3.18.1 # via -r requirements.in -msgpack==1.0.8 - # via blosc2 -multidict==6.0.2 +multidict==6.0.5 # via # aiohttp # yarl -multiprocess==0.70.12.2 +multiprocess==0.70.16 # via pathos multiwrapper==0.1.1 # via -r requirements.in -ndindex==1.8 - # via blosc2 -networkx==2.5 +networkx==3.3 # via # caveclient # cloud-volume -neuroglancer==2.39.2 +neuroglancer==2.40.1 # via nglui -nglui==3.3.6 +nglui==3.3.7 # via -r requirements.in -numexpr==2.10.1 - # via tables numpy==1.26.4 # via # -r requirements.in - # blosc2 # caveclient # cloud-volume # compressed-segmentation - # compresso # emannotationschemas # fastremap - # fpzip + # microviewer # multiwrapper # neuroglancer # nglui - # numexpr # pandas # pyarrow - # pyspng-seunglab # shapely # simplejpeg - # tables oauth2client==4.1.3 # via google-apitools -oauthlib==3.2.0 +oauthlib==3.2.2 # via requests-oauthlib ordered-set==4.1.0 # via flask-limiter orderedmultidict==1.0.1 # via furl -orjson==3.6.7 +orjson==3.10.7 # via cloud-files -packaging==21.3 +packaging==24.1 # via # geoalchemy2 # limits + # marshmallow-sqlalchemy # pytest - # redis - # tables -pandas==1.3.5 +pandas==2.2.2 # via # -r requirements.in # caveclient # nglui -parso==0.8.3 +parso==0.8.4 # via jedi -pathos==0.2.8 +pathos==0.3.2 # via # cloud-files # cloud-volume -pexpect==4.8.0 +pexpect==4.9.0 # via ipython -pickleshare==0.7.5 - # via ipython -pillow==9.0.1 +pillow==10.4.0 # via # -r requirements.in - # cloud-volume # neuroglancer -pluggy==1.0.0 +pluggy==1.5.0 # via pytest -posix-ipc==1.0.5 +posix-ipc==1.1.1 # via cloud-volume -pox==0.3.0 +pox==0.3.4 # via pathos -ppft==1.6.6.4 +ppft==1.7.6.8 # via pathos -prompt-toolkit==3.0.28 +prompt-toolkit==3.0.47 # via # click-repl # ipython -protobuf==3.19.4 +proto-plus==1.24.0 + # via google-api-core +protobuf==5.27.3 # via # cloud-files # cloud-volume # google-api-core - # google-cloud-storage # googleapis-common-protos -psutil==5.9.0 + # proto-plus +psutil==6.0.0 # via # -r requirements.in # cloud-volume -psycopg2-binary==2.9.1 +psycopg2-binary==2.9.9 # via dynamicannotationdb ptyprocess==0.7.0 # via pexpect -py==1.11.0 - # via pytest -py-cpuinfo==9.0.0 - # via - # blosc2 - # tables -pyarrow==3.0.0 +pure-eval==0.2.3 + # via stack-data +pyarrow==17.0.0 # via # -r requirements.in # caveclient -pyasn1==0.4.8 +pyasn1==0.6.0 # via # oauth2client # pyasn1-modules # rsa -pyasn1-modules==0.2.8 +pyasn1-modules==0.4.0 # via # google-auth # oauth2client -pycparser==2.21 - # via cffi -pygments==2.14.0 +pygments==2.18.0 # via # ipython # rich -pyopenssl==22.0.0 - # via urllib3 -pyparsing==3.0.7 - # via - # httplib2 - # packaging -pyrsistent==0.18.1 +pyparsing==3.1.4 + # via httplib2 +pyrsistent==0.20.0 # via jsonschema -pysimdjson==4.0.3 +pysimdjson==6.0.2 # via cloud-volume -pyspng-seunglab==1.0.0 - # via cloud-volume -pytest==7.0.1 - # via - # compressed-segmentation - # dracopy -python-dateutil==2.8.1 +pytest==8.3.2 + # via compressed-segmentation +python-dateutil==2.9.0.post0 # via # botocore + # celery # cloud-volume # pandas -python-jsonschema-objects==0.4.1 +python-jsonschema-objects==0.4.6 # via cloud-volume -pytz==2021.3 +pytz==2024.1 # via - # celery # dynamicannotationdb # flask-restx # pandas -redis==4.1.4 - # via middle-auth-client -requests==2.26.0 +redis==5.0.8 + # via limits +requests==2.32.3 # via # -r requirements.in # caveclient @@ -472,39 +425,39 @@ requests==2.26.0 # neuroglancer # nglui # requests-oauthlib -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via google-auth-oauthlib -rich==13.3.3 +rich==13.8.0 # via flask-limiter -rsa==4.8 +rsa==4.9 # via # cloud-files # google-auth # oauth2client -s3transfer==0.5.1 +s3transfer==0.10.2 # via boto3 +setuptools==73.0.1 + # via + # jsonschema + # zope-event + # zope-interface shapely==2.0.3 # via # dynamicannotationdb # emannotationschemas -simplejpeg==1.6.3 +simplejpeg==1.7.4 # via cloud-volume six==1.16.0 # via - # click-repl + # asttokens # cloud-files # cloud-volume - # flask-cors - # flask-marshmallow - # flask-restx # furl # google-apitools - # google-auth # jsonschema # nglui # oauth2client # orderedmultidict - # ppft # python-dateutil # python-jsonschema-objects sqlalchemy==1.3.24 @@ -516,65 +469,62 @@ sqlalchemy==1.3.24 # flask-sqlalchemy # geoalchemy2 # marshmallow-sqlalchemy -tables==3.9.2 - # via nglui -tenacity==8.0.1 +stack-data==0.6.3 + # via ipython +tenacity==9.0.0 # via # cloud-files # cloud-volume -tomli==2.0.1 - # via pytest tornado==6.4.1 # via neuroglancer -tqdm==4.62.3 +tqdm==4.66.5 # via # cloud-files # cloud-volume -traitlets==5.1.1 +traitlets==5.14.3 # via # ipython # matplotlib-inline -typing-extensions==4.1.1 +typing-extensions==4.12.2 # via + # alembic # flask-limiter + # ipython # limits -urllib3[brotli,secure]==1.26.8 +tzdata==2024.1 + # via + # celery + # pandas +urllib3==2.2.2 # via # botocore # caveclient # cloud-files # cloud-volume # requests -vine==5.0.0 +vine==5.1.0 # via # amqp # celery # kombu -wcwidth==0.2.5 +wcwidth==0.2.13 # via prompt-toolkit -webcolors==1.12 +webcolors==24.8.0 # via nglui -werkzeug==2.0.2 +werkzeug==3.0.4 # via # flask # flask-accepts # flask-restx -wrapt==1.13.3 +wrapt==1.16.0 # via deprecated -wtforms==3.0.1 +wtforms==3.1.2 # via flask-admin -yarl==1.7.2 +yarl==1.9.4 # via aiohttp -zipp==3.7.0 - # via - # importlib-metadata - # importlib-resources -zope-event==4.5.0 +zope-event==5.0 # via gevent -zope-interface==5.5.2 +zope-interface==7.0.2 # via gevent -zstandard==0.17.0 +zstandard==0.23.0 # via cloud-files - -# The following packages are considered to be unsafe in a requirements file: -# setuptools