diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aa1124e3e..28e815170 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -150,6 +150,7 @@ find_broken_links: -- . || exit $? require_changelog: + allow_failure: false stage: lint rules: # Don't run on merge request that mention NOCHANGELOG or renovate bot commits @@ -231,7 +232,7 @@ test_api: image: $CI_REGISTRY/funkwhale/ci/python-funkwhale-api:$PYTHON_VERSION parallel: matrix: - - PYTHON_VERSION: ["3.8", "3.9", "3.10", "3.11", "3.12"] + - PYTHON_VERSION: ["3.10", "3.11", "3.12", "3.13"] services: - name: postgres:15-alpine command: @@ -431,24 +432,24 @@ build_api: paths: - api -build_tauri: - stage: build - rules: - - if: $CI_COMMIT_BRANCH =~ /(stable|develop)/ - - changes: [front/**/*] +# build_tauri: +# stage: build +# rules: +# - if: $CI_COMMIT_BRANCH =~ /(stable|develop)/ +# - changes: [front/**/*] - image: $CI_REGISTRY/funkwhale/ci/node-tauri:18 - variables: - <<: *keep_git_files_permissions - before_script: - - source /root/.cargo/env - - yarn install - script: - - yarn tauri build --verbose - artifacts: - name: desktop_${CI_COMMIT_REF_NAME} - paths: - - front/tauri/target/release/bundle/appimage/*.AppImage +# image: $CI_REGISTRY/funkwhale/ci/node-tauri:18 +# variables: +# <<: *keep_git_files_permissions +# before_script: +# - source /root/.cargo/env +# - yarn install +# script: +# - yarn tauri build --verbose +# artifacts: +# name: desktop_${CI_COMMIT_REF_NAME} +# paths: +# - front/tauri/target/release/bundle/appimage/*.AppImage deploy_docs: interruptible: false @@ -539,8 +540,8 @@ package: artifacts: true - job: build_front artifacts: true - - job: build_tauri - artifacts: true + # - job: build_tauri + # artifacts: true rules: - if: $CI_COMMIT_BRANCH =~ /(stable|develop)/ diff --git a/.gitlab/renovate.json b/.gitlab/renovate.json index a4e7ec774..a2f7ac64a 100644 --- a/.gitlab/renovate.json +++ b/.gitlab/renovate.json @@ -16,7 +16,7 @@ "ignoreDeps": ["$CI_REGISTRY/funkwhale/backend-test-docker"], "packageRules": [ { - "matchPaths": ["api/*", "front/*", "docs/*"], + "matchFileNames": ["api/*", "front/*", "docs/*"], "additionalBranchPrefix": "{{parentDir}}-", "semanticCommitScope": "{{parentDir}}" }, @@ -54,20 +54,20 @@ "addLabels": ["Area::Backend"] }, { - "matchPackagePatterns": ["^@vueuse/.*"], - "groupName": "vueuse" + "groupName": "vueuse", + "matchDepNames": ["/^@vueuse/.*/"] }, { - "matchPackageNames": ["channels", "channels-redis", "daphne"], + "matchDepNames": ["channels", "channels-redis", "daphne"], "groupName": "channels" }, { - "matchPackageNames": ["node"], + "matchDepNames": ["node"], "allowedVersions": "/\\d+[02468]$/" }, { - "matchFiles": ["deploy/docker-compose.yml"], - "matchPackageNames": ["postgres"], + "matchFileNames": ["deploy/docker-compose.yml"], + "matchDepNames": ["postgres"], "postUpgradeTasks": { "commands": [ "echo 'Upgrade Postgres to version {{ newVersion }}. [Make sure to migrate!](https://docs.funkwhale.audio/administrator_documentation/upgrade_docs/docker.html#upgrade-the-postgres-container)' > changes/changelog.d/postgres.update" @@ -76,7 +76,7 @@ } }, { - "matchPackageNames": ["python"], + "matchDepNames": ["python"], "rangeStrategy": "widen" } ] diff --git a/Makefile b/Makefile index 9f07f488c..55096db77 100644 --- a/Makefile +++ b/Makefile @@ -51,7 +51,7 @@ package: zip -q 'funkwhale-front.zip' -r front && \ rm -Rf front - cd '$(BUILD_DIR)' && \ - cp ../front/tauri/target/release/bundle/appimage/funkwhale_*.AppImage FunkwhaleDesktop.AppImage + # cd '$(BUILD_DIR)' && \ + # cp ../front/tauri/target/release/bundle/appimage/funkwhale_*.AppImage FunkwhaleDesktop.AppImage cd '$(BUILD_DIR)' && sha256sum * > SHA256SUMS diff --git a/api/Dockerfile.alpine b/api/Dockerfile.alpine index c4fdd7d8c..6a5599b08 100644 --- a/api/Dockerfile.alpine +++ b/api/Dockerfile.alpine @@ -42,7 +42,12 @@ RUN set -eux; \ py3-pillow \ py3-psycopg2 \ py3-watchfiles \ - python3-dev + python3-dev \ + gfortran \ + libgfortran \ + openblas-dev \ + py3-scipy \ + py3-scikit-learn; # Create virtual env RUN python3 -m venv --system-site-packages /venv @@ -53,19 +58,28 @@ COPY --from=requirements /dev-requirements.txt /dev-requirements.txt RUN --mount=type=cache,target=~/.cache/pip; \ set -eux; \ - pip3 install --upgrade pip; \ - pip3 install setuptools wheel; \ + pip3 install --upgrade pip; + + +RUN --mount=type=cache,target=~/.cache/pip; \ + set -eux; \ + pip3 install setuptools wheel; + +RUN --mount=type=cache,target=~/.cache/pip; \ + set -eux; \ # Currently we are unable to relieably build rust-based packages on armv7. This # is why we need to use the packages shipped by Alpine Linux. # Since poetry does not allow in-place dependency pinning, we need # to install the deps using pip. - grep -Ev 'cryptography|lxml|pillow|psycopg2|watchfiles' /requirements.txt \ + grep -Ev 'cryptography|lxml|pillow|psycopg2|watchfiles|scipy|scikit-learn' /requirements.txt \ | pip3 install -r /dev/stdin \ cryptography \ lxml \ pillow \ psycopg2 \ - watchfiles + watchfiles \ + scipy \ + scikit-learn; ARG install_dev_deps=0 RUN --mount=type=cache,target=~/.cache/pip; \ @@ -102,6 +116,8 @@ RUN set -eux; \ py3-pillow \ py3-psycopg2 \ py3-watchfiles \ + py3-scipy \ + py3-scikit-learn \ python3 \ tzdata @@ -111,6 +127,7 @@ ENV PATH="/venv/bin:$PATH" COPY . /app WORKDIR /app +RUN apk add --no-cache gfortran RUN --mount=type=cache,target=~/.cache/pip; \ set -eux; \ pip3 install --no-deps --editable . diff --git a/api/config/settings/testing.py b/api/config/settings/testing.py deleted file mode 100644 index ab763b84d..000000000 --- a/api/config/settings/testing.py +++ /dev/null @@ -1,9 +0,0 @@ -import os - -os.environ.setdefault("FUNKWHALE_URL", "http://funkwhale.dev") - -from .common import * # noqa - -DEBUG = True -SECRET_KEY = "a_super_secret_key!" -TYPESENSE_API_KEY = "apikey" diff --git a/api/funkwhale_api/common/serializers.py b/api/funkwhale_api/common/serializers.py index bf10fc1c1..73c294df8 100644 --- a/api/funkwhale_api/common/serializers.py +++ b/api/funkwhale_api/common/serializers.py @@ -293,7 +293,17 @@ class AttachmentSerializer(serializers.Serializer): file = StripExifImageField(write_only=True) urls = serializers.SerializerMethodField() - @extend_schema_field(OpenApiTypes.OBJECT) + @extend_schema_field( + { + "type": "object", + "properties": { + "original": {"type": "string"}, + "small_square_crop": {"type": "string"}, + "medium_square_crop": {"type": "string"}, + "large_square_crop": {"type": "string"}, + }, + } + ) def get_urls(self, o): urls = {} urls["source"] = o.url diff --git a/api/funkwhale_api/music/admin.py b/api/funkwhale_api/music/admin.py index dec75f484..338520624 100644 --- a/api/funkwhale_api/music/admin.py +++ b/api/funkwhale_api/music/admin.py @@ -116,7 +116,7 @@ launch_scan.short_description = "Launch scan" class LibraryAdmin(admin.ModelAdmin): list_display = ["id", "name", "actor", "uuid", "privacy_level", "creation_date"] list_select_related = True - search_fields = ["actor__username", "name", "description"] + search_fields = ["uuid", "name", "actor__preferred_username"] list_filter = ["privacy_level"] actions = [launch_scan] diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py index cf550524b..c01585759 100644 --- a/api/funkwhale_api/music/serializers.py +++ b/api/funkwhale_api/music/serializers.py @@ -140,10 +140,11 @@ class ArtistWithAlbumsSerializer(OptionalDescriptionMixin, serializers.Serialize return getattr(o, "_tracks_count", 0) -class SimpleArtistSerializer(serializers.ModelSerializer): - attachment_cover = CoverField(allow_null=True, required=False) +class ArtistSerializer(serializers.ModelSerializer): + cover = CoverField(allow_null=True, required=False) description = common_serializers.ContentSerializer(allow_null=True, required=False) channel = serializers.UUIDField(allow_null=True, required=False) + tags = serializers.SerializerMethodField() class Meta: model = models.Artist @@ -157,61 +158,24 @@ class SimpleArtistSerializer(serializers.ModelSerializer): "is_local", "content_category", "description", - "attachment_cover", + "cover", "channel", "attributed_to", + "tags", ) - -class ArtistCreditSerializer(serializers.ModelSerializer): - artist = SimpleArtistSerializer() - - class Meta: - model = models.ArtistCredit - fields = ["artist", "credit", "joinphrase", "index"] - - -class AlbumSerializer(OptionalDescriptionMixin, serializers.Serializer): - artist_credit = ArtistCreditSerializer(many=True) - cover = CoverField(allow_null=True) - is_playable = serializers.SerializerMethodField() - tags = serializers.SerializerMethodField() - tracks_count = serializers.SerializerMethodField() - attributed_to = APIActorSerializer() - id = serializers.IntegerField() - fid = serializers.URLField() - mbid = serializers.UUIDField() - title = serializers.CharField() - release_date = serializers.DateField() - creation_date = serializers.DateTimeField() - is_local = serializers.BooleanField() - duration = serializers.SerializerMethodField(read_only=True) - - def get_tracks_count(self, o) -> int: - return len(o.tracks.all()) - - def get_is_playable(self, obj) -> bool: - try: - return any( - [ - bool(getattr(t, "is_playable_by_actor", None)) - for t in obj.tracks.all() - ] - ) - except AttributeError: - return None - @extend_schema_field({"type": "array", "items": {"type": "string"}}) def get_tags(self, obj): tagged_items = getattr(obj, "_prefetched_tagged_items", []) return [ti.tag.name for ti in tagged_items] - def get_duration(self, obj) -> int: - try: - return obj.duration - except AttributeError: - # no annotation? - return 0 + +class ArtistCreditSerializer(serializers.ModelSerializer): + artist = ArtistSerializer() + + class Meta: + model = models.ArtistCredit + fields = ["artist", "credit", "joinphrase", "index"] class TrackAlbumSerializer(serializers.ModelSerializer): @@ -275,7 +239,7 @@ class TrackSerializer(OptionalDescriptionMixin, serializers.Serializer): listen_url = serializers.SerializerMethodField() tags = serializers.SerializerMethodField() attributed_to = APIActorSerializer(allow_null=True) - + description = common_serializers.ContentSerializer(allow_null=True, required=False) id = serializers.IntegerField() fid = serializers.URLField() mbid = serializers.UUIDField() @@ -317,6 +281,51 @@ class TrackSerializer(OptionalDescriptionMixin, serializers.Serializer): return bool(getattr(obj, "playable_uploads", [])) +class AlbumSerializer(OptionalDescriptionMixin, serializers.Serializer): + artist_credit = ArtistCreditSerializer(many=True) + cover = CoverField(allow_null=True) + is_playable = serializers.SerializerMethodField() + tags = serializers.SerializerMethodField() + tracks_count = serializers.SerializerMethodField() + attributed_to = APIActorSerializer() + id = serializers.IntegerField() + fid = serializers.URLField() + mbid = serializers.UUIDField() + title = serializers.CharField() + release_date = serializers.DateField() + creation_date = serializers.DateTimeField() + is_local = serializers.BooleanField() + duration = serializers.SerializerMethodField(read_only=True) + tracks = TrackSerializer(many=True, allow_null=True) + description = common_serializers.ContentSerializer(allow_null=True, required=False) + + def get_tracks_count(self, o) -> int: + return len(o.tracks.all()) + + def get_is_playable(self, obj) -> bool: + try: + return any( + [ + bool(getattr(t, "is_playable_by_actor", None)) + for t in obj.tracks.all() + ] + ) + except AttributeError: + return None + + @extend_schema_field({"type": "array", "items": {"type": "string"}}) + def get_tags(self, obj): + tagged_items = getattr(obj, "_prefetched_tagged_items", []) + return [ti.tag.name for ti in tagged_items] + + def get_duration(self, obj) -> int: + try: + return obj.duration + except AttributeError: + # no annotation? + return 0 + + @common_serializers.track_fields_for_update("name", "description", "privacy_level") class LibraryForOwnerSerializer(serializers.ModelSerializer): uploads_count = serializers.SerializerMethodField() diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index a5e6f653a..98872f601 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -256,5 +256,5 @@ class PlaylistViewSet( except models.PlaylistTrack.DoesNotExist: return Response(status=404) artists = music_models.Artist.objects.filter(pk__in=artists_pks) - serializer = music_serializers.SimpleArtistSerializer(artists, many=True) + serializer = music_serializers.ArtistSerializer(artists, many=True) return Response(serializer.data, status=200) diff --git a/api/funkwhale_api/subsonic/serializers.py b/api/funkwhale_api/subsonic/serializers.py index 1041eb216..00910cf85 100644 --- a/api/funkwhale_api/subsonic/serializers.py +++ b/api/funkwhale_api/subsonic/serializers.py @@ -229,6 +229,28 @@ class GetSongSerializer(serializers.Serializer): return get_track_data(track.album, track, uploads[0]) +class GetTopSongsSerializer(serializers.Serializer): + def to_representation(self, artist): + top_tracks = ( + history_models.Listening.objects.filter(track__artist_credit__artist=artist) + .values("track") + .annotate(listen_count=Count("id")) + .order_by("-listen_count")[: self.context["count"]] + ) + if not len(top_tracks): + return {} + + top_tracks_instances = [] + for track in top_tracks: + track = music_models.Track.objects.get(id=track["track"]) + top_tracks_instances.append(track) + + return [ + get_track_data(track.album, track, track.uploads.all()[0]) + for track in top_tracks_instances + ] + + def get_starred_tracks_data(favorites): by_track_id = {f.track_id: f for f in favorites} tracks = ( @@ -338,15 +360,21 @@ def get_channel_data(channel, uploads): "id": str(channel.uuid), "url": channel.get_rss_url(), "title": channel.artist.name, - "description": channel.artist.description.as_plain_text - if channel.artist.description - else "", - "coverArt": f"at-{channel.artist.attachment_cover.uuid}" - if channel.artist.attachment_cover - else "", - "originalImageUrl": channel.artist.attachment_cover.url - if channel.artist.attachment_cover - else "", + "description": ( + channel.artist.description.as_plain_text + if channel.artist.description + else "" + ), + "coverArt": ( + f"at-{channel.artist.attachment_cover.uuid}" + if channel.artist.attachment_cover + else "" + ), + "originalImageUrl": ( + channel.artist.attachment_cover.url + if channel.artist.attachment_cover + else "" + ), "status": "completed", } if uploads: @@ -363,12 +391,14 @@ def get_channel_episode_data(upload, channel_id): "channelId": str(channel_id), "streamId": upload.track.id, "title": upload.track.title, - "description": upload.track.description.as_plain_text - if upload.track.description - else "", - "coverArt": f"at-{upload.track.attachment_cover.uuid}" - if upload.track.attachment_cover - else "", + "description": ( + upload.track.description.as_plain_text if upload.track.description else "" + ), + "coverArt": ( + f"at-{upload.track.attachment_cover.uuid}" + if upload.track.attachment_cover + else "" + ), "isDir": "false", "year": upload.track.creation_date.year, "publishDate": upload.track.creation_date.isoformat(), diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py index 7b5712de9..cd02cabf1 100644 --- a/api/funkwhale_api/subsonic/views.py +++ b/api/funkwhale_api/subsonic/views.py @@ -1,6 +1,7 @@ """ Documentation of Subsonic API can be found at http://www.subsonic.org/pages/api.jsp """ + import datetime import functools @@ -90,6 +91,8 @@ def find_object( } } ) + except qs.model.MultipleObjectsReturned: + obj = qs.filter(**{model_field: value})[0] kwargs["obj"] = obj return func(self, request, *args, **kwargs) @@ -260,6 +263,43 @@ class SubsonicViewSet(viewsets.GenericViewSet): return response.Response(payload, status=200) + # This should return last.fm data but we choose to return the pod top song + @action( + detail=False, + methods=["get", "post"], + url_name="get_top_songs", + url_path="getTopSongs", + ) + @find_object( + music_models.Artist.objects.all(), + model_field="artist_credit__artist__name", + field="artist", + filter_playable=True, + cast=str, + ) + def get_top_songs(self, request, *args, **kwargs): + artist = kwargs.pop("obj") + data = request.GET or request.POST + try: + count = int(data["count"]) + except KeyError: + return response.Response( + { + "error": { + "code": 10, + "message": "required parameter 'count' not present", + } + } + ) + + # passing with many=true to make the serializer accept the returned list + data = serializers.GetTopSongsSerializer( + [artist], context={"count": count}, many=True + ).data + payload = {"topSongs": data[0]} + + return response.Response(payload, status=200) + @action( detail=False, methods=["get", "post"], @@ -289,6 +329,44 @@ class SubsonicViewSet(viewsets.GenericViewSet): payload = {"album": data} return response.Response(payload, status=200) + # A clone of get_album (this should return last.fm data but we prefer to send our own metadata) + @action( + detail=False, + methods=["get", "post"], + url_name="get_album_info_2", + url_path="getAlbumInfo2", + ) + @find_object( + music_models.Album.objects.with_duration().prefetch_related( + "artist_credit__artist" + ), + filter_playable=True, + ) + def get_album_info_2(self, request, *args, **kwargs): + album = kwargs.pop("obj") + data = serializers.GetAlbumSerializer(album).data + payload = {"albumInfo": data} + return response.Response(payload, status=200) + + # A clone of get_album (this should return last.fm data but we prefer to send our own metadata) + @action( + detail=False, + methods=["get", "post"], + url_name="get_album_info", + url_path="getAlbumInfo", + ) + @find_object( + music_models.Album.objects.with_duration().prefetch_related( + "artist_credit__artist" + ), + filter_playable=True, + ) + def get_album_info(self, request, *args, **kwargs): + album = kwargs.pop("obj") + data = serializers.GetAlbumSerializer(album).data + payload = {"albumInfo": data} + return response.Response(payload, status=200) + @action(detail=False, methods=["get", "post"], url_name="stream", url_path="stream") @find_object(music_models.Track.objects.all(), filter_playable=True) def stream(self, request, *args, **kwargs): @@ -815,7 +893,7 @@ class SubsonicViewSet(viewsets.GenericViewSet): .select_related("attachment_cover") .get(pk=artist_id) ) - except (TypeError, ValueError, music_models.Album.DoesNotExist): + except (TypeError, ValueError, music_models.Artist.DoesNotExist): return response.Response( {"error": {"code": 70, "message": "cover art not found."}} ) @@ -824,7 +902,7 @@ class SubsonicViewSet(viewsets.GenericViewSet): try: attachment_id = id.replace("at-", "") attachment = common_models.Attachment.objects.get(uuid=attachment_id) - except (TypeError, ValueError, music_models.Album.DoesNotExist): + except (TypeError, ValueError, common_models.Attachment.DoesNotExist): return response.Response( {"error": {"code": 70, "message": "cover art not found."}} ) diff --git a/api/poetry.lock b/api/poetry.lock index b0101571d..0aeb270c7 100644 --- a/api/poetry.lock +++ b/api/poetry.lock @@ -14,88 +14,93 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -113,14 +118,14 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aioresponses" -version = "0.7.7" +version = "0.7.8" description = "Mock out requests made by ClientSession from aiohttp package" optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "aioresponses-0.7.7-py2.py3-none-any.whl", hash = "sha256:6975f31fe5e7f2113a41bd387221f31854f285ecbc05527272cd8ba4c50764a3"}, - {file = "aioresponses-0.7.7.tar.gz", hash = "sha256:66292f1d5c94a3cb984f3336d806446042adb17347d3089f2d3962dd6e5ba55a"}, + {file = "aioresponses-0.7.8-py2.py3-none-any.whl", hash = "sha256:b73bd4400d978855e55004b23a3a84cb0f018183bcf066a85ad392800b5b9a94"}, + {file = "aioresponses-0.7.8.tar.gz", hash = "sha256:b861cdfe5dc58f3b8afac7b0a6973d5d7b2cb608dd0f6253d16b8ee8eaf6df11"}, ] [package.dependencies] @@ -353,34 +358,34 @@ files = [ [[package]] name = "black" -version = "24.10.0" +version = "25.1.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, - {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, - {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, - {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, - {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, - {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, - {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, - {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, - {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, - {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, - {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, - {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, - {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, - {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, - {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, - {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, - {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, - {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, - {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, - {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, - {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, - {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, + {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, + {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, + {file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"}, + {file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"}, + {file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"}, + {file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"}, + {file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"}, + {file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"}, + {file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"}, + {file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"}, + {file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"}, + {file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"}, + {file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"}, + {file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"}, + {file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"}, + {file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"}, + {file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"}, + {file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"}, + {file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"}, + {file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"}, + {file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"}, + {file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"}, ] [package.dependencies] @@ -418,34 +423,34 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "boto3" -version = "1.35.99" +version = "1.36.21" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "boto3-1.35.99-py3-none-any.whl", hash = "sha256:83e560faaec38a956dfb3d62e05e1703ee50432b45b788c09e25107c5058bd71"}, - {file = "boto3-1.35.99.tar.gz", hash = "sha256:e0abd794a7a591d90558e92e29a9f8837d25ece8e3c120e530526fe27eba5fca"}, + {file = "boto3-1.36.21-py3-none-any.whl", hash = "sha256:f94faa7cf932d781f474d87f8b4c14a033af95ac1460136b40d75e7a30086ef0"}, + {file = "boto3-1.36.21.tar.gz", hash = "sha256:41eb2b73eb612d300e629e3328b83f1ffea0fc6633e75c241a72a76746c1db26"}, ] [package.dependencies] -botocore = ">=1.35.99,<1.36.0" +botocore = ">=1.36.21,<1.37.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.10.0,<0.11.0" +s3transfer = ">=0.11.0,<0.12.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.99" +version = "1.36.21" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "botocore-1.35.99-py3-none-any.whl", hash = "sha256:b22d27b6b617fc2d7342090d6129000af2efd20174215948c0d7ae2da0fab445"}, - {file = "botocore-1.35.99.tar.gz", hash = "sha256:1eab44e969c39c5f3d9a3104a0836c24715579a455f12b3979a31d7cde51b3c3"}, + {file = "botocore-1.36.21-py3-none-any.whl", hash = "sha256:24a7052e792639dc2726001bd474cd0aaa959c1e18ddd92c17f3adc6efa1b132"}, + {file = "botocore-1.36.21.tar.gz", hash = "sha256:da746240e2ad64fd4997f7f3664a0a8e303d18075fc1d473727cb6375080ea16"}, ] [package.dependencies] @@ -454,7 +459,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.22.0)"] +crt = ["awscrt (==0.23.8)"] [[package]] name = "cachetools" @@ -868,74 +873,75 @@ files = [ [[package]] name = "coverage" -version = "7.6.10" +version = "7.6.12" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, - {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, - {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, - {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, - {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, - {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, - {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, - {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, - {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, - {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, - {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, - {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, - {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, - {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, - {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, - {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, - {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, - {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, - {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, - {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, - {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, - {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, - {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, - {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, - {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, - {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, + {file = "coverage-7.6.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8"}, + {file = "coverage-7.6.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879"}, + {file = "coverage-7.6.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06097c7abfa611c91edb9e6920264e5be1d6ceb374efb4986f38b09eed4cb2fe"}, + {file = "coverage-7.6.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:220fa6c0ad7d9caef57f2c8771918324563ef0d8272c94974717c3909664e674"}, + {file = "coverage-7.6.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3688b99604a24492bcfe1c106278c45586eb819bf66a654d8a9a1433022fb2eb"}, + {file = "coverage-7.6.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1a987778b9c71da2fc8948e6f2656da6ef68f59298b7e9786849634c35d2c3c"}, + {file = "coverage-7.6.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:cec6b9ce3bd2b7853d4a4563801292bfee40b030c05a3d29555fd2a8ee9bd68c"}, + {file = "coverage-7.6.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ace9048de91293e467b44bce0f0381345078389814ff6e18dbac8fdbf896360e"}, + {file = "coverage-7.6.12-cp310-cp310-win32.whl", hash = "sha256:ea31689f05043d520113e0552f039603c4dd71fa4c287b64cb3606140c66f425"}, + {file = "coverage-7.6.12-cp310-cp310-win_amd64.whl", hash = "sha256:676f92141e3c5492d2a1596d52287d0d963df21bf5e55c8b03075a60e1ddf8aa"}, + {file = "coverage-7.6.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e18aafdfb3e9ec0d261c942d35bd7c28d031c5855dadb491d2723ba54f4c3015"}, + {file = "coverage-7.6.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66fe626fd7aa5982cdebad23e49e78ef7dbb3e3c2a5960a2b53632f1f703ea45"}, + {file = "coverage-7.6.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ef01d70198431719af0b1f5dcbefc557d44a190e749004042927b2a3fed0702"}, + {file = "coverage-7.6.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e92ae5a289a4bc4c0aae710c0948d3c7892e20fd3588224ebe242039573bf0"}, + {file = "coverage-7.6.12-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e695df2c58ce526eeab11a2e915448d3eb76f75dffe338ea613c1201b33bab2f"}, + {file = "coverage-7.6.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d74c08e9aaef995f8c4ef6d202dbd219c318450fe2a76da624f2ebb9c8ec5d9f"}, + {file = "coverage-7.6.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e995b3b76ccedc27fe4f477b349b7d64597e53a43fc2961db9d3fbace085d69d"}, + {file = "coverage-7.6.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b1f097878d74fe51e1ddd1be62d8e3682748875b461232cf4b52ddc6e6db0bba"}, + {file = "coverage-7.6.12-cp311-cp311-win32.whl", hash = "sha256:1f7ffa05da41754e20512202c866d0ebfc440bba3b0ed15133070e20bf5aeb5f"}, + {file = "coverage-7.6.12-cp311-cp311-win_amd64.whl", hash = "sha256:e216c5c45f89ef8971373fd1c5d8d1164b81f7f5f06bbf23c37e7908d19e8558"}, + {file = "coverage-7.6.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b172f8e030e8ef247b3104902cc671e20df80163b60a203653150d2fc204d1ad"}, + {file = "coverage-7.6.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:641dfe0ab73deb7069fb972d4d9725bf11c239c309ce694dd50b1473c0f641c3"}, + {file = "coverage-7.6.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e549f54ac5f301e8e04c569dfdb907f7be71b06b88b5063ce9d6953d2d58574"}, + {file = "coverage-7.6.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:959244a17184515f8c52dcb65fb662808767c0bd233c1d8a166e7cf74c9ea985"}, + {file = "coverage-7.6.12-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bda1c5f347550c359f841d6614fb8ca42ae5cb0b74d39f8a1e204815ebe25750"}, + {file = "coverage-7.6.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1ceeb90c3eda1f2d8c4c578c14167dbd8c674ecd7d38e45647543f19839dd6ea"}, + {file = "coverage-7.6.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f16f44025c06792e0fb09571ae454bcc7a3ec75eeb3c36b025eccf501b1a4c3"}, + {file = "coverage-7.6.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b076e625396e787448d27a411aefff867db2bffac8ed04e8f7056b07024eed5a"}, + {file = "coverage-7.6.12-cp312-cp312-win32.whl", hash = "sha256:00b2086892cf06c7c2d74983c9595dc511acca00665480b3ddff749ec4fb2a95"}, + {file = "coverage-7.6.12-cp312-cp312-win_amd64.whl", hash = "sha256:7ae6eabf519bc7871ce117fb18bf14e0e343eeb96c377667e3e5dd12095e0288"}, + {file = "coverage-7.6.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:488c27b3db0ebee97a830e6b5a3ea930c4a6e2c07f27a5e67e1b3532e76b9ef1"}, + {file = "coverage-7.6.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d1095bbee1851269f79fd8e0c9b5544e4c00c0c24965e66d8cba2eb5bb535fd"}, + {file = "coverage-7.6.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0533adc29adf6a69c1baa88c3d7dbcaadcffa21afbed3ca7a225a440e4744bf9"}, + {file = "coverage-7.6.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53c56358d470fa507a2b6e67a68fd002364d23c83741dbc4c2e0680d80ca227e"}, + {file = "coverage-7.6.12-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64cbb1a3027c79ca6310bf101014614f6e6e18c226474606cf725238cf5bc2d4"}, + {file = "coverage-7.6.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:79cac3390bfa9836bb795be377395f28410811c9066bc4eefd8015258a7578c6"}, + {file = "coverage-7.6.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9b148068e881faa26d878ff63e79650e208e95cf1c22bd3f77c3ca7b1d9821a3"}, + {file = "coverage-7.6.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8bec2ac5da793c2685ce5319ca9bcf4eee683b8a1679051f8e6ec04c4f2fd7dc"}, + {file = "coverage-7.6.12-cp313-cp313-win32.whl", hash = "sha256:200e10beb6ddd7c3ded322a4186313d5ca9e63e33d8fab4faa67ef46d3460af3"}, + {file = "coverage-7.6.12-cp313-cp313-win_amd64.whl", hash = "sha256:2b996819ced9f7dbb812c701485d58f261bef08f9b85304d41219b1496b591ef"}, + {file = "coverage-7.6.12-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:299cf973a7abff87a30609879c10df0b3bfc33d021e1adabc29138a48888841e"}, + {file = "coverage-7.6.12-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4b467a8c56974bf06e543e69ad803c6865249d7a5ccf6980457ed2bc50312703"}, + {file = "coverage-7.6.12-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2458f275944db8129f95d91aee32c828a408481ecde3b30af31d552c2ce284a0"}, + {file = "coverage-7.6.12-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a9d8be07fb0832636a0f72b80d2a652fe665e80e720301fb22b191c3434d924"}, + {file = "coverage-7.6.12-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14d47376a4f445e9743f6c83291e60adb1b127607a3618e3185bbc8091f0467b"}, + {file = "coverage-7.6.12-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b95574d06aa9d2bd6e5cc35a5bbe35696342c96760b69dc4287dbd5abd4ad51d"}, + {file = "coverage-7.6.12-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:ecea0c38c9079570163d663c0433a9af4094a60aafdca491c6a3d248c7432827"}, + {file = "coverage-7.6.12-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2251fabcfee0a55a8578a9d29cecfee5f2de02f11530e7d5c5a05859aa85aee9"}, + {file = "coverage-7.6.12-cp313-cp313t-win32.whl", hash = "sha256:eb5507795caabd9b2ae3f1adc95f67b1104971c22c624bb354232d65c4fc90b3"}, + {file = "coverage-7.6.12-cp313-cp313t-win_amd64.whl", hash = "sha256:f60a297c3987c6c02ffb29effc70eadcbb412fe76947d394a1091a3615948e2f"}, + {file = "coverage-7.6.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e7575ab65ca8399c8c4f9a7d61bbd2d204c8b8e447aab9d355682205c9dd948d"}, + {file = "coverage-7.6.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8161d9fbc7e9fe2326de89cd0abb9f3599bccc1287db0aba285cb68d204ce929"}, + {file = "coverage-7.6.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a1e465f398c713f1b212400b4e79a09829cd42aebd360362cd89c5bdc44eb87"}, + {file = "coverage-7.6.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f25d8b92a4e31ff1bd873654ec367ae811b3a943583e05432ea29264782dc32c"}, + {file = "coverage-7.6.12-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a936309a65cc5ca80fa9f20a442ff9e2d06927ec9a4f54bcba9c14c066323f2"}, + {file = "coverage-7.6.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aa6f302a3a0b5f240ee201297fff0bbfe2fa0d415a94aeb257d8b461032389bd"}, + {file = "coverage-7.6.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f973643ef532d4f9be71dd88cf7588936685fdb576d93a79fe9f65bc337d9d73"}, + {file = "coverage-7.6.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:78f5243bb6b1060aed6213d5107744c19f9571ec76d54c99cc15938eb69e0e86"}, + {file = "coverage-7.6.12-cp39-cp39-win32.whl", hash = "sha256:69e62c5034291c845fc4df7f8155e8544178b6c774f97a99e2734b05eb5bed31"}, + {file = "coverage-7.6.12-cp39-cp39-win_amd64.whl", hash = "sha256:b01a840ecc25dce235ae4c1b6a0daefb2a203dba0e6e980637ee9c2f6ee0df57"}, + {file = "coverage-7.6.12-pp39.pp310-none-any.whl", hash = "sha256:7e39e845c4d764208e7b8f6a21c541ade741e2c41afabdfa1caa28687a3c98cf"}, + {file = "coverage-7.6.12-py3-none-any.whl", hash = "sha256:eb8668cfbc279a536c633137deeb9435d2962caec279c3f8cf8b91fff6ff8953"}, + {file = "coverage-7.6.12.tar.gz", hash = "sha256:48cfc4641d95d34766ad41d9573cc0f22a48aa88d22657a1fe01dca0dbae4de2"}, ] [package.dependencies] @@ -946,39 +952,43 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "44.0.0" +version = "44.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = "!=3.9.0,!=3.9.1,>=3.7" groups = ["main"] files = [ - {file = "cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, - {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, - {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, - {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, - {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, - {file = "cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd"}, - {file = "cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, - {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, - {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, - {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, - {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, - {file = "cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa"}, - {file = "cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c"}, - {file = "cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02"}, + {file = "cryptography-44.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf688f615c29bfe9dfc44312ca470989279f0e94bb9f631f85e3459af8efc009"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd7c7e2d71d908dc0f8d2027e1604102140d84b155e658c20e8ad1304317691f"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887143b9ff6bad2b7570da75a7fe8bbf5f65276365ac259a5d2d5147a73775f2"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:322eb03ecc62784536bc173f1483e76747aafeb69c8728df48537eb431cd1911"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:21377472ca4ada2906bc313168c9dc7b1d7ca417b63c1c3011d0c74b7de9ae69"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df978682c1504fc93b3209de21aeabf2375cb1571d4e61907b3e7a2540e83026"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:eb3889330f2a4a148abead555399ec9a32b13b7c8ba969b72d8e500eb7ef84cd"}, + {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:8e6a85a93d0642bd774460a86513c5d9d80b5c002ca9693e63f6e540f1815ed0"}, + {file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6f76fdd6fd048576a04c5210d53aa04ca34d2ed63336d4abd306d0cbe298fddf"}, + {file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6c8acf6f3d1f47acb2248ec3ea261171a671f3d9428e34ad0357148d492c7864"}, + {file = "cryptography-44.0.1-cp37-abi3-win32.whl", hash = "sha256:24979e9f2040c953a94bf3c6782e67795a4c260734e5264dceea65c8f4bae64a"}, + {file = "cryptography-44.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:fd0ee90072861e276b0ff08bd627abec29e32a53b2be44e41dbcdf87cbee2b00"}, + {file = "cryptography-44.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8272f257cf1cbd3f2e120f14c68bff2b6bdfcc157fafdee84a1b795efd72862"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e8d181e90a777b63f3f0caa836844a1182f1f265687fac2115fcf245f5fbec3"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:436df4f203482f41aad60ed1813811ac4ab102765ecae7a2bbb1dbb66dcff5a7"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4f422e8c6a28cf8b7f883eb790695d6d45b0c385a2583073f3cec434cc705e1a"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:72198e2b5925155497a5a3e8c216c7fb3e64c16ccee11f0e7da272fa93b35c4c"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a46a89ad3e6176223b632056f321bc7de36b9f9b93b2cc1cccf935a3849dc62"}, + {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:53f23339864b617a3dfc2b0ac8d5c432625c80014c25caac9082314e9de56f41"}, + {file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:888fcc3fce0c888785a4876ca55f9f43787f4c5c1cc1e2e0da71ad481ff82c5b"}, + {file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00918d859aa4e57db8299607086f793fa7813ae2ff5a4637e318a25ef82730f7"}, + {file = "cryptography-44.0.1-cp39-abi3-win32.whl", hash = "sha256:9b336599e2cb77b1008cb2ac264b290803ec5e8e89d618a5e978ff5eb6f715d9"}, + {file = "cryptography-44.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1f9a92144fa0c877117e9748c74501bea842f93d21ee00b0cf922846d9d0b183"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:610a83540765a8d8ce0f351ce42e26e53e1f774a6efb71eb1b41eb01d01c3d12"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fed5cd6102bb4eb843e3315d2bf25fede494509bddadb81e03a859c1bc17b83"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:f4daefc971c2d1f82f03097dc6f216744a6cd2ac0f04c68fb935ea2ba2a0d420"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94f99f2b943b354a5b6307d7e8d19f5c423a794462bde2bf310c770ba052b1c4"}, + {file = "cryptography-44.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d9c5b9f698a83c8bd71e0f4d3f9f839ef244798e5ffe96febfa9714717db7af7"}, + {file = "cryptography-44.0.1.tar.gz", hash = "sha256:f51f5705ab27898afda1aaa430f34ad90dc117421057782022edf0600bec5f14"}, ] [package.dependencies] @@ -991,7 +1001,7 @@ nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2)"] pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] sdist = ["build (>=1.0.0)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi (>=2024)", "cryptography-vectors (==44.0.0)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] +test = ["certifi (>=2024)", "cryptography-vectors (==44.0.1)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] test-randomorder = ["pytest-randomly"] [[package]] @@ -1016,38 +1026,38 @@ tests = ["django", "hypothesis", "pytest", "pytest-asyncio"] [[package]] name = "debugpy" -version = "1.8.11" +version = "1.8.12" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "debugpy-1.8.11-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:2b26fefc4e31ff85593d68b9022e35e8925714a10ab4858fb1b577a8a48cb8cd"}, - {file = "debugpy-1.8.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61bc8b3b265e6949855300e84dc93d02d7a3a637f2aec6d382afd4ceb9120c9f"}, - {file = "debugpy-1.8.11-cp310-cp310-win32.whl", hash = "sha256:c928bbf47f65288574b78518449edaa46c82572d340e2750889bbf8cd92f3737"}, - {file = "debugpy-1.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:8da1db4ca4f22583e834dcabdc7832e56fe16275253ee53ba66627b86e304da1"}, - {file = "debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296"}, - {file = "debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1"}, - {file = "debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9"}, - {file = "debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e"}, - {file = "debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308"}, - {file = "debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768"}, - {file = "debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b"}, - {file = "debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1"}, - {file = "debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3"}, - {file = "debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e"}, - {file = "debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28"}, - {file = "debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1"}, - {file = "debugpy-1.8.11-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:ad7efe588c8f5cf940f40c3de0cd683cc5b76819446abaa50dc0829a30c094db"}, - {file = "debugpy-1.8.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:189058d03a40103a57144752652b3ab08ff02b7595d0ce1f651b9acc3a3a35a0"}, - {file = "debugpy-1.8.11-cp38-cp38-win32.whl", hash = "sha256:32db46ba45849daed7ccf3f2e26f7a386867b077f39b2a974bb5c4c2c3b0a280"}, - {file = "debugpy-1.8.11-cp38-cp38-win_amd64.whl", hash = "sha256:116bf8342062246ca749013df4f6ea106f23bc159305843491f64672a55af2e5"}, - {file = "debugpy-1.8.11-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:654130ca6ad5de73d978057eaf9e582244ff72d4574b3e106fb8d3d2a0d32458"}, - {file = "debugpy-1.8.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dc34c5e03b0212fa3c49a874df2b8b1b8fda95160bd79c01eb3ab51ea8d851"}, - {file = "debugpy-1.8.11-cp39-cp39-win32.whl", hash = "sha256:52d8a3166c9f2815bfae05f386114b0b2d274456980d41f320299a8d9a5615a7"}, - {file = "debugpy-1.8.11-cp39-cp39-win_amd64.whl", hash = "sha256:52c3cf9ecda273a19cc092961ee34eb9ba8687d67ba34cc7b79a521c1c64c4c0"}, - {file = "debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920"}, - {file = "debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57"}, + {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, + {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, + {file = "debugpy-1.8.12-cp310-cp310-win32.whl", hash = "sha256:b202f591204023b3ce62ff9a47baa555dc00bb092219abf5caf0e3718ac20e7c"}, + {file = "debugpy-1.8.12-cp310-cp310-win_amd64.whl", hash = "sha256:9649eced17a98ce816756ce50433b2dd85dfa7bc92ceb60579d68c053f98dff9"}, + {file = "debugpy-1.8.12-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:36f4829839ef0afdfdd208bb54f4c3d0eea86106d719811681a8627ae2e53dd5"}, + {file = "debugpy-1.8.12-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a28ed481d530e3138553be60991d2d61103ce6da254e51547b79549675f539b7"}, + {file = "debugpy-1.8.12-cp311-cp311-win32.whl", hash = "sha256:4ad9a94d8f5c9b954e0e3b137cc64ef3f579d0df3c3698fe9c3734ee397e4abb"}, + {file = "debugpy-1.8.12-cp311-cp311-win_amd64.whl", hash = "sha256:4703575b78dd697b294f8c65588dc86874ed787b7348c65da70cfc885efdf1e1"}, + {file = "debugpy-1.8.12-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:7e94b643b19e8feb5215fa508aee531387494bf668b2eca27fa769ea11d9f498"}, + {file = "debugpy-1.8.12-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:086b32e233e89a2740c1615c2f775c34ae951508b28b308681dbbb87bba97d06"}, + {file = "debugpy-1.8.12-cp312-cp312-win32.whl", hash = "sha256:2ae5df899732a6051b49ea2632a9ea67f929604fd2b036613a9f12bc3163b92d"}, + {file = "debugpy-1.8.12-cp312-cp312-win_amd64.whl", hash = "sha256:39dfbb6fa09f12fae32639e3286112fc35ae976114f1f3d37375f3130a820969"}, + {file = "debugpy-1.8.12-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:696d8ae4dff4cbd06bf6b10d671e088b66669f110c7c4e18a44c43cf75ce966f"}, + {file = "debugpy-1.8.12-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:898fba72b81a654e74412a67c7e0a81e89723cfe2a3ea6fcd3feaa3395138ca9"}, + {file = "debugpy-1.8.12-cp313-cp313-win32.whl", hash = "sha256:22a11c493c70413a01ed03f01c3c3a2fc4478fc6ee186e340487b2edcd6f4180"}, + {file = "debugpy-1.8.12-cp313-cp313-win_amd64.whl", hash = "sha256:fdb3c6d342825ea10b90e43d7f20f01535a72b3a1997850c0c3cefa5c27a4a2c"}, + {file = "debugpy-1.8.12-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:b0232cd42506d0c94f9328aaf0d1d0785f90f87ae72d9759df7e5051be039738"}, + {file = "debugpy-1.8.12-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9af40506a59450f1315168d47a970db1a65aaab5df3833ac389d2899a5d63b3f"}, + {file = "debugpy-1.8.12-cp38-cp38-win32.whl", hash = "sha256:5cc45235fefac57f52680902b7d197fb2f3650112379a6fa9aa1b1c1d3ed3f02"}, + {file = "debugpy-1.8.12-cp38-cp38-win_amd64.whl", hash = "sha256:557cc55b51ab2f3371e238804ffc8510b6ef087673303890f57a24195d096e61"}, + {file = "debugpy-1.8.12-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:b5c6c967d02fee30e157ab5227706f965d5c37679c687b1e7bbc5d9e7128bd41"}, + {file = "debugpy-1.8.12-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a77f422f31f170c4b7e9ca58eae2a6c8e04da54121900651dfa8e66c29901a"}, + {file = "debugpy-1.8.12-cp39-cp39-win32.whl", hash = "sha256:a4042edef80364239f5b7b5764e55fd3ffd40c32cf6753da9bda4ff0ac466018"}, + {file = "debugpy-1.8.12-cp39-cp39-win_amd64.whl", hash = "sha256:f30b03b0f27608a0b26c75f0bb8a880c752c0e0b01090551b9d87c7d783e2069"}, + {file = "debugpy-1.8.12-py2.py3-none-any.whl", hash = "sha256:274b6a2040349b5c9864e475284bce5bb062e63dce368a394b8cc865ae3b00c6"}, + {file = "debugpy-1.8.12.tar.gz", hash = "sha256:646530b04f45c830ceae8e491ca1c9320a2d2f0efea3141487c82130aba70dce"}, ] [[package]] @@ -1110,14 +1120,14 @@ with-social = ["django-allauth[socialaccount] (>=64.0.0)"] [[package]] name = "django" -version = "5.1.5" +version = "5.1.6" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "Django-5.1.5-py3-none-any.whl", hash = "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459"}, - {file = "Django-5.1.5.tar.gz", hash = "sha256:19bbca786df50b9eca23cee79d495facf55c8f5c54c529d9bf1fe7b5ea086af3"}, + {file = "Django-5.1.6-py3-none-any.whl", hash = "sha256:8d203400bc2952fbfb287c2bbda630297d654920c72a73cc82a9ad7926feaad5"}, + {file = "Django-5.1.6.tar.gz", hash = "sha256:1e39eafdd1b185e761d9fab7a9f0b9fa00af1b37b25ad980a8aa0dac13535690"}, ] [package.dependencies] @@ -1131,13 +1141,13 @@ bcrypt = ["bcrypt"] [[package]] name = "django-allauth" -version = "65.3.1" +version = "65.4.1" description = "Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "django_allauth-65.3.1.tar.gz", hash = "sha256:e02e951b71a2753a746459f2efa114c7c72bf2cef6887dbe8607a577c0350587"}, + {file = "django_allauth-65.4.1.tar.gz", hash = "sha256:60b32aef7dbbcc213319aa4fd8f570e985266ea1162ae6ef7a26a24efca85c8c"}, ] [package.dependencies] @@ -1213,14 +1223,14 @@ files = [ [[package]] name = "django-cors-headers" -version = "4.6.0" +version = "4.7.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "django_cors_headers-4.6.0-py3-none-any.whl", hash = "sha256:8edbc0497e611c24d5150e0055d3b178c6534b8ed826fb6f53b21c63f5d48ba3"}, - {file = "django_cors_headers-4.6.0.tar.gz", hash = "sha256:14d76b4b4c8d39375baeddd89e4f08899051eeaf177cb02a29bd6eae8cf63aa8"}, + {file = "django_cors_headers-4.7.0-py3-none-any.whl", hash = "sha256:f1c125dcd58479fe7a67fe2499c16ee38b81b397463cf025f0e2c42937421070"}, + {file = "django_cors_headers-4.7.0.tar.gz", hash = "sha256:6fdf31bf9c6d6448ba09ef57157db2268d515d94fc5c89a0a1028e1fc03ee52b"}, ] [package.dependencies] @@ -1308,14 +1318,14 @@ Django = ">=3.2" [[package]] name = "django-filter" -version = "24.3" +version = "25.1" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "django_filter-24.3-py3-none-any.whl", hash = "sha256:c4852822928ce17fb699bcfccd644b3574f1a2d80aeb2b4ff4f16b02dd49dc64"}, - {file = "django_filter-24.3.tar.gz", hash = "sha256:d8ccaf6732afd21ca0542f6733b11591030fa98669f8d15599b358e24a2cd9c3"}, + {file = "django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80"}, + {file = "django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153"}, ] [package.dependencies] @@ -1360,14 +1370,14 @@ hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] [[package]] name = "django-storages" -version = "1.14.4" +version = "1.14.5" description = "Support for many storage backends in Django" optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "django-storages-1.14.4.tar.gz", hash = "sha256:69aca94d26e6714d14ad63f33d13619e697508ee33ede184e462ed766dc2a73f"}, - {file = "django_storages-1.14.4-py3-none-any.whl", hash = "sha256:d61930acb4a25e3aebebc6addaf946a3b1df31c803a6bf1af2f31c9047febaa3"}, + {file = "django_storages-1.14.5-py3-none-any.whl", hash = "sha256:5ce9c69426f24f379821fd688442314e4aa03de87ae43183c4e16915f4c165d4"}, + {file = "django_storages-1.14.5.tar.gz", hash = "sha256:ace80dbee311258453e30cd5cfd91096b834180ccf09bc1f4d2cb6d38d68571a"}, ] [package.dependencies] @@ -1377,7 +1387,7 @@ Django = ">=3.2" azure = ["azure-core (>=1.13)", "azure-storage-blob (>=12)"] boto3 = ["boto3 (>=1.4.4)"] dropbox = ["dropbox (>=7.2.1)"] -google = ["google-cloud-storage (>=1.27)"] +google = ["google-cloud-storage (>=1.32)"] libcloud = ["apache-libcloud"] s3 = ["boto3 (>=1.4.4)"] sftp = ["paramiko (>=1.15)"] @@ -1471,14 +1481,14 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "factory-boy" -version = "3.3.1" +version = "3.3.3" description = "A versatile test fixtures replacement based on thoughtbot's factory_bot for Ruby." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "factory_boy-3.3.1-py2.py3-none-any.whl", hash = "sha256:7b1113c49736e1e9995bc2a18f4dbf2c52cf0f841103517010b1d825712ce3ca"}, - {file = "factory_boy-3.3.1.tar.gz", hash = "sha256:8317aa5289cdfc45f9cae570feb07a6177316c82e34d14df3c2e1f22f26abef0"}, + {file = "factory_boy-3.3.3-py2.py3-none-any.whl", hash = "sha256:1c39e3289f7e667c4285433f305f8d506efc2fe9c73aaea4151ebd5cdea394fc"}, + {file = "factory_boy-3.3.3.tar.gz", hash = "sha256:866862d226128dfac7f2b4160287e899daf54f2612778327dd03d0e2cb1e3d03"}, ] [package.dependencies] @@ -1490,19 +1500,18 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "33.3.1" +version = "36.1.1" description = "Faker is a Python package that generates fake data for you." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "Faker-33.3.1-py3-none-any.whl", hash = "sha256:ac4cf2f967ce02c898efa50651c43180bd658a7707cfd676fcc5410ad1482c03"}, - {file = "faker-33.3.1.tar.gz", hash = "sha256:49dde3b06a5602177bc2ad013149b6f60a290b7154539180d37b6f876ae79b20"}, + {file = "Faker-36.1.1-py3-none-any.whl", hash = "sha256:ad1f1be7fd692ec0256517404a9d7f007ab36ac5d4674082fa72404049725eaa"}, + {file = "faker-36.1.1.tar.gz", hash = "sha256:7cb2bbd4c8f040e4a340ae4019e9a48b6cf1db6a71bda4e5a61d8d13b7bef28d"}, ] [package.dependencies] -python-dateutil = ">=2.4" -typing-extensions = "*" +tzdata = "*" [[package]] name = "feedparser" @@ -1521,14 +1530,14 @@ sgmllib3k = "*" [[package]] name = "flake8" -version = "7.1.1" +version = "7.1.2" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" groups = ["dev"] files = [ - {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, - {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, + {file = "flake8-7.1.2-py2.py3-none-any.whl", hash = "sha256:1cbc62e65536f65e6d754dfe6f1bada7f5cf392d6f5db3c2b85892466c3e7c1a"}, + {file = "flake8-7.1.2.tar.gz", hash = "sha256:c586ffd0b41540951ae41af572e6790dbd49fc12b3aa2541685d253d9bd504bd"}, ] [package.dependencies] @@ -1881,14 +1890,14 @@ tomli = {version = "*", markers = "python_version > \"3.6\" and python_version < [[package]] name = "ipython" -version = "8.31.0" +version = "8.32.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "ipython-8.31.0-py3-none-any.whl", hash = "sha256:46ec58f8d3d076a61d128fe517a51eb730e3aaf0c184ea8c17d16e366660c6a6"}, - {file = "ipython-8.31.0.tar.gz", hash = "sha256:b6a2274606bec6166405ff05e54932ed6e5cfecaca1fc05f2cacde7bb074d70b"}, + {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, + {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, ] [package.dependencies] @@ -2085,14 +2094,14 @@ tests = ["pytest (==7.1.2)", "pytest-cov (==4.1.0)"] [[package]] name = "liblistenbrainz" -version = "0.5.5" +version = "0.5.6" description = "A simple ListenBrainz client library for Python" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "liblistenbrainz-0.5.5-py3-none-any.whl", hash = "sha256:6ffd5ed013c3a4b341a880136ccd5eb683e0a7a8983305f423aaf1b7adbad366"}, - {file = "liblistenbrainz-0.5.5.tar.gz", hash = "sha256:56eb564d0b0dab1b1bf77c01ec95c255fee3d84d51744b31851f2772ac95f41c"}, + {file = "liblistenbrainz-0.5.6-py3-none-any.whl", hash = "sha256:9110f43cd357fd5355bec7b897cf6ec1664b411698d188ed85f9172fd10e8afa"}, + {file = "liblistenbrainz-0.5.6.tar.gz", hash = "sha256:a6997c79f9fcc0a7704be82395786318ba6bb31d366e800828577bb172229ba6"}, ] [package.dependencies] @@ -2101,7 +2110,7 @@ requests = ">=2.31.0" [package.extras] build = ["build", "twine"] docs = ["sphinx (==3.0.1)"] -tests = ["pytest (==5.4.1)", "pytest-cov (==2.8.1)"] +tests = ["pytest (==8.3.4)", "pytest-cov (>=5.0.0)"] [[package]] name = "lxml" @@ -2825,14 +2834,14 @@ files = [ [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" groups = ["main", "dev"] files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, + {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, ] [package.dependencies] @@ -3181,14 +3190,14 @@ requests = ["requests"] [[package]] name = "pylint" -version = "3.3.3" +version = "3.3.4" description = "python code static checker" optional = false python-versions = ">=3.9.0" groups = ["dev"] files = [ - {file = "pylint-3.3.3-py3-none-any.whl", hash = "sha256:26e271a2bc8bce0fc23833805a9076dd9b4d5194e2a02164942cb3cdc37b4183"}, - {file = "pylint-3.3.3.tar.gz", hash = "sha256:07c607523b17e6d16e2ae0d7ef59602e332caa762af64203c24b41c27139f36a"}, + {file = "pylint-3.3.4-py3-none-any.whl", hash = "sha256:289e6a1eb27b453b08436478391a48cd53bb0efb824873f949e709350f3de018"}, + {file = "pylint-3.3.4.tar.gz", hash = "sha256:74ae7a38b177e69a9b525d0794bd8183820bfa7eb68cc1bee6e8ed22a42be4ce"}, ] [package.dependencies] @@ -3199,7 +3208,7 @@ dill = [ {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] -isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<7" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -3288,14 +3297,14 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.25.2" +version = "0.25.3" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_asyncio-0.25.2-py3-none-any.whl", hash = "sha256:0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075"}, - {file = "pytest_asyncio-0.25.2.tar.gz", hash = "sha256:3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f"}, + {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, + {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, ] [package.dependencies] @@ -3326,21 +3335,21 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-django" -version = "4.9.0" +version = "4.10.0" description = "A Django plugin for pytest." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pytest_django-4.9.0-py3-none-any.whl", hash = "sha256:1d83692cb39188682dbb419ff0393867e9904094a549a7d38a3154d5731b2b99"}, - {file = "pytest_django-4.9.0.tar.gz", hash = "sha256:8bf7bc358c9ae6f6fc51b6cebb190fe20212196e6807121f11bd6a3b03428314"}, + {file = "pytest_django-4.10.0-py3-none-any.whl", hash = "sha256:57c74ef3aa9d89cae5a5d73fbb69a720a62673ade7ff13b9491872409a3f5918"}, + {file = "pytest_django-4.10.0.tar.gz", hash = "sha256:1091b20ea1491fd04a310fc9aaff4c01b4e8450e3b157687625e16a6b5f3a366"}, ] [package.dependencies] pytest = ">=7.0.0" [package.extras] -docs = ["sphinx", "sphinx-rtd-theme"] +docs = ["sphinx", "sphinx_rtd_theme"] testing = ["Django", "django-configurations (>=2.0)"] [[package]] @@ -3421,7 +3430,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3861,21 +3870,21 @@ files = [ [[package]] name = "s3transfer" -version = "0.10.4" +version = "0.11.2" description = "An Amazon S3 Transfer Manager" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, - {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, + {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, + {file = "s3transfer-0.11.2.tar.gz", hash = "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f"}, ] [package.dependencies] -botocore = ">=1.33.2,<2.0a.0" +botocore = ">=1.36.0,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] +crt = ["botocore[crt] (>=1.36.0,<2.0a.0)"] [[package]] name = "scikit-learn" @@ -3992,14 +4001,14 @@ test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis [[package]] name = "sentry-sdk" -version = "2.20.0" +version = "2.22.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = ">=3.6" groups = ["main"] files = [ - {file = "sentry_sdk-2.20.0-py2.py3-none-any.whl", hash = "sha256:c359a1edf950eb5e80cffd7d9111f3dbeef57994cb4415df37d39fda2cf22364"}, - {file = "sentry_sdk-2.20.0.tar.gz", hash = "sha256:afa82713a92facf847df3c6f63cec71eb488d826a50965def3d7722aa6f0fdab"}, + {file = "sentry_sdk-2.22.0-py2.py3-none-any.whl", hash = "sha256:3d791d631a6c97aad4da7074081a57073126c69487560c6f8bffcf586461de66"}, + {file = "sentry_sdk-2.22.0.tar.gz", hash = "sha256:b4bf43bb38f547c84b2eadcefbe389b36ef75f3f38253d7a74d6b928c07ae944"}, ] [package.dependencies] @@ -4043,6 +4052,7 @@ sanic = ["sanic (>=0.8)"] sqlalchemy = ["sqlalchemy (>=1.2)"] starlette = ["starlette (>=0.19.1)"] starlite = ["starlite (>=1.48)"] +statsig = ["statsig (>=0.55.3)"] tornado = ["tornado (>=6)"] unleash = ["UnleashClient (>=6.0.1)"] @@ -4109,7 +4119,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -4305,21 +4315,21 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "troi" -version = "2025.1.10.0" +version = "2025.1.29.0" description = "ListenBrainz' empathic music recommendation/playlisting engine" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "troi-2025.1.10.0-py3-none-any.whl", hash = "sha256:80693228ab924d7c9e8f1c7dbbe4971b770e8ccc027ba3a35fbedf752b5a12f3"}, - {file = "troi-2025.1.10.0.tar.gz", hash = "sha256:c595365282ebe4bf6cebd0fbf5a27b051c96dff603d4b9719f333d82459d898e"}, + {file = "troi-2025.1.29.0-py3-none-any.whl", hash = "sha256:25dc8d2c6fbae4d5bc90202118b94415ef85e52f6c954d26e3616c18c613733b"}, + {file = "troi-2025.1.29.0.tar.gz", hash = "sha256:361e17936b1d8d1b7313179e7ab38f3fd51b1aa27e897ee8531be3bd657a0ac1"}, ] [package.dependencies] click = ">=8.0" countryinfo = ">=0.1.2" lb_matching_tools = ">=v2024.01.30.1" -liblistenbrainz = ">=v0.5.5" +liblistenbrainz = ">=v0.5.6" more_itertools = "*" mutagen = "1.46.0" peewee = ">=3.17.0" @@ -4435,6 +4445,7 @@ files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +markers = {dev = "python_version < \"3.12\""} [[package]] name = "tzdata" @@ -4447,7 +4458,6 @@ files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] -markers = {dev = "sys_platform == \"win32\""} [[package]] name = "ujson" @@ -5074,4 +5084,4 @@ typesense = ["typesense"] [metadata] lock-version = "2.1" python-versions = "^3.10,<3.14" -content-hash = "5338d2d4fed2085b1c581613a567a79d3b96c602ea0dbc6ef9a882dd0efac036" +content-hash = "a3a161f9d1d232e32ea1de2f3772288bf12cc19cd9afc907d6c0713f98320c80" diff --git a/api/pyproject.toml b/api/pyproject.toml index a7f67fd6a..9c213ac7e 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -29,18 +29,18 @@ python = "^3.10,<3.14" # Django dj-rest-auth = "7.0.1" -django = "5.1.5" -django-allauth = "65.3.1" +django = "5.1.6" +django-allauth = "65.4.1" django-cache-memoize = "0.2.1" django-cacheops = "==7.1" django-cleanup = "==9.0.0" -django-cors-headers = "==4.6.0" +django-cors-headers = "==4.7.0" django-dynamic-preferences = "==1.17.0" django-environ = "==0.12.0" -django-filter = "==24.3" +django-filter = "==25.1" django-oauth-toolkit = "3.0.1" django-redis = "==5.4.0" -django-storages = "==1.14.4" +django-storages = "==1.14.5" django-versatileimagefield = "==3.1" djangorestframework = "==3.15.2" drf-spectacular = "==0.28.0" @@ -66,17 +66,17 @@ gunicorn = "==23.0.0" uvicorn = { version = "==0.34.0", extras = ["standard"] } # Libs -aiohttp = "3.11.11" +aiohttp = "3.11.12" arrow = "==1.3.0" backports-zoneinfo = { version = "==0.2.1", python = "<3.9" } bleach = "==6.2.0" -boto3 = "==1.35.99" +boto3 = "==1.36.21" click = "==8.1.8" -cryptography = "==44.0.0" +cryptography = "==44.0.1" defusedxml = "0.7.1" feedparser = "==6.0.11" python-ffmpeg = "==2.0.12" -liblistenbrainz = "==0.5.5" +liblistenbrainz = "==0.5.6" musicbrainzngs = "==0.7.1" mutagen = "==1.46.0" pillow = "==11.1.0" @@ -84,9 +84,9 @@ pyld = "==2.0.4" python-magic = "==0.4.27" requests = "==2.32.3" requests-http-message-signatures = "==0.3.1" -sentry-sdk = "==2.20.0" +sentry-sdk = "==2.22.0" watchdog = "==6.0.0" -troi = "==2025.1.10.0" +troi = "==2025.1.29.0" lb-matching-tools = "==2024.1.30.1" unidecode = "==1.3.8" pycountry = "24.6.1" @@ -95,34 +95,34 @@ pycountry = "24.6.1" typesense = { version = "==0.21.0", optional = true } # Dependencies pinning -ipython = "==8.31.0" +ipython = "==8.32.0" pluralizer = "==1.2.0" service-identity = "==24.2.0" unicode-slugify = "==0.1.5" [tool.poetry.group.dev.dependencies] -aioresponses = "==0.7.7" +aioresponses = "==0.7.8" asynctest = "==0.13.0" -black = "==24.10.0" -coverage = { version = "==7.6.10", extras = ["toml"] } -debugpy = "==1.8.11" +black = "==25.1.0" +coverage = { version = "==7.6.12", extras = ["toml"] } +debugpy = "==1.8.12" django-coverage-plugin = "==3.1.0" django-debug-toolbar = "==5.0.1" -factory-boy = "==3.3.1" -faker = "==33.3.1" -flake8 = "==7.1.1" +factory-boy = "==3.3.3" +faker = "==36.1.1" +flake8 = "==7.1.2" ipdb = "==0.13.13" pytest = "==8.3.4" -pytest-asyncio = "==0.25.2" -prompt-toolkit = "==3.0.48" +pytest-asyncio = "==0.25.3" +prompt-toolkit = "==3.0.50" pytest-cov = "==6.0.0" -pytest-django = "==4.9.0" +pytest-django = "==4.10.0" pytest-env = "==1.1.5" pytest-mock = "==3.14.0" pytest-randomly = "==3.16.0" pytest-sugar = "==1.0.0" requests-mock = "==1.12.1" -pylint = "==3.3.3" +pylint = "==3.3.4" pylint-django = "==2.6.1" django-extensions = "==3.2.3" diff --git a/api/tests/music/test_migrations.py b/api/tests/music/test_migrations.py index 125e619cc..ae695b527 100644 --- a/api/tests/music/test_migrations.py +++ b/api/tests/music/test_migrations.py @@ -83,7 +83,7 @@ def test_artist_credit_migration(migrator): def test_migrate_libraries_to_playlist(migrator): music_initial_migration = ( "music", - "0059_remove_album_artist_remove_track_artist_artistcredit_and_more", + "0060_empty_for_test", ) music_final_migration = ("music", "0061_migrate_libraries_to_playlist") @@ -110,7 +110,9 @@ def test_migrate_libraries_to_playlist(migrator): existing_urls = Actor.objects.values_list("fid", flat=True) print(existing_urls) target_actor = Actor.objects.create( - name="Test Actor 2", domain=domain2, fid="http://test2.com/superduniquemanonmam" + name="Test Actor 2", + domain=domain2, + fid="http://test2.com/superduniquemanonmam", ) library = Library.objects.create( @@ -119,6 +121,7 @@ def test_migrate_libraries_to_playlist(migrator): creation_date=now(), privacy_level="everyone", uuid=uuid4(), + description="This is a description", ) Track.objects.create() diff --git a/api/tests/music/test_serializers.py b/api/tests/music/test_serializers.py index 3f734f4aa..c0c7fc100 100644 --- a/api/tests/music/test_serializers.py +++ b/api/tests/music/test_serializers.py @@ -198,6 +198,10 @@ def test_album_serializer(factories, to_api_date): "is_local": album.is_local, "tags": [], "attributed_to": federation_serializers.APIActorSerializer(actor).data, + "description": None, + "tracks": [ + serializers.TrackSerializer(track).data for track in album.tracks.all() + ], } serializer = serializers.AlbumSerializer( album.__class__.objects.with_tracks_count().get(pk=album.pk) @@ -230,6 +234,10 @@ def test_track_album_serializer(factories, to_api_date): "is_local": album.is_local, "tags": [], "attributed_to": federation_serializers.APIActorSerializer(actor).data, + "description": None, + "tracks": [ + serializers.TrackSerializer(track).data for track in album.tracks.all() + ], } serializer = serializers.AlbumSerializer( album.__class__.objects.with_tracks_count().get(pk=album.pk) @@ -271,6 +279,7 @@ def test_track_serializer(factories, to_api_date): "cover": common_serializers.AttachmentSerializer(track.attachment_cover).data, "downloads_count": track.downloads_count, "is_playable": bool(track.playable_uploads), + "description": None, } serializer = serializers.TrackSerializer(track) assert serializer.data == expected diff --git a/api/tests/subsonic/test_views.py b/api/tests/subsonic/test_views.py index 3ffe10078..9e86b6962 100644 --- a/api/tests/subsonic/test_views.py +++ b/api/tests/subsonic/test_views.py @@ -227,6 +227,62 @@ def test_get_album( ) +@pytest.mark.parametrize("f", ["json"]) +def test_get_album_info_2( + f, db, logged_in_api_client, factories, mocker, queryset_equal_queries +): + url = reverse("api:subsonic:subsonic-get_album_info_2") + assert url.endswith("getAlbumInfo2") is True + artist_credit = factories["music.ArtistCredit"]() + album = ( + factories["music.Album"](artist_credit=artist_credit) + .__class__.objects.with_duration() + .first() + ) + factories["music.Track"].create_batch(size=3, album=album, playable=True) + playable_by = mocker.spy(music_models.AlbumQuerySet, "playable_by") + expected = {"albumInfo": serializers.GetAlbumSerializer(album).data} + response = logged_in_api_client.get(url, {"f": f, "id": album.pk}) + + assert response.status_code == 200 + assert response.data == expected + + playable_by.assert_called_once_with( + music_models.Album.objects.with_duration().prefetch_related( + "artist_credit__artist" + ), + None, + ) + + +@pytest.mark.parametrize("f", ["json"]) +def test_get_album_info( + f, db, logged_in_api_client, factories, mocker, queryset_equal_queries +): + url = reverse("api:subsonic:subsonic-get_album_info") + assert url.endswith("getAlbumInfo") is True + artist_credit = factories["music.ArtistCredit"]() + album = ( + factories["music.Album"](artist_credit=artist_credit) + .__class__.objects.with_duration() + .first() + ) + factories["music.Track"].create_batch(size=3, album=album, playable=True) + playable_by = mocker.spy(music_models.AlbumQuerySet, "playable_by") + expected = {"albumInfo": serializers.GetAlbumSerializer(album).data} + response = logged_in_api_client.get(url, {"f": f, "id": album.pk}) + + assert response.status_code == 200 + assert response.data == expected + + playable_by.assert_called_once_with( + music_models.Album.objects.with_duration().prefetch_related( + "artist_credit__artist" + ), + None, + ) + + @pytest.mark.parametrize("f", ["json"]) def test_get_song( f, db, logged_in_api_client, factories, mocker, queryset_equal_queries @@ -247,6 +303,32 @@ def test_get_song( playable_by.assert_called_once_with(music_models.Track.objects.all(), None) +@pytest.mark.parametrize("f", ["json"]) +def test_get_top_songs( + f, db, logged_in_api_client, factories, mocker, queryset_equal_queries +): + url = reverse("api:subsonic:subsonic-get_top_songs") + assert url.endswith("getTopSongs") is True + artist_credit = factories["music.ArtistCredit"]() + album = factories["music.Album"](artist_credit=artist_credit) + track = factories["music.Track"](album=album, playable=True) + tracks = factories["music.Track"].create_batch(20, album=album, playable=True) + factories["music.Upload"](track=track) + factories["history.Listening"].create_batch(20, track=track) + factories["history.Listening"].create_batch(2, track=tracks[2]) + + playable_by = mocker.spy(music_models.TrackQuerySet, "playable_by") + response = logged_in_api_client.get( + url, {"f": f, "artist": artist_credit.artist.name, "count": 2} + ) + + assert response.status_code == 200 + assert response.data["topSongs"][0] == serializers.get_track_data( + track.album, track, track.uploads.all()[0] + ) + playable_by.assert_called_once_with(music_models.Track.objects.all(), None) + + @pytest.mark.parametrize("f", ["json"]) def test_stream( f, db, logged_in_api_client, factories, mocker, queryset_equal_queries, settings diff --git a/changes/changelog.d/1566.bugfix b/changes/changelog.d/1566.bugfix new file mode 100644 index 000000000..be6a67fcf --- /dev/null +++ b/changes/changelog.d/1566.bugfix @@ -0,0 +1 @@ +ActivityStreams compliance: duration (#1566) diff --git a/changes/changelog.d/2122.bugfix b/changes/changelog.d/2122.bugfix new file mode 100644 index 000000000..a9a32d5a9 --- /dev/null +++ b/changes/changelog.d/2122.bugfix @@ -0,0 +1 @@ +Fixed the exceptions caught in two places in the getCoverArt subsonic API (#2122) diff --git a/changes/changelog.d/2282.enhancement b/changes/changelog.d/2282.enhancement new file mode 100644 index 000000000..7488c2342 --- /dev/null +++ b/changes/changelog.d/2282.enhancement @@ -0,0 +1 @@ +Drop python 3.8 and 3.9 (#2282) diff --git a/changes/changelog.d/2376.feature b/changes/changelog.d/2376.feature new file mode 100644 index 000000000..04f86d54b --- /dev/null +++ b/changes/changelog.d/2376.feature @@ -0,0 +1 @@ +Add support for deprecated COVERART fields in ogg files. diff --git a/changes/changelog.d/2392.enhancement b/changes/changelog.d/2392.enhancement new file mode 100644 index 000000000..2958abed0 --- /dev/null +++ b/changes/changelog.d/2392.enhancement @@ -0,0 +1 @@ +Subsonic getAlbumInfo, getAlbumInfo2 and getTopSongs endpoints (#2392) diff --git a/changes/changelog.d/2404.bugfix b/changes/changelog.d/2404.bugfix new file mode 100644 index 000000000..d187891b4 --- /dev/null +++ b/changes/changelog.d/2404.bugfix @@ -0,0 +1 @@ +Fix schema generation to allow propre types in front (#2404) diff --git a/compose/app.django.yml b/compose/app.django.yml index 21961de7a..2b2b80f0e 100644 --- a/compose/app.django.yml +++ b/compose/app.django.yml @@ -2,6 +2,7 @@ x-django: &django image: funkwhale-api volumes: - ../api:/app + - ../.env:/app/.env - "${MUSIC_DIRECTORY_SERVE_PATH:-../.state/music}:/music:ro" - "../.state/plugins:/srv/funkwhale/plugins" - "../.state/staticfiles:/staticfiles" @@ -21,6 +22,15 @@ services: build: context: ../api dockerfile: Dockerfile.debian + healthcheck: + test: + [ + "CMD-SHELL", + 'docker compose logs api | grep -q "Uvicorn running on" || exit 0', + ] + interval: 3s + timeout: 5s + retries: 3 command: > sh -c " funkwhale-manage collectstatic --no-input && @@ -34,3 +44,6 @@ services: pip install watchdog[watchmedo] && watchmedo auto-restart --patterns="*.py" --recursive -- celery -A funkwhale_api.taskapp worker -l debug -B --concurrency=${CELERYD_CONCURRENCY} ' + depends_on: + api: + condition: service_healthy diff --git a/docs/administrator/import.md b/docs/administrator/import.md index 6273d5aa5..5c883a062 100644 --- a/docs/administrator/import.md +++ b/docs/administrator/import.md @@ -34,30 +34,6 @@ docker compose run --rm api funkwhale-manage import_files --help :local: ``` -## Get demo music - -If you don't have music on your server, you can download creative commons music to test imports with. The Funkwhale project provides a collection courtesy of [Jamendo](https://jamendo.com). To download these tracks: - -1. Download the shell script. - - ```{parsed-literal} - curl -L -o download-tracks.sh "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/{sub-ref}`version`/demo/download-tracks.sh" - ``` - -2. Download the music list. - - ```{parsed-literal} - curl -L -o music.txt "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/{sub-ref}`version`/demo/music.txt" chmod +x download-tracks.sh - ``` - -3. Run the shell script against the music list to download the tracks. - - ```{code-block} sh - ./download-tracks.sh music.txt - ``` - -This downloads a set compressed albums to your `data/music` directory and unzips them. You can then import these tracks using the methods in this article. - ## Find your library ID You need to create a library before you can import music. Follow the instructions in [Create a library](../user/libraries/create.md) to get started. @@ -200,7 +176,7 @@ Funkwhale imports the music in your storage directory into the specified library Funkwhale attempts to import album art for your music library. The import process checks for the following. -1. The cover embedded in the audio files (works with FLAC and MP3 files). +1. The cover embedded in the audio files (works with FLAC, OGG, MP3 and MP4 files, possibly others). 2. A `cover.jpg` or `cover.png` in the the track's directory. 3. An `mbid` in the file's tags. If there is an `mbid`, the import process tries to fetch cover art from Musicbrainz. diff --git a/docs/developer/data.md b/docs/developer/data.md new file mode 100644 index 000000000..4fa7234d1 --- /dev/null +++ b/docs/developer/data.md @@ -0,0 +1,6 @@ +# Data structure + +## Channel + +- has a one to one relationship with `Artist`, `Library`, `Actor` (unique to the channel, used for federation), `Actor` (attributed_to, the actor owning the channel). +- can be an Artist channel if the channel.artist.content_category == "music", or a Podcast channel if channel.artist.content_category == "podcast", in which case artist.album are podcast series,and tracks are podcast episodes. diff --git a/docs/developer/federation/index.md b/docs/developer/federation/index.md index 38619c31f..59fd7bc51 100644 --- a/docs/developer/federation/index.md +++ b/docs/developer/federation/index.md @@ -798,8 +798,7 @@ An `Audio` object is a custom object used to store upload information. It extend - Integer - The bitrate of the audio in bytes/s * - `duration`* - - Integer - - The duration of the audio in seconds + - The duration of the audio as defined in [as](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration) * - `library`* - String (URI) - The ID of the audio's containing [`Library` object](#library) @@ -826,7 +825,7 @@ An `Audio` object is a custom object used to store upload information. It extend "name": "Krav Boca - Mortem", "size": 8656581, "bitrate": 320000, - "duration": 213, + "duration": "PT1312S, "library": "https://awesome.music/federation/music/libraries/dc702491-f6ce-441b-9da0-cecbed08bcc6", "updated": "2018-10-02T19:49:35.646372+00:00", "published": "2018-10-02T19:49:35.646359+00:00", diff --git a/docs/developer/setup/docker.md b/docs/developer/setup/docker.md index a23ee46d8..283259ecc 100644 --- a/docs/developer/setup/docker.md +++ b/docs/developer/setup/docker.md @@ -264,18 +264,21 @@ You can create local data to mimic a live environment. Add some fake data to populate the database. The following command creates 25 artists with random albums, tracks, and metadata. ```sh -artists=25 # Adds 25 fake artists -command="from funkwhale_api.music import fake_data; fake_data.create_data($artists)" +command="from funkwhale_api.music import fake_data; fake_data.create_data()" echo $command | docker compose run --rm -T api funkwhale-manage shell -i python ``` This will launch a development funkwhale instance with a super user having `COMPOSE_PROJECT_NAME` as username and `funkwhale` as password. Libraries, listenings and music data will be associated with the superuser : ```sh -export COMPOSE_PROJECT_NAME=node2 ; export VUE_PORT=8882 ; docker compose run --rm api funkwhale-manage migrate ; echo "from funkwhale_api.music import fake_data; fake_data.create_data(super_user_name=\"$COMPOSE_PROJECT_NAME\")" | docker compose run --rm -T api funkwhale-manage shell -i python ; docker compose up +export COMPOSE_PROJECT_NAME=node1 ; export VUE_PORT=8882 ; docker compose run --rm api funkwhale-manage migrate ; echo "from funkwhale_api.music import fake_data; fake_data.create_data(super_user_name=\"$COMPOSE_PROJECT_NAME\")" | docker compose run --rm -T api funkwhale-manage shell -i python ``` +```{note} +Username `funkwhale` is not permitted. You need to export COMPOSE_PROJECT_NAME to make sure it's different from `funkwhale` +``` + ### Lifecycle Recycle individual containers: diff --git a/docs/locales/en_GB/LC_MESSAGES/administrator/import.po b/docs/locales/en_GB/LC_MESSAGES/administrator/import.po index 05d5a3660..6d5d08e08 100644 --- a/docs/locales/en_GB/LC_MESSAGES/administrator/import.po +++ b/docs/locales/en_GB/LC_MESSAGES/administrator/import.po @@ -58,36 +58,6 @@ msgstr "" msgid "Docker" msgstr "" -#: ../../administrator/import.md:37 -msgid "Get demo music" -msgstr "" - -#: ../../administrator/import.md:39 -msgid "" -"If you don't have music on your server, you can download creative commons" -" music to test imports with. The Funkwhale project provides a collection " -"courtesy of [Jamendo](https://jamendo.com). To download these tracks:" -msgstr "" - -#: ../../administrator/import.md:41 -msgid "Download the shell script." -msgstr "" - -#: ../../administrator/import.md:47 -msgid "Download the music list." -msgstr "" - -#: ../../administrator/import.md:53 -msgid "Run the shell script against the music list to download the tracks." -msgstr "" - -#: ../../administrator/import.md:59 -msgid "" -"This downloads a set compressed albums to your `data/music` directory and" -" unzips them. You can then import these tracks using the methods in this " -"article." -msgstr "" - #: ../../administrator/import.md:61 msgid "Find your library ID" msgstr "" diff --git a/docs/locales/en_US/LC_MESSAGES/administrator/import.po b/docs/locales/en_US/LC_MESSAGES/administrator/import.po index 05d5a3660..6d5d08e08 100644 --- a/docs/locales/en_US/LC_MESSAGES/administrator/import.po +++ b/docs/locales/en_US/LC_MESSAGES/administrator/import.po @@ -58,36 +58,6 @@ msgstr "" msgid "Docker" msgstr "" -#: ../../administrator/import.md:37 -msgid "Get demo music" -msgstr "" - -#: ../../administrator/import.md:39 -msgid "" -"If you don't have music on your server, you can download creative commons" -" music to test imports with. The Funkwhale project provides a collection " -"courtesy of [Jamendo](https://jamendo.com). To download these tracks:" -msgstr "" - -#: ../../administrator/import.md:41 -msgid "Download the shell script." -msgstr "" - -#: ../../administrator/import.md:47 -msgid "Download the music list." -msgstr "" - -#: ../../administrator/import.md:53 -msgid "Run the shell script against the music list to download the tracks." -msgstr "" - -#: ../../administrator/import.md:59 -msgid "" -"This downloads a set compressed albums to your `data/music` directory and" -" unzips them. You can then import these tracks using the methods in this " -"article." -msgstr "" - #: ../../administrator/import.md:61 msgid "Find your library ID" msgstr "" diff --git a/docs/locales/fr/LC_MESSAGES/administrator/import.po b/docs/locales/fr/LC_MESSAGES/administrator/import.po index 05d5a3660..6d5d08e08 100644 --- a/docs/locales/fr/LC_MESSAGES/administrator/import.po +++ b/docs/locales/fr/LC_MESSAGES/administrator/import.po @@ -58,36 +58,6 @@ msgstr "" msgid "Docker" msgstr "" -#: ../../administrator/import.md:37 -msgid "Get demo music" -msgstr "" - -#: ../../administrator/import.md:39 -msgid "" -"If you don't have music on your server, you can download creative commons" -" music to test imports with. The Funkwhale project provides a collection " -"courtesy of [Jamendo](https://jamendo.com). To download these tracks:" -msgstr "" - -#: ../../administrator/import.md:41 -msgid "Download the shell script." -msgstr "" - -#: ../../administrator/import.md:47 -msgid "Download the music list." -msgstr "" - -#: ../../administrator/import.md:53 -msgid "Run the shell script against the music list to download the tracks." -msgstr "" - -#: ../../administrator/import.md:59 -msgid "" -"This downloads a set compressed albums to your `data/music` directory and" -" unzips them. You can then import these tracks using the methods in this " -"article." -msgstr "" - #: ../../administrator/import.md:61 msgid "Find your library ID" msgstr "" diff --git a/docs/locales/gettext/administrator/import.pot b/docs/locales/gettext/administrator/import.pot index 3bb20ea93..3bf62c820 100644 --- a/docs/locales/gettext/administrator/import.pot +++ b/docs/locales/gettext/administrator/import.pot @@ -48,30 +48,6 @@ msgstr "" msgid "Docker" msgstr "" -#: ../../administrator/import.md:37 -msgid "Get demo music" -msgstr "" - -#: ../../administrator/import.md:39 -msgid "If you don't have music on your server, you can download creative commons music to test imports with. The Funkwhale project provides a collection courtesy of [Jamendo](https://jamendo.com). To download these tracks:" -msgstr "" - -#: ../../administrator/import.md:41 -msgid "Download the shell script." -msgstr "" - -#: ../../administrator/import.md:47 -msgid "Download the music list." -msgstr "" - -#: ../../administrator/import.md:53 -msgid "Run the shell script against the music list to download the tracks." -msgstr "" - -#: ../../administrator/import.md:59 -msgid "This downloads a set compressed albums to your `data/music` directory and unzips them. You can then import these tracks using the methods in this article." -msgstr "" - #: ../../administrator/import.md:61 msgid "Find your library ID" msgstr "" diff --git a/docs/poetry.lock b/docs/poetry.lock index 5e2b7e3b5..30234b033 100644 --- a/docs/poetry.lock +++ b/docs/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -6,6 +6,7 @@ version = "0.7.16" description = "A light, configurable Sphinx theme" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, @@ -17,6 +18,7 @@ version = "3.8.1" description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -34,6 +36,7 @@ version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, @@ -48,6 +51,7 @@ version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, @@ -59,6 +63,7 @@ version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main", "dev"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -158,6 +163,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -172,10 +178,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "sys_platform == \"win32\" or platform_system == \"Windows\""} [[package]] name = "django" @@ -183,6 +191,7 @@ version = "3.2.23" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "Django-3.2.23-py3-none-any.whl", hash = "sha256:d48608d5f62f2c1e260986835db089fa3b79d6f58510881d316b8d88345ae6e1"}, {file = "Django-3.2.23.tar.gz", hash = "sha256:82968f3640e29ef4a773af2c28448f5f7a08d001c6ac05b32d02aeee6509508b"}, @@ -203,6 +212,7 @@ version = "0.11.2" description = "A package that allows you to utilize 12factor inspired environment variables to configure your Django application." optional = false python-versions = ">=3.6,<4" +groups = ["main"] files = [ {file = "django-environ-0.11.2.tar.gz", hash = "sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be"}, {file = "django_environ-0.11.2-py2.py3-none-any.whl", hash = "sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05"}, @@ -219,6 +229,7 @@ version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, @@ -230,6 +241,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -244,40 +256,19 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main", "dev"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] -[[package]] -name = "importlib-metadata" -version = "8.5.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, - {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, -] - -[package.dependencies] -zipp = ">=3.20" - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] -type = ["pytest-mypy"] - [[package]] name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, @@ -295,6 +286,7 @@ version = "2.7.0" description = "Python LiveReload is an awesome tool for web developers" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "livereload-2.7.0-py3-none-any.whl", hash = "sha256:19bee55aff51d5ade6ede0dc709189a0f904d3b906d3ea71641ed548acff3246"}, {file = "livereload-2.7.0.tar.gz", hash = "sha256:f4ba199ef93248902841e298670eebfe1aa9e148e19b343bc57dbf1b74de0513"}, @@ -309,6 +301,7 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -333,6 +326,7 @@ version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, @@ -402,6 +396,7 @@ version = "0.4.2" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, @@ -421,6 +416,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -428,29 +424,30 @@ files = [ [[package]] name = "myst-parser" -version = "2.0.0" +version = "4.0.1" description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, - {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, + {file = "myst_parser-4.0.1-py3-none-any.whl", hash = "sha256:9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d"}, + {file = "myst_parser-4.0.1.tar.gz", hash = "sha256:5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4"}, ] [package.dependencies] -docutils = ">=0.16,<0.21" +docutils = ">=0.19,<0.22" jinja2 = "*" markdown-it-py = ">=3.0,<4.0" -mdit-py-plugins = ">=0.4,<1.0" +mdit-py-plugins = ">=0.4.1,<1.0" pyyaml = "*" -sphinx = ">=6,<8" +sphinx = ">=7,<9" [package.extras] -code-style = ["pre-commit (>=3.0,<4.0)"] +code-style = ["pre-commit (>=4.0,<5.0)"] linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.8.2,<0.9.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] +rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pygments (<2.19)", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] [[package]] name = "packaging" @@ -458,6 +455,7 @@ version = "24.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, @@ -469,6 +467,7 @@ version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -483,6 +482,7 @@ version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, @@ -494,6 +494,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -556,6 +557,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -577,6 +579,7 @@ version = "75.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"}, {file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"}, @@ -597,6 +600,7 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -608,6 +612,7 @@ version = "7.2.6" description = "Python documentation generator" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, @@ -619,7 +624,6 @@ babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} docutils = ">=0.18.1,<0.21" imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" Pygments = ">=2.14" @@ -643,6 +647,7 @@ version = "2024.2.4" description = "Rebuild Sphinx documentation on changes, with live-reload in the browser." optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "sphinx_autobuild-2024.2.4-py3-none-any.whl", hash = "sha256:63fd87ab7505872a89aef468ce6503f65e794a195f4ae62269db3b85b72d4854"}, {file = "sphinx_autobuild-2024.2.4.tar.gz", hash = "sha256:cb9d2121a176d62d45471624872afc5fad7755ad662738abe400ecf4a7954303"}, @@ -662,6 +667,7 @@ version = "0.5.2" description = "Add a copy button to each of your code cells." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd"}, {file = "sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e"}, @@ -680,6 +686,7 @@ version = "0.5.0" description = "A sphinx extension for designing beautiful, view size responsive web components." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "sphinx_design-0.5.0-py3-none-any.whl", hash = "sha256:1af1267b4cea2eedd6724614f19dcc88fe2e15aff65d06b2f6252cee9c4f4c1e"}, {file = "sphinx_design-0.5.0.tar.gz", hash = "sha256:e8e513acea6f92d15c6de3b34e954458f245b8e761b45b63950f65373352ab00"}, @@ -703,6 +710,7 @@ version = "2.1.0" description = "Sphinx utility that make it easy to translate and to apply translation." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinx-intl-2.1.0.tar.gz", hash = "sha256:9d9849ae42515b39786824e99f1e30db0404c377b01bb022690fc932b0221c02"}, {file = "sphinx_intl-2.1.0-py3-none-any.whl", hash = "sha256:9798946b995989de691387651d70c3fc191275b587e2e519655541edfd7bbd68"}, @@ -723,6 +731,7 @@ version = "2.0.0" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, @@ -742,6 +751,7 @@ version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, @@ -758,6 +768,7 @@ version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, @@ -774,6 +785,7 @@ version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, @@ -790,6 +802,7 @@ version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" optional = false python-versions = ">=2.7" +groups = ["main"] files = [ {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, @@ -804,6 +817,7 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -818,6 +832,7 @@ version = "0.9.2" description = "Mermaid diagrams in yours Sphinx powered docs" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sphinxcontrib-mermaid-0.9.2.tar.gz", hash = "sha256:252ef13dd23164b28f16d8b0205cf184b9d8e2b714a302274d9f59eb708e77af"}, {file = "sphinxcontrib_mermaid-0.9.2-py3-none-any.whl", hash = "sha256:6795a72037ca55e65663d2a2c1a043d636dc3d30d418e56dd6087d1459d98a5d"}, @@ -829,6 +844,7 @@ version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, @@ -845,6 +861,7 @@ version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false python-versions = ">=3.9" +groups = ["main", "dev"] files = [ {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, @@ -861,6 +878,7 @@ version = "0.5.1" description = "A non-validating SQL parser." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4"}, {file = "sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e"}, @@ -876,6 +894,7 @@ version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, @@ -896,6 +915,8 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -907,6 +928,7 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, @@ -918,26 +940,7 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] -[[package]] -name = "zipp" -version = "3.20.2" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, - {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, -] - -[package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] -cover = ["pytest-cov"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] -type = ["pytest-mypy"] - [metadata] -lock-version = "2.0" -python-versions = "^3.9" -content-hash = "e55167dfe5da2005558d60d1d997ddc9e50c93533a285e9c443ef8c95b122878" +lock-version = "2.1" +python-versions = "^3.10" +content-hash = "88d5517913e40597154b4e9fda1cb2e1f599ec85a2e798e56a45067c99a63211" diff --git a/docs/pyproject.toml b/docs/pyproject.toml index 1a3af1120..34d5795d0 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -6,7 +6,7 @@ authors = ["Funkwhale Collective "] license = "AGPLv3" [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" sphinx = "7.2.6" sphinx_design = "0.5.0" @@ -14,7 +14,7 @@ sphinx-copybutton = "==0.5.2" sphinx-intl = "2.1.0" sphinx-rtd-theme = "==2.0.0" sphinxcontrib-mermaid = "0.9.2" -myst-parser = "2.0.0" +myst-parser = "4.0.1" django-environ = "==0.11.2" django = "==3.2.23" diff --git a/docs/specs/third-party-tracks/index.md b/docs/specs/third-party-tracks/index.md new file mode 100644 index 000000000..36fb7260e --- /dev/null +++ b/docs/specs/third-party-tracks/index.md @@ -0,0 +1,34 @@ +# Third party tracks download + +## Issue + +Has a user I cannot listen to tracks that are not on the funkwhale Network. + +## Proposed solution + +Has an admin I can add plugins that support downloading tracks from third party services + +## Backend + +When a track queryset is called with `with_playable_uploads` if no upload is found we trigger `plugins.TRIGGER_THIRD_PARTY_UPLOAD`. + +`handle_stream` should filter the upload queryset to display manual upload before plugin upload + +## Plugin + +Plugins registering `TRIGGER_THIRD_PARTY_UPLOAD` should : + +- trigger celery task. If not the queryset will take a long time to complete. +- create an upload with an associated file +- delete the upload if no file is succefully downloaded + +An example can be found in `funkwhale_api.contrib.archivedl` + +## Follow up + +-The frontend should update the track object if `TRIGGER_THIRD_PARTY_UPLOAD` +`channels.group_send("instance_activity", {"type": "event.send", "text": "", "data": data})` +`InstanceActivityConsumer` `/front/src/init/webSocket.ts` + +- trigger a channels group send so the frontend can update track qs when/if the upload is ready +- Third party track stream (do not download the file, only pass a stream) diff --git a/front/package.json b/front/package.json index 552eb14df..c6e43bbd4 100644 --- a/front/package.json +++ b/front/package.json @@ -75,7 +75,7 @@ "@iconify/vue": "4.1.1", "@intlify/eslint-plugin-vue-i18n": "2.0.0", "@intlify/unplugin-vue-i18n": "2.0.0", - "@tauri-apps/cli": "2.0.0-beta.2", + "@tauri-apps/cli": "^2.0.2", "@types/diff": "5.0.9", "@types/dompurify": "3.0.5", "@types/jquery": "3.5.29", diff --git a/front/src/locales/fr_FR.json b/front/src/locales/fr_FR.json index 9d02d3b04..8af8e77ee 100644 --- a/front/src/locales/fr_FR.json +++ b/front/src/locales/fr_FR.json @@ -2802,7 +2802,11 @@ "libraryAcceptFollow": "{ username } a accepté votre suivi de l’audiothèque « { library } »", "libraryFollow": "{ username } suit votre audiothèque « { library } »", "libraryPendingFollow": "{ username } veut suivre votre audiothèque « { library } »", - "libraryReject": "Vous avez rejeté la demande de {username} de suivre \"{library}\"" + "libraryReject": "Vous avez rejeté la demande de {username} de suivre \"{library}\"", + "userAcceptFollow": "{username} a accepté votre demande d'abonnement", + "userFollow": "{username} vous suit", + "userPendingFollow": "{username} demande à vous suivre", + "userReject": "Vous avez refusé la demande d'abonnement de {username}" } } }, @@ -2865,6 +2869,19 @@ "name": "Ma liste de lecture géniale" } }, + "PlaylistDropdown": { + "button": { + "export": { + "description": "Ceci mettra à disposition un fichier xspf contenant les données de la playlist", + "header": "Télécharger la playlist" + }, + "import": { + "description": "Ceci mettra à jour la playlist avec le contenu du fichier xspf. Les pistes existantes de la playlist seront supprimées", + "header": "Reconstruire la playlist" + } + }, + "more": "Plus" + }, "PlaylistModal": { "button": { "addDuplicate": "Ajouter quand même", diff --git a/front/src/locales/lt.json b/front/src/locales/lt.json new file mode 100644 index 000000000..b48f46cf3 --- /dev/null +++ b/front/src/locales/lt.json @@ -0,0 +1,4633 @@ +{ + "App": { + "loading": "" + }, + "components": { + "About": { + "description": { + "findApp": "", + "funkwhale": "", + "publicContent": "", + "quota": "", + "signup": "" + }, + "header": { + "aboutPod": "", + "findApp": "", + "funkwhale": "", + "publicContent": "", + "signup": "" + }, + "help": { + "closedRegistrations": "" + }, + "link": { + "findOtherPod": "", + "learnMore": "" + }, + "message": { + "greeting": "", + "loggedIn": "" + }, + "placeholder": { + "noDescription": "" + }, + "stat": { + "activeUsers": "", + "hoursOfMusic": "" + }, + "title": "" + }, + "AboutPod": { + "feature": { + "allowList": "", + "anonymousAccess": "", + "federation": "", + "quota": "", + "registrations": "", + "status": { + "closed": "", + "disabled": "", + "enabled": "", + "open": "" + }, + "version": "" + }, + "header": { + "about": "", + "contact": "", + "features": "", + "rules": "", + "statistics": "", + "terms": "" + }, + "link": { + "about": "", + "features": "", + "introduction": "", + "rules": "", + "statistics": "", + "terms": "" + }, + "message": { + "contact": "" + }, + "notApplicable": "", + "placeholder": { + "noDescription": "", + "noRules": "", + "noTerms": "" + }, + "stat": { + "activeUsers": "", + "albumsCount": "", + "artistsCount": "", + "hoursOfMusic": "", + "listeningsCount": "", + "tracksCount": "" + }, + "title": "" + }, + "Home": { + "description": { + "funkwhale": { + "paragraph1": "", + "paragraph2": "" + }, + "quota": "", + "signup": "" + }, + "header": { + "about": "", + "aboutFunkwhale": "", + "contact": "", + "links": "", + "login": "", + "newAlbums": "", + "newChannels": "", + "signup": "", + "statistics": "", + "welcome": "" + }, + "help": { + "registrationsClosed": "" + }, + "link": { + "findOtherPod": "", + "funkwhale": "", + "learnMore": "", + "mobileApps": { + "description": "", + "label": "" + }, + "publicContent": { + "description": "", + "label": "" + }, + "rules": "", + "userGuides": { + "description": "", + "label": "" + }, + "viewMore": "" + }, + "placeholder": { + "noDescription": "" + }, + "stat": { + "activeUsers": "", + "hoursOfMusic": "" + }, + "title": "" + }, + "PageNotFound": { + "header": { + "pageNotFound": "" + }, + "link": { + "home": "" + }, + "message": { + "pageNotFound": "" + }, + "title": "" + }, + "Queue": { + "button": { + "clear": "", + "close": "", + "stopRadio": "" + }, + "header": { + "failure": "", + "noSources": "", + "radio": "" + }, + "label": { + "addArtistContentFilter": "", + "duration": "", + "enterFullscreen": "", + "exitFullscreen": "", + "favorite": "", + "next": "", + "pause": "", + "play": "", + "populatingRadio": "", + "previous": "", + "queue": "", + "remove": "", + "restart": "", + "selectTrack": "", + "showCoverArt": "", + "showVisualizer": "" + }, + "message": { + "automaticPlay": "", + "radio": "", + "webglUnsupported": "" + }, + "meta": { + "end": "", + "queuePosition": "", + "startTime": "", + "unknownAlbum": "", + "unknownArtist": "" + }, + "warning": { + "connectivity": "" + } + }, + "RemoteSearchForm": { + "button": { + "fediverse": "", + "rss": "", + "search": "" + }, + "description": { + "fediverse": "", + "rss": "" + }, + "error": { + "fetchFailed": "" + }, + "header": { + "fetchFailed": "" + }, + "label": { + "fediverse": { + "fieldLabel": "", + "fieldPlaceholder": "", + "title": "" + }, + "rss": { + "fieldLabel": "", + "fieldPlaceholder": "", + "title": "" + } + }, + "warning": { + "unsupported": "" + } + }, + "ShortcutsModal": { + "button": { + "close": "" + }, + "header": { + "modal": "" + }, + "shortcut": { + "audio": { + "clearQueue": "", + "decreaseVolume": "", + "expandQueue": "", + "increaseVolume": "", + "label": "", + "playNext": "", + "playPause": "", + "playPrevious": "", + "seekBack30": "", + "seekBack5": "", + "seekForward30": "", + "seekForward5": "", + "shuffleQueue": "", + "toggleFavorite": "", + "toggleLoop": "", + "toggleMute": "" + }, + "general": { + "focus": "", + "label": "", + "show": "", + "unfocus": "" + } + } + }, + "Sidebar": { + "header": { + "administration": "", + "explore": "", + "library": "", + "main": "", + "more": "" + }, + "label": { + "add": "", + "administration": "", + "edits": "", + "follows": "", + "language": "", + "main": "", + "play": "", + "reports": "", + "theme": "" + }, + "link": { + "about": "", + "albums": "", + "artists": "", + "browse": "", + "channels": "", + "createAccount": "", + "favorites": "", + "home": "", + "library": "", + "login": "", + "moderation": "", + "playlists": "", + "podcasts": "", + "radios": "", + "search": "", + "settings": "", + "switchInstance": "", + "users": "" + } + }, + "admin": { + "SettingsGroup": { + "button": { + "save": "" + }, + "header": { + "error": "", + "image": "" + }, + "message": { + "success": "" + } + }, + "SignupFormBuilder": { + "button": { + "add": "", + "edit": "", + "preview": "" + }, + "help": { + "additionalFields": "", + "helpText": "" + }, + "label": { + "additionalField": "", + "additionalFields": "", + "delete": "", + "helpText": "", + "moveDown": "", + "moveUp": "" + }, + "table": { + "additionalFields": { + "header": { + "actions": "", + "label": "", + "required": "", + "type": "" + }, + "required": { + "false": "", + "true": "" + }, + "type": { + "long": "", + "short": "" + } + } + } + } + }, + "audio": { + "ChannelCard": { + "meta": { + "episodes": "", + "tracks": "" + }, + "title": "" + }, + "ChannelEntries": { + "help": { + "subscribe": "" + } + }, + "ChannelForm": { + "header": { + "error": "" + }, + "help": { + "discography": "", + "podcast": "", + "podcastFields": "", + "username": "" + }, + "label": { + "category": "", + "description": "", + "discography": "", + "email": "", + "image": "", + "language": "", + "name": "", + "owner": "", + "podcast": "", + "subcategory": "", + "tags": "", + "username": "" + }, + "legend": { + "purpose": "" + }, + "loader": { + "loading": "" + }, + "placeholder": { + "name": "", + "username": "" + } + }, + "ChannelSerieCard": { + "meta": { + "episodes": "" + } + }, + "ChannelSeries": { + "button": { + "showMore": "" + }, + "help": { + "subscribe": "" + } + }, + "ChannelsWidget": { + "button": { + "showMore": "" + } + }, + "EmbedWizard": { + "button": { + "copy": "" + }, + "header": { + "preview": "" + }, + "help": { + "anonymous": "", + "embed": "", + "width": "" + }, + "label": { + "embed": "", + "height": "", + "width": "" + }, + "message": { + "copy": "" + }, + "warning": { + "anonymous": "" + } + }, + "LibraryFollowButton": { + "button": { + "cancel": "", + "follow": "", + "unfollow": "" + } + }, + "PlayButton": { + "button": { + "addToPlaylist": "", + "addToQueue": "", + "discretePlay": "", + "episodeDetails": "", + "hideArtist": "", + "playAlbum": "", + "playArtist": "", + "playNext": "", + "playNow": "", + "playPlaylist": "", + "playTrack": "", + "playTracks": "", + "report": "", + "startRadio": "", + "trackDetails": "" + }, + "title": { + "more": "", + "unavailable": "" + } + }, + "Player": { + "header": { + "player": "" + }, + "label": { + "addArtistContentFilter": "", + "audioPlayer": "", + "clearQueue": "", + "expandQueue": "", + "loopingDisabled": "", + "loopingSingle": "", + "loopingWholeQueue": "", + "mute": "", + "nextTrack": "", + "pause": "", + "play": "", + "previousTrack": "", + "shuffleQueue": "", + "unmute": "" + }, + "meta": { + "position": "", + "unknownAlbum": "", + "unknownArtist": "" + } + }, + "PlayerControls": { + "labels": { + "next": "", + "pause": "", + "play": "", + "previous": "" + } + }, + "Search": { + "empty": { + "noAlbums": "", + "noArtists": "" + }, + "header": { + "albums": "", + "artists": "", + "search": "" + }, + "placeholder": { + "search": "" + } + }, + "SearchBar": { + "empty": { + "noResults": "" + }, + "header": { + "noResults": "" + }, + "label": { + "album": "", + "artist": "", + "category": { + "federation": "", + "podcasts": "" + }, + "search": "", + "tag": "", + "track": "" + }, + "link": { + "fediverse": "", + "more": "", + "rss": "" + }, + "placeholder": { + "search": "" + } + }, + "VolumeControl": { + "button": { + "mute": "", + "unmute": "" + }, + "label": { + "slider": "" + } + }, + "album": { + "Card": { + "meta": { + "tracks": "" + } + }, + "Widget": { + "button": { + "more": "" + } + } + }, + "artist": { + "Card": { + "meta": { + "episodes": "", + "tracks": "" + } + }, + "Widget": { + "button": { + "more": "" + } + } + }, + "podcast": { + "MobileRow": { + "button": { + "actions": "" + } + }, + "Modal": { + "button": { + "addToFavorites": "", + "addToPlaylist": "", + "addToQueue": "", + "albumDetails": "", + "artistDetails": "", + "channelDetails": "", + "episodeDetails": "", + "playNext": "", + "playNow": "", + "removeFromFavorites": "", + "seriesDetails": "", + "startRadio": "", + "trackDetails": "" + } + } + }, + "track": { + "MobileRow": { + "button": { + "actions": "" + } + }, + "Modal": { + "button": { + "addToFavorites": "", + "addToPlaylist": "", + "addToQueue": "", + "albumDetails": "", + "artistDetails": "", + "channelDetails": "", + "episodeDetails": "", + "playNext": "", + "playNow": "", + "removeFromFavorites": "", + "seriesDetails": "", + "startRadio": "", + "trackDetails": "" + } + }, + "Table": { + "table": { + "header": { + "album": "", + "artist": "", + "title": "" + } + } + }, + "Widget": { + "button": { + "more": "" + }, + "empty": { + "noResults": "" + } + } + } + }, + "auth": { + "ApplicationEdit": { + "button": { + "regenerateToken": "" + }, + "header": { + "appDetails": "", + "appSecretWarning": "", + "editApp": "" + }, + "help": { + "appDetails": "" + }, + "label": { + "accessToken": "", + "appId": "", + "appSecret": "" + }, + "link": { + "settings": "" + }, + "message": { + "appSecretWarning": "" + }, + "title": "" + }, + "ApplicationForm": { + "button": { + "create": "", + "update": "" + }, + "header": { + "failure": "" + }, + "help": { + "redirectUri": "" + }, + "label": { + "name": "", + "redirectUri": "", + "scopes": { + "description": "", + "label": "", + "read": { + "description": "", + "label": "" + }, + "write": { + "description": "", + "label": "" + } + } + } + }, + "ApplicationNew": { + "link": { + "settings": "" + }, + "title": "" + }, + "Authorize": { + "button": { + "authorize": "" + }, + "header": { + "access": "", + "allScopes": "", + "authorize": "", + "authorizeFailure": "", + "fetchFailure": "", + "readOnly": "", + "writeOnly": "" + }, + "help": { + "copyCode": "", + "pasteCode": "", + "redirect": "" + }, + "message": { + "unknownPermissions": "" + }, + "title": "" + }, + "LoginForm": { + "button": { + "login": "" + }, + "header": { + "loginFailure": "" + }, + "help": { + "approvalRequired": "", + "invalidCredentials": "" + }, + "label": { + "password": "", + "username": "" + }, + "link": { + "createAccount": "", + "resetPassword": "" + }, + "message": { + "redirect": "" + }, + "placeholder": { + "username": "" + } + }, + "Logout": { + "button": { + "logout": "" + }, + "header": { + "confirm": "", + "unauthenticated": "" + }, + "link": { + "login": "" + }, + "message": { + "loggedIn": "" + }, + "title": "" + }, + "Plugin": { + "button": { + "save": "", + "scan": "" + }, + "description": { + "library": "" + }, + "header": { + "failure": "" + }, + "label": { + "library": "", + "pluginEnabled": "" + }, + "link": { + "documentation": "" + } + }, + "Settings": { + "button": { + "delete": "", + "deleteAccount": "", + "deleteAccountConfirm": "", + "disableSubsonic": "", + "edit": "", + "password": "", + "refresh": "", + "remove": "", + "removeApp": "", + "revoke": "", + "revokeAccess": "", + "update": "", + "updateSettings": "" + }, + "description": { + "authorizedApps": "", + "changeEmail": "", + "changePassword": { + "paragraph1": "", + "paragraph2": "" + }, + "contentFilters": "", + "deleteAccount": "", + "plugins": "", + "yourApps": "" + }, + "header": { + "accountFailure": "", + "accountSettings": "", + "authorizedApps": "", + "avatar": "", + "avatarFailure": "", + "changeEmail": "", + "changePassword": "", + "contentFilters": "", + "deleteAccount": "", + "emailFailure": "", + "hiddenArtists": "", + "noApps": "", + "noPersonalApps": "", + "passwordFailure": "", + "plugins": "", + "settingsUpdated": "", + "updateFailure": "", + "yourApps": "" + }, + "help": { + "changePassword": "", + "noApps": "", + "noPersonalApps": "" + }, + "label": { + "avatar": "", + "currentPassword": "", + "newEmail": "", + "newPassword": "", + "password": "" + }, + "link": { + "managePlugins": "", + "newApp": "" + }, + "message": { + "confirmDelete": "", + "currentEmail": "" + }, + "modal": { + "changePassword": { + "content": { + "logout": "", + "subsonic": "", + "warning": "" + }, + "header": "" + }, + "deleteAccount": { + "content": { + "warning": "" + }, + "header": "" + }, + "deleteApp": { + "content": { + "warning": "" + }, + "header": "" + }, + "revokeApp": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "artists": { + "header": { + "creationDate": "", + "name": "" + } + }, + "authorizedApps": { + "header": { + "application": "", + "permissions": "" + } + }, + "yourApps": { + "header": { + "application": "", + "creationDate": "", + "scopes": "" + } + } + }, + "title": "", + "warning": { + "deleteAccount": "" + } + }, + "SignupForm": { + "button": { + "create": "" + }, + "header": { + "login": "", + "signupFailure": "" + }, + "label": { + "email": "", + "invitation": "", + "password": "", + "username": "" + }, + "message": { + "accountCreated": "", + "awaitingReview": "", + "registrationClosed": "", + "requiresReview": "" + }, + "placeholder": { + "email": "", + "invitation": "", + "username": "" + } + }, + "SubsonicTokenForm": { + "button": { + "confirmDisable": "", + "confirmNewPassword": "", + "disable": "", + "newPassword": "" + }, + "description": { + "subsonic": { + "paragraph1": "", + "paragraph2": "", + "paragraph3": "" + } + }, + "header": { + "error": "", + "subsonic": "" + }, + "label": { + "subsonicField": "" + }, + "link": { + "apps": "" + }, + "message": { + "accessDisabled": "", + "passwordUpdated": "", + "unavailable": "" + }, + "modal": { + "disableSubsonic": { + "content": { + "warning": "" + }, + "header": "" + }, + "newPassword": { + "content": { + "warning": "" + }, + "header": "" + } + } + } + }, + "channels": { + "AlbumForm": { + "header": { + "error": "" + }, + "label": { + "albumTitle": "" + } + }, + "AlbumModal": { + "button": { + "cancel": "", + "create": "" + }, + "header": { + "newAlbum": "", + "newSeries": "" + } + }, + "AlbumSelect": { + "label": { + "album": "", + "series": "" + }, + "meta": { + "tracks": "" + }, + "option": { + "none": "" + } + }, + "LicenseSelect": { + "label": { + "license": "" + }, + "link": { + "license": "" + }, + "option": { + "none": "" + } + }, + "SubscribeButton": { + "help": { + "auth": "" + }, + "title": { + "subscribe": "", + "unsubscribe": "" + } + }, + "UploadForm": { + "button": { + "edit": "", + "ignore": "", + "remove": "", + "resume": "", + "retry": "" + }, + "description": { + "extensions": "" + }, + "header": { + "error": "" + }, + "help": { + "license": "" + }, + "label": { + "channel": "", + "openBrowser": "" + }, + "message": { + "dragAndDrop": "", + "pending": "" + }, + "status": { + "errored": "", + "pending": "", + "uploading": "" + }, + "warning": { + "quota": "" + } + }, + "UploadMetadataForm": { + "label": { + "description": "", + "image": "", + "position": "", + "tags": "", + "title": "" + } + }, + "UploadModal": { + "button": { + "cancel": "", + "close": "", + "finishLater": "", + "next": "", + "previous": "", + "publish": "", + "update": "" + }, + "header": { + "processing": "", + "publish": "", + "uploadDetails": "", + "uploadFiles": "" + }, + "meta": { + "files": "", + "quota": "" + } + } + }, + "common": { + "ActionTable": { + "button": { + "allSelected": "", + "go": "", + "launch": "", + "refresh": "", + "select": "", + "selectAll": "", + "selectCurrentPage": "", + "selectElement": "", + "selected": "" + }, + "header": { + "error": "" + }, + "label": { + "actions": "", + "performAction": "" + }, + "message": { + "needsRefresh": "", + "success": "" + }, + "modal": { + "performAction": { + "content": { + "warning": "" + }, + "header": "" + } + } + }, + "AttachmentInput": { + "button": { + "remove": "" + }, + "header": { + "failure": "" + }, + "help": { + "upload": "" + }, + "label": { + "upload": "" + }, + "loader": { + "uploading": "" + } + }, + "CollapseLink": { + "button": { + "collapse": "", + "expand": "" + } + }, + "ContentForm": { + "button": { + "preview": "", + "write": "" + }, + "empty": { + "noContent": "" + }, + "help": { + "markdown": "" + }, + "placeholder": { + "input": "" + } + }, + "CopyInput": { + "button": { + "copy": "" + }, + "message": { + "success": "" + } + }, + "DangerousButton": { + "button": { + "cancel": "", + "confirm": "" + }, + "header": { + "confirm": "" + } + }, + "Duration": { + "meta": { + "hours": "", + "minutes": "" + } + }, + "EmptyState": { + "button": { + "refresh": "" + }, + "header": { + "noResults": "" + } + }, + "ExpandableDiv": { + "button": { + "less": "", + "more": "" + } + }, + "InlineSearchBar": { + "button": { + "clear": "" + }, + "label": { + "search": "" + }, + "placeholder": { + "search": "" + } + }, + "LoginModal": { + "description": { + "noAccess": "" + }, + "header": { + "unauthenticated": "" + }, + "link": { + "login": "", + "signup": "" + } + }, + "RenderedDescription": { + "button": { + "cancel": "", + "edit": "", + "less": "", + "more": "", + "update": "" + }, + "empty": { + "noDescription": "" + }, + "header": { + "failure": "" + } + }, + "UserLink": { + "link": { + "username": "" + } + }, + "UserMenu": { + "label": { + "language": "", + "shortcuts": "", + "theme": "" + }, + "link": { + "about": "", + "chat": "", + "docs": "", + "forum": "", + "git": "", + "login": "", + "logout": "", + "notifications": "", + "profile": "", + "settings": "", + "signup": "", + "support": "" + } + }, + "UserModal": { + "button": { + "switchInstance": "" + }, + "header": { + "options": "" + }, + "label": { + "language": "", + "shortcuts": "", + "theme": "" + }, + "link": { + "about": "", + "chat": "", + "docs": "", + "forum": "", + "git": "", + "login": "", + "logout": "", + "notifications": "", + "profile": "", + "settings": "", + "signup": "", + "support": "" + } + } + }, + "favorites": { + "List": { + "empty": { + "noFavorites": "" + }, + "header": { + "favorites": "" + }, + "link": { + "library": "" + }, + "loader": { + "loading": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "title": "" + }, + "TrackFavoriteIcon": { + "button": { + "add": "", + "remove": "" + }, + "label": { + "inFavorites": "" + } + } + }, + "federation": { + "FetchButton": { + "button": { + "close": "", + "reload": "" + }, + "description": { + "failure": "", + "pending": "", + "skipped": "", + "success": "" + }, + "header": { + "failure": "", + "pending": "", + "refresh": "", + "saveFailure": "", + "skipped": "", + "success": "" + }, + "loader": { + "awaitingResult": "", + "fetchRequest": "" + }, + "table": { + "error": { + "label": { + "detail": "", + "type": "" + }, + "value": { + "connectionError": "", + "httpError": "", + "httpStatus": "", + "invalidAttributesError": "", + "invalidJsonError": "", + "timeoutError": "", + "unknownError": "" + } + } + } + }, + "LibraryWidget": { + "button": { + "showMore": "" + }, + "empty": { + "noMatch": "" + } + } + }, + "forms": { + "PasswordInput": { + "button": { + "copy": "" + }, + "message": { + "copy": "" + }, + "title": "" + } + }, + "library": { + "AlbumBase": { + "link": { + "addDescription": "" + }, + "meta": { + "episodes": "", + "tracks": "" + }, + "title": "" + }, + "AlbumDetail": { + "description": { + "libraries": "" + }, + "header": { + "episodes": "", + "libraries": "", + "tracks": "" + }, + "meta": { + "volume": "" + } + }, + "AlbumDropdown": { + "button": { + "cancel": "", + "delete": "", + "edit": "", + "embed": "", + "more": "" + }, + "link": { + "discogs": "", + "django": "", + "domain": "", + "moderation": "", + "musicbrainz": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + }, + "embed": { + "header": "" + } + } + }, + "AlbumEdit": { + "header": { + "edit": "", + "suggest": "" + }, + "message": { + "remote": "" + } + }, + "Albums": { + "button": { + "search": "" + }, + "empty": { + "noResults": "" + }, + "header": { + "browse": "" + }, + "label": { + "search": "", + "tags": "" + }, + "link": { + "addMusic": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + }, + "ArtistBase": { + "button": { + "cancel": "", + "edit": "", + "embed": "", + "more": "", + "play": "" + }, + "link": { + "discogs": "", + "django": "", + "domain": "", + "moderation": "", + "musicbrainz": "", + "wikipedia": "" + }, + "meta": { + "albums": "", + "tracks": "" + }, + "modal": { + "embed": { + "header": "" + } + }, + "title": "" + }, + "ArtistDetail": { + "button": { + "filter": "", + "more": "" + }, + "description": { + "library": "" + }, + "header": { + "album": "", + "library": "", + "track": "" + }, + "link": { + "filter": "" + }, + "message": { + "filter": "" + } + }, + "ArtistEdit": { + "header": { + "edit": "", + "suggest": "" + }, + "message": { + "remote": "" + } + }, + "Artists": { + "button": { + "search": "", + "upload": "" + }, + "empty": { + "noResults": "" + }, + "header": { + "browse": "" + }, + "label": { + "excludeCompilation": "", + "search": "", + "tags": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + }, + "EditCard": { + "button": { + "approve": "", + "delete": "", + "reject": "" + }, + "header": { + "modification": "" + }, + "link": { + "track": "" + }, + "modal": { + "content": { + "warning": "" + }, + "delete": { + "header": "" + } + }, + "status": { + "applied": "", + "approved": "", + "pending": "", + "rejected": "" + }, + "table": { + "update": { + "header": { + "field": "", + "newValue": "", + "oldValue": "" + }, + "notApplicable": "" + } + } + }, + "EditForm": { + "button": { + "cancel": "", + "clear": "", + "new": "", + "reset": "", + "showAll": "", + "showUnreviewed": "", + "submit": "", + "suggest": "" + }, + "empty": { + "suggestEdit": "" + }, + "header": { + "failure": "", + "recentEdits": "", + "success": "", + "unreviewed": "" + }, + "label": { + "summary": "" + }, + "message": { + "noPermission": "" + }, + "notApplicable": "", + "placeholder": { + "summary": "" + } + }, + "FileUpload": { + "button": { + "cancel": "", + "retry": "" + }, + "description": { + "import": "", + "previousImport": "" + }, + "empty": { + "noFiles": "" + }, + "header": { + "failure": "", + "local": "", + "server": "", + "status": "" + }, + "label": { + "extensions": "", + "remainingSpace": "", + "uploadWidget": "" + }, + "link": { + "picard": "", + "processing": "", + "uploading": "" + }, + "message": { + "listener": "", + "local": { + "copyright": "", + "format": "", + "message": "", + "tag": "" + } + }, + "table": { + "upload": { + "header": { + "actions": "", + "filename": "", + "size": "", + "status": "" + }, + "progress": "", + "status": { + "pending": "", + "uploaded": "", + "uploading": "" + } + } + }, + "tooltip": { + "denied": "", + "extension": "", + "network": "", + "retry": "", + "size": "", + "timeout": "" + } + }, + "FsBrowser": { + "button": { + "import": "" + } + }, + "FsLogs": { + "empty": { + "notStarted": "" + } + }, + "Home": { + "header": { + "newChannels": "", + "playlists": "", + "recentlyAdded": "", + "recentlyFavorited": "", + "recentlyListened": "" + }, + "title": "" + }, + "ImportStatusModal": { + "button": { + "close": "" + }, + "error": { + "importFailure": "", + "invalidMetadata": { + "label": "", + "message": "" + }, + "unknownError": { + "label": "", + "message": "" + } + }, + "header": { + "importDetail": "" + }, + "link": { + "documentation": "", + "support": "" + }, + "message": { + "importDetail": "", + "importSuccess": "" + }, + "table": { + "error": { + "debug": "", + "errorDetail": "", + "errorType": "", + "help": "" + } + }, + "warning": { + "importSkipped": "" + } + }, + "Podcasts": { + "button": { + "cancel": "", + "channel": "", + "feed": "", + "search": "", + "subscribe": "" + }, + "empty": { + "noResults": "" + }, + "header": { + "browse": "" + }, + "label": { + "search": "", + "tags": "" + }, + "modal": { + "subscription": { + "header": "" + } + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + }, + "Radios": { + "button": { + "add": "", + "create": "", + "search": "" + }, + "empty": { + "noResults": "" + }, + "header": { + "browse": "", + "instance": "", + "user": "" + }, + "label": { + "search": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + }, + "TagDetail": { + "header": { + "channels": "", + "tracks": "" + }, + "link": { + "albums": "", + "artists": "", + "moderation": "" + } + }, + "TagSelector": { + "placeholder": { + "search": "" + } + }, + "TrackBase": { + "button": { + "cancel": "", + "delete": "", + "download": "", + "edit": "", + "embed": "", + "more": "", + "play": "" + }, + "link": { + "discogs": "", + "django": "", + "domain": "", + "moderation": "", + "wikipedia": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + }, + "embed": { + "header": "" + } + }, + "subtitle": { + "with-uploader": "", + "without-uploader": "" + }, + "title": "" + }, + "TrackDetail": { + "description": { + "library": "" + }, + "header": { + "episode": "", + "library": "", + "playlists": "", + "release": "", + "track": "" + }, + "link": { + "musicbrainz": "" + }, + "notApplicable": "", + "table": { + "release": { + "album": "", + "artist": "", + "copyright": "", + "license": "", + "series": "", + "url": "", + "year": "" + }, + "track": { + "bitrate": { + "label": "", + "value": "" + }, + "codec": "", + "downloads": "", + "duration": "", + "size": "" + } + } + }, + "TrackEdit": { + "header": { + "edit": "", + "suggest": "" + }, + "message": { + "remote": "" + } + }, + "radios": { + "Builder": { + "button": { + "filter": "", + "save": "" + }, + "description": { + "builder": "" + }, + "header": { + "builder": "", + "created": "", + "matches": "", + "updated": "" + }, + "label": { + "description": "", + "filter": "", + "name": "", + "public": "" + }, + "option": { + "filter": "" + }, + "placeholder": { + "description": "", + "name": "" + }, + "table": { + "filter": { + "header": { + "actions": "", + "candidates": "", + "config": "", + "exclude": "", + "name": "" + } + } + }, + "title": "" + }, + "Filter": { + "cancelButton": "", + "excludeLabel": "", + "matchingTracks": "", + "matchingTracksModalHeader": "", + "removeButton": "" + } + } + }, + "manage": { + "ChannelsTable": { + "label": { + "category": "", + "search": "" + }, + "link": { + "local": "", + "moderation": "" + }, + "option": { + "all": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "channel": { + "header": { + "account": "", + "albums": "", + "creationDate": "", + "domain": "", + "name": "", + "tracks": "" + } + } + } + }, + "library": { + "AlbumsTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "search": "" + }, + "link": { + "local": "", + "moderation": "" + }, + "notApplicable": "", + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "album": { + "header": { + "artist": "", + "creationDate": "", + "domain": "", + "name": "", + "releaseDate": "", + "tracks": "" + } + } + } + }, + "ArtistsTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "category": "", + "search": "" + }, + "link": { + "local": "" + }, + "option": { + "all": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "artist": { + "header": { + "albums": "", + "creationDate": "", + "domain": "", + "name": "", + "tracks": "" + } + } + } + }, + "EditsCardList": { + "label": { + "search": "", + "status": "" + }, + "option": { + "all": "", + "approved": "", + "pending": "", + "rejected": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + } + }, + "LibrariesTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "search": "", + "visibility": "" + }, + "link": { + "local": "" + }, + "option": { + "all": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "library": { + "header": { + "account": "", + "creationDate": "", + "domain": "", + "followers": "", + "name": "", + "uploads": "", + "visibility": "" + } + } + } + }, + "TagsTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "search": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "tag": { + "header": { + "albums": "", + "artists": "", + "creationDate": "", + "name": "", + "tracks": "" + } + } + } + }, + "TracksTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "search": "" + }, + "link": { + "local": "" + }, + "notApplicable": "", + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "track": { + "header": { + "album": "", + "artist": "", + "creationDate": "", + "domain": "", + "license": "", + "title": "" + } + } + } + }, + "UploadsTable": { + "action": { + "delete": { + "label": "", + "warning": "" + } + }, + "label": { + "search": "", + "status": "", + "visibility": "" + }, + "link": { + "local": "" + }, + "notApplicable": "", + "option": { + "all": "", + "failed": "", + "finished": "", + "pending": "", + "skipped": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "upload": { + "header": { + "accessedDate": "", + "account": "", + "creationDate": "", + "domain": "", + "importStatus": "", + "library": "", + "name": "", + "size": "", + "visibility": "" + } + } + } + } + }, + "moderation": { + "AccountsTable": { + "action": { + "purge": { + "label": "" + } + }, + "label": { + "search": "" + }, + "link": { + "local": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "account": { + "header": { + "domain": "", + "firstSeen": "", + "lastSeen": "", + "moderationRule": "", + "name": "", + "uploads": "" + }, + "moderationRule": "" + } + } + }, + "DomainsTable": { + "action": { + "add": { + "label": "" + }, + "purge": { + "label": "" + }, + "remove": { + "label": "" + } + }, + "empty": { + "noPods": "" + }, + "label": { + "inList": "", + "search": "" + }, + "link": { + "list": "" + }, + "option": { + "all": "", + "no": "", + "yes": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "domain": { + "header": { + "firstSeen": "", + "moderationRule": "", + "name": "", + "receivedMessages": "", + "users": "" + }, + "moderationRule": "" + } + } + }, + "InstancePolicyCard": { + "button": { + "edit": "" + }, + "header": { + "rule": "" + }, + "label": { + "blockAll": "", + "muteActivity": "", + "muteNotifications": "", + "reason": "", + "rejectMedia": "" + }, + "status": { + "enabled": "", + "paused": "" + } + }, + "InstancePolicyForm": { + "button": { + "cancel": "", + "confirm": "", + "create": "", + "delete": "", + "update": "" + }, + "header": { + "addRule": "", + "editRule": "", + "failure": "" + }, + "label": { + "blockAll": "", + "customizeRule": "", + "policyDisabled": "", + "policyEnabled": "", + "policyReason": "", + "rejectMedia": "", + "silenceActivity": "", + "silenceNotifications": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "tooltip": { + "blockAll": "", + "isActive": "", + "rejectMedia": "", + "silenceActivity": "", + "silenceNotifications": "", + "summary": "" + } + }, + "InstancePolicyModal": { + "button": { + "close": "", + "show": "" + }, + "modal": { + "manage": { + "content": { + "warning": "" + }, + "header": "" + } + } + }, + "NoteForm": { + "button": { + "add": "" + }, + "header": { + "failure": "" + }, + "placeholder": { + "summary": "" + } + }, + "NotesThread": { + "button": { + "delete": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + } + }, + "ReportCard": { + "button": { + "confirmDelete": "", + "delete": "", + "resolve": "", + "unresolve": "" + }, + "header": { + "actions": "", + "message": "", + "notes": "", + "reportedObject": "" + }, + "link": { + "moderation": "", + "publicPage": "", + "report": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "notApplicable": "", + "table": { + "object": { + "account": "", + "domain": "", + "local": "", + "owner": "", + "type": "" + }, + "report": { + "category": "", + "creationDate": "", + "submittedBy": "" + }, + "status": { + "assignedTo": "", + "internalNotes": "", + "resolutionDate": "", + "resolved": "", + "status": "", + "unresolved": "" + } + }, + "warning": { + "objectDeleted": "" + } + }, + "UserRequestCard": { + "button": { + "approve": "", + "reject": "" + }, + "header": { + "actions": "", + "notes": "", + "signup": "" + }, + "link": { + "request": "" + }, + "message": { + "signup": "" + }, + "notApplicable": "", + "table": { + "request": { + "creationDate": "", + "submittedBy": "" + }, + "status": { + "approved": "", + "assignedTo": "", + "internalNotes": "", + "pending": "", + "refused": "", + "resolutionDate": "", + "status": "" + } + } + } + }, + "users": { + "InvitationForm": { + "button": { + "clear": "", + "new": "" + }, + "header": { + "failure": "" + }, + "label": { + "invite": "" + }, + "placeholder": { + "invitation": "" + }, + "table": { + "invitation": { + "header": { + "code": "", + "link": "" + } + } + } + }, + "InvitationsTable": { + "action": { + "delete": "" + }, + "label": { + "expired": "", + "search": "", + "status": "", + "unused": "", + "used": "" + }, + "option": { + "all": "", + "expired": "", + "open": "" + }, + "ordering": { + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "invitation": { + "header": { + "code": "", + "creationDate": "", + "expirationDate": "", + "owner": "", + "status": "", + "user": "" + } + } + } + }, + "UsersTable": { + "label": { + "search": "" + }, + "notApplicable": "", + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "permission": { + "library": "", + "moderation": "", + "settings": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "user": { + "accountStatus": { + "active": "", + "inactive": "" + }, + "header": { + "accountStatus": "", + "email": "", + "lastActivity": "", + "permissions": "", + "signup": "", + "status": "", + "username": "" + }, + "status": { + "admin": "", + "regular": "", + "staff": "" + } + } + } + } + } + }, + "moderation": { + "FilterModal": { + "button": { + "cancel": "", + "hide": "" + }, + "header": { + "failure": "", + "modal": "" + }, + "help": { + "createFilter": "" + }, + "message": { + "success": "" + }, + "warning": { + "createFilter": { + "listIntro": "", + "listItem1": "", + "listItem2": "", + "listItem3": "", + "listItem4": "" + } + } + }, + "ReportCategoryDropdown": { + "label": { + "category": "" + }, + "option": { + "all": "" + } + }, + "ReportModal": { + "button": { + "cancel": "", + "submit": "" + }, + "description": { + "email": "", + "forwardToDomain": "", + "message": "", + "modal": "" + }, + "error": { + "nodeinfoFetch": "" + }, + "header": { + "disabled": "", + "modal": "", + "submissionFailure": "" + }, + "label": { + "email": "", + "forwardToDomain": "", + "message": "" + }, + "message": { + "submissionSuccess": "" + } + } + }, + "notifications": { + "NotificationRow": { + "button": { + "approve": "", + "markRead": "", + "markUnread": "", + "reject": "" + }, + "message": { + "libraryAcceptFollow": "", + "libraryFollow": "", + "libraryPendingFollow": "", + "libraryReject": "", + "userAcceptFollow": "", + "userFollow": "", + "userPendingFollow": "", + "userReject": "" + } + } + }, + "playlists": { + "Card": { + "meta": { + "tracks": "" + } + }, + "Editor": { + "button": { + "addDuplicate": "", + "clear": "", + "copy": "", + "insertFromQueue": "" + }, + "error": { + "sync": "" + }, + "header": { + "editor": "" + }, + "help": { + "reorder": "" + }, + "loading": { + "sync": "" + }, + "message": { + "sync": "" + }, + "modal": { + "clearPlaylist": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "warning": { + "duplicate": "" + } + }, + "Form": { + "button": { + "create": "", + "update": "" + }, + "header": { + "createFailure": "", + "createPlaylist": "", + "createSuccess": "", + "updateSuccess": "" + }, + "label": { + "name": "", + "visibility": "" + }, + "placeholder": { + "name": "" + } + }, + "PlaylistDropdown": { + "button": { + "export": { + "description": "", + "header": "" + }, + "import": { + "description": "", + "header": "" + } + }, + "more": "" + }, + "PlaylistModal": { + "button": { + "addDuplicate": "", + "addToPlaylist": "", + "addTrack": "", + "cancel": "", + "edit": "" + }, + "empty": { + "noPlaylists": "" + }, + "header": { + "addFailure": "", + "addToPlaylist": "", + "available": "", + "manage": "", + "noResults": "", + "track": "" + }, + "label": { + "filter": "" + }, + "placeholder": { + "filterPlaylist": "" + }, + "table": { + "edit": { + "header": { + "edit": "", + "lastModification": "", + "name": "", + "tracks": "" + } + } + }, + "warning": { + "duplicate": "" + } + }, + "TrackPlaylistIcon": { + "button": { + "add": "" + } + }, + "Widget": { + "button": { + "create": "", + "more": "" + }, + "placeholder": { + "noPlaylists": "" + } + } + }, + "radios": { + "Button": { + "startArtistsRadio": "", + "startPlaylistsRadio": "", + "startRadio": "", + "startTagsRadio": "", + "stopArtistsRadio": "", + "stopPlaylistsRadio": "", + "stopRadio": "", + "stopTagsRadio": "" + }, + "Card": { + "button": { + "edit": "" + } + } + }, + "tags": { + "List": { + "button": { + "more": "" + } + } + }, + "vui": { + "Pagination": { + "label": "", + "next": "", + "previous": "" + } + } + }, + "composables": { + "audio": { + "usePlayOptions": { + "addToQueueMessage": "" + } + }, + "locale": { + "useSharedLabels": { + "fields": { + "contentCategory": { + "choices": { + "music": "", + "other": "", + "podcast": "" + }, + "label": "" + }, + "importStatus": { + "choices": { + "draft": { + "help": "", + "label": "" + }, + "errored": { + "help": "", + "label": "" + }, + "finished": { + "help": "", + "label": "" + }, + "pending": { + "help": "", + "label": "" + }, + "skipped": { + "help": "", + "label": "" + } + }, + "label": "" + }, + "privacyLevel": { + "choices": { + "instance": "", + "private": "", + "public": "" + }, + "help": "", + "label": "", + "shortChoices": { + "instance": "", + "private": "", + "public": "" + } + }, + "reportType": { + "choices": { + "illegalContent": "", + "invalidMetadata": "", + "offensiveContent": "", + "other": "", + "takedownRequest": "" + }, + "label": "" + }, + "summary": { + "label": "" + } + }, + "filters": { + "accessedDate": "", + "albumTitle": "", + "appliedDate": "", + "artistName": "", + "bitrate": "", + "creationDate": "", + "dateJoined": "", + "domain": "", + "duration": "", + "expirationDate": "", + "firstSeen": "", + "followers": "", + "handledDate": "", + "itemsCount": "", + "lastActivity": "", + "lastSeen": "", + "modificationDate": "", + "name": "", + "receivedMessages": "", + "releaseDate": "", + "size": "", + "trackTitle": "", + "uploads": "", + "username": "", + "users": "" + }, + "scopes": { + "edits": { + "description": "", + "label": "" + }, + "favorites": { + "description": "", + "label": "" + }, + "filters": { + "description": "", + "label": "" + }, + "follows": { + "description": "", + "label": "" + }, + "libraries": { + "description": "", + "label": "" + }, + "listenings": { + "description": "", + "label": "" + }, + "notifications": { + "description": "", + "label": "" + }, + "playlists": { + "description": "", + "label": "" + }, + "profile": { + "description": "", + "label": "" + }, + "radios": { + "description": "", + "label": "" + }, + "reports": { + "description": "", + "label": "" + }, + "security": { + "description": "", + "label": "" + } + } + } + }, + "moderation": { + "useEditConfigs": { + "album": { + "releaseDate": "", + "title": "" + }, + "artist": { + "name": "" + }, + "cover": { + "label": "" + }, + "description": { + "label": "" + }, + "tags": { + "label": "" + }, + "track": { + "copyright": "", + "license": "", + "position": "", + "title": "" + } + }, + "useReport": { + "account": { + "label": "", + "typeLabel": "" + }, + "album": { + "label": "", + "typeLabel": "" + }, + "artist": { + "label": "", + "typeLabel": "", + "unknownLabel": "" + }, + "channel": { + "label": "", + "typeLabel": "" + }, + "library": { + "label": "", + "typeLabel": "" + }, + "playlist": { + "label": "", + "typeLabel": "" + }, + "track": { + "label": "", + "typeLabel": "" + } + }, + "useReportConfigs": { + "account": { + "label": "", + "summary": "" + }, + "album": { + "label": "", + "releaseDate": "", + "title": "" + }, + "artist": { + "label": "" + }, + "channel": { + "label": "" + }, + "creationDate": { + "label": "" + }, + "library": { + "description": "", + "label": "" + }, + "musicbrainzId": { + "label": "" + }, + "name": { + "label": "" + }, + "playlist": { + "label": "" + }, + "tags": { + "label": "" + }, + "track": { + "copyright": "", + "label": "", + "license": "", + "position": "", + "title": "" + }, + "visibility": { + "label": "" + } + } + }, + "useErrorHandler": { + "errorReportMessage": "", + "errorReportTitle": "", + "leaveFeedback": "", + "unexpectedError": "" + }, + "useThemeList": { + "browserDefault": "", + "darkTheme": "", + "lightTheme": "" + } + }, + "init": { + "axios": { + "rateLimitDelay": "", + "rateLimitLater": "" + }, + "sentry": { + "allow": "", + "deny": "", + "funkwhaleInstance": "", + "message": "", + "title": "" + }, + "serviceWorker": { + "actions": { + "later": "", + "update": "" + }, + "newAppVersion": "" + } + }, + "views": { + "ChooseInstance": { + "button": { + "submit": "" + }, + "header": { + "chooseInstance": "", + "failure": "", + "suggestions": "" + }, + "help": { + "notFunkwhaleServer": "", + "selectPod": "", + "serverDown": "" + }, + "label": { + "url": "" + }, + "message": { + "currentConnection": "", + "newUrl": "" + } + }, + "Notifications": { + "button": { + "read": "", + "submit": "" + }, + "empty": { + "notifications": "" + }, + "header": { + "funkwhaleSupport": "", + "instanceSupport": "", + "messages": "", + "notifications": "" + }, + "label": { + "reminder": "", + "showRead": "" + }, + "link": { + "donate": "", + "help": "" + }, + "loading": { + "notifications": "" + }, + "message": { + "funkwhaleSupport": "" + }, + "option": { + "delay": { + "30": "", + "60": "", + "90": "", + "never": "" + } + }, + "title": "" + }, + "Search": { + "button": { + "submit": "" + }, + "header": { + "remote": "", + "rss": "", + "search": "" + }, + "label": { + "albums": "", + "artists": "", + "playlists": "", + "podcasts": "", + "radios": "", + "series": "", + "tags": "", + "tracks": "" + } + }, + "admin": { + "ChannelDetail": { + "button": { + "delete": "", + "openRemote": "", + "refresh": "" + }, + "header": { + "activity": "", + "audioContent": "", + "channelData": "" + }, + "label": { + "local": "" + }, + "link": { + "django": "", + "localProfile": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "edits": "", + "favorited": "", + "firstSeen": "", + "linkedReports": "", + "listenings": "", + "playlists": "" + }, + "audioContent": { + "albums": "", + "cachedSize": "", + "totalSize": "", + "tracks": "", + "uploads": "" + }, + "channelData": { + "account": "", + "category": "", + "description": "", + "domain": "", + "name": "", + "rss": "", + "url": "" + } + }, + "warning": { + "stats": "" + } + }, + "CommonList": { + "title": { + "accounts": "", + "albums": "", + "artists": "", + "channels": "", + "invitations": "", + "libraries": "", + "tags": "", + "tracks": "", + "uploads": "", + "users": "" + } + }, + "Settings": { + "header": { + "channels": "", + "federation": "", + "instanceInfo": "", + "moderation": "", + "music": "", + "playlists": "", + "qualityFilters": "", + "sections": "", + "security": "", + "settings": "", + "signups": "", + "stats": "", + "subsonic": "", + "ui": "" + } + }, + "library": { + "AlbumDetail": { + "button": { + "delete": "", + "edit": "", + "remoteRefresh": "" + }, + "header": { + "activity": "", + "albumData": "", + "audioContent": "", + "local": "" + }, + "link": { + "artist": "", + "django": "", + "domain": "", + "edits": "", + "libraries": "", + "localProfile": "", + "musicbrainz": "", + "remoteProfile": "", + "reports": "", + "tracks": "", + "uploads": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "favorited": "", + "firstSeen": "", + "listenings": "", + "playlists": "" + }, + "album": { + "description": "", + "title": "" + }, + "audioContent": { + "cachedSize": "", + "totalSize": "" + } + }, + "warning": { + "stats": "" + } + }, + "ArtistDetail": { + "button": { + "delete": "", + "edit": "", + "remoteRefresh": "" + }, + "header": { + "activity": "", + "artistData": "", + "audioContent": "", + "local": "" + }, + "link": { + "albums": "", + "category": "", + "django": "", + "domain": "", + "edits": "", + "libraries": "", + "localProfile": "", + "musicbrainz": "", + "remoteProfile": "", + "reports": "", + "tracks": "", + "uploads": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "favorited": "", + "firstSeen": "", + "listenings": "", + "playlists": "" + }, + "artist": { + "description": "", + "name": "" + }, + "audioContent": { + "cachedSize": "", + "totalSize": "" + } + }, + "warning": { + "stats": "" + } + }, + "Base": { + "link": { + "albums": "", + "artists": "", + "channels": "", + "edits": "", + "libraries": "", + "tags": "", + "tracks": "", + "uploads": "" + }, + "menu": { + "secondary": "" + }, + "title": "" + }, + "EditsList": { + "header": { + "edits": "" + }, + "title": "" + }, + "LibraryDetail": { + "button": { + "delete": "" + }, + "header": { + "activity": "", + "audioContent": "", + "libraryData": "", + "local": "" + }, + "link": { + "account": "", + "albums": "", + "artists": "", + "django": "", + "domain": "", + "remoteProfile": "", + "reports": "", + "tracks": "", + "uploads": "", + "visibility": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "firstSeen": "", + "followers": "" + }, + "audioContent": { + "cachedSize": "", + "totalSize": "" + }, + "library": { + "description": "", + "name": "" + } + }, + "warning": { + "stats": "" + } + }, + "TagDetail": { + "button": { + "delete": "" + }, + "header": { + "activity": "", + "audioContent": "", + "tagData": "" + }, + "link": { + "albums": "", + "artists": "", + "django": "", + "localProfile": "", + "tracks": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "firstSeen": "" + }, + "tag": { + "name": "" + } + } + }, + "TrackDetail": { + "button": { + "delete": "", + "edit": "", + "remoteRefresh": "" + }, + "header": { + "activity": "", + "local": "", + "trackData": "" + }, + "link": { + "album": "", + "albumArtist": "", + "artist": "", + "django": "", + "domain": "", + "edits": "", + "libraries": "", + "localProfile": "", + "musicbrainz": "", + "remoteProfile": "", + "reports": "", + "uploads": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "table": { + "activity": { + "favorited": "", + "firstSeen": "", + "listenings": "", + "playlists": "" + }, + "track": { + "copyright": "", + "description": "", + "discNumber": "", + "license": "", + "position": "", + "title": "" + }, + "trackData": { + "cachedSize": "", + "totalSize": "" + } + }, + "warning": { + "stats": "" + } + }, + "UploadDetail": { + "button": { + "delete": "", + "download": "" + }, + "header": { + "activity": "", + "audioContent": "", + "local": "", + "uploadData": "" + }, + "link": { + "account": "", + "django": "", + "domain": "", + "importStatus": "", + "library": "", + "remoteProfile": "", + "type": "", + "visibility": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "notApplicable": "", + "table": { + "activity": { + "accessedDate": "", + "firstSeen": "" + }, + "audioContent": { + "bitrate": { + "label": "", + "value": "" + }, + "cachedSize": "", + "duration": "", + "size": "", + "track": "" + }, + "upload": { + "name": "" + } + } + } + }, + "moderation": { + "AccountsDetail": { + "button": { + "addPolicy": "" + }, + "description": { + "policy": "" + }, + "header": { + "accountData": "", + "activePolicy": "", + "activity": "", + "audioContent": "", + "localAccount": "", + "noPolicy": "" + }, + "link": { + "albums": "", + "artists": "", + "channels": "", + "django": "", + "domain": "", + "libraries": "", + "linkedReports": "", + "openProfile": "", + "remoteProfile": "", + "requests": "", + "tracks": "", + "uploads": "" + }, + "notApplicable": "", + "option": { + "permission": { + "library": "", + "moderation": "", + "settings": "" + } + }, + "table": { + "accountData": { + "displayName": "", + "email": "", + "lastActivity": "", + "lastChecked": "", + "loginStatus": { + "disabled": "", + "enabled": "", + "label": "" + }, + "permissions": "", + "signupDate": "", + "userType": "", + "username": "" + }, + "activity": { + "emittedFollows": "", + "emittedMessages": "", + "firstSeen": "", + "receivedFollows": "" + }, + "audioContent": { + "cachedSize": "", + "megabyte": "", + "totalSize": "", + "uploadQuota": "" + } + }, + "tooltip": { + "uploadQuota": "" + }, + "warning": { + "stats": "" + } + }, + "Base": { + "link": { + "accounts": "", + "domains": "", + "reports": "", + "userRequests": "" + }, + "menu": { + "secondary": "" + }, + "title": "" + }, + "DomainsDetail": { + "button": { + "addPolicy": "", + "addToAllowList": "", + "refreshNodeInfo": "", + "removeFromAllowList": "" + }, + "description": { + "policy": "" + }, + "header": { + "activePolicy": "", + "activity": "", + "audioContent": "", + "instanceData": "", + "noPolicy": "" + }, + "link": { + "albums": "", + "artists": "", + "channels": "", + "django": "", + "knownAccounts": "", + "libraries": "", + "tracks": "", + "uploads": "", + "website": "" + }, + "notApplicable": "", + "table": { + "activity": { + "emittedFollows": "", + "emittedMessages": "", + "firstSeen": "", + "receivedFollows": "" + }, + "audioContent": { + "cachedSize": "", + "totalSize": "" + }, + "instanceData": { + "domainName": "", + "inAllowList": { + "false": "", + "label": "", + "true": "" + }, + "lastChecked": "", + "nodeInfoStatus": { + "label": "", + "value": "" + }, + "software": { + "label": "", + "value": "" + }, + "totalUsers": "" + } + }, + "warning": { + "stats": "" + } + }, + "DomainsList": { + "button": { + "add": "" + }, + "header": { + "domains": "", + "failure": "" + }, + "label": { + "addDomain": "", + "addToAllowList": "" + }, + "title": "" + }, + "ReportsList": { + "header": { + "reports": "" + }, + "label": { + "search": "", + "status": "" + }, + "option": { + "status": { + "all": "", + "resolved": "", + "unresolved": "" + } + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + }, + "RequestsList": { + "header": { + "userRequests": "" + }, + "label": { + "search": "", + "status": "" + }, + "option": { + "status": { + "all": "", + "approved": "", + "pending": "", + "refused": "" + } + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "placeholder": { + "search": "" + }, + "title": "" + } + }, + "users": { + "Base": { + "link": { + "invitations": "", + "users": "" + }, + "menu": { + "secondary": "" + }, + "title": "" + } + } + }, + "auth": { + "Callback": { + "header": { + "loggingIn": "" + } + }, + "EmailConfirm": { + "header": { + "failure": "", + "success": "" + }, + "label": { + "confirmationCode": "" + }, + "link": { + "back": "", + "login": "" + }, + "message": { + "success": "" + }, + "title": "" + }, + "Login": { + "header": { + "login": "" + }, + "title": "" + }, + "PasswordReset": { + "button": { + "requestReset": "" + }, + "header": { + "failure": "", + "reset": "" + }, + "help": { + "form": "" + }, + "label": { + "email": "" + }, + "link": { + "back": "" + }, + "placeholder": { + "email": "" + }, + "title": "" + }, + "PasswordResetConfirm": { + "button": { + "update": "" + }, + "header": { + "failure": "", + "success": "" + }, + "label": { + "newPassword": "" + }, + "link": { + "back": "", + "login": "" + }, + "message": { + "requestSent": "", + "success": "" + }, + "title": "" + }, + "Plugins": { + "title": "" + }, + "ProfileActivity": { + "header": { + "playlists": "", + "recentlyFavorited": "", + "recentlyListened": "" + } + }, + "ProfileBase": { + "label": { + "self": "" + }, + "link": { + "activity": "", + "domainView": "", + "moderation": "", + "overview": "" + }, + "title": "" + }, + "ProfileOverview": { + "button": { + "cancel": "", + "createChannel": "", + "next": "", + "previous": "" + }, + "header": { + "channels": "", + "libraries": "", + "sharedLibraries": "" + }, + "link": { + "addNew": "" + }, + "modal": { + "createChannel": { + "artist": { + "header": "" + }, + "header": "", + "podcast": { + "header": "" + } + } + } + }, + "Signup": { + "header": { + "createAccount": "" + }, + "title": "" + } + }, + "channels": { + "DetailBase": { + "button": { + "cancel": "", + "confirm": "", + "delete": "", + "edit": "", + "embed": "", + "play": "", + "updateChannel": "", + "upload": "" + }, + "header": { + "artistChannel": "", + "podcastChannel": "" + }, + "link": { + "channelEpisodes": "", + "channelOverview": "", + "channelTracks": "", + "domainView": "", + "mirrored": "", + "moderation": "" + }, + "meta": { + "episodes": "", + "listenings": "", + "subscribers": "", + "tracks": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + }, + "embed": { + "header": "" + }, + "subscribe": { + "fediverse": { + "content": { + "help": "" + }, + "header": "" + }, + "funkwhale": { + "header": "" + }, + "header": "", + "rss": { + "content": { + "help": "" + }, + "header": "" + } + } + }, + "title": "" + }, + "DetailOverview": { + "header": { + "albums": "", + "latestEpisodes": "", + "latestTracks": "", + "series": "", + "uploadsFailure": "", + "uploadsProcessing": "", + "uploadsSuccess": "" + }, + "link": { + "addAlbum": "", + "erroredUploads": "", + "skippedUploads": "" + }, + "message": { + "processing": "" + }, + "meta": { + "progress": "" + } + }, + "SubscriptionsList": { + "button": { + "cancel": "", + "subscribe": "" + }, + "link": { + "addNew": "" + }, + "modal": { + "subscription": { + "header": "" + } + }, + "placeholder": { + "search": "" + }, + "title": "" + } + }, + "content": { + "Base": { + "link": { + "libraries": "", + "tracks": "" + }, + "menu": { + "secondary": "" + }, + "title": "" + }, + "Home": { + "button": { + "start": "" + }, + "description": { + "channel": { + "1": "", + "2": "" + }, + "follow": "", + "upload": "" + }, + "header": { + "channel": "", + "follow": "", + "upload": "" + }, + "help": { + "uploadQuota": "" + }, + "title": "" + }, + "libraries": { + "Card": { + "button": { + "upload": "" + }, + "label": { + "size": "" + }, + "link": { + "details": "" + }, + "meta": { + "tracks": "" + } + }, + "FilesTable": { + "action": { + "delete": "", + "restartImport": "" + }, + "button": { + "showStatus": "" + }, + "empty": { + "noTracks": "" + }, + "label": { + "importStatus": "", + "search": "" + }, + "notApplicable": "", + "option": { + "status": { + "all": "", + "draft": "", + "failed": "", + "finished": "", + "pending": "", + "skipped": "" + } + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + }, + "table": { + "file": { + "header": { + "album": "", + "artist": "", + "duration": "", + "importStatus": "", + "size": "", + "title": "", + "uploadDate": "" + } + } + } + }, + "Form": { + "button": { + "confirm": "", + "create": "", + "delete": "", + "update": "" + }, + "description": { + "library": "", + "visibility": "" + }, + "header": { + "failure": "" + }, + "label": { + "description": "", + "name": "", + "visibility": "" + }, + "message": { + "libraryCreated": "", + "libraryDeleted": "", + "libraryUpdated": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "placeholder": { + "description": "", + "name": "" + } + }, + "Home": { + "empty": { + "noLibrary": "" + }, + "header": { + "libraries": "" + }, + "link": { + "createLibrary": "" + }, + "loading": { + "libraries": "" + } + }, + "Quota": { + "button": { + "purge": "" + }, + "header": { + "currentUsage": "" + }, + "label": { + "currentUsage": "", + "errored": "", + "pending": "", + "percentUsed": "", + "skipped": "" + }, + "link": { + "viewFiles": "" + }, + "loading": { + "currentUsage": "" + }, + "modal": { + "purgeErrored": { + "content": { + "description": "" + }, + "header": "" + }, + "purgePending": { + "content": { + "description": "" + }, + "header": "" + }, + "purgeSkipped": { + "content": { + "description": "" + }, + "header": "" + } + } + } + }, + "remote": { + "Card": { + "button": { + "cancel": "", + "follow": "", + "pending": "", + "unfollow": "" + }, + "error": { + "follow": "", + "unfollow": "" + }, + "label": { + "scanFailure": "", + "scanPartialSuccess": "", + "scanPending": "", + "scanProgress": "", + "scanSuccess": "", + "sharingLink": "" + }, + "link": { + "scan": "", + "scanDetails": "" + }, + "message": { + "scanLaunched": "", + "scanSkipped": "" + }, + "meta": { + "failedTracks": "", + "lastUpdate": "", + "tracks": "" + }, + "modal": { + "unfollow": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "tooltip": { + "private": "", + "public": "" + } + }, + "Home": { + "button": { + "refresh": "" + }, + "description": { + "remoteLibraries": "" + }, + "header": { + "knownLibraries": "", + "remoteLibraries": "" + }, + "loading": { + "remoteLibraries": "" + } + }, + "ScanForm": { + "button": { + "submit": "" + }, + "header": { + "failure": "" + }, + "label": { + "search": "" + }, + "placeholder": { + "url": "" + } + } + } + }, + "library": { + "DetailAlbums": { + "empty": { + "follow": "", + "upload": "" + } + }, + "DetailOverview": { + "empty": { + "follow": "", + "upload": "" + } + }, + "DetailTracks": { + "empty": { + "follow": "", + "upload": "" + } + }, + "Edit": { + "button": { + "accept": "", + "reject": "" + }, + "empty": { + "noFollowers": "" + }, + "header": { + "followers": "", + "libraryContents": "" + }, + "loading": { + "followers": "" + }, + "table": { + "action": { + "header": { + "action": "", + "date": "", + "status": "", + "user": "" + }, + "status": { + "accepted": "", + "pending": "", + "rejected": "" + } + } + } + }, + "LibraryBase": { + "button": { + "edit": "", + "upload": "" + }, + "description": { + "sharingLink": "" + }, + "label": { + "instance": "", + "private": "", + "public": "", + "sharingLink": "" + }, + "link": { + "albums": "", + "artists": "", + "domain": "", + "moderation": "", + "owner": "", + "tracks": "" + }, + "meta": { + "tracks": "" + }, + "title": "", + "tooltip": { + "instance": "", + "private": "", + "public": "" + } + } + }, + "playlists": { + "Detail": { + "button": { + "cancel": "", + "confirm": "", + "delete": "", + "edit": "", + "embed": "", + "playAll": "", + "stopEdit": "" + }, + "empty": { + "noTracks": "" + }, + "header": { + "tracks": "" + }, + "meta": { + "tracks": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + }, + "embed": { + "header": "" + } + }, + "title": "" + }, + "List": { + "button": { + "create": "", + "manage": "", + "search": "" + }, + "empty": { + "noResults": "" + }, + "header": { + "browse": "", + "playlists": "" + }, + "label": { + "search": "" + }, + "ordering": { + "direction": { + "ascending": "", + "descending": "", + "label": "" + }, + "label": "" + }, + "pagination": { + "results": "" + }, + "placeholder": { + "search": "" + } + } + }, + "radios": { + "Detail": { + "button": { + "confirm": "", + "delete": "", + "edit": "" + }, + "empty": { + "noTracks": "" + }, + "header": { + "radio": "", + "tracks": "" + }, + "modal": { + "delete": { + "content": { + "warning": "" + }, + "header": "" + } + }, + "title": "" + } + } + } +} diff --git a/front/tauri/Cargo.lock b/front/tauri/Cargo.lock index 3132f4f08..16b5e1cd4 100644 --- a/front/tauri/Cargo.lock +++ b/front/tauri/Cargo.lock @@ -62,183 +62,6 @@ version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" -[[package]] -name = "as-raw-xcb-connection" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" - -[[package]] -name = "async-broadcast" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" -dependencies = [ - "event-listener 2.5.3", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" -dependencies = [ - "concurrent-queue", - "event-listener 5.1.0", - "event-listener-strategy 0.5.0", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" -dependencies = [ - "async-lock 3.3.0", - "async-task", - "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", - "slab", -] - -[[package]] -name = "async-fs" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "blocking", - "futures-lite 1.13.0", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - -[[package]] -name = "async-io" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" -dependencies = [ - "async-lock 3.3.0", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite 2.2.0", - "parking", - "polling 3.5.0", - "rustix 0.38.31", - "slab", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - -[[package]] -name = "async-lock" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" -dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" -dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", - "async-signal", - "blocking", - "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.31", - "windows-sys 0.48.0", -] - -[[package]] -name = "async-recursion" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - -[[package]] -name = "async-signal" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" -dependencies = [ - "async-io 2.3.1", - "async-lock 2.8.0", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix 0.38.31", - "signal-hook-registry", - "slab", - "windows-sys 0.48.0", -] - -[[package]] -name = "async-task" -version = "4.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" - -[[package]] -name = "async-trait" -version = "0.1.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - [[package]] name = "atk" version = "0.18.0" @@ -262,12 +85,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - [[package]] name = "autocfg" version = "1.1.0" @@ -295,6 +112,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bitflags" version = "1.3.2" @@ -303,9 +126,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -326,26 +149,19 @@ dependencies = [ ] [[package]] -name = "blocking" -version = "1.5.1" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "async-channel", - "async-lock 3.3.0", - "async-task", - "fastrand 2.0.1", - "futures-io", - "futures-lite 2.2.0", - "piper", - "tracing", + "objc2", ] [[package]] name = "brotli" -version = "3.4.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -354,9 +170,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -373,20 +189,6 @@ name = "bytemuck" version = "1.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] [[package]] name = "byteorder" @@ -396,9 +198,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -409,7 +211,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", @@ -509,12 +311,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.0" @@ -531,7 +327,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -542,9 +338,25 @@ checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", + "core-graphics 0.23.1", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "foreign-types", "libc", "objc", @@ -558,8 +370,22 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "libc", "objc", ] @@ -591,12 +417,6 @@ dependencies = [ "tracing-error", ] -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "combine" version = "4.6.6" @@ -607,15 +427,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "convert_case" version = "0.4.0" @@ -633,10 +444,20 @@ dependencies = [ ] [[package]] -name = "core-foundation-sys" -version = "0.8.6" +name = "core-foundation" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -645,8 +466,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "foreign-types", "libc", ] @@ -658,7 +492,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] @@ -787,17 +632,6 @@ dependencies = [ "serde", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "derive_more" version = "0.99.17" @@ -822,24 +656,24 @@ dependencies = [ ] [[package]] -name = "dirs-next" -version = "2.0.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -858,48 +692,35 @@ dependencies = [ ] [[package]] -name = "downcast-rs" -version = "1.2.0" +name = "dlopen2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" - -[[package]] -name = "drm" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" -dependencies = [ - "bitflags 2.4.2", - "bytemuck", - "drm-ffi", - "drm-fourcc", - "rustix 0.38.31", -] - -[[package]] -name = "drm-ffi" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" -dependencies = [ - "drm-sys", - "rustix 0.38.31", -] - -[[package]] -name = "drm-fourcc" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" - -[[package]] -name = "drm-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" dependencies = [ + "dlopen2_derive", "libc", - "linux-raw-sys 0.6.4", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.50", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", ] [[package]] @@ -940,7 +761,7 @@ dependencies = [ "rustc_version", "toml 0.8.2", "vswhom", - "winreg 0.51.0", + "winreg", ] [[package]] @@ -949,36 +770,6 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" -[[package]] -name = "encoding_rs" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enumflags2" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -986,72 +777,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno" -version = "0.3.8" +name = "erased-serde" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291" -dependencies = [ - "event-listener 5.1.0", - "pin-project-lite", + "serde", + "typeid", ] [[package]] @@ -1064,21 +796,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - [[package]] name = "fdeflate" version = "0.3.4" @@ -1094,7 +811,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.9.0", + "memoffset", "rustc_version", ] @@ -1108,6 +825,15 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1203,34 +929,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-lite" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" -dependencies = [ - "fastrand 2.0.1", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.30" @@ -1379,19 +1077,6 @@ dependencies = [ "x11", ] -[[package]] -name = "generator" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows 0.48.0", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1402,16 +1087,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "gethostname" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -dependencies = [ - "libc", - "windows-targets 0.48.5", -] - [[package]] name = "getrandom" version = "0.1.16" @@ -1478,7 +1153,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", @@ -1501,7 +1176,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", @@ -1588,25 +1263,6 @@ dependencies = [ "syn 2.0.50", ] -[[package]] -name = "h2" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 2.2.3", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1625,6 +1281,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.6" @@ -1653,9 +1315,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1664,12 +1326,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", "pin-project-lite", ] @@ -1679,34 +1353,42 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" -version = "0.14.28" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", - "h2", "http", "http-body", "httparse", - "httpdate", "itoa 1.0.10", "pin-project-lite", - "socket2 0.5.5", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", "tokio", "tower-service", "tracing", - "want", ] [[package]] @@ -1720,7 +1402,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1758,18 +1440,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "image" -version = "0.24.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-traits", -] - [[package]] name = "indenter" version = "0.3.3" @@ -1800,9 +1470,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" dependencies = [ "cfb", ] @@ -1816,17 +1486,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" version = "2.9.0" @@ -1901,14 +1560,25 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.2.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" dependencies = [ + "jsonptr", "serde", "serde_json", "thiserror", - "treediff", +] + +[[package]] +name = "jsonptr" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +dependencies = [ + "fluent-uri", + "serde", + "serde_json", ] [[package]] @@ -1917,7 +1587,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "serde", "unicode-segmentation", ] @@ -1997,7 +1667,7 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "libc", "redox_syscall", ] @@ -2011,24 +1681,6 @@ dependencies = [ "safemem", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" - -[[package]] -name = "linux-raw-sys" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" - [[package]] name = "lock_api" version = "0.4.11" @@ -2041,24 +1693,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "mac" @@ -2089,15 +1726,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - [[package]] name = "matches" version = "0.1.10" @@ -2110,24 +1738,6 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" -[[package]] -name = "memmap2" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.0" @@ -2166,33 +1776,36 @@ dependencies = [ [[package]] name = "muda" -version = "0.11.5" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" +checksum = "b8123dfd4996055ac9b15a60ad263b44b01e539007523ad7a4a533a3d93b0591" dependencies = [ - "cocoa", "crossbeam-channel", + "dpi", "gtk", "keyboard-types", - "objc", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", "png", "serde", "thiserror", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "ndk" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", + "raw-window-handle", "thiserror", ] @@ -2204,9 +1817,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -2217,34 +1830,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", -] - [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -2272,23 +1863,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.50", ] [[package]] @@ -2301,6 +1892,105 @@ dependencies = [ "objc_exception", ] +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2335,20 +2025,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] -name = "ordered-stream" +name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "owo-colors" @@ -2381,12 +2061,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "parking" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" - [[package]] name = "parking_lot" version = "0.12.1" @@ -2562,17 +2236,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" -dependencies = [ - "atomic-waker", - "fastrand 2.0.1", - "futures-io", -] - [[package]] name = "pkg-config" version = "0.3.30" @@ -2585,7 +2248,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" dependencies = [ - "base64", + "base64 0.21.7", "indexmap 2.2.3", "line-wrap", "quick-xml", @@ -2606,36 +2269,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" -dependencies = [ - "cfg-if", - "concurrent-queue", - "pin-project-lite", - "rustix 0.38.31", - "tracing", - "windows-sys 0.52.0", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -2812,12 +2445,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "raw-window-handle" version = "0.6.0" @@ -2846,63 +2473,48 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ - "base64", + "base64 0.22.1", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2", "http", "http-body", + "http-body-util", "hyper", + "hyper-util", "ipnet", "js-sys", "log", @@ -2914,7 +2526,6 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-util", "tower-service", @@ -2923,7 +2534,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg 0.50.0", + "windows-registry", ] [[package]] @@ -2941,39 +2552,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" -dependencies = [ - "bitflags 2.4.2", - "errno", - "libc", - "linux-raw-sys 0.4.13", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - [[package]] name = "ryu" version = "1.0.17" @@ -2997,9 +2575,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -3007,26 +2585,21 @@ dependencies = [ "serde", "serde_json", "url", + "uuid", ] [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.50", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -3071,6 +2644,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde_derive" version = "1.0.197" @@ -3084,13 +2668,13 @@ dependencies = [ [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.50", ] [[package]] @@ -3142,7 +2726,7 @@ version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15d167997bd841ec232f5b2b8e0e26606df2e7caa4c31b95ea9ca52b200bd270" dependencies = [ - "base64", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -3198,17 +2782,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.8" @@ -3229,15 +2802,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - [[package]] name = "simd-adler32" version = "0.3.7" @@ -3265,16 +2829,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.5" @@ -3291,29 +2845,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" dependencies = [ - "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.0", - "cocoa", - "core-graphics", - "drm", - "fastrand 2.0.1", + "cfg_aliases", + "cocoa 0.25.0", + "core-graphics 0.23.1", "foreign-types", "js-sys", "log", - "memmap2", "objc", - "raw-window-handle 0.6.0", + "raw-window-handle", "redox_syscall", - "rustix 0.38.31", - "tiny-xlib", "wasm-bindgen", - "wayland-backend", - "wayland-client", "wayland-sys", "web-sys", "windows-sys 0.52.0", - "x11rb", ] [[package]] @@ -3348,21 +2893,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "state" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" -dependencies = [ - "loom", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "string_cache" version = "0.8.7" @@ -3397,11 +2927,11 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "swift-rs" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" dependencies = [ - "base64", + "base64 0.21.7", "serde", "serde_json", ] @@ -3430,29 +2960,11 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "futures-core", ] [[package]] @@ -3462,7 +2974,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331" dependencies = [ "cfg-expr", - "heck", + "heck 0.4.1", "pkg-config", "toml 0.8.2", "version-compare", @@ -3470,21 +2982,21 @@ dependencies = [ [[package]] name = "tao" -version = "0.25.0" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa7ba6ee5b8908ba3a62e6a4f3683490ed732fca614cdd3f4c989bba548f9a9" +checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751" dependencies = [ - "bitflags 1.3.2", - "cc", - "cocoa", - "core-foundation", - "core-graphics", + "bitflags 2.6.0", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "crossbeam-channel", "dispatch", + "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", - "image", "instant", "jni", "lazy_static", @@ -3496,17 +3008,15 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "png", - "raw-window-handle 0.6.0", + "raw-window-handle", "scopeguard", "tao-macros", "unicode-segmentation", "url", - "windows 0.52.0", - "windows-implement", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", - "zbus", ] [[package]] @@ -3528,36 +3038,37 @@ checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" [[package]] name = "tauri" -version = "2.0.0-beta.3" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66497d130e3fb9889d738a3cffe1134a42ac1ce2177eca7fa0574a411000afde" +checksum = "5920aad0804ea5e86808d4b6e8753d3bcbae7efc8f4e41a4da00b45427559868" dependencies = [ "anyhow", "bytes", - "cocoa", - "dirs-next", + "dirs", + "dunce", "embed_plist", "futures-util", "getrandom 0.2.12", "glob", "gtk", - "heck", + "heck 0.5.0", "http", "jni", "libc", "log", "mime", "muda", - "objc", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", - "raw-window-handle 0.6.0", + "plist", + "raw-window-handle", "reqwest", "serde", "serde_json", "serde_repr", "serialize-to-javascript", - "state", - "static_assertions", "swift-rs", "tauri-build", "tauri-macros", @@ -3568,23 +3079,24 @@ dependencies = [ "tokio", "tray-icon", "url", + "urlpattern", "webkit2gtk", "webview2-com", "window-vibrancy", - "windows 0.52.0", + "windows", ] [[package]] name = "tauri-build" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2932ca516808980f551fae4eb54009fd743648966ba4ce06a54f231cedefa2a0" +checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7" dependencies = [ "anyhow", "cargo_toml", - "dirs-next", + "dirs", "glob", - "heck", + "heck 0.5.0", "json-patch", "schemars", "semver", @@ -3598,11 +3110,11 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f02a9d089133557849d11dfc30ad4be675ee05a4c191b7321da1e8d8dabd634" +checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e" dependencies = [ - "base64", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -3625,11 +3137,11 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115afb62760852e70cd25633008c761999527d8e38352f335761dfb9c8f735dc" +checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.50", @@ -3639,56 +3151,60 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014f1f9253ceaa503f5e07c1ca5d06271241090517b545c00cc6afb96a3d218e" +checksum = "af12ad1af974b274ef1d32a94e6eba27a312b429ef28fcb98abc710df7f9151d" dependencies = [ + "dpi", "gtk", "http", "jni", - "raw-window-handle 0.6.0", + "raw-window-handle", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "windows 0.52.0", + "windows", ] [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e117db5f0f3b2f233063805d71459b096711fe803cabd32f19c6f5cf15b6d7ab" +checksum = "e45e88aa0b11b302d836e6ea3e507a6359044c4a8bc86b865ba99868c695753d" dependencies = [ - "cocoa", "gtk", "http", "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", - "raw-window-handle 0.6.0", + "raw-window-handle", "softbuffer", "tao", "tauri-runtime", "tauri-utils", + "url", "webkit2gtk", "webview2-com", - "windows 0.52.0", + "windows", "wry", ] [[package]] name = "tauri-utils" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbd83e66dab28c32a35e44ea71c02da16aca2259731b8b25d4c9476613f1681" +checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045" dependencies = [ "brotli", "cargo_metadata", "ctor", "dunce", "glob", - "heck", "html5ever", "infer", "json-patch", @@ -3698,15 +3214,19 @@ dependencies = [ "phf 0.11.2", "proc-macro2", "quote", + "regex", "schemars", "semver", "serde", + "serde-untagged", "serde_json", "serde_with", "swift-rs", "thiserror", "toml 0.8.2", "url", + "urlpattern", + "uuid", "walkdir", ] @@ -3720,18 +3240,6 @@ dependencies = [ "toml 0.7.8", ] -[[package]] -name = "tempfile" -version = "3.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" -dependencies = [ - "cfg-if", - "fastrand 2.0.1", - "rustix 0.38.31", - "windows-sys 0.52.0", -] - [[package]] name = "tendril" version = "0.4.3" @@ -3810,18 +3318,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tiny-xlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" -dependencies = [ - "as-raw-xcb-connection", - "ctor", - "libloading 0.8.1", - "tracing", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -3849,7 +3345,7 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", - "socket2 0.5.5", + "socket2", "windows-sys 0.48.0", ] @@ -3939,21 +3435,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "pin-project-lite", - "tracing-attributes", "tracing-core", ] -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.50", -] - [[package]] name = "tracing-core" version = "0.1.32" @@ -3974,62 +3458,36 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-subscriber" version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", "sharded-slab", - "smallvec", "thread_local", - "tracing", "tracing-core", - "tracing-log", ] [[package]] name = "tray-icon" -version = "0.11.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4d9ddd4a7c0f3b6862af1c4911b529a49db4ee89310d3a258859c2f5053fdd" +checksum = "533fc2d4105e0e3d96ce1c71f2d308c9fbbe2ef9c587cab63dd627ab5bde218f" dependencies = [ - "cocoa", - "core-graphics", + "core-graphics 0.24.0", "crossbeam-channel", - "dirs-next", + "dirs", "libappindicator", "muda", - "objc", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", "png", "serde", "thiserror", - "windows-sys 0.52.0", -] - -[[package]] -name = "treediff" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" -dependencies = [ - "serde_json", + "windows-sys 0.59.0", ] [[package]] @@ -4038,6 +3496,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + [[package]] name = "typenum" version = "1.17.0" @@ -4045,14 +3509,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] -name = "uds_windows" -version = "1.1.0" +name = "unic-char-property" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" dependencies = [ - "memoffset 0.9.0", - "tempfile", - "winapi", + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", ] [[package]] @@ -4094,6 +3588,18 @@ dependencies = [ "serde", ] +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + [[package]] name = "utf-8" version = "0.7.6" @@ -4107,6 +3613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom 0.2.12", + "serde", ] [[package]] @@ -4147,12 +3654,6 @@ dependencies = [ "libc", ] -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" - [[package]] name = "walkdir" version = "2.4.0" @@ -4263,43 +3764,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" -dependencies = [ - "cc", - "downcast-rs", - "rustix 0.38.31", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" -dependencies = [ - "bitflags 2.4.2", - "rustix 0.38.31", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" -dependencies = [ - "proc-macro2", - "quick-xml", - "quote", -] - [[package]] name = "wayland-sys" version = "0.31.1" @@ -4308,7 +3772,6 @@ checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" dependencies = [ "dlib", "log", - "once_cell", "pkg-config", ] @@ -4368,23 +3831,23 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.28.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.52.0", - "windows-core", + "windows", + "windows-core 0.58.0", "windows-implement", "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", @@ -4393,13 +3856,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.28.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ "thiserror", - "windows 0.52.0", - "windows-core", + "windows", + "windows-core 0.58.0", ] [[package]] @@ -4439,32 +3902,21 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ - "cocoa", + "cocoa 0.25.0", "objc", - "raw-window-handle 0.6.0", + "raw-window-handle", "windows-sys 0.52.0", "windows-version", ] [[package]] name = "windows" -version = "0.48.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core", - "windows-implement", - "windows-interface", - "windows-targets 0.52.0", + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] @@ -4473,14 +3925,27 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", @@ -4489,15 +3954,45 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", "syn 2.0.50", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -4522,7 +4017,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4557,17 +4061,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4576,7 +4081,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75aa004c988e080ad34aff5739c39d0312f4684699d6d71fc8a198d057b8b9b4" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -4593,9 +4098,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4611,9 +4116,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4629,9 +4134,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4647,9 +4158,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4665,9 +4176,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4683,9 +4194,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4701,9 +4212,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -4714,16 +4225,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.51.0" @@ -4736,16 +4237,16 @@ dependencies = [ [[package]] name = "wry" -version = "0.36.0" +version = "0.44.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9e7b81968555303086ef882a0c213896a76099de4ed0b86a798775c2d54304" +checksum = "440600584cfbd8b0d28eace95c1f2c253db05dae43780b79380aa1e868f04c73" dependencies = [ - "base64", + "base64 0.22.1", "block", - "cfg_aliases 0.1.1", - "cocoa", - "core-graphics", + "cocoa 0.26.0", + "core-graphics 0.24.0", "crossbeam-channel", + "dpi", "dunce", "gdkx11", "gtk", @@ -4755,26 +4256,21 @@ dependencies = [ "jni", "kuchikiki", "libc", - "log", "ndk", - "ndk-context", - "ndk-sys", "objc", "objc_id", "once_cell", - "raw-window-handle 0.6.0", - "serde", - "serde_json", + "percent-encoding", + "raw-window-handle", "sha2", "soup3", "tao-macros", "thiserror", - "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.52.0", - "windows-implement", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", ] @@ -4799,138 +4295,3 @@ dependencies = [ "once_cell", "pkg-config", ] - -[[package]] -name = "x11rb" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" -dependencies = [ - "as-raw-xcb-connection", - "gethostname", - "libc", - "libloading 0.8.1", - "once_cell", - "rustix 0.38.31", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" - -[[package]] -name = "xdg-home" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "zbus" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c45d06ae3b0f9ba1fb2671268b975557d8f5a84bb5ec6e43964f87e763d8bca8" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io 1.13.0", - "async-lock 2.8.0", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "byteorder", - "derivative", - "enumflags2", - "event-listener 2.5.3", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix", - "once_cell", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "winapi", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a1ba45ed0ad344b85a2bb5a1fe9830aed23d67812ea39a586e7d0136439c7d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "regex", - "syn 1.0.109", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - -[[package]] -name = "zvariant" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" -dependencies = [ - "byteorder", - "enumflags2", - "libc", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "3.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] diff --git a/front/tauri/Cargo.toml b/front/tauri/Cargo.toml index 1a73bf99f..8cd2ce99a 100644 --- a/front/tauri/Cargo.toml +++ b/front/tauri/Cargo.toml @@ -16,12 +16,12 @@ name = "funkwhale_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] -tauri-build = { version = "2.0.0-beta", features = [] } +tauri-build = { version = "2.0.1", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "2.0.0-beta", features = [] } +tauri = { version = "2.0.2", features = [] } color-eyre = "0.6.2" [features] diff --git a/front/tauri/capabilities/migrated.json b/front/tauri/capabilities/migrated.json index 4abe92575..d489ea67d 100644 --- a/front/tauri/capabilities/migrated.json +++ b/front/tauri/capabilities/migrated.json @@ -4,13 +4,13 @@ "context": "local", "windows": ["main", "oauth"], "permissions": [ - "path:default", - "event:default", - "window:default", - "app:default", - "resources:default", - "menu:default", - "tray:default" + "core:path:default", + "core:event:default", + "core:window:default", + "core:app:default", + "core:resources:default", + "core:menu:default", + "core:tray:default" ], "platforms": ["linux", "macOS", "windows", "android", "iOS"] } diff --git a/front/tauri/capabilities/oauth.json b/front/tauri/capabilities/oauth.json index ac8ea9e66..31678cc9e 100644 --- a/front/tauri/capabilities/oauth.json +++ b/front/tauri/capabilities/oauth.json @@ -3,6 +3,9 @@ "description": "permissions that required for OAuth2 login window", "context": "local", "windows": ["main"], - "permissions": ["webview:allow-create-webview-window", "window:allow-close"], + "permissions": [ + "core:webview:allow-create-webview-window", + "core:window:allow-close" + ], "platforms": ["linux", "macOS", "windows", "android", "iOS"] } diff --git a/front/tauri/rust-toolchain.toml b/front/tauri/rust-toolchain.toml index 92ebe6655..826e05129 100644 --- a/front/tauri/rust-toolchain.toml +++ b/front/tauri/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] profile = "minimal" -channel = "1.71.0" +channel = "1.80.1" components = ["rust-src", "rust-analyzer", "clippy"] diff --git a/front/yarn.lock b/front/yarn.lock index d8d048d06..3abb1c9a4 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -3017,71 +3017,71 @@ resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-2.0.0-beta.1.tgz#8f033495632c5d8b2abeab820d4a2efe4e4a9b32" integrity sha512-Zok1HA5s38E951CD2Osg7qi1/NlT7K1zOK6/nf5t/SKkoRT8KPrPZlJ4zBOImLQpHdaLtEANjcjBfYcbM2noxQ== -"@tauri-apps/cli-darwin-arm64@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.0.0-beta.2.tgz#1a1b289ffda7b0c7fdfe703283f0de0284a3d239" - integrity sha512-bAchrSNhFlj1U1rBZ3WJYQU5urN9bpaHlSW8UnTEkkDK0bwcLQyf+AYtRFCy8mWHq6n1RhXxVa6nbTg4DZl7RA== +"@tauri-apps/cli-darwin-arm64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.0.2.tgz#5a078381ce0e9e83a710fa5ae812c8709ca993cc" + integrity sha512-B+/a8Q6wAqmB4A4HVeK0oQP5TdQGKW60ZLOI9O2ktH2HPr9ETr3XkwXPuJ2uAOuGEgtRZHBgFOIgG000vMnKlg== -"@tauri-apps/cli-darwin-x64@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.0.0-beta.2.tgz#031690c6c85015753ff379f93305444c1586fccc" - integrity sha512-29Zn0GXIID1fQ8PjVBjQ/X1Ho3HcVF7a6BPYRBe1zEUfTKyrKFtHP/RD0tROw+iMh17dl3Li23aV9CCQuhfW5Q== +"@tauri-apps/cli-darwin-x64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.0.2.tgz#87db71cc8dfe2196b33cf5ab26b99a4fa3fa01ac" + integrity sha512-kaurhn6XT4gAVCPAQSSHl/CHFxTS0ljc47N7iGTSlYJ03sCWPRZeNuVa/bn6rolz9MA2JfnRnFqB1pUL6jzp9Q== -"@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.0.0-beta.2.tgz#38bc667bf964ff34bba655fc239d52194fa7e8eb" - integrity sha512-o5esvaBOn7Wr/tQz9HY9CrjeIT7/3bGO3reJk9MUOU6VpwOElGlM7bl7U2I2z1EmZn7GUa7yG2E+p7CMDV9a3w== +"@tauri-apps/cli-linux-arm-gnueabihf@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.0.2.tgz#0ca2dc0b563028181bb0f005d3049c01a7dd904f" + integrity sha512-bVrofjlacMxmGMcqK18iBW05tsZXOd19/MnqruFFcHSVjvkGGIXHMtUbMXnZNXBPkHDsnfytNtkY9SZGfCFaBA== -"@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.0.0-beta.2.tgz#cada29cb2053e364de67bbefa6c1ca24e247d24f" - integrity sha512-YIA9OZ9+Mf3LW1iQZveUeMySvM3jgf5b0a1MUawYCcuhUJ/FFGaDiia4Z6hOO+p1d8DsswEelzzKyvlBiBJYGA== +"@tauri-apps/cli-linux-arm64-gnu@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.0.2.tgz#10c0baa2255dc476707bb06619e6a9bd8874c639" + integrity sha512-7XCBn0TTBVQGnV42dXcbHPLg/9W8kJoVzuliIozvNGyRWxfXqDbQYzpI48HUQG3LgHMabcw8+pVZAfGhevLrCA== -"@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.0-beta.2.tgz#84595a256c3de1f33ad603f4740ee3449839e811" - integrity sha512-UNminCTRybPkb9BNyAPo8v4bJ45q9anaIisw7PfGXeuDeHMc2W/fjLlQXipsijMvQ7lakUAjO3ttEM6ctOYJiQ== +"@tauri-apps/cli-linux-arm64-musl@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.2.tgz#6636e383dae70eabf9f6dd22470ad2edb9776d87" + integrity sha512-1xi2SreGVlpAL68MCsDUY63rdItUdPZreXIAcOVqvUehcJRYOa1XGSBhrV0YXRgZeh0AtKC19z6PRzcv4rosZA== -"@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.0.0-beta.2.tgz#7e8edf156088600916806f0441a79028557e2477" - integrity sha512-o0eStDWpKkPdEsbbn98kiA/lOo4vBXnjFrov16lq88h2OThJS7idhSUqBRgqYpsIENMrvjtPJLutBkF9fuTOsw== +"@tauri-apps/cli-linux-x64-gnu@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.0.2.tgz#925e7714ad72eff67b42ed25a781b9f13262c296" + integrity sha512-WVjwYzPWFqZVg1fx6KSU5w47Q0VbMyaCp34qs5EcS8EIU0/RnofdzqUoOYqvgGVgNgoz7Pj5dXK2SkS8BHXMmA== -"@tauri-apps/cli-linux-x64-musl@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.0-beta.2.tgz#125f8366cdcf9c992bd35026926730586d9d3a23" - integrity sha512-zUhyeIBqIQJ9oy04kNffz7QxxXw32/0l+EEPCwFfhhCQq7y6k34G/br/yjHXXYdNytNn4kYcjwjzXnohUYTu3w== +"@tauri-apps/cli-linux-x64-musl@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.2.tgz#7e706660196c5db7ea821ceec7e315706f73cb5e" + integrity sha512-h5miE2mctgaQNn/BbG9o1pnJcrx+VGBi2A6JFqGu934lFgSV5+s28M8Gc8AF2JgFH4hQV4IuMkeSw8Chu5Dodg== -"@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.0.0-beta.2.tgz#a1fecd90cbb6c8877537db5ad2ead34677074cfc" - integrity sha512-YIq7LsgSeUgSbwVDbwZBHzM9/gxWlcIxwMTgmwfSCszZmrzFfxP7JgzVG0VnK1N8UYymunWd9WIX9uUT3XhetQ== +"@tauri-apps/cli-win32-arm64-msvc@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.0.2.tgz#aaee06d53f5d42afe8bf994e42cf5679c9e1ebd3" + integrity sha512-2b8oO0+dYonahG5PfA/zoq0zlafLclfmXgqoWDZ++UiPtQHJNpNeEQ8GWbSFKGHQ494Jo6jHvazOojGRE1kqAg== -"@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.0.0-beta.2.tgz#1115a1b531b18f306f94f763da3fa17baa532073" - integrity sha512-i2p7OS4R9Tq0EQbjU8VldWNLPXuzbWCsDJe78/pCU0nV1OTjjxXv0tzR8d5R2VElC8eOMGnfZr7mRMrKGcZoHQ== +"@tauri-apps/cli-win32-ia32-msvc@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.0.2.tgz#ec6d8eef16d024eeae2ce4e3422b8a51f419e661" + integrity sha512-axgICLunFi0To3EibdCBgbST5RocsSmtM4c04+CbcX8WQQosJ9ziWlCSrrOTRr+gJERAMSvEyVUS98f6bWMw9A== -"@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.0.0-beta.2.tgz#20435b171c08f0af87318173422e0040a222fe3b" - integrity sha512-5FYOA/u4xyj1Q/NKvFEEywPsUwBeLEarN/08+5JIjk7xmEIPylaxYxFnfSH0QZiLBDZAFbGIAWt0MRi97eNN5A== +"@tauri-apps/cli-win32-x64-msvc@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.0.2.tgz#bb5d011a0d44297f148c654c05b93a71cebacaa1" + integrity sha512-JR17cM6+DyExZRgpXr2/DdqvcFYi/EKvQt8dI5R1/uQoesWd8jeNnrU7c1FG1Zmw9+pTzDztsNqEKsrNq2sNIg== -"@tauri-apps/cli@2.0.0-beta.2": - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-2.0.0-beta.2.tgz#f949aad7f47691ff1db4fc83a3ab96003bf552ee" - integrity sha512-sc5fz1MEqncn8trOaUGn9DeZy7ND3QnGEb3lCPgghjifzceN/UZe69fDUN1N24iJxOhKs5Y2UI1uYK5em8GOGQ== +"@tauri-apps/cli@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-2.0.2.tgz#908629846f6edb1622a480f69a9469b3b9b7110e" + integrity sha512-R4ontHZvXORArERAHIidp5zRfZEshZczTiK+poslBv7AGKpQZoMw+E49zns7mOmP64i2Cq9Ci0pJvi4Rm8Okzw== optionalDependencies: - "@tauri-apps/cli-darwin-arm64" "2.0.0-beta.2" - "@tauri-apps/cli-darwin-x64" "2.0.0-beta.2" - "@tauri-apps/cli-linux-arm-gnueabihf" "2.0.0-beta.2" - "@tauri-apps/cli-linux-arm64-gnu" "2.0.0-beta.2" - "@tauri-apps/cli-linux-arm64-musl" "2.0.0-beta.2" - "@tauri-apps/cli-linux-x64-gnu" "2.0.0-beta.2" - "@tauri-apps/cli-linux-x64-musl" "2.0.0-beta.2" - "@tauri-apps/cli-win32-arm64-msvc" "2.0.0-beta.2" - "@tauri-apps/cli-win32-ia32-msvc" "2.0.0-beta.2" - "@tauri-apps/cli-win32-x64-msvc" "2.0.0-beta.2" + "@tauri-apps/cli-darwin-arm64" "2.0.2" + "@tauri-apps/cli-darwin-x64" "2.0.2" + "@tauri-apps/cli-linux-arm-gnueabihf" "2.0.2" + "@tauri-apps/cli-linux-arm64-gnu" "2.0.2" + "@tauri-apps/cli-linux-arm64-musl" "2.0.2" + "@tauri-apps/cli-linux-x64-gnu" "2.0.2" + "@tauri-apps/cli-linux-x64-musl" "2.0.2" + "@tauri-apps/cli-win32-arm64-msvc" "2.0.2" + "@tauri-apps/cli-win32-ia32-msvc" "2.0.2" + "@tauri-apps/cli-win32-x64-msvc" "2.0.2" "@tokenizer/token@^0.3.0": version "0.3.0" diff --git a/scripts/poetry.lock b/scripts/poetry.lock index 5623ad25a..11aac1929 100644 --- a/scripts/poetry.lock +++ b/scripts/poetry.lock @@ -1,12 +1,13 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -16,9 +17,10 @@ files = [ name = "exceptiongroup" version = "1.1.1" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, @@ -31,9 +33,9 @@ test = ["pytest (>=6)"] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -43,9 +45,9 @@ files = [ name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -55,9 +57,9 @@ files = [ name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, @@ -71,9 +73,9 @@ testing = ["pytest", "pytest-benchmark"] name = "pytest" version = "7.3.1" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, @@ -94,15 +96,16 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] [metadata] -lock-version = "2.0" -python-versions = "^3.8" -content-hash = "ec0e08e7f3e649acf4291ade9f3e194a289be464756ef17fdba0f515a6b16bf0" +lock-version = "2.1" +python-versions = "^3.10" +content-hash = "d605b6373f534059ac43e57145916ece15eecd5826cf2fbd3db4d61b03625f8a" diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml index 32a206113..1c57a448b 100644 --- a/scripts/pyproject.toml +++ b/scripts/pyproject.toml @@ -4,9 +4,10 @@ version = "0.0.0" description = "Funkwhale Scripts" authors = ["Funkwhale Collective"] license = "AGPL-3.0-only" +package-mode = false [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" [tool.poetry.group.dev.dependencies] pytest = "7.3.1" diff --git a/scripts/releases.py b/scripts/releases.py index fe9abb6f1..16fbba02d 100755 --- a/scripts/releases.py +++ b/scripts/releases.py @@ -26,8 +26,8 @@ def get_releases() -> List[Dict[str, str]]: ], text=True, ) - result = [] + for line in output.splitlines(): date, _, ref = line.partition("|") try: