Use uv instead of Poetry
This commit is contained in:
24
.gitignore
vendored
24
.gitignore
vendored
@ -92,22 +92,30 @@ ipython_config.py
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
Pipfile.lock
|
||||
|
||||
# UV
|
||||
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
uv.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/#use-with-ide
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
@ -159,8 +167,10 @@ cython_debug/
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
*.json
|
||||
# Old responses
|
||||
**/json/*.json
|
||||
**/json2/*.json
|
||||
**/json3/*.json
|
||||
|
||||
# The directory where "django-admin collectstatic" will collect static files for deployment.
|
||||
staticfiles/
|
||||
|
||||
*.sqlite
|
||||
|
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
||||
3.13
|
1314
poetry.lock
generated
1314
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
149
pyproject.toml
149
pyproject.toml
@ -1,64 +1,71 @@
|
||||
[tool.poetry]
|
||||
[project]
|
||||
name = "twitch-drop-notifier"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Joakim Hellsén <tlovinator@gmail.com>"]
|
||||
description = "A Django app that notifies you when a new Twitch drop is available."
|
||||
readme = "README.md"
|
||||
package-mode = false
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.12"
|
||||
discord-webhook = "^1.3.1"
|
||||
django = { version = "^5.1.2" }
|
||||
django-debug-toolbar = "^4.4.6"
|
||||
django-simple-history = "^3.7.0"
|
||||
pillow = "^10.4.0"
|
||||
platformdirs = "^4.3.6"
|
||||
python-dotenv = "^1.0.1"
|
||||
requests = "^2.32.3"
|
||||
requests-cache = "^1.2.1"
|
||||
sentry-sdk = { extras = ["django"], version = "^2.16.0" }
|
||||
undetected-playwright-patch = "^1.40.0.post1700587210000"
|
||||
whitenoise = { extras = ["brotli"], version = "^6.7.0" }
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
djlint = "^1.35.2"
|
||||
pre-commit = "^3.8.0"
|
||||
pytest = "^8.3.3"
|
||||
pytest-django = "^4.9.0"
|
||||
ruff = "^0.5.1"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.ruff]
|
||||
# https://docs.astral.sh/ruff/settings/
|
||||
target-version = "py312"
|
||||
fix = true
|
||||
unsafe-fixes = true
|
||||
preview = true
|
||||
lint.select = ["ALL"]
|
||||
line-length = 119
|
||||
lint.pydocstyle.convention = "google"
|
||||
lint.ignore = [
|
||||
"CPY001", # Missing copyright notice at top of file
|
||||
"D100", # Checks for undocumented public module definitions.
|
||||
"D101", # Checks for undocumented public class definitions.
|
||||
"D102", # Checks for undocumented public method definitions.
|
||||
"D104", # Missing docstring in public package.
|
||||
"D105", # Missing docstring in magic method.
|
||||
"D106", # Checks for undocumented public class definitions, for nested classes.
|
||||
"ERA001", # Found commented-out code
|
||||
"FIX002", # Line contains TODO
|
||||
"COM812", # Checks for the absence of trailing commas.
|
||||
"ISC001", # Checks for implicitly concatenated strings on a single line.
|
||||
"DJ001", # Checks nullable string-based fields (like CharField and TextField) in Django models.
|
||||
"PLR0912", # Too many branches # TODO: Actually fix this instead of ignoring it.
|
||||
"PLR0915", # Too many statements # TODO: Actually fix this instead of ignoring it.
|
||||
"C901", # Function is too complex # TODO: Actually fix this instead of ignoring it.
|
||||
requires-python = ">=3.13"
|
||||
dependencies = [
|
||||
"discord-webhook",
|
||||
"django-debug-toolbar",
|
||||
"django-stubs-ext",
|
||||
"django",
|
||||
"platformdirs",
|
||||
"psycopg[binary,pool]",
|
||||
"python-dotenv",
|
||||
]
|
||||
|
||||
# You can install development dependencies with `uv install --dev`.
|
||||
# Or you can install them with `uv install --dev -r requirements-dev.txt`.
|
||||
# uv can be replaced with `pip`if you don't have uv installed.
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"djlint",
|
||||
"pre-commit",
|
||||
"pytest",
|
||||
"pytest-django",
|
||||
"ruff",
|
||||
"django-stubs[compatible-mypy]",
|
||||
"black",
|
||||
]
|
||||
|
||||
# https://docs.astral.sh/ruff/settings/
|
||||
[tool.ruff]
|
||||
# Enable all rules
|
||||
lint.select = ["ALL"]
|
||||
|
||||
# https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
|
||||
lint.pydocstyle.convention = "google"
|
||||
|
||||
# Ignore some rules
|
||||
lint.ignore = [
|
||||
"CPY001", # Checks for the absence of copyright notices within Python files.
|
||||
"D100", # Checks for undocumented public module definitions.
|
||||
"D104", # Checks for undocumented public package definitions.
|
||||
"D106", # Checks for undocumented public class definitions, for nested classes.
|
||||
"ERA001", # Checks for commented-out Python code.
|
||||
"FIX002", # Checks for "TODO" comments.
|
||||
|
||||
# Conflicting lint rules when using Ruff's formatter
|
||||
# https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
|
||||
"COM812", # Checks for the absence of trailing commas.
|
||||
"COM819", # Checks for the presence of prohibited trailing commas.
|
||||
"D206", # Checks for docstrings that are indented with tabs.
|
||||
"D300", # Checks for docstrings that use '''triple single quotes''' instead of """triple double quotes""".
|
||||
"E111", # Checks for indentation with a non-multiple of 4 spaces.
|
||||
"E114", # Checks for indentation of comments with a non-multiple of 4 spaces.
|
||||
"E117", # Checks for over-indented code.
|
||||
"ISC001", # Checks for implicitly concatenated strings on a single line.
|
||||
"ISC002", # Checks for implicitly concatenated strings that span multiple lines.
|
||||
"Q000", # Checks for inline strings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.inline-quotes option.
|
||||
"Q001", # Checks for multiline strings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.multiline-quotes setting.
|
||||
"Q002", # Checks for docstrings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.docstring-quotes setting.
|
||||
"Q003", # Checks for strings that include escaped quotes, and suggests changing the quote style to avoid the need to escape them.
|
||||
"W191", # Checks for indentation that uses tabs.
|
||||
]
|
||||
|
||||
# Default is 88 characters
|
||||
line-length = 120
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"**/tests/**" = [
|
||||
"ARG", # Unused function args -> fixtures nevertheless are functionally relevant...
|
||||
@ -71,11 +78,41 @@ lint.ignore = [
|
||||
"RUF012", # Checks for mutable default values in class attributes.
|
||||
]
|
||||
|
||||
# https://www.djlint.com/
|
||||
[tool.djlint]
|
||||
# Set a profile for the template language. The profile will enable linter rules that apply to your template language, and may also change reformatting.
|
||||
profile = "django"
|
||||
|
||||
# Formatter will attempt to format template syntax inside of tag attributes.
|
||||
format_attribute_template_tags = true
|
||||
|
||||
# Format contents of style tags using css-beautify
|
||||
format_css = true
|
||||
|
||||
# Format contents of script tags using js-beautify.
|
||||
format_js = true
|
||||
|
||||
# Ignore some rules
|
||||
ignore = "H006" # Img tag should have height and width attributes.
|
||||
|
||||
# https://pytest-django.readthedocs.io/en/latest/
|
||||
[tool.pytest.ini_options]
|
||||
# Where our Django settings are located.
|
||||
DJANGO_SETTINGS_MODULE = "core.settings"
|
||||
|
||||
# Only run tests in files that match this pattern.
|
||||
python_files = ["test_*.py"]
|
||||
|
||||
[tool.mypy]
|
||||
plugins = ["mypy_django_plugin.main"]
|
||||
|
||||
[tool.django-stubs]
|
||||
django_settings_module = "core.settings"
|
||||
|
||||
[tool.black]
|
||||
line-length = 120
|
||||
preview = true
|
||||
unstable = true
|
||||
|
||||
[tool.isort]
|
||||
profile = "black"
|
||||
|
6
requirements-dev.txt
Normal file
6
requirements-dev.txt
Normal file
@ -0,0 +1,6 @@
|
||||
django-stubs[compatible-mypy]
|
||||
djlint
|
||||
pre-commit
|
||||
pytest
|
||||
pytest-django
|
||||
ruff
|
6
requirements.txt
Normal file
6
requirements.txt
Normal file
@ -0,0 +1,6 @@
|
||||
discord-webhook
|
||||
django
|
||||
django-debug-toolbar
|
||||
platformdirs
|
||||
psycopg[binary,pool]
|
||||
python-dotenv
|
Reference in New Issue
Block a user