diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 57d8f72..a3a748c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ stages: - release variables: - PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + UV_CACHE_DIR: "$CI_PROJECT_DIR/.cache/uv" DJANGO_SETTINGS_MODULE: "newsreader.conf.gitlab" POSTGRES_HOST: "$POSTGRES_HOST" POSTGRES_DB: "$POSTGRES_NAME" @@ -17,7 +17,7 @@ cache: key: "$CI_COMMIT_REF_SLUG" paths: - env/ - - .cache/pip + - .cache/uv - node_modules/ include: diff --git a/Makefile b/Makefile index 4cddf45..b8017eb 100644 --- a/Makefile +++ b/Makefile @@ -3,22 +3,19 @@ # # Build dependencies build: - pip-compile \ - --resolver=backtracking \ + uv pip compile \ --output-file=requirements/base.txt \ pyproject.toml # testing - pip-compile \ - --resolver=backtracking \ + uv pip compile \ --extra=testing \ --output-file=requirements/testing.txt \ requirements/base.txt \ pyproject.toml # development - pip-compile \ - --resolver=backtracking \ + uv pip compile \ --extra=testing \ --extra=development \ --output-file=requirements/development.txt \ @@ -27,8 +24,7 @@ build: pyproject.toml # ci - pip-compile \ - --resolver=backtracking \ + uv pip compile \ --extra=testing \ --extra=ci \ --output-file=requirements/ci.txt \ @@ -37,8 +33,7 @@ build: pyproject.toml # production - pip-compile \ - --resolver=backtracking \ + uv pip compile \ --extra=production \ --output-file=requirements/production.txt \ requirements/base.txt \ diff --git a/gitlab-ci/build.yml b/gitlab-ci/build.yml index 856e938..1d820a6 100644 --- a/gitlab-ci/build.yml +++ b/gitlab-ci/build.yml @@ -1,6 +1,6 @@ static: stage: build - image: node:16-bullseye + image: node:latest before_script: - npm install script: diff --git a/gitlab-ci/lint.yml b/gitlab-ci/lint.yml index 6169c51..95eb0da 100644 --- a/gitlab-ci/lint.yml +++ b/gitlab-ci/lint.yml @@ -1,12 +1,16 @@ python-linting: stage: lint - image: python:3.9-bullseye + image: python:3.11 before_script: - - pip install -r requirements/ci.txt + - uv pip install --requirement requirements/ci.txt script: - - isort src/ --check-only - - black src/ --line-length 88 --check - - autoflake src/ --check --recursive --remove-all-unused-imports --ignore-init-module-imports + - isort --check-only src/ + - black --line-length 88 --check src/ + - autoflake --check \ + --recursive \ + --remove-all-unused-imports \ + --ignore-init-module-imports \ + src/ only: refs: - development @@ -14,7 +18,7 @@ python-linting: javascript-linting: stage: lint - image: node:16-bullseye + image: node:latest before_script: - npm install script: diff --git a/gitlab-ci/test.yml b/gitlab-ci/test.yml index e614268..3f180c2 100644 --- a/gitlab-ci/test.yml +++ b/gitlab-ci/test.yml @@ -4,15 +4,15 @@ python-tests: services: - postgres:15 - memcached:1.5.22 - image: python:3.9-bullseye + image: python:3.11 before_script: - - pip install -r requirements/ci.txt + - uv pip install --requirement requirements/ci.txt script: - coverage run ./src/manage.py test newsreader javascript-tests: stage: test - image: node:16-bullseye + image: node:latest before_script: - npm install script: diff --git a/requirements/base.txt b/requirements/base.txt index 53d38de..e5ceef3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,9 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --output-file=requirements/base.txt --resolver=backtracking pyproject.toml -# +# This file was autogenerated by uv via the following command: +# uv pip compile --output-file=requirements/base.txt pyproject.toml amqp==5.1.1 # via kombu asgiref==3.7.2 @@ -16,8 +12,8 @@ bleach==6.0.0 # via newsreader (pyproject.toml) celery==5.3.1 # via - # django-celery-beat # newsreader (pyproject.toml) + # django-celery-beat certifi==2023.5.7 # via requests charset-normalizer==3.1.0 @@ -38,12 +34,12 @@ cron-descriptor==1.4.0 # via django-celery-beat django==3.2.19 # via + # newsreader (pyproject.toml) # django-axes # django-celery-beat # django-timezone-field # djangorestframework # drf-yasg - # newsreader (pyproject.toml) django-axes==6.0.4 # via newsreader (pyproject.toml) django-celery-beat==2.5.0 @@ -104,6 +100,8 @@ requests==2.31.0 # requests-oauthlib requests-oauthlib==1.3.1 # via newsreader (pyproject.toml) +setuptools==72.1.0 + # via django-axes sgmllib3k==1.0.0 # via feedparser six==1.16.0 @@ -138,6 +136,3 @@ wcwidth==0.2.6 # prompt-toolkit webencodings==0.5.1 # via bleach - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/ci.txt b/requirements/ci.txt index 4e2403e..c2fb50b 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,9 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --extra=ci --extra=testing --output-file=requirements/ci.txt --resolver=backtracking pyproject.toml requirements/base.txt requirements/testing.txt -# +# This file was autogenerated by uv via the following command: +# uv pip compile --extra=testing --extra=ci --output-file=requirements/ci.txt requirements/base.txt requirements/testing.txt pyproject.toml amqp==5.1.1 # via # -r requirements/base.txt @@ -21,6 +17,7 @@ autoflake==2.2.0 beautifulsoup4==4.12.2 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) billiard==4.1.0 # via @@ -34,12 +31,14 @@ black==23.3.0 bleach==6.0.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) celery==5.3.1 # via # -r requirements/base.txt - # django-celery-beat + # -r requirements/testing.txt # newsreader (pyproject.toml) + # django-celery-beat certifi==2023.5.7 # via # -r requirements/base.txt @@ -84,27 +83,32 @@ cron-descriptor==1.4.0 django==3.2.19 # via # -r requirements/base.txt + # -r requirements/testing.txt + # newsreader (pyproject.toml) # django-axes # django-celery-beat # django-timezone-field # djangorestframework # drf-yasg - # newsreader (pyproject.toml) django-axes==6.0.4 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-celery-beat==2.5.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-registration-redux==2.12 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-rest-framework==0.1.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-timezone-field==5.1 # via @@ -120,6 +124,7 @@ djangorestframework==3.14.0 drf-yasg==1.21.6 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) factory-boy==3.2.1 # via @@ -132,6 +137,7 @@ faker==18.11.2 feedparser==6.0.10 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) freezegun==1.2.2 # via @@ -140,6 +146,7 @@ freezegun==1.2.2 ftfy==5.9 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) idna==3.4 # via @@ -163,6 +170,7 @@ kombu==5.3.1 lxml==4.9.2 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) mypy-extensions==1.0.0 # via @@ -195,6 +203,7 @@ prompt-toolkit==3.0.38 psycopg2==2.9.6 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) pyflakes==3.0.1 # via @@ -216,10 +225,12 @@ python-dateutil==2.8.2 python-dotenv==0.21.1 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) python-memcached==1.59 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) pytz==2023.3 # via @@ -237,12 +248,19 @@ pyyaml==6.0 requests==2.31.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) # requests-oauthlib requests-oauthlib==1.3.1 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) +setuptools==72.1.0 + # via + # -r requirements/base.txt + # -r requirements/testing.txt + # django-axes sgmllib3k==1.0.0 # via # -r requirements/base.txt @@ -315,6 +333,3 @@ webencodings==0.5.1 # -r requirements/base.txt # -r requirements/testing.txt # bleach - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/development.txt b/requirements/development.txt index a77dd44..52b4861 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -1,9 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --extra=development --extra=testing --output-file=requirements/development.txt --resolver=backtracking pyproject.toml requirements/base.txt requirements/testing.txt -# +# This file was autogenerated by uv via the following command: +# uv pip compile --extra=testing --extra=development --output-file=requirements/development.txt requirements/base.txt requirements/testing.txt pyproject.toml amqp==5.1.1 # via # -r requirements/base.txt @@ -21,6 +17,7 @@ autoflake==2.2.0 beautifulsoup4==4.12.2 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) billiard==4.1.0 # via @@ -34,14 +31,16 @@ black==23.3.0 bleach==6.0.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) build==0.10.0 # via pip-tools celery==5.3.1 # via # -r requirements/base.txt - # django-celery-beat + # -r requirements/testing.txt # newsreader (pyproject.toml) + # django-celery-beat certifi==2023.5.7 # via # -r requirements/base.txt @@ -85,6 +84,8 @@ cron-descriptor==1.4.0 django==3.2.19 # via # -r requirements/base.txt + # -r requirements/testing.txt + # newsreader (pyproject.toml) # django-axes # django-celery-beat # django-debug-toolbar @@ -92,14 +93,15 @@ django==3.2.19 # django-timezone-field # djangorestframework # drf-yasg - # newsreader (pyproject.toml) django-axes==6.0.4 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-celery-beat==2.5.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-debug-toolbar==4.1.0 # via newsreader (pyproject.toml) @@ -108,10 +110,12 @@ django-extensions==3.2.3 django-registration-redux==2.12 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-rest-framework==0.1.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) django-timezone-field==5.1 # via @@ -127,6 +131,7 @@ djangorestframework==3.14.0 drf-yasg==1.21.6 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) factory-boy==3.2.1 # via @@ -139,6 +144,7 @@ faker==18.11.2 feedparser==6.0.10 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) freezegun==1.2.2 # via @@ -147,6 +153,7 @@ freezegun==1.2.2 ftfy==5.9 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) idna==3.4 # via @@ -170,6 +177,7 @@ kombu==5.3.1 lxml==4.9.2 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) mypy-extensions==1.0.0 # via @@ -191,6 +199,8 @@ pathspec==0.11.1 # via # -r requirements/testing.txt # black +pip==24.2 + # via pip-tools pip-tools==6.13.0 # via newsreader (pyproject.toml) platformdirs==3.8.0 @@ -205,6 +215,7 @@ prompt-toolkit==3.0.38 psycopg2==2.9.6 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) pyflakes==3.0.1 # via @@ -228,10 +239,12 @@ python-dateutil==2.8.2 python-dotenv==0.21.1 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) python-memcached==1.59 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) pytz==2023.3 # via @@ -249,12 +262,20 @@ pyyaml==6.0 requests==2.31.0 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) # requests-oauthlib requests-oauthlib==1.3.1 # via # -r requirements/base.txt + # -r requirements/testing.txt # newsreader (pyproject.toml) +setuptools==72.1.0 + # via + # -r requirements/base.txt + # -r requirements/testing.txt + # django-axes + # pip-tools sgmllib3k==1.0.0 # via # -r requirements/base.txt @@ -332,7 +353,3 @@ webencodings==0.5.1 # bleach wheel==0.40.0 # via pip-tools - -# The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools diff --git a/requirements/production.txt b/requirements/production.txt index cf0aa06..ae13cf5 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -1,9 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --extra=production --output-file=requirements/production.txt --resolver=backtracking pyproject.toml requirements/base.txt -# +# This file was autogenerated by uv via the following command: +# uv pip compile --extra=production --output-file=requirements/production.txt requirements/base.txt pyproject.toml amqp==5.1.1 # via # -r requirements/base.txt @@ -27,8 +23,8 @@ bleach==6.0.0 celery==5.3.1 # via # -r requirements/base.txt - # django-celery-beat # newsreader (pyproject.toml) + # django-celery-beat certifi==2023.5.7 # via # -r requirements/base.txt @@ -64,12 +60,12 @@ cron-descriptor==1.4.0 django==3.2.19 # via # -r requirements/base.txt + # newsreader (pyproject.toml) # django-axes # django-celery-beat # django-timezone-field # djangorestframework # drf-yasg - # newsreader (pyproject.toml) django-axes==6.0.4 # via # -r requirements/base.txt @@ -180,6 +176,11 @@ requests-oauthlib==1.3.1 # newsreader (pyproject.toml) sentry-sdk==1.26.0 # via newsreader (pyproject.toml) +setuptools==72.1.0 + # via + # -r requirements/base.txt + # django-axes + # gunicorn sgmllib3k==1.0.0 # via # -r requirements/base.txt @@ -232,6 +233,3 @@ webencodings==0.5.1 # via # -r requirements/base.txt # bleach - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/testing.txt b/requirements/testing.txt index 96ddce9..bf42a9b 100644 --- a/requirements/testing.txt +++ b/requirements/testing.txt @@ -1,9 +1,5 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --extra=testing --output-file=requirements/testing.txt --resolver=backtracking pyproject.toml requirements/base.txt -# +# This file was autogenerated by uv via the following command: +# uv pip compile --extra=testing --output-file=requirements/testing.txt requirements/base.txt pyproject.toml amqp==5.1.1 # via # -r requirements/base.txt @@ -31,8 +27,8 @@ bleach==6.0.0 celery==5.3.1 # via # -r requirements/base.txt - # django-celery-beat # newsreader (pyproject.toml) + # django-celery-beat certifi==2023.5.7 # via # -r requirements/base.txt @@ -68,12 +64,12 @@ cron-descriptor==1.4.0 django==3.2.19 # via # -r requirements/base.txt + # newsreader (pyproject.toml) # django-axes # django-celery-beat # django-timezone-field # djangorestframework # drf-yasg - # newsreader (pyproject.toml) django-axes==6.0.4 # via # -r requirements/base.txt @@ -199,6 +195,10 @@ requests-oauthlib==1.3.1 # via # -r requirements/base.txt # newsreader (pyproject.toml) +setuptools==72.1.0 + # via + # -r requirements/base.txt + # django-axes sgmllib3k==1.0.0 # via # -r requirements/base.txt @@ -257,6 +257,3 @@ webencodings==0.5.1 # via # -r requirements/base.txt # bleach - -# The following packages are considered to be unsafe in a requirements file: -# setuptools