Update ruff & uv usage
This commit is contained in:
parent
aff565862c
commit
f3ba0f1d09
5 changed files with 58 additions and 59 deletions
|
|
@ -8,7 +8,7 @@ steps:
|
||||||
image: python:3.11
|
image: python:3.11
|
||||||
commands:
|
commands:
|
||||||
- pip install uv
|
- pip install uv
|
||||||
- uv sync --extra testing --extra ci
|
- uv sync --group ci
|
||||||
- ./.venv/bin/ruff check src/
|
- ./.venv/bin/ruff check src/
|
||||||
- ./.venv/bin/ruff format --check src/
|
- ./.venv/bin/ruff format --check src/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ steps:
|
||||||
POSTGRES_PASSWORD: sekrit
|
POSTGRES_PASSWORD: sekrit
|
||||||
commands:
|
commands:
|
||||||
- pip install uv
|
- pip install uv
|
||||||
- uv sync --extra testing --extra ci
|
- uv sync --group ci
|
||||||
- ./.venv/bin/coverage run ./src/manage.py test newsreader
|
- ./.venv/bin/coverage run ./src/manage.py test newsreader
|
||||||
- ./.venv/bin/coverage report --show-missing
|
- ./.venv/bin/coverage report --show-missing
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ RUN mkdir /app/media
|
||||||
COPY uv.lock pyproject.toml /app/
|
COPY uv.lock pyproject.toml /app/
|
||||||
|
|
||||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
||||||
RUN uv sync --frozen --no-install-project
|
RUN uv sync --frozen --no-default-groups --no-install-project
|
||||||
|
|
||||||
|
|
||||||
# stage 2
|
# stage 2
|
||||||
|
|
@ -58,7 +58,7 @@ COPY --from=frontend-build /app/src/newsreader/static /app/src/newsreader/static
|
||||||
|
|
||||||
COPY ./src /app/src
|
COPY ./src /app/src
|
||||||
|
|
||||||
RUN uv sync --frozen --extra production
|
RUN uv sync --frozen --only-group production --extra sentry
|
||||||
|
|
||||||
RUN useradd -M -u 1000 newsreader
|
RUN useradd -M -u 1000 newsreader
|
||||||
RUN chown -R newsreader:newsreader /app
|
RUN chown -R newsreader:newsreader /app
|
||||||
|
|
@ -99,4 +99,4 @@ COPY ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh
|
||||||
COPY --from=backend /app/src/ /app/src/
|
COPY --from=backend /app/src/ /app/src/
|
||||||
|
|
||||||
COPY --from=backend /bin/uv /bin/uv
|
COPY --from=backend /bin/uv /bin/uv
|
||||||
RUN uv sync --frozen --extra testing --extra development
|
RUN uv sync --frozen --group development
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = 'newsreader'
|
name = 'newsreader'
|
||||||
version = '0.5.3'
|
version = '0.5.3'
|
||||||
authors = [{name = 'Sonny', email= 'sonnyba871@gmail.com'}]
|
authors = [{ name = 'Sonny', email= 'sonny871@hotmail.com' }]
|
||||||
license = {text = 'GPL-3.0'}
|
license = {text = 'GPL-3.0'}
|
||||||
requires-python = '>=3.11'
|
requires-python = '>=3.11'
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|
@ -24,35 +24,45 @@ dependencies = [
|
||||||
'lxml',
|
'lxml',
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[dependency-groups]
|
||||||
testing = [
|
test-tools = ['ruff', 'factory_boy', 'freezegun']
|
||||||
'factory-boy',
|
|
||||||
'freezegun',
|
|
||||||
'tblib',
|
|
||||||
"ruff>=0.6.3",
|
|
||||||
]
|
|
||||||
development = [
|
development = [
|
||||||
'django-debug-toolbar',
|
'django-debug-toolbar',
|
||||||
'django-stubs',
|
'django-stubs',
|
||||||
'django-extensions',
|
'django-extensions',
|
||||||
]
|
]
|
||||||
ci = ['coverage~=7.6.1']
|
ci = ['coverage~=7.6.1']
|
||||||
production = ['gunicorn~=23.0', 'sentry-sdk~=2.0']
|
production = ['gunicorn~=23.0']
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
sentry = ['sentry-sdk~=2.0']
|
||||||
|
|
||||||
[tool.uv]
|
[tool.uv]
|
||||||
environments = ["sys_platform == 'linux'"]
|
environments = ["sys_platform == 'linux'"]
|
||||||
|
default-groups = ['test-tools']
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
include = ['pyproject.toml', 'src/**/*.py']
|
include = ['pyproject.toml', 'src/**/*.py']
|
||||||
|
|
||||||
line-length = 88
|
line-length = 88
|
||||||
|
|
||||||
[tool.ruff.lint.isort]
|
[tool.ruff.lint]
|
||||||
default-section = 'third-party'
|
select = ['E4', 'E7', 'E9', 'F', 'I']
|
||||||
known-first-party = ['newsreader']
|
|
||||||
|
|
||||||
|
[tool.ruff.lint.isort]
|
||||||
lines-between-types=1
|
lines-between-types=1
|
||||||
lines-after-imports=2
|
lines-after-imports=2
|
||||||
|
|
||||||
|
default-section = 'third-party'
|
||||||
|
known-first-party = ['transip_client']
|
||||||
|
section-order = [
|
||||||
|
'future',
|
||||||
|
'standard-library',
|
||||||
|
'django',
|
||||||
|
'third-party',
|
||||||
|
'first-party',
|
||||||
|
'local-folder',
|
||||||
|
]
|
||||||
|
|
||||||
[tool.ruff.lint.isort.sections]
|
[tool.ruff.lint.isort.sections]
|
||||||
django = ['django']
|
django = ['django']
|
||||||
|
|
|
||||||
73
uv.lock
generated
73
uv.lock
generated
|
|
@ -1,4 +1,5 @@
|
||||||
version = 1
|
version = 1
|
||||||
|
revision = 1
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
resolution-markers = [
|
resolution-markers = [
|
||||||
"sys_platform == 'linux'",
|
"sys_platform == 'linux'",
|
||||||
|
|
@ -124,9 +125,6 @@ wheels = [
|
||||||
name = "click"
|
name = "click"
|
||||||
version = "8.1.7"
|
version = "8.1.7"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
|
||||||
{ name = "colorama", marker = "platform_system == 'Windows' and sys_platform == 'linux'" },
|
|
||||||
]
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
|
sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 },
|
{ url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 },
|
||||||
|
|
@ -169,15 +167,6 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289 },
|
{ url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "colorama"
|
|
||||||
version = "0.4.6"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 }
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "coverage"
|
name = "coverage"
|
||||||
version = "7.6.1"
|
version = "7.6.1"
|
||||||
|
|
@ -366,26 +355,26 @@ sdist = { url = "https://files.pythonhosted.org/packages/f4/87/647ce93053cb5e35e
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "factory-boy"
|
name = "factory-boy"
|
||||||
version = "3.3.1"
|
version = "3.3.3"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "faker", marker = "sys_platform == 'linux'" },
|
{ name = "faker", marker = "sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/99/3d/8070dde623341401b1c80156583d4c793058fe250450178218bb6e45526c/factory_boy-3.3.1.tar.gz", hash = "sha256:8317aa5289cdfc45f9cae570feb07a6177316c82e34d14df3c2e1f22f26abef0", size = 163924 }
|
sdist = { url = "https://files.pythonhosted.org/packages/ba/98/75cacae9945f67cfe323829fc2ac451f64517a8a330b572a06a323997065/factory_boy-3.3.3.tar.gz", hash = "sha256:866862d226128dfac7f2b4160287e899daf54f2612778327dd03d0e2cb1e3d03", size = 164146 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/33/cf/44ec67152f3129d0114c1499dd34f0a0a0faf43d9c2af05bc535746ca482/factory_boy-3.3.1-py2.py3-none-any.whl", hash = "sha256:7b1113c49736e1e9995bc2a18f4dbf2c52cf0f841103517010b1d825712ce3ca", size = 36878 },
|
{ url = "https://files.pythonhosted.org/packages/27/8d/2bc5f5546ff2ccb3f7de06742853483ab75bf74f36a92254702f8baecc79/factory_boy-3.3.3-py2.py3-none-any.whl", hash = "sha256:1c39e3289f7e667c4285433f305f8d506efc2fe9c73aaea4151ebd5cdea394fc", size = 37036 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "faker"
|
name = "faker"
|
||||||
version = "28.0.0"
|
version = "37.0.2"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "python-dateutil", marker = "sys_platform == 'linux'" },
|
{ name = "tzdata", marker = "sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/fe/d6/f1a81065124b23d1b56367570a4e00531005b4cca76a739b50ebf79a026d/faker-28.0.0.tar.gz", hash = "sha256:0d3c0399204aaf8205cc1750db443474ca0436f177126b2c27b798e8336cc74f", size = 1782120 }
|
sdist = { url = "https://files.pythonhosted.org/packages/37/62/80f15fe1b5abf3e5b09815178d7eb63a150fc7fcfebd5271ca4aab1d885a/faker-37.0.2.tar.gz", hash = "sha256:948bd27706478d3aa0b6f9f58b9f25207098f6ca79852c7b49c44a8ced2bc59b", size = 1875441 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/92/09/74f194bc3f5fe1d88cd4a882d51669431f82b17327840bd7fdd7b516c97e/Faker-28.0.0-py3-none-any.whl", hash = "sha256:6a3a08be54c37e05f7943d7ba5211d252c1de737687a46ad6f29209d8d5db11f", size = 1820129 },
|
{ url = "https://files.pythonhosted.org/packages/a9/8b/b738d3d79ee4502ca966a2a4fa6833c11f50130127bdd57729e9b29c6d2f/faker-37.0.2-py3-none-any.whl", hash = "sha256:8955706c56c28099585e9e2b6f814eb0a3a227eb36a2ee3eb9ab577c4764eacc", size = 1918397 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -507,7 +496,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "newsreader"
|
name = "newsreader"
|
||||||
version = "0.4.4"
|
version = "0.5.3"
|
||||||
source = { virtual = "." }
|
source = { virtual = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "beautifulsoup4", marker = "sys_platform == 'linux'" },
|
{ name = "beautifulsoup4", marker = "sys_platform == 'linux'" },
|
||||||
|
|
@ -530,6 +519,11 @@ dependencies = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.optional-dependencies]
|
[package.optional-dependencies]
|
||||||
|
sentry = [
|
||||||
|
{ name = "sentry-sdk", marker = "sys_platform == 'linux'" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dev-dependencies]
|
||||||
ci = [
|
ci = [
|
||||||
{ name = "coverage", marker = "sys_platform == 'linux'" },
|
{ name = "coverage", marker = "sys_platform == 'linux'" },
|
||||||
]
|
]
|
||||||
|
|
@ -540,13 +534,11 @@ development = [
|
||||||
]
|
]
|
||||||
production = [
|
production = [
|
||||||
{ name = "gunicorn", marker = "sys_platform == 'linux'" },
|
{ name = "gunicorn", marker = "sys_platform == 'linux'" },
|
||||||
{ name = "sentry-sdk", marker = "sys_platform == 'linux'" },
|
|
||||||
]
|
]
|
||||||
testing = [
|
test-tools = [
|
||||||
{ name = "factory-boy", marker = "sys_platform == 'linux'" },
|
{ name = "factory-boy", marker = "sys_platform == 'linux'" },
|
||||||
{ name = "freezegun", marker = "sys_platform == 'linux'" },
|
{ name = "freezegun", marker = "sys_platform == 'linux'" },
|
||||||
{ name = "ruff", marker = "sys_platform == 'linux'" },
|
{ name = "ruff", marker = "sys_platform == 'linux'" },
|
||||||
{ name = "tblib", marker = "sys_platform == 'linux'" },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
|
|
@ -554,30 +546,36 @@ requires-dist = [
|
||||||
{ name = "beautifulsoup4" },
|
{ name = "beautifulsoup4" },
|
||||||
{ name = "bleach" },
|
{ name = "bleach" },
|
||||||
{ name = "celery", specifier = "~=5.4" },
|
{ name = "celery", specifier = "~=5.4" },
|
||||||
{ name = "coverage", marker = "extra == 'ci'", specifier = "~=7.6.1" },
|
|
||||||
{ name = "django", specifier = "~=4.2" },
|
{ name = "django", specifier = "~=4.2" },
|
||||||
{ name = "django-axes" },
|
{ name = "django-axes" },
|
||||||
{ name = "django-celery-beat", specifier = "~=2.7.0" },
|
{ name = "django-celery-beat", specifier = "~=2.7.0" },
|
||||||
{ name = "django-debug-toolbar", marker = "extra == 'development'" },
|
|
||||||
{ name = "django-extensions", marker = "extra == 'development'" },
|
|
||||||
{ name = "django-registration-redux", specifier = "~=2.7" },
|
{ name = "django-registration-redux", specifier = "~=2.7" },
|
||||||
{ name = "django-rest-framework" },
|
{ name = "django-rest-framework" },
|
||||||
{ name = "django-stubs", marker = "extra == 'development'" },
|
|
||||||
{ name = "djangorestframework-camel-case" },
|
{ name = "djangorestframework-camel-case" },
|
||||||
{ name = "factory-boy", marker = "extra == 'testing'" },
|
|
||||||
{ name = "feedparser" },
|
{ name = "feedparser" },
|
||||||
{ name = "freezegun", marker = "extra == 'testing'" },
|
|
||||||
{ name = "ftfy", specifier = "~=6.2" },
|
{ name = "ftfy", specifier = "~=6.2" },
|
||||||
{ name = "gunicorn", marker = "extra == 'production'", specifier = "~=23.0" },
|
|
||||||
{ name = "lxml" },
|
{ name = "lxml" },
|
||||||
{ name = "psycopg" },
|
{ name = "psycopg" },
|
||||||
{ name = "pymemcache" },
|
{ name = "pymemcache" },
|
||||||
{ name = "python-dotenv", specifier = "~=1.0.1" },
|
{ name = "python-dotenv", specifier = "~=1.0.1" },
|
||||||
{ name = "requests" },
|
{ name = "requests" },
|
||||||
{ name = "requests-oauthlib" },
|
{ name = "requests-oauthlib" },
|
||||||
{ name = "ruff", marker = "extra == 'testing'", specifier = ">=0.6.3" },
|
{ name = "sentry-sdk", marker = "extra == 'sentry'", specifier = "~=2.0" },
|
||||||
{ name = "sentry-sdk", marker = "extra == 'production'", specifier = "~=2.0" },
|
]
|
||||||
{ name = "tblib", marker = "extra == 'testing'" },
|
provides-extras = ["sentry"]
|
||||||
|
|
||||||
|
[package.metadata.requires-dev]
|
||||||
|
ci = [{ name = "coverage", specifier = "~=7.6.1" }]
|
||||||
|
development = [
|
||||||
|
{ name = "django-debug-toolbar" },
|
||||||
|
{ name = "django-extensions" },
|
||||||
|
{ name = "django-stubs" },
|
||||||
|
]
|
||||||
|
production = [{ name = "gunicorn", specifier = "~=23.0" }]
|
||||||
|
test-tools = [
|
||||||
|
{ name = "factory-boy" },
|
||||||
|
{ name = "freezegun" },
|
||||||
|
{ name = "ruff" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -758,15 +756,6 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156 },
|
{ url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tblib"
|
|
||||||
version = "3.0.0"
|
|
||||||
source = { registry = "https://pypi.org/simple" }
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/1a/df/4f2cd7eaa6d41a7994d46527349569d46e34d9cdd07590b5c5b0dcf53de3/tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6", size = 30616 }
|
|
||||||
wheels = [
|
|
||||||
{ url = "https://files.pythonhosted.org/packages/9b/87/ce70db7cae60e67851eb94e1a2127d4abb573d3866d2efd302ceb0d4d2a5/tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", size = 12478 },
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-pyyaml"
|
name = "types-pyyaml"
|
||||||
version = "6.0.12.20240808"
|
version = "6.0.12.20240808"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue