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
@ -39,7 +39,7 @@ RUN python3 -m venv --system-site-packages ${VIRTUAL_ENV} && . ${VIRTUAL_ENV}/bi
RUN --mount=type=cache,target=/opt/.cache \
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

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
recording_list = [
Recording(
name="I Want It That Way",
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(
name="The Perfect Kiss",
mbid="ec0da94e-fbfe-4eb0-968e-024d4c32d1d0",
artist=Artist(name="artist_name2"),
artist_credit=ArtistCredit(artists=[Artist(name="artist_name2")]),
),
Recording(
name="Love Your Voice",
mbid="93726547-f8c0-4efd-8e16-d2dee76500f6",
artist=Artist(name="artist_name"),
artist_credit=ArtistCredit(artists=[Artist(name="artist_name")]),
),
Recording(
name="Hall of Fame",
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]
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 [
Playlist(
name="Test Export Playlist",

View File

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