update dependencies (#766)
* update dependencies * fix lint * sync migration --------- Co-authored-by: mein Name <ich@example.com>
This commit is contained in:
parent
7293e6c4bd
commit
4c5c9703f5
12 changed files with 215 additions and 337 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -13,6 +13,9 @@ __pycache__/
|
||||||
# VS Code configuration files
|
# VS Code configuration files
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
# Zed settings
|
||||||
|
.zed
|
||||||
|
|
||||||
# flake8
|
# flake8
|
||||||
tox.ini
|
tox.ini
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
exclude: ^test_data/
|
exclude: ^test_data/
|
||||||
repos:
|
repos:
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.6.0
|
rev: v5.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
args: [--unsafe]
|
args: [--unsafe]
|
||||||
- id: check-json
|
- id: check-json
|
||||||
- id: check-xml
|
- id: check-xml
|
||||||
- id: check-toml
|
- id: check-toml
|
||||||
- id: check-ast
|
- id: check-ast
|
||||||
- id: check-docstring-first
|
- id: check-docstring-first
|
||||||
- id: check-executables-have-shebangs
|
- id: check-executables-have-shebangs
|
||||||
- id: check-symlinks
|
- id: check-symlinks
|
||||||
- id: check-added-large-files
|
- id: check-added-large-files
|
||||||
args: [--maxkb=1024]
|
args: [--maxkb=1024]
|
||||||
- id: detect-private-key
|
- id: detect-private-key
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: fix-byte-order-marker
|
- id: fix-byte-order-marker
|
||||||
- id: debug-statements
|
- id: debug-statements
|
||||||
- id: check-merge-conflict
|
- id: check-merge-conflict
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: requirements-txt-fixer
|
- id: requirements-txt-fixer
|
||||||
- id: mixed-line-ending
|
- id: mixed-line-ending
|
||||||
|
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.4.7
|
rev: v0.7.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
# - id: ruff-format
|
# - id: ruff-format
|
||||||
|
@ -39,14 +39,19 @@ repos:
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
rev: 24.4.2
|
rev: 24.4.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
- repo: https://github.com/Riverside-Healthcare/djLint
|
- repo: https://github.com/Riverside-Healthcare/djLint
|
||||||
rev: v1.34.1
|
rev: v1.35.2
|
||||||
hooks:
|
hooks:
|
||||||
- id: djlint-reformat-django
|
- id: djlint-reformat-django
|
||||||
- id: djlint-django
|
- id: djlint-django
|
||||||
|
|
||||||
|
# - repo: https://github.com/RobertCraigie/pyright-python
|
||||||
|
# rev: v1.1.386
|
||||||
|
# hooks:
|
||||||
|
# - id: pyright
|
||||||
|
|
||||||
- repo: local
|
- repo: local
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyright
|
- id: pyright
|
||||||
|
|
|
@ -110,8 +110,6 @@ env = environ.FileAwareEnv(
|
||||||
IGDB_API_CLIENT_SECRET=(str, ""),
|
IGDB_API_CLIENT_SECRET=(str, ""),
|
||||||
# Discord webhooks
|
# Discord webhooks
|
||||||
DISCORD_WEBHOOKS=(dict, {"user-report": None}),
|
DISCORD_WEBHOOKS=(dict, {"user-report": None}),
|
||||||
# Slack API token, for sending exceptions to Slack, may deprecate in future
|
|
||||||
SLACK_API_TOKEN=(str, ""),
|
|
||||||
THREADS_APP_ID=(str, ""),
|
THREADS_APP_ID=(str, ""),
|
||||||
THREADS_APP_SECRET=(str, ""),
|
THREADS_APP_SECRET=(str, ""),
|
||||||
NEODB_ENABLE_LOGIN_BLUESKY=(bool, False),
|
NEODB_ENABLE_LOGIN_BLUESKY=(bool, False),
|
||||||
|
@ -276,8 +274,6 @@ GOOGLE_API_KEY = env("GOOGLE_API_KEY")
|
||||||
DISCOGS_API_KEY = env("DISCOGS_API_KEY")
|
DISCOGS_API_KEY = env("DISCOGS_API_KEY")
|
||||||
IGDB_CLIENT_ID = env("IGDB_API_CLIENT_ID")
|
IGDB_CLIENT_ID = env("IGDB_API_CLIENT_ID")
|
||||||
IGDB_CLIENT_SECRET = env("IGDB_API_CLIENT_SECRET")
|
IGDB_CLIENT_SECRET = env("IGDB_API_CLIENT_SECRET")
|
||||||
SLACK_TOKEN = env("SLACK_API_TOKEN")
|
|
||||||
SLACK_CHANNEL = "alert"
|
|
||||||
|
|
||||||
DOWNLOADER_PROXY_LIST = env("NEODB_DOWNLOADER_PROXY_LIST")
|
DOWNLOADER_PROXY_LIST = env("NEODB_DOWNLOADER_PROXY_LIST")
|
||||||
DOWNLOADER_BACKUP_PROXY = env("NEODB_DOWNLOADER_BACKUP_PROXY", default="") # type: ignore
|
DOWNLOADER_BACKUP_PROXY = env("NEODB_DOWNLOADER_BACKUP_PROXY", default="") # type: ignore
|
||||||
|
@ -412,15 +408,6 @@ logging.getLogger("urllib3").setLevel(logging.WARNING)
|
||||||
logging.getLogger("httpx").setLevel(logging.WARNING)
|
logging.getLogger("httpx").setLevel(logging.WARNING)
|
||||||
logging.getLogger("httpcore").setLevel(logging.WARNING)
|
logging.getLogger("httpcore").setLevel(logging.WARNING)
|
||||||
|
|
||||||
if SLACK_TOKEN:
|
|
||||||
INSTALLED_APPS += [
|
|
||||||
"django_slack",
|
|
||||||
]
|
|
||||||
LOGGING["handlers"]["slack"] = {
|
|
||||||
"level": "ERROR",
|
|
||||||
"class": "django_slack.log.SlackExceptionHandler",
|
|
||||||
}
|
|
||||||
LOGGING["loggers"]["django"] = {"handlers": ["slack"], "level": "ERROR"}
|
|
||||||
|
|
||||||
MARKDOWNX_MARKDOWNIFY_FUNCTION = "journal.models.render_md"
|
MARKDOWNX_MARKDOWNIFY_FUNCTION = "journal.models.render_md"
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import simple_history.models
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import catalog.common.utils
|
import catalog.common.utils
|
||||||
|
@ -101,76 +100,6 @@ class Migration(migrations.Migration):
|
||||||
("edited_time", models.DateTimeField(auto_now=True)),
|
("edited_time", models.DateTimeField(auto_now=True)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
|
||||||
name="HistoricalItem",
|
|
||||||
fields=[
|
|
||||||
(
|
|
||||||
"id",
|
|
||||||
models.BigIntegerField(
|
|
||||||
auto_created=True, blank=True, db_index=True, verbose_name="ID"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"uid",
|
|
||||||
models.UUIDField(db_index=True, default=uuid.uuid4, editable=False),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"title",
|
|
||||||
models.CharField(default="", max_length=1000, verbose_name="标题"),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"brief",
|
|
||||||
models.TextField(blank=True, default="", verbose_name="简介"),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"primary_lookup_id_type",
|
|
||||||
models.CharField(
|
|
||||||
max_length=50, null=True, verbose_name="主要标识类型"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"primary_lookup_id_value",
|
|
||||||
models.CharField(
|
|
||||||
max_length=1000, null=True, verbose_name="主要标识数值"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"metadata",
|
|
||||||
models.JSONField(
|
|
||||||
blank=True, default=dict, null=True, verbose_name="其它信息"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
(
|
|
||||||
"cover",
|
|
||||||
models.TextField(
|
|
||||||
blank=True,
|
|
||||||
default="item/default.svg",
|
|
||||||
max_length=100,
|
|
||||||
verbose_name="封面",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
("created_time", models.DateTimeField(blank=True, editable=False)),
|
|
||||||
("edited_time", models.DateTimeField(blank=True, editable=False)),
|
|
||||||
("is_deleted", models.BooleanField(db_index=True, default=False)),
|
|
||||||
("history_id", models.AutoField(primary_key=True, serialize=False)),
|
|
||||||
("history_date", models.DateTimeField(db_index=True)),
|
|
||||||
("history_change_reason", models.CharField(max_length=100, null=True)),
|
|
||||||
(
|
|
||||||
"history_type",
|
|
||||||
models.CharField(
|
|
||||||
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
|
|
||||||
max_length=1,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
"verbose_name": "historical item",
|
|
||||||
"verbose_name_plural": "historical items",
|
|
||||||
"ordering": ("-history_date", "-history_id"),
|
|
||||||
"get_latest_by": ("history_date", "history_id"),
|
|
||||||
},
|
|
||||||
bases=(simple_history.models.HistoricalChanges, models.Model),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name="Item",
|
name="Item",
|
||||||
fields=[
|
fields=[
|
||||||
|
|
|
@ -47,54 +47,6 @@ class Migration(migrations.Migration):
|
||||||
to="contenttypes.contenttype",
|
to="contenttypes.contenttype",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
|
||||||
model_name="historicalitem",
|
|
||||||
name="history_user",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.SET_NULL,
|
|
||||||
related_name="+",
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="historicalitem",
|
|
||||||
name="last_editor",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
db_constraint=False,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
||||||
related_name="+",
|
|
||||||
to=settings.AUTH_USER_MODEL,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="historicalitem",
|
|
||||||
name="merged_to_item",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
db_constraint=False,
|
|
||||||
default=None,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
||||||
related_name="+",
|
|
||||||
to="catalog.item",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name="historicalitem",
|
|
||||||
name="polymorphic_ctype",
|
|
||||||
field=models.ForeignKey(
|
|
||||||
blank=True,
|
|
||||||
db_constraint=False,
|
|
||||||
editable=False,
|
|
||||||
null=True,
|
|
||||||
on_delete=django.db.models.deletion.DO_NOTHING,
|
|
||||||
related_name="+",
|
|
||||||
to="contenttypes.contenttype",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="externalresource",
|
model_name="externalresource",
|
||||||
name="item",
|
name="item",
|
||||||
|
|
|
@ -55,55 +55,13 @@ class Migration(migrations.Migration):
|
||||||
("apple_podcast", "Apple Podcast"),
|
("apple_podcast", "Apple Podcast"),
|
||||||
("apple_music", "Apple Music"),
|
("apple_music", "Apple Music"),
|
||||||
("fedi", "Fediverse"),
|
("fedi", "Fediverse"),
|
||||||
|
("qidian", "Qidian"),
|
||||||
|
("ypshuo", "Ypshuo"),
|
||||||
],
|
],
|
||||||
max_length=50,
|
max_length=50,
|
||||||
verbose_name="IdType of the source site",
|
verbose_name="IdType of the source site",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="brief",
|
|
||||||
field=models.TextField(blank=True, default="", verbose_name="description"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="cover",
|
|
||||||
field=models.ImageField(
|
|
||||||
blank=True,
|
|
||||||
default="item/default.svg",
|
|
||||||
upload_to=catalog.common.utils.item_cover_path,
|
|
||||||
verbose_name="cover",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="metadata",
|
|
||||||
field=models.JSONField(
|
|
||||||
blank=True, default=dict, null=True, verbose_name="metadata"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="primary_lookup_id_type",
|
|
||||||
field=models.CharField(
|
|
||||||
max_length=50, null=True, verbose_name="Primary ID Type"
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="primary_lookup_id_value",
|
|
||||||
field=models.CharField(
|
|
||||||
help_text="automatically detected, usually no change necessary, left empty if unsure",
|
|
||||||
max_length=1000,
|
|
||||||
null=True,
|
|
||||||
verbose_name="Primary ID Value",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name="item",
|
|
||||||
name="title",
|
|
||||||
field=models.CharField(default="", max_length=1000, verbose_name="title"),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="itemlookupid",
|
model_name="itemlookupid",
|
||||||
name="id_type",
|
name="id_type",
|
||||||
|
@ -148,11 +106,57 @@ class Migration(migrations.Migration):
|
||||||
("apple_podcast", "Apple Podcast"),
|
("apple_podcast", "Apple Podcast"),
|
||||||
("apple_music", "Apple Music"),
|
("apple_music", "Apple Music"),
|
||||||
("fedi", "Fediverse"),
|
("fedi", "Fediverse"),
|
||||||
|
("qidian", "Qidian"),
|
||||||
|
("ypshuo", "Ypshuo"),
|
||||||
],
|
],
|
||||||
max_length=50,
|
max_length=50,
|
||||||
verbose_name="source site",
|
verbose_name="source site",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="brief",
|
||||||
|
field=models.TextField(blank=True, default="", verbose_name="description"),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="cover",
|
||||||
|
field=models.ImageField(
|
||||||
|
blank=True,
|
||||||
|
default="item/default.svg",
|
||||||
|
upload_to=catalog.common.utils.item_cover_path,
|
||||||
|
verbose_name="cover",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="metadata",
|
||||||
|
field=models.JSONField(
|
||||||
|
blank=True, default=dict, null=True, verbose_name="metadata"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="primary_lookup_id_type",
|
||||||
|
field=models.CharField(
|
||||||
|
max_length=50, null=True, verbose_name="Primary ID Type"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="primary_lookup_id_value",
|
||||||
|
field=models.CharField(
|
||||||
|
help_text="automatically detected, usually no change necessary, left empty if unsure",
|
||||||
|
max_length=1000,
|
||||||
|
null=True,
|
||||||
|
verbose_name="Primary ID Value",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="item",
|
||||||
|
name="title",
|
||||||
|
field=models.CharField(default="", max_length=1000, verbose_name="title"),
|
||||||
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name="itemlookupid",
|
model_name="itemlookupid",
|
||||||
name="id_value",
|
name="id_value",
|
||||||
|
|
|
@ -34,15 +34,15 @@ class Bandcamp(AbstractSite):
|
||||||
hostname = parsed_url.netloc
|
hostname = parsed_url.netloc
|
||||||
try:
|
try:
|
||||||
answers = dns.resolver.query(hostname, "CNAME")
|
answers = dns.resolver.query(hostname, "CNAME")
|
||||||
for rdata in answers: # type:ignore
|
for rdata in answers:
|
||||||
if str(rdata.target) == "dom.bandcamp.com.":
|
if str(rdata.target) == "dom.bandcamp.com.": # type:ignore
|
||||||
return True
|
return True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
answers = dns.resolver.query(hostname, "A")
|
answers = dns.resolver.query(hostname, "A")
|
||||||
for rdata in answers: # type:ignore
|
for rdata in answers:
|
||||||
if str(rdata.address) == "35.241.62.186":
|
if str(rdata.address) == "35.241.62.186": # type:ignore
|
||||||
return True
|
return True
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -77,7 +77,7 @@ class Bangumi(AbstractSite):
|
||||||
case "别名":
|
case "别名":
|
||||||
other_title = (
|
other_title = (
|
||||||
[d["v"] for d in v]
|
[d["v"] for d in v]
|
||||||
if type(v) == list
|
if isinstance(v, list)
|
||||||
else ([v] if isinstance(v, str) else [])
|
else ([v] if isinstance(v, str) else [])
|
||||||
)
|
)
|
||||||
case "imdb_id":
|
case "imdb_id":
|
||||||
|
@ -93,13 +93,13 @@ class Bangumi(AbstractSite):
|
||||||
case "作者":
|
case "作者":
|
||||||
authors = (
|
authors = (
|
||||||
[d["v"] for d in v]
|
[d["v"] for d in v]
|
||||||
if type(v) == list
|
if isinstance(v, list)
|
||||||
else ([v] if isinstance(v, str) else [])
|
else ([v] if isinstance(v, str) else [])
|
||||||
)
|
)
|
||||||
case "平台":
|
case "平台":
|
||||||
platform = (
|
platform = (
|
||||||
[d["v"] for d in v]
|
[d["v"] for d in v]
|
||||||
if type(v) == list
|
if isinstance(v, list)
|
||||||
else ([v] if isinstance(v, str) else [])
|
else ([v] if isinstance(v, str) else [])
|
||||||
)
|
)
|
||||||
case "游戏类型":
|
case "游戏类型":
|
||||||
|
@ -109,7 +109,7 @@ class Bangumi(AbstractSite):
|
||||||
else ([v] if isinstance(v, str) else [])
|
else ([v] if isinstance(v, str) else [])
|
||||||
)
|
)
|
||||||
case "官方网站" | "website":
|
case "官方网站" | "website":
|
||||||
site = v[0] if type(v) == list else v
|
site = v[0] if isinstance(v, list) else v
|
||||||
|
|
||||||
img_url = o["images"].get("large") or o["images"].get("common")
|
img_url = o["images"].get("large") or o["images"].get("common")
|
||||||
raw_img = None
|
raw_img = None
|
||||||
|
|
|
@ -16,12 +16,12 @@ _logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def _get_preferred_languages():
|
def _get_preferred_languages():
|
||||||
langs = {}
|
langs = {}
|
||||||
for l in PREFERRED_LANGUAGES:
|
for la in PREFERRED_LANGUAGES:
|
||||||
if l == "zh":
|
if la == "zh":
|
||||||
langs.update({"zh-cn": "zh-CN", "zh-tw": "zh-TW"})
|
langs.update({"zh-cn": "zh-CN", "zh-tw": "zh-TW"})
|
||||||
# zh-HK data is not good
|
# zh-HK data is not good
|
||||||
else:
|
else:
|
||||||
langs[l] = l
|
langs[la] = la
|
||||||
return langs
|
return langs
|
||||||
|
|
||||||
|
|
||||||
|
|
134
pyproject.toml
134
pyproject.toml
|
@ -5,95 +5,123 @@ description = "🧩 self-hosted server tracking what you read/watch/listen/play,
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">= 3.12"
|
requires-python = ">= 3.12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blurhash-python",
|
"blurhash-python>=1.2.2",
|
||||||
"cachetools",
|
"cachetools>=5.5.0",
|
||||||
"dateparser",
|
"dateparser>=1.2.0",
|
||||||
"discord.py",
|
|
||||||
"django<5.0",
|
"django<5.0",
|
||||||
"django-anymail",
|
"django-anymail>=12.0",
|
||||||
"django-auditlog>=3.0.0",
|
"django-auditlog>=3.0.0",
|
||||||
"django-bleach",
|
"django-bleach>=3.1.0",
|
||||||
"django-compressor",
|
"django-compressor",
|
||||||
"django-cors-headers",
|
"django-cors-headers",
|
||||||
"django-environ",
|
"django-environ>=0.11.2",
|
||||||
"django-hijack>=3.5.4",
|
"django-hijack>=3.7.0",
|
||||||
"django-jsonform",
|
"django-jsonform>=2.23.1",
|
||||||
"django-maintenance-mode",
|
"django-maintenance-mode",
|
||||||
"django-markdownx",
|
"django-markdownx>=4.0.7",
|
||||||
"django-ninja>=1.2.2",
|
"django-ninja>=1.3.0",
|
||||||
"django-oauth-toolkit==2.3.0",
|
|
||||||
"django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a",
|
"django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@v4.0.0a",
|
||||||
"django-redis",
|
"django-redis>=5.4.0",
|
||||||
"django-rq",
|
"django-rq>=2.10.2",
|
||||||
"django-sass-processor",
|
"django-sass-processor>=1.4.1",
|
||||||
"django-simple-history ",
|
"django-tz-detect>=0.5.0",
|
||||||
"django-slack",
|
"django-user-messages>=1.1.0",
|
||||||
"django-tz-detect",
|
"dnspython>=2.7.0",
|
||||||
"django-user-messages",
|
"easy-thumbnails>=2.10",
|
||||||
"dnspython",
|
"filetype>=1.2.0",
|
||||||
"easy-thumbnails",
|
"gunicorn>=23.0.0",
|
||||||
"filetype",
|
"httpx>=0.27.2",
|
||||||
"gunicorn",
|
"igdb-api-v4>=0.3.3",
|
||||||
"httpx",
|
"langdetect>=1.0.9",
|
||||||
"igdb-api-v4",
|
"listparser>=0.20",
|
||||||
"langdetect",
|
"loguru>=0.7.2",
|
||||||
"libsass",
|
"lxml>=5.3.0",
|
||||||
"listparser",
|
"markdownify>=0.13.1",
|
||||||
"loguru",
|
"mistune>=3.0.2",
|
||||||
"lxml",
|
"openpyxl>=3.1.5",
|
||||||
"markdownify",
|
"podcastparser>=0.6.10",
|
||||||
"mistune",
|
|
||||||
"openpyxl",
|
|
||||||
"podcastparser",
|
|
||||||
"psycopg2-binary",
|
"psycopg2-binary",
|
||||||
"requests",
|
"requests>=2.32.3",
|
||||||
"rq",
|
"sentry-sdk>=2.17.0",
|
||||||
"sentry-sdk",
|
"setproctitle>=1.3.3",
|
||||||
"setproctitle",
|
"tqdm>=4.66.6",
|
||||||
"tqdm",
|
"typesense>=0.21.0",
|
||||||
"typesense",
|
"urlman>=2.0.2",
|
||||||
"urlman",
|
"validators>=0.34.0",
|
||||||
"validators",
|
|
||||||
"deepmerge>=1.1.1",
|
"deepmerge>=1.1.1",
|
||||||
"django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git",
|
"django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git",
|
||||||
"atproto>=0.0.49",
|
"atproto>=0.0.55",
|
||||||
|
"discord-py>=2.4.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.rye]
|
[tool.rye]
|
||||||
managed = true
|
managed = true
|
||||||
virtual = true
|
virtual = true
|
||||||
dev-dependencies = [
|
dev-dependencies = [
|
||||||
"pre-commit>=3.7.0",
|
"pre-commit>=4.0.1",
|
||||||
"black~=24.4.2",
|
"black~=24.4.2",
|
||||||
"django-stubs>=5.1.0",
|
"django-stubs>=5.1.0",
|
||||||
"djlint~=1.34.1",
|
"djlint>=1.35.2",
|
||||||
"isort~=5.13.2",
|
"isort~=5.13.2",
|
||||||
"lxml-stubs>=0.5.1",
|
"lxml-stubs>=0.5.1",
|
||||||
"pyright>=1.1.384",
|
"pyright>=1.1.386",
|
||||||
"ruff",
|
"ruff>=0.7.1",
|
||||||
"mkdocs-material>=9.5.25",
|
"mkdocs-material>=9.5.42",
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.pyright]
|
[tool.pyright]
|
||||||
exclude = [ "media", ".venv", ".git", "playground", "catalog/*/tests.py", "journal/tests.py", "neodb", "**/migrations", "**/sites/douban_*", "neodb-takahe" ]
|
exclude = [
|
||||||
|
"media",
|
||||||
|
".venv",
|
||||||
|
".git",
|
||||||
|
"playground",
|
||||||
|
"catalog/*/tests.py",
|
||||||
|
"journal/tests.py",
|
||||||
|
"neodb",
|
||||||
|
"**/migrations",
|
||||||
|
"**/sites/douban_*",
|
||||||
|
"neodb-takahe",
|
||||||
|
]
|
||||||
reportIncompatibleVariableOverride = false
|
reportIncompatibleVariableOverride = false
|
||||||
|
|
||||||
[tool.djlint]
|
[tool.djlint]
|
||||||
ignore="T002,T003,H005,H006,H019,H020,H021,H023,H030,H031,D018"
|
ignore = "T002,T003,H005,H006,H019,H020,H021,H023,H030,H031,D018"
|
||||||
indent=2
|
indent = 2
|
||||||
|
|
||||||
[tool.isort]
|
[tool.isort]
|
||||||
profile = "black"
|
profile = "black"
|
||||||
|
|
||||||
[tool.mypy]
|
[tool.mypy]
|
||||||
exclude = ['^neodb-takahe/', '^legacy/', '^media/', '^playground/', '^catalog/*/tests.py', '^journal/tests.py', '^neodb/', '.*migrations.*', '.*sites/douban_.*' ]
|
exclude = [
|
||||||
|
'^neodb-takahe/',
|
||||||
|
'^legacy/',
|
||||||
|
'^media/',
|
||||||
|
'^playground/',
|
||||||
|
'^catalog/*/tests.py',
|
||||||
|
'^journal/tests.py',
|
||||||
|
'^neodb/',
|
||||||
|
'.*migrations.*',
|
||||||
|
'.*sites/douban_.*',
|
||||||
|
]
|
||||||
plugins = ["mypy_django_plugin.main"]
|
plugins = ["mypy_django_plugin.main"]
|
||||||
|
|
||||||
[tool.django-stubs]
|
[tool.django-stubs]
|
||||||
django_settings_module = "boofilsic.settings"
|
django_settings_module = "boofilsic.settings"
|
||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
exclude = ["neodb-takahe/*", "media", ".venv", ".git", "playground", "**/tests.py", "neodb", "**/migrations", "**/commands", "**/importers", "legacy" ]
|
exclude = [
|
||||||
|
"neodb-takahe/*",
|
||||||
|
"media",
|
||||||
|
".venv",
|
||||||
|
".git",
|
||||||
|
"playground",
|
||||||
|
"**/tests.py",
|
||||||
|
"neodb",
|
||||||
|
"**/migrations",
|
||||||
|
"**/commands",
|
||||||
|
"**/importers",
|
||||||
|
"legacy",
|
||||||
|
]
|
||||||
lint.ignore = ["F401", "F403", "F405"]
|
lint.ignore = ["F401", "F403", "F405"]
|
||||||
|
|
||||||
[tool.setuptools]
|
[tool.setuptools]
|
||||||
|
|
|
@ -21,7 +21,7 @@ asgiref==3.8.1
|
||||||
# via django
|
# via django
|
||||||
# via django-cors-headers
|
# via django-cors-headers
|
||||||
# via django-stubs
|
# via django-stubs
|
||||||
atproto==0.0.49
|
atproto==0.0.55
|
||||||
attrs==23.2.0
|
attrs==23.2.0
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
babel==2.15.0
|
babel==2.15.0
|
||||||
|
@ -32,7 +32,7 @@ black==24.4.2
|
||||||
bleach==5.0.1
|
bleach==5.0.1
|
||||||
# via django-bleach
|
# via django-bleach
|
||||||
blurhash-python==1.2.2
|
blurhash-python==1.2.2
|
||||||
cachetools==5.3.3
|
cachetools==5.5.0
|
||||||
certifi==2024.6.2
|
certifi==2024.6.2
|
||||||
# via httpcore
|
# via httpcore
|
||||||
# via httpx
|
# via httpx
|
||||||
|
@ -56,12 +56,11 @@ colorama==0.4.6
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
cryptography==42.0.8
|
cryptography==42.0.8
|
||||||
# via atproto
|
# via atproto
|
||||||
# via jwcrypto
|
|
||||||
cssbeautifier==1.15.1
|
cssbeautifier==1.15.1
|
||||||
# via djlint
|
# via djlint
|
||||||
dateparser==1.2.0
|
dateparser==1.2.0
|
||||||
deepmerge==1.1.1
|
deepmerge==1.1.1
|
||||||
discord-py==2.3.2
|
discord-py==2.4.0
|
||||||
distlib==0.3.8
|
distlib==0.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
django==4.2.14
|
django==4.2.14
|
||||||
|
@ -74,17 +73,14 @@ django==4.2.14
|
||||||
# via django-jsonform
|
# via django-jsonform
|
||||||
# via django-markdownx
|
# via django-markdownx
|
||||||
# via django-ninja
|
# via django-ninja
|
||||||
# via django-oauth-toolkit
|
|
||||||
# via django-polymorphic
|
# via django-polymorphic
|
||||||
# via django-redis
|
# via django-redis
|
||||||
# via django-rq
|
# via django-rq
|
||||||
# via django-simple-history
|
|
||||||
# via django-slack
|
|
||||||
# via django-stubs
|
# via django-stubs
|
||||||
# via django-stubs-ext
|
# via django-stubs-ext
|
||||||
# via django-tz-detect
|
# via django-tz-detect
|
||||||
# via easy-thumbnails
|
# via easy-thumbnails
|
||||||
django-anymail==10.3
|
django-anymail==12.0
|
||||||
django-appconf==1.0.6
|
django-appconf==1.0.6
|
||||||
# via django-compressor
|
# via django-compressor
|
||||||
django-auditlog==3.0.0
|
django-auditlog==3.0.0
|
||||||
|
@ -92,28 +88,25 @@ django-bleach==3.1.0
|
||||||
django-compressor==4.4
|
django-compressor==4.4
|
||||||
django-cors-headers==4.3.1
|
django-cors-headers==4.3.1
|
||||||
django-environ==0.11.2
|
django-environ==0.11.2
|
||||||
django-hijack==3.5.4
|
django-hijack==3.7.0
|
||||||
django-jsonform==2.22.0
|
django-jsonform==2.23.1
|
||||||
django-maintenance-mode==0.21.1
|
django-maintenance-mode==0.21.1
|
||||||
django-markdownx==4.0.7
|
django-markdownx==4.0.7
|
||||||
django-ninja==1.2.2
|
django-ninja==1.3.0
|
||||||
django-oauth-toolkit==2.3.0
|
|
||||||
django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a
|
django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a
|
||||||
django-redis==5.4.0
|
django-redis==5.4.0
|
||||||
django-rq==2.10.2
|
django-rq==2.10.2
|
||||||
django-sass-processor==1.4.1
|
django-sass-processor==1.4.1
|
||||||
django-simple-history==3.7.0
|
|
||||||
django-slack==5.19.0
|
|
||||||
django-stubs==5.1.0
|
django-stubs==5.1.0
|
||||||
django-stubs-ext==5.1.0
|
django-stubs-ext==5.1.0
|
||||||
# via django-stubs
|
# via django-stubs
|
||||||
django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git@03921e05b39d07d143519a435259f66387a088bc
|
django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git@03921e05b39d07d143519a435259f66387a088bc
|
||||||
django-tz-detect==0.5.0
|
django-tz-detect==0.5.0
|
||||||
django-user-messages==1.0.0
|
django-user-messages==1.1.0
|
||||||
djlint==1.34.1
|
djlint==1.35.2
|
||||||
dnspython==2.6.1
|
dnspython==2.7.0
|
||||||
# via atproto
|
# via atproto
|
||||||
easy-thumbnails==2.8.5
|
easy-thumbnails==2.10
|
||||||
editorconfig==0.12.4
|
editorconfig==0.12.4
|
||||||
# via cssbeautifier
|
# via cssbeautifier
|
||||||
# via jsbeautifier
|
# via jsbeautifier
|
||||||
|
@ -127,7 +120,7 @@ frozenlist==1.4.1
|
||||||
# via aiosignal
|
# via aiosignal
|
||||||
ghp-import==2.1.0
|
ghp-import==2.1.0
|
||||||
# via mkdocs
|
# via mkdocs
|
||||||
gunicorn==22.0.0
|
gunicorn==23.0.0
|
||||||
h11==0.14.0
|
h11==0.14.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
html-tag-names==0.1.2
|
html-tag-names==0.1.2
|
||||||
|
@ -136,7 +129,7 @@ html-void-elements==0.1.0
|
||||||
# via djlint
|
# via djlint
|
||||||
httpcore==1.0.5
|
httpcore==1.0.5
|
||||||
# via httpx
|
# via httpx
|
||||||
httpx==0.26.0
|
httpx==0.27.2
|
||||||
# via atproto
|
# via atproto
|
||||||
identify==2.5.36
|
identify==2.5.36
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
|
@ -145,7 +138,7 @@ idna==3.7
|
||||||
# via httpx
|
# via httpx
|
||||||
# via requests
|
# via requests
|
||||||
# via yarl
|
# via yarl
|
||||||
igdb-api-v4==0.3.2
|
igdb-api-v4==0.3.3
|
||||||
isort==5.13.2
|
isort==5.13.2
|
||||||
jinja2==3.1.4
|
jinja2==3.1.4
|
||||||
# via mkdocs
|
# via mkdocs
|
||||||
|
@ -155,22 +148,19 @@ jsbeautifier==1.15.1
|
||||||
# via djlint
|
# via djlint
|
||||||
json5==0.9.25
|
json5==0.9.25
|
||||||
# via djlint
|
# via djlint
|
||||||
jwcrypto==1.5.6
|
|
||||||
# via django-oauth-toolkit
|
|
||||||
langdetect==1.0.9
|
langdetect==1.0.9
|
||||||
libipld==1.2.3
|
libipld==3.0.0
|
||||||
# via atproto
|
# via atproto
|
||||||
libsass==0.23.0
|
|
||||||
listparser==0.20
|
listparser==0.20
|
||||||
loguru==0.7.2
|
loguru==0.7.2
|
||||||
lxml==5.2.2
|
lxml==5.3.0
|
||||||
lxml-stubs==0.5.1
|
lxml-stubs==0.5.1
|
||||||
markdown==3.6
|
markdown==3.6
|
||||||
# via django-markdownx
|
# via django-markdownx
|
||||||
# via mkdocs
|
# via mkdocs
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
# via pymdown-extensions
|
# via pymdown-extensions
|
||||||
markdownify==0.12.1
|
markdownify==0.13.1
|
||||||
markupsafe==2.1.5
|
markupsafe==2.1.5
|
||||||
# via jinja2
|
# via jinja2
|
||||||
# via mkdocs
|
# via mkdocs
|
||||||
|
@ -182,7 +172,7 @@ mkdocs==1.6.0
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
mkdocs-get-deps==0.2.0
|
mkdocs-get-deps==0.2.0
|
||||||
# via mkdocs
|
# via mkdocs
|
||||||
mkdocs-material==9.5.25
|
mkdocs-material==9.5.42
|
||||||
mkdocs-material-extensions==1.3.1
|
mkdocs-material-extensions==1.3.1
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
multidict==6.0.5
|
multidict==6.0.5
|
||||||
|
@ -193,9 +183,7 @@ mypy-extensions==1.0.0
|
||||||
nodeenv==1.9.1
|
nodeenv==1.9.1
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
# via pyright
|
# via pyright
|
||||||
oauthlib==3.2.2
|
openpyxl==3.1.5
|
||||||
# via django-oauth-toolkit
|
|
||||||
openpyxl==3.1.3
|
|
||||||
packaging==24.0
|
packaging==24.0
|
||||||
# via black
|
# via black
|
||||||
# via gunicorn
|
# via gunicorn
|
||||||
|
@ -215,7 +203,7 @@ platformdirs==4.2.2
|
||||||
# via mkdocs-get-deps
|
# via mkdocs-get-deps
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
podcastparser==0.6.10
|
podcastparser==0.6.10
|
||||||
pre-commit==3.7.1
|
pre-commit==4.0.1
|
||||||
protobuf==5.27.0
|
protobuf==5.27.0
|
||||||
# via igdb-api-v4
|
# via igdb-api-v4
|
||||||
psycopg2-binary==2.9.9
|
psycopg2-binary==2.9.9
|
||||||
|
@ -230,7 +218,7 @@ pygments==2.18.0
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
pymdown-extensions==10.8.1
|
pymdown-extensions==10.8.1
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
pyright==1.1.384
|
pyright==1.1.386
|
||||||
python-dateutil==2.9.0.post0
|
python-dateutil==2.9.0.post0
|
||||||
# via dateparser
|
# via dateparser
|
||||||
# via django-auditlog
|
# via django-auditlog
|
||||||
|
@ -261,8 +249,6 @@ regex==2023.12.25
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
# via django-anymail
|
# via django-anymail
|
||||||
# via django-oauth-toolkit
|
|
||||||
# via django-slack
|
|
||||||
# via igdb-api-v4
|
# via igdb-api-v4
|
||||||
# via mkdocs-material
|
# via mkdocs-material
|
||||||
# via typesense
|
# via typesense
|
||||||
|
@ -270,8 +256,8 @@ rjsmin==1.2.1
|
||||||
# via django-compressor
|
# via django-compressor
|
||||||
rq==1.16.2
|
rq==1.16.2
|
||||||
# via django-rq
|
# via django-rq
|
||||||
ruff==0.4.7
|
ruff==0.7.1
|
||||||
sentry-sdk==2.4.0
|
sentry-sdk==2.17.0
|
||||||
setproctitle==1.3.3
|
setproctitle==1.3.3
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via bleach
|
# via bleach
|
||||||
|
@ -290,7 +276,7 @@ sqlparse==0.5.0
|
||||||
# via django
|
# via django
|
||||||
tinycss2==1.1.1
|
tinycss2==1.1.1
|
||||||
# via bleach
|
# via bleach
|
||||||
tqdm==4.66.4
|
tqdm==4.66.6
|
||||||
# via djlint
|
# via djlint
|
||||||
types-pyyaml==6.0.12.20240311
|
types-pyyaml==6.0.12.20240311
|
||||||
# via django-stubs
|
# via django-stubs
|
||||||
|
@ -299,7 +285,6 @@ typing-extensions==4.12.1
|
||||||
# via atproto
|
# via atproto
|
||||||
# via django-stubs
|
# via django-stubs
|
||||||
# via django-stubs-ext
|
# via django-stubs-ext
|
||||||
# via jwcrypto
|
|
||||||
# via pydantic
|
# via pydantic
|
||||||
# via pydantic-core
|
# via pydantic-core
|
||||||
# via pyright
|
# via pyright
|
||||||
|
@ -310,7 +295,7 @@ urllib3==2.2.1
|
||||||
# via requests
|
# via requests
|
||||||
# via sentry-sdk
|
# via sentry-sdk
|
||||||
urlman==2.0.2
|
urlman==2.0.2
|
||||||
validators==0.28.3
|
validators==0.34.0
|
||||||
virtualenv==20.26.2
|
virtualenv==20.26.2
|
||||||
# via pre-commit
|
# via pre-commit
|
||||||
watchdog==4.0.1
|
watchdog==4.0.1
|
||||||
|
|
|
@ -20,7 +20,7 @@ anyio==4.4.0
|
||||||
asgiref==3.8.1
|
asgiref==3.8.1
|
||||||
# via django
|
# via django
|
||||||
# via django-cors-headers
|
# via django-cors-headers
|
||||||
atproto==0.0.49
|
atproto==0.0.55
|
||||||
attrs==23.2.0
|
attrs==23.2.0
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
beautifulsoup4==4.12.3
|
beautifulsoup4==4.12.3
|
||||||
|
@ -28,7 +28,7 @@ beautifulsoup4==4.12.3
|
||||||
bleach==5.0.1
|
bleach==5.0.1
|
||||||
# via django-bleach
|
# via django-bleach
|
||||||
blurhash-python==1.2.2
|
blurhash-python==1.2.2
|
||||||
cachetools==5.3.3
|
cachetools==5.5.0
|
||||||
certifi==2024.6.2
|
certifi==2024.6.2
|
||||||
# via httpcore
|
# via httpcore
|
||||||
# via httpx
|
# via httpx
|
||||||
|
@ -44,10 +44,9 @@ click==8.1.7
|
||||||
# via rq
|
# via rq
|
||||||
cryptography==42.0.8
|
cryptography==42.0.8
|
||||||
# via atproto
|
# via atproto
|
||||||
# via jwcrypto
|
|
||||||
dateparser==1.2.0
|
dateparser==1.2.0
|
||||||
deepmerge==1.1.1
|
deepmerge==1.1.1
|
||||||
discord-py==2.3.2
|
discord-py==2.4.0
|
||||||
django==4.2.16
|
django==4.2.16
|
||||||
# via django-anymail
|
# via django-anymail
|
||||||
# via django-appconf
|
# via django-appconf
|
||||||
|
@ -58,15 +57,12 @@ django==4.2.16
|
||||||
# via django-jsonform
|
# via django-jsonform
|
||||||
# via django-markdownx
|
# via django-markdownx
|
||||||
# via django-ninja
|
# via django-ninja
|
||||||
# via django-oauth-toolkit
|
|
||||||
# via django-polymorphic
|
# via django-polymorphic
|
||||||
# via django-redis
|
# via django-redis
|
||||||
# via django-rq
|
# via django-rq
|
||||||
# via django-simple-history
|
|
||||||
# via django-slack
|
|
||||||
# via django-tz-detect
|
# via django-tz-detect
|
||||||
# via easy-thumbnails
|
# via easy-thumbnails
|
||||||
django-anymail==10.3
|
django-anymail==12.0
|
||||||
django-appconf==1.0.6
|
django-appconf==1.0.6
|
||||||
# via django-compressor
|
# via django-compressor
|
||||||
django-auditlog==3.0.0
|
django-auditlog==3.0.0
|
||||||
|
@ -74,62 +70,54 @@ django-bleach==3.1.0
|
||||||
django-compressor==4.4
|
django-compressor==4.4
|
||||||
django-cors-headers==4.3.1
|
django-cors-headers==4.3.1
|
||||||
django-environ==0.11.2
|
django-environ==0.11.2
|
||||||
django-hijack==3.5.4
|
django-hijack==3.7.0
|
||||||
django-jsonform==2.22.0
|
django-jsonform==2.23.1
|
||||||
django-maintenance-mode==0.21.1
|
django-maintenance-mode==0.21.1
|
||||||
django-markdownx==4.0.7
|
django-markdownx==4.0.7
|
||||||
django-ninja==1.2.2
|
django-ninja==1.3.0
|
||||||
django-oauth-toolkit==2.3.0
|
|
||||||
django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a
|
django-polymorphic @ git+https://github.com/jazzband/django-polymorphic/@1039f882b99f97bf657bd958c949ee6a3b00377a
|
||||||
django-redis==5.4.0
|
django-redis==5.4.0
|
||||||
django-rq==2.10.2
|
django-rq==2.10.2
|
||||||
django-sass-processor==1.4.1
|
django-sass-processor==1.4.1
|
||||||
django-simple-history==3.7.0
|
|
||||||
django-slack==5.19.0
|
|
||||||
django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git@03921e05b39d07d143519a435259f66387a088bc
|
django-typed-models @ git+https://github.com/alphatownsman/django-typed-models.git@03921e05b39d07d143519a435259f66387a088bc
|
||||||
django-tz-detect==0.5.0
|
django-tz-detect==0.5.0
|
||||||
django-user-messages==1.0.0
|
django-user-messages==1.1.0
|
||||||
dnspython==2.6.1
|
dnspython==2.7.0
|
||||||
# via atproto
|
# via atproto
|
||||||
easy-thumbnails==2.8.5
|
easy-thumbnails==2.10
|
||||||
et-xmlfile==1.1.0
|
et-xmlfile==1.1.0
|
||||||
# via openpyxl
|
# via openpyxl
|
||||||
filetype==1.2.0
|
filetype==1.2.0
|
||||||
frozenlist==1.4.1
|
frozenlist==1.4.1
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
# via aiosignal
|
# via aiosignal
|
||||||
gunicorn==22.0.0
|
gunicorn==23.0.0
|
||||||
h11==0.14.0
|
h11==0.14.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
httpcore==1.0.5
|
httpcore==1.0.5
|
||||||
# via httpx
|
# via httpx
|
||||||
httpx==0.26.0
|
httpx==0.27.2
|
||||||
# via atproto
|
# via atproto
|
||||||
idna==3.7
|
idna==3.7
|
||||||
# via anyio
|
# via anyio
|
||||||
# via httpx
|
# via httpx
|
||||||
# via requests
|
# via requests
|
||||||
# via yarl
|
# via yarl
|
||||||
igdb-api-v4==0.3.2
|
igdb-api-v4==0.3.3
|
||||||
jwcrypto==1.5.6
|
|
||||||
# via django-oauth-toolkit
|
|
||||||
langdetect==1.0.9
|
langdetect==1.0.9
|
||||||
libipld==1.2.3
|
libipld==3.0.0
|
||||||
# via atproto
|
# via atproto
|
||||||
libsass==0.23.0
|
|
||||||
listparser==0.20
|
listparser==0.20
|
||||||
loguru==0.7.2
|
loguru==0.7.2
|
||||||
lxml==5.2.2
|
lxml==5.3.0
|
||||||
markdown==3.6
|
markdown==3.6
|
||||||
# via django-markdownx
|
# via django-markdownx
|
||||||
markdownify==0.12.1
|
markdownify==0.13.1
|
||||||
mistune==3.0.2
|
mistune==3.0.2
|
||||||
multidict==6.0.5
|
multidict==6.0.5
|
||||||
# via aiohttp
|
# via aiohttp
|
||||||
# via yarl
|
# via yarl
|
||||||
oauthlib==3.2.2
|
openpyxl==3.1.5
|
||||||
# via django-oauth-toolkit
|
|
||||||
openpyxl==3.1.3
|
|
||||||
packaging==24.0
|
packaging==24.0
|
||||||
# via gunicorn
|
# via gunicorn
|
||||||
pillow==10.3.0
|
pillow==10.3.0
|
||||||
|
@ -165,15 +153,13 @@ regex==2024.5.15
|
||||||
# via dateparser
|
# via dateparser
|
||||||
requests==2.32.3
|
requests==2.32.3
|
||||||
# via django-anymail
|
# via django-anymail
|
||||||
# via django-oauth-toolkit
|
|
||||||
# via django-slack
|
|
||||||
# via igdb-api-v4
|
# via igdb-api-v4
|
||||||
# via typesense
|
# via typesense
|
||||||
rjsmin==1.2.1
|
rjsmin==1.2.1
|
||||||
# via django-compressor
|
# via django-compressor
|
||||||
rq==1.16.2
|
rq==1.16.2
|
||||||
# via django-rq
|
# via django-rq
|
||||||
sentry-sdk==2.4.0
|
sentry-sdk==2.17.0
|
||||||
setproctitle==1.3.3
|
setproctitle==1.3.3
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
# via bleach
|
# via bleach
|
||||||
|
@ -190,11 +176,10 @@ sqlparse==0.5.0
|
||||||
# via django
|
# via django
|
||||||
tinycss2==1.1.1
|
tinycss2==1.1.1
|
||||||
# via bleach
|
# via bleach
|
||||||
tqdm==4.66.4
|
tqdm==4.66.6
|
||||||
typesense==0.21.0
|
typesense==0.21.0
|
||||||
typing-extensions==4.12.1
|
typing-extensions==4.12.1
|
||||||
# via atproto
|
# via atproto
|
||||||
# via jwcrypto
|
|
||||||
# via pydantic
|
# via pydantic
|
||||||
# via pydantic-core
|
# via pydantic-core
|
||||||
tzlocal==5.2
|
tzlocal==5.2
|
||||||
|
@ -204,7 +189,7 @@ urllib3==2.2.1
|
||||||
# via requests
|
# via requests
|
||||||
# via sentry-sdk
|
# via sentry-sdk
|
||||||
urlman==2.0.2
|
urlman==2.0.2
|
||||||
validators==0.28.3
|
validators==0.34.0
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
# via bleach
|
# via bleach
|
||||||
# via tinycss2
|
# via tinycss2
|
||||||
|
|
Loading…
Add table
Reference in a new issue