chore(api): update all dependencies (develop)

This commit is contained in:
RenovateBot 2025-01-15 14:23:09 +00:00 committed by petitminion
parent 8cc555321e
commit 606066bf3b
8 changed files with 857 additions and 544 deletions

View File

@ -1,4 +1,4 @@
FROM python:3.12-slim AS builder FROM python:3.13-slim AS builder
ARG POETRY_VERSION=1.8 ARG POETRY_VERSION=1.8
@ -39,7 +39,7 @@ RUN python3 -m venv --system-site-packages ${VIRTUAL_ENV} && . ${VIRTUAL_ENV}/bi
RUN --mount=type=cache,target=/opt/.cache \ RUN --mount=type=cache,target=/opt/.cache \
poetry install --no-root --extras typesense poetry install --no-root --extras typesense
FROM python:3.12-slim AS runtime FROM python:3.13-slim AS runtime
ARG POETRY_VERSION=1.8 ARG POETRY_VERSION=1.8

View File

@ -1,27 +1,30 @@
from troi import Artist, Element, Playlist, Recording from troi import Artist, ArtistCredit, Element, Playlist, Recording
from troi.patch import Patch from troi.patch import Patch
recording_list = [ recording_list = [
Recording( Recording(
name="I Want It That Way", name="I Want It That Way",
mbid="87dfa566-21c3-45ed-bc42-1d345b8563fa", mbid="87dfa566-21c3-45ed-bc42-1d345b8563fa",
artist=Artist(name="artist_name"), artist_credit=ArtistCredit(artists=[Artist(name="artist_name")]),
),
Recording(
name="Untouchable",
artist_credit=ArtistCredit(artists=[Artist(name="Another lol")]),
), ),
Recording(name="Untouchable", artist=Artist(name="Another lol")),
Recording( Recording(
name="The Perfect Kiss", name="The Perfect Kiss",
mbid="ec0da94e-fbfe-4eb0-968e-024d4c32d1d0", mbid="ec0da94e-fbfe-4eb0-968e-024d4c32d1d0",
artist=Artist(name="artist_name2"), artist_credit=ArtistCredit(artists=[Artist(name="artist_name2")]),
), ),
Recording( Recording(
name="Love Your Voice", name="Love Your Voice",
mbid="93726547-f8c0-4efd-8e16-d2dee76500f6", mbid="93726547-f8c0-4efd-8e16-d2dee76500f6",
artist=Artist(name="artist_name"), artist_credit=ArtistCredit(artists=[Artist(name="artist_name")]),
), ),
Recording( Recording(
name="Hall of Fame", name="Hall of Fame",
mbid="395bd5a1-79cc-4e04-8869-ca9eabc78d09", mbid="395bd5a1-79cc-4e04-8869-ca9eabc78d09",
artist=Artist(name="artist_name_3"), artist_credit=ArtistCredit(artists=[Artist(name="artist_name3")]),
), ),
] ]
@ -34,8 +37,19 @@ class DummyElement(Element):
return [Playlist] return [Playlist]
def read(self, sources): def read(self, sources):
recordings = recording_list recordings = [
Recording(
name="I Want It That Way", mbid="87dfa566-21c3-45ed-bc42-1d345b8563fa"
),
Recording(name="Untouchable"),
Recording(
name="The Perfect Kiss", mbid="ec0da94e-fbfe-4eb0-968e-024d4c32d1d0"
),
Recording(
name="Love Your Voice", mbid="93726547-f8c0-4efd-8e16-d2dee76500f6"
),
Recording(name="Hall of Fame", mbid="395bd5a1-79cc-4e04-8869-ca9eabc78d09"),
]
return [ return [
Playlist( Playlist(
name="Test Export Playlist", name="Test Export Playlist",

View File

@ -57,7 +57,7 @@ def resolve_recordings_to_fw_track(recordings):
for recording in recordings: for recording in recordings:
rec = mc.clean_recording(recording.name) rec = mc.clean_recording(recording.name)
artist = mc.clean_artist(recording.artist.name) artist = mc.clean_artist(recording.artist_credit.artists[0].name)
canonical_name_for_track = delete_non_alnum_characters(artist + rec) canonical_name_for_track = delete_non_alnum_characters(artist + rec)
logger.debug(f"Trying to resolve : {canonical_name_for_track}") logger.debug(f"Trying to resolve : {canonical_name_for_track}")

View File

@ -0,0 +1,40 @@
# Generated by Django 4.2.18 on 2025-01-15 13:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("users", "0024_alter_accesstoken_user_and_more"),
]
operations = [
migrations.AddField(
model_name="application",
name="allowed_origins",
field=models.TextField(
blank=True,
default="",
help_text="Allowed origins list to enable CORS, space separated",
),
),
migrations.AddField(
model_name="application",
name="hash_client_secret",
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name="application",
name="post_logout_redirect_uris",
field=models.TextField(
blank=True,
default="",
help_text="Allowed Post Logout URIs list, space separated",
),
),
migrations.AlterField(
model_name="accesstoken",
name="token",
field=models.CharField(db_index=True, max_length=255, unique=True),
),
]

View File

@ -374,14 +374,14 @@ class Application(oauth2_models.AbstractApplication):
OOB_SCHEMES = ["urn:ietf:wg:oauth:2.0:oob", "urn:ietf:wg:oauth:2.0:oob:auto"] OOB_SCHEMES = ["urn:ietf:wg:oauth:2.0:oob", "urn:ietf:wg:oauth:2.0:oob:auto"]
class CustomRedirectURIValidator(oauth2_validators.RedirectURIValidator): class CustomRedirectURIValidator(oauth2_validators.AllowedURIValidator):
def __call__(self, value): def __call__(self, value):
if value in OOB_SCHEMES: if value in OOB_SCHEMES:
return value return value
return super().__call__(value) return super().__call__(value)
oauth2_models.RedirectURIValidator = CustomRedirectURIValidator oauth2_models.AllowedURIValidator = CustomRedirectURIValidator
class Grant(oauth2_models.AbstractGrant): class Grant(oauth2_models.AbstractGrant):

1219
api/poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -29,28 +29,28 @@ python = "^3.10,<3.14"
# Django # Django
dj-rest-auth = "7.0.1" dj-rest-auth = "7.0.1"
django = "4.2.9" django = "4.2.18"
django-allauth = "0.63.6" django-allauth = "0.63.6"
django-cache-memoize = "0.1.10" django-cache-memoize = "0.2.1"
django-cacheops = "==7.0.2" django-cacheops = "==7.1"
django-cleanup = "==8.1.0" django-cleanup = "==8.1.0"
django-cors-headers = "==4.3.1" django-cors-headers = "==4.6.0"
django-dynamic-preferences = "==1.17.0" django-dynamic-preferences = "==1.17.0"
django-environ = "==0.11.2" django-environ = "==0.12.0"
django-filter = "==24.3" django-filter = "==24.3"
django-oauth-toolkit = "2.2.0" django-oauth-toolkit = "2.4.0"
django-redis = "==5.2.0" django-redis = "==5.4.0"
django-storages = "==1.13.2" django-storages = "==1.14.4"
django-versatileimagefield = "==3.1" django-versatileimagefield = "==3.1"
djangorestframework = "==3.14.0" djangorestframework = "==3.15.2"
drf-spectacular = "==0.26.5" drf-spectacular = "==0.28.0"
markdown = "==3.4.4" markdown = "==3.7"
persisting-theory = "==1.0" persisting-theory = "==1.0"
psycopg2-binary = "==2.9.10" psycopg2-binary = "==2.9.10"
redis = "==5.0.1" redis = "==5.2.1"
# Django LDAP # Django LDAP
django-auth-ldap = "==4.1.0" django-auth-ldap = "==4.8.0"
python-ldap = "==3.4.4" python-ldap = "==3.4.4"
# Channels # Channels
@ -58,20 +58,20 @@ channels = { extras = ["daphne"], version = "==4.2.0" }
channels-redis = "==4.2.1" channels-redis = "==4.2.1"
# Celery # Celery
kombu = "5.3.4" kombu = "5.4.2"
celery = "5.3.6" celery = "5.4.0"
# Deployment # Deployment
gunicorn = "==21.2.0" gunicorn = "==21.2.0"
uvicorn = { version = "==0.20.0", extras = ["standard"] } uvicorn = { version = "==0.34.0", extras = ["standard"] }
# Libs # Libs
aiohttp = "3.9.1" aiohttp = "3.11.11"
arrow = "==1.2.3" arrow = "==1.3.0"
backports-zoneinfo = { version = "==0.2.1", python = "<3.9" } backports-zoneinfo = { version = "==0.2.1", python = "<3.9" }
bleach = "==6.1.0" bleach = "==6.2.0"
boto3 = "==1.26.161" boto3 = "==1.35.99"
click = "==8.1.7" click = "==8.1.8"
cryptography = "==41.0.7" cryptography = "==41.0.7"
defusedxml = "0.7.1" defusedxml = "0.7.1"
feedparser = "==6.0.11" feedparser = "==6.0.11"
@ -80,50 +80,50 @@ liblistenbrainz = "==0.5.5"
musicbrainzngs = "==0.7.1" musicbrainzngs = "==0.7.1"
mutagen = "==1.46.0" mutagen = "==1.46.0"
pillow = "==11.1.0" pillow = "==11.1.0"
pyld = "==2.0.3" pyld = "==2.0.4"
python-magic = "==0.4.27" python-magic = "==0.4.27"
requests = "==2.31.0" requests = "==2.32.3"
requests-http-message-signatures = "==0.3.1" requests-http-message-signatures = "==0.3.1"
sentry-sdk = "==1.19.1" sentry-sdk = "==1.45.1"
watchdog = "==4.0.0" watchdog = "==4.0.2"
troi = "==2024.1.26.0" troi = "==2024.12.4.0"
lb-matching-tools = "==2024.1.25.0rc1" lb-matching-tools = "==2024.1.30.1"
unidecode = "==1.3.7" unidecode = "==1.3.8"
pycountry = "23.12.11" pycountry = "23.12.11"
# Typesense # Typesense
typesense = { version = "==0.15.1", optional = true } typesense = { version = "==0.21.0", optional = true }
# Dependencies pinning # Dependencies pinning
ipython = "==8.12.3" ipython = "==8.31.0"
pluralizer = "==1.2.0" pluralizer = "==1.2.0"
service-identity = "==24.1.0" service-identity = "==24.2.0"
unicode-slugify = "==0.1.5" unicode-slugify = "==0.1.5"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
aioresponses = "==0.7.6" aioresponses = "==0.7.7"
asynctest = "==0.13.0" asynctest = "==0.13.0"
black = "==24.1.1" black = "==24.10.0"
coverage = { version = "==7.6.10", extras = ["toml"] } coverage = { version = "==7.6.10", extras = ["toml"] }
debugpy = "==1.6.7.post1" debugpy = "==1.8.11"
django-coverage-plugin = "==3.0.0" django-coverage-plugin = "==3.1.0"
django-debug-toolbar = "==4.2.0" django-debug-toolbar = "==4.4.6"
factory-boy = "==3.2.1" factory-boy = "==3.3.1"
faker = "==23.2.1" faker = "==23.3.0"
flake8 = "==3.9.2" flake8 = "==3.9.2"
ipdb = "==0.13.13" ipdb = "==0.13.13"
pytest = "==8.0.0" pytest = "==8.3.4"
pytest-asyncio = "==0.21.0" pytest-asyncio = "==0.25.2"
prompt-toolkit = "==3.0.41" prompt-toolkit = "==3.0.48"
pytest-cov = "==4.0.0" pytest-cov = "==4.1.0"
pytest-django = "==4.5.2" pytest-django = "==4.9.0"
pytest-env = "==1.1.3" pytest-env = "==1.1.5"
pytest-mock = "==3.10.0" pytest-mock = "==3.14.0"
pytest-randomly = "==3.12.0" pytest-randomly = "==3.16.0"
pytest-sugar = "==1.0.0" pytest-sugar = "==1.0.0"
requests-mock = "==1.10.0" requests-mock = "==1.12.1"
pylint = "==3.0.3" pylint = "==3.3.3"
pylint-django = "==2.5.5" pylint-django = "==2.6.1"
django-extensions = "==3.2.3" django-extensions = "==3.2.3"
[tool.poetry.extras] [tool.poetry.extras]

View File

@ -91,7 +91,7 @@ def test_build_radio_queryset_with_redis_and_without_fw_db(factories, mocker):
def test_build_radio_queryset_catch_troi_ConnectTimeout(mocker): def test_build_radio_queryset_catch_troi_ConnectTimeout(mocker):
mocker.patch.object( mocker.patch.object(
troi.core.Patch, troi.patch.Patch,
"generate_playlist", "generate_playlist",
side_effect=ConnectTimeout, side_effect=ConnectTimeout,
) )
@ -105,7 +105,7 @@ def test_build_radio_queryset_catch_troi_ConnectTimeout(mocker):
def test_build_radio_queryset_catch_troi_no_candidates(mocker): def test_build_radio_queryset_catch_troi_no_candidates(mocker):
mocker.patch.object( mocker.patch.object(
troi.core.Patch, troi.patch.Patch,
"generate_playlist", "generate_playlist",
) )
qs = Track.objects.all() qs = Track.objects.all()