From e31e7f169af6be966e2c7038187743c5fcd85da1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 4 Jun 2024 23:18:24 -0400 Subject: [PATCH] use rye --- Dockerfile | 2 +- pyproject.toml | 70 ++++++++++- requirements-dev.lock | 264 ++++++++++++++++++++++++++++++++++++++++++ requirements-dev.txt | 10 -- requirements.lock | 200 ++++++++++++++++++++++++++++++++ requirements.txt | 49 -------- 6 files changed, 531 insertions(+), 64 deletions(-) create mode 100644 requirements-dev.lock delete mode 100644 requirements-dev.txt create mode 100644 requirements.lock delete mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile index 83b3d571..1e70f25d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ WORKDIR /neodb RUN python -m venv /neodb-venv RUN find misc/wheels-cache -type f | xargs -n 1 /neodb-venv/bin/python3 -m pip install || echo incompatible wheel ignored RUN rm -rf misc/wheels-cache -RUN --mount=type=cache,sharing=locked,target=/root/.cache /neodb-venv/bin/python3 -m pip install --upgrade -r requirements.txt +RUN --mount=type=cache,sharing=locked,target=/root/.cache /neodb-venv/bin/python3 -m pip install --upgrade -r requirements.lock WORKDIR /takahe RUN python -m venv /takahe-venv diff --git a/pyproject.toml b/pyproject.toml index 90b305c4..23f9d8c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,71 @@ version = "0.9" description = "🧩 self-hosted server tracking what you read/watch/listen/play, powering a global distributed community federating via ActivityPub." readme = "README.md" requires-python = ">= 3.12" +dependencies = [ + "blurhash-python", + "cachetools", + "dateparser", + "discord.py", + "django~=4.2.11", + "django-anymail", + "django-auditlog>=3.0.0", + "django-bleach", + "django-compressor", + "django-cors-headers", + "django-environ", + "django-hijack", + "django-jsonform", + "django-maintenance-mode", + "django-markdownx", + "django-ninja", + "django-oauth-toolkit==2.3.0", + "django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a", + "django-redis", + "django-rq", + "django-sass-processor", + "django-simple-history ", + "django-slack", + "django-tz-detect", + "django-user-messages", + "dnspython", + "easy-thumbnails", + "filetype", + "gunicorn", + "httpx", + "igdb-api-v4", + "langdetect", + "libsass", + "listparser", + "loguru", + "lxml", + "markdownify", + "mistune", + "openpyxl", + "podcastparser", + "psycopg2-binary", + "requests", + "rq", + "sentry-sdk", + "setproctitle", + "tqdm", + "typesense", + "urlman", + "validators", +] + +[tool.rye] +managed = true +virtual = true +dev-dependencies = [ + "pre-commit>=3.7.0", + "black~=24.4.2", + "django-stubs", + "djlint~=1.34.1", + "isort~=5.13.2", + "lxml-stubs", + "pyright==1.1.365", + "ruff", +] [tool.pyright] exclude = [ "media", ".venv", ".git", "playground", "catalog/*/tests.py", "journal/tests.py", "neodb", "**/migrations", "**/sites/douban_*", "neodb-takahe" ] @@ -17,10 +82,7 @@ indent=2 profile = "black" [tool.mypy] -exclude = [ - '^neodb-takahe/', - '^legacy/', -] +exclude = ['^neodb-takahe/', '^legacy/', '^media/', '^playground/', '^catalog/*/tests.py', '^journal/tests.py', '^neodb/', '.*migrations.*', '.*sites/douban_.*' ] plugins = ["mypy_django_plugin.main"] [tool.django-stubs] diff --git a/requirements-dev.lock b/requirements-dev.lock new file mode 100644 index 00000000..d20dd673 --- /dev/null +++ b/requirements-dev.lock @@ -0,0 +1,264 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false +# generate-hashes: false + +aiohttp==3.9.5 + # via discord-py +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.7.0 + # via pydantic +anyio==4.4.0 + # via httpx +asgiref==3.8.1 + # via django + # via django-cors-headers + # via django-stubs +attrs==23.2.0 + # via aiohttp +beautifulsoup4==4.12.3 + # via markdownify +black==24.4.2 +bleach==5.0.1 + # via django-bleach +blurhash-python==1.2.2 +cachetools==5.3.3 +certifi==2024.6.2 + # via httpcore + # via httpx + # via requests + # via sentry-sdk +cffi==1.16.0 + # via blurhash-python + # via cryptography +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via black + # via djlint + # via rq +colorama==0.4.6 + # via djlint +cryptography==42.0.8 + # via jwcrypto +cssbeautifier==1.15.1 + # via djlint +dateparser==1.2.0 +discord-py==2.3.2 +distlib==0.3.8 + # via virtualenv +django==4.2.13 + # via django-anymail + # via django-appconf + # via django-auditlog + # via django-bleach + # via django-cors-headers + # via django-hijack + # via django-jsonform + # via django-markdownx + # via django-ninja + # via django-oauth-toolkit + # via django-polymorphic + # via django-redis + # via django-rq + # via django-simple-history + # via django-slack + # via django-stubs + # via django-stubs-ext + # via django-tz-detect + # via easy-thumbnails +django-anymail==10.3 +django-appconf==1.0.6 + # via django-compressor +django-auditlog==3.0.0 +django-bleach==3.1.0 +django-compressor==4.4 +django-cors-headers==4.3.1 +django-environ==0.11.2 +django-hijack==3.5.0 +django-jsonform==2.22.0 +django-maintenance-mode==0.21.1 +django-markdownx==4.0.7 +django-ninja==1.1.0 +django-oauth-toolkit==2.3.0 +django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a +django-redis==5.4.0 +django-rq==2.10.2 +django-sass-processor==1.4.1 +django-simple-history==3.7.0 +django-slack==5.19.0 +django-stubs==5.0.2 +django-stubs-ext==5.0.2 + # via django-stubs +django-tz-detect==0.5.0 +django-user-messages==1.0.0 +djlint==1.34.1 +dnspython==2.6.1 +easy-thumbnails==2.8.5 +editorconfig==0.12.4 + # via cssbeautifier + # via jsbeautifier +et-xmlfile==1.1.0 + # via openpyxl +filelock==3.14.0 + # via virtualenv +filetype==1.2.0 +frozenlist==1.4.1 + # via aiohttp + # via aiosignal +gunicorn==22.0.0 +h11==0.14.0 + # via httpcore +html-tag-names==0.1.2 + # via djlint +html-void-elements==0.1.0 + # via djlint +httpcore==1.0.5 + # via httpx +httpx==0.27.0 +identify==2.5.36 + # via pre-commit +idna==3.7 + # via anyio + # via httpx + # via requests + # via yarl +igdb-api-v4==0.3.2 +isort==5.13.2 +jsbeautifier==1.15.1 + # via cssbeautifier + # via djlint +json5==0.9.25 + # via djlint +jwcrypto==1.5.6 + # via django-oauth-toolkit +langdetect==1.0.9 +libsass==0.23.0 +listparser==0.20 +loguru==0.7.2 +lxml==5.2.2 +lxml-stubs==0.5.1 +markdown==3.6 + # via django-markdownx +markdownify==0.12.1 +mistune==3.0.2 +multidict==6.0.5 + # via aiohttp + # via yarl +mypy-extensions==1.0.0 + # via black +nodeenv==1.9.1 + # via pre-commit + # via pyright +oauthlib==3.2.2 + # via django-oauth-toolkit +openpyxl==3.1.3 +packaging==24.0 + # via black + # via gunicorn +pathspec==0.12.1 + # via black + # via djlint +pillow==10.3.0 + # via blurhash-python + # via django-markdownx + # via easy-thumbnails +platformdirs==4.2.2 + # via black + # via virtualenv +podcastparser==0.6.10 +pre-commit==3.7.1 +protobuf==5.27.0 + # via igdb-api-v4 +psycopg2-binary==2.9.9 +pycparser==2.22 + # via cffi +pydantic==2.7.3 + # via django-ninja +pydantic-core==2.18.4 + # via pydantic +pyright==1.1.365 +python-dateutil==2.9.0.post0 + # via dateparser + # via django-auditlog +python-fsutil==0.14.1 + # via django-maintenance-mode +pytz==2024.1 + # via dateparser + # via django-tz-detect +pyyaml==6.0.1 + # via djlint + # via pre-commit +rcssmin==1.1.1 + # via django-compressor +redis==5.0.4 + # via django-redis + # via django-rq + # via rq +regex==2023.12.25 + # via dateparser + # via djlint +requests==2.32.3 + # via django-anymail + # via django-oauth-toolkit + # via django-slack + # via igdb-api-v4 + # via typesense +rjsmin==1.2.1 + # via django-compressor +rq==1.16.2 + # via django-rq +ruff==0.4.7 +sentry-sdk==2.4.0 +setproctitle==1.3.3 +six==1.16.0 + # via bleach + # via blurhash-python + # via cssbeautifier + # via jsbeautifier + # via langdetect + # via markdownify + # via python-dateutil +sniffio==1.3.1 + # via anyio + # via httpx +soupsieve==2.5 + # via beautifulsoup4 +sqlparse==0.5.0 + # via django +tinycss2==1.1.1 + # via bleach +tqdm==4.66.4 + # via djlint +types-pyyaml==6.0.12.20240311 + # via django-stubs +typesense==0.21.0 +typing-extensions==4.12.1 + # via django-stubs + # via django-stubs-ext + # via jwcrypto + # via pydantic + # via pydantic-core +tzlocal==5.2 + # via dateparser +urllib3==2.2.1 + # via django-anymail + # via requests + # via sentry-sdk +urlman==2.0.2 +validators==0.28.3 +virtualenv==20.26.2 + # via pre-commit +webencodings==0.5.1 + # via bleach + # via tinycss2 +yarl==1.9.4 + # via aiohttp diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 2f0f704b..00000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,10 +0,0 @@ -black~=24.4.2 -#coverage -#django-debug-toolbar -django-stubs -djlint~=1.34.1 -isort~=5.13.2 -lxml-stubs -pre-commit -pyright==1.1.365 -ruff diff --git a/requirements.lock b/requirements.lock new file mode 100644 index 00000000..ef0e3cd5 --- /dev/null +++ b/requirements.lock @@ -0,0 +1,200 @@ +# generated by rye +# use `rye lock` or `rye sync` to update this lockfile +# +# last locked with the following flags: +# pre: false +# features: [] +# all-features: false +# with-sources: false +# generate-hashes: false + +aiohttp==3.9.5 + # via discord-py +aiosignal==1.3.1 + # via aiohttp +annotated-types==0.7.0 + # via pydantic +anyio==4.4.0 + # via httpx +asgiref==3.8.1 + # via django + # via django-cors-headers +attrs==23.2.0 + # via aiohttp +beautifulsoup4==4.12.3 + # via markdownify +bleach==5.0.1 + # via django-bleach +blurhash-python==1.2.2 +cachetools==5.3.3 +certifi==2024.6.2 + # via httpcore + # via httpx + # via requests + # via sentry-sdk +cffi==1.16.0 + # via blurhash-python + # via cryptography +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via rq +cryptography==42.0.8 + # via jwcrypto +dateparser==1.2.0 +discord-py==2.3.2 +django==4.2.13 + # via django-anymail + # via django-appconf + # via django-auditlog + # via django-bleach + # via django-cors-headers + # via django-hijack + # via django-jsonform + # via django-markdownx + # via django-ninja + # via django-oauth-toolkit + # via django-polymorphic + # via django-redis + # via django-rq + # via django-simple-history + # via django-slack + # via django-tz-detect + # via easy-thumbnails +django-anymail==10.3 +django-appconf==1.0.6 + # via django-compressor +django-auditlog==3.0.0 +django-bleach==3.1.0 +django-compressor==4.4 +django-cors-headers==4.3.1 +django-environ==0.11.2 +django-hijack==3.5.0 +django-jsonform==2.22.0 +django-maintenance-mode==0.21.1 +django-markdownx==4.0.7 +django-ninja==1.1.0 +django-oauth-toolkit==2.3.0 +django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a +django-redis==5.4.0 +django-rq==2.10.2 +django-sass-processor==1.4.1 +django-simple-history==3.7.0 +django-slack==5.19.0 +django-tz-detect==0.5.0 +django-user-messages==1.0.0 +dnspython==2.6.1 +easy-thumbnails==2.8.5 +et-xmlfile==1.1.0 + # via openpyxl +filetype==1.2.0 +frozenlist==1.4.1 + # via aiohttp + # via aiosignal +gunicorn==22.0.0 +h11==0.14.0 + # via httpcore +httpcore==1.0.5 + # via httpx +httpx==0.27.0 +idna==3.7 + # via anyio + # via httpx + # via requests + # via yarl +igdb-api-v4==0.3.2 +jwcrypto==1.5.6 + # via django-oauth-toolkit +langdetect==1.0.9 +libsass==0.23.0 +listparser==0.20 +loguru==0.7.2 +lxml==5.2.2 +markdown==3.6 + # via django-markdownx +markdownify==0.12.1 +mistune==3.0.2 +multidict==6.0.5 + # via aiohttp + # via yarl +oauthlib==3.2.2 + # via django-oauth-toolkit +openpyxl==3.1.3 +packaging==24.0 + # via gunicorn +pillow==10.3.0 + # via blurhash-python + # via django-markdownx + # via easy-thumbnails +podcastparser==0.6.10 +protobuf==5.27.0 + # via igdb-api-v4 +psycopg2-binary==2.9.9 +pycparser==2.22 + # via cffi +pydantic==2.7.3 + # via django-ninja +pydantic-core==2.18.4 + # via pydantic +python-dateutil==2.9.0.post0 + # via dateparser + # via django-auditlog +python-fsutil==0.14.1 + # via django-maintenance-mode +pytz==2024.1 + # via dateparser + # via django-tz-detect +rcssmin==1.1.1 + # via django-compressor +redis==5.0.4 + # via django-redis + # via django-rq + # via rq +regex==2024.5.15 + # via dateparser +requests==2.32.3 + # via django-anymail + # via django-oauth-toolkit + # via django-slack + # via igdb-api-v4 + # via typesense +rjsmin==1.2.1 + # via django-compressor +rq==1.16.2 + # via django-rq +sentry-sdk==2.4.0 +setproctitle==1.3.3 +six==1.16.0 + # via bleach + # via blurhash-python + # via langdetect + # via markdownify + # via python-dateutil +sniffio==1.3.1 + # via anyio + # via httpx +soupsieve==2.5 + # via beautifulsoup4 +sqlparse==0.5.0 + # via django +tinycss2==1.1.1 + # via bleach +tqdm==4.66.4 +typesense==0.21.0 +typing-extensions==4.12.1 + # via jwcrypto + # via pydantic + # via pydantic-core +tzlocal==5.2 + # via dateparser +urllib3==2.2.1 + # via django-anymail + # via requests + # via sentry-sdk +urlman==2.0.2 +validators==0.28.3 +webencodings==0.5.1 + # via bleach + # via tinycss2 +yarl==1.9.4 + # via aiohttp diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 9760a887..00000000 --- a/requirements.txt +++ /dev/null @@ -1,49 +0,0 @@ -blurhash-python -cachetools -dateparser -discord.py -django~=4.2.11 -django-anymail -django-auditlog>=3.0.0 -django-bleach -django-compressor -django-cors-headers -django-environ -django-hijack -django-jsonform -django-maintenance-mode -django-markdownx -django-ninja -django-oauth-toolkit==2.3.0 -django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a -django-redis -django-rq -django-sass-processor -django-simple-history # no longer used but kept for migration code which is used by tests -django-slack -django-tz-detect -django-user-messages -dnspython -easy-thumbnails -filetype -gunicorn -httpx -igdb-api-v4 -langdetect -libsass -listparser -loguru -lxml -markdownify -mistune -openpyxl -podcastparser -psycopg2-binary -requests -rq -sentry-sdk -setproctitle -tqdm -typesense -urlman -validators