chore(api): update all dependencies (develop)
This commit is contained in:
parent
8cc555321e
commit
606066bf3b
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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]
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue