From d3669cfba6dc05a27197312b91d178392e4b7cb8 Mon Sep 17 00:00:00 2001 From: Domenico DiNicola Date: Thu, 9 Jan 2025 06:56:17 -0600 Subject: [PATCH] coverage --- .gitignore | 5 +- .pre-commit-config.yaml | 17 + pyproject.toml | 11 +- ruff.toml | 2 +- src/unicef_security/admin.py | 26 +- src/unicef_security/graph.py | 42 +- tests/.coveragerc | 2 +- tests/conftest.py | 11 +- tests/demoproject/demo/settings.py | 4 +- tests/test_admin.py | 62 ++- tests/test_admin_smoke.py | 20 +- tests/test_graph.py | 180 +++++++ tests/vcr_cassettes/_test_user_data.yml | 94 ---- tests/vcr_cassettes/fetch_users.yaml | 88 ++++ .../vcr_cassettes/filter_users_by_email.yaml | 88 ++++ tests/vcr_cassettes/get_unicef_user.yaml | 88 ++++ tests/vcr_cassettes/get_user.yaml | 88 ++++ tests/vcr_cassettes/load_business_area.yml | 100 ---- tests/vcr_cassettes/load_region.yml | 100 ---- tests/vcr_cassettes/search_users.yaml | 88 ++++ tests/vcr_cassettes/sync_user.yaml | 88 ++++ tests/vcr_cassettes/synchronizer.yaml | 132 +++++ uv.lock | 469 +++++++++--------- 23 files changed, 1232 insertions(+), 573 deletions(-) create mode 100644 tests/test_graph.py delete mode 100644 tests/vcr_cassettes/_test_user_data.yml create mode 100644 tests/vcr_cassettes/fetch_users.yaml create mode 100644 tests/vcr_cassettes/filter_users_by_email.yaml create mode 100644 tests/vcr_cassettes/get_unicef_user.yaml create mode 100644 tests/vcr_cassettes/get_user.yaml delete mode 100644 tests/vcr_cassettes/load_business_area.yml delete mode 100644 tests/vcr_cassettes/load_region.yml create mode 100644 tests/vcr_cassettes/search_users.yaml create mode 100644 tests/vcr_cassettes/sync_user.yaml create mode 100644 tests/vcr_cassettes/synchronizer.yaml diff --git a/.gitignore b/.gitignore index 26ffd9d..e2b5b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,5 @@ docs/_build/ .pytest_cache coverage.xml -Pipfile -Pipfile.lock -celerybeat.pid \ No newline at end of file +celerybeat.pid +.cache diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 33b81f3..6693d70 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,3 +11,20 @@ repos: - id: ruff-format args: - --check + - repo: https://github.com/adamchainz/djade-pre-commit + rev: 1.3.2 + hooks: + - id: djade + args: + - --target-version + - '5.1' +# - repo: https://github.com/saxix/pch +# rev: v0.1 +# hooks: +# - id: check-missed-migrations +# args: +# - src +# stages: +# - pre-commit +# additional_dependencies: +# - setuptools diff --git a/pyproject.toml b/pyproject.toml index 53f1f1f..5676a38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,6 @@ classifiers = [ "Framework :: Django", "Framework :: Django :: 3.2", "Framework :: Django :: 4.2", - "Framework :: Django :: 5.0", "Framework :: Django :: 5.1", "Intended Audience :: Developers", "Programming Language :: Python :: 3.11", @@ -56,3 +55,13 @@ dev-dependencies = [ [project.urls] Homepage = "https://github.com/unicef/unicef-security" + + +[uv] +package = true + +[tool.nitpick] + style = [ + "github://unicef/hope-code-conventions@main/django/django.toml" + ] + cache = "1 day" diff --git a/ruff.toml b/ruff.toml index f0bdf4a..6a0f5ac 100644 --- a/ruff.toml +++ b/ruff.toml @@ -55,7 +55,7 @@ ignore = [ "D106", # Missing docstring in public nested class "D107", # Missing docstring in `__init__` "D203", # one-blank-line-before-class -# "D212", # multi-line-summary-first-line + "D212", # multi-line-summary-first-line "D213", # multi-line-summary-second-line "E731", # lambda-assignment: lambdas are substential in maintenance of py2/3 codebase "ISC001", # conflicts with ruff format command diff --git a/src/unicef_security/admin.py b/src/unicef_security/admin.py index c799198..0372b62 100644 --- a/src/unicef_security/admin.py +++ b/src/unicef_security/admin.py @@ -18,7 +18,7 @@ logger = logging.getLogger(__name__) -def is_superuser(request, *args, **kwargs): +def is_superuser(request, *args, **kwargs): # pragma: no cover return request.user.is_superuser @@ -31,10 +31,20 @@ class UNICEFUserFilter(SimpleListFilter): parameter_name = "email" def lookups(self, request, model_admin): - return [ - ("unicef", "UNICEF"), - ("external", "External"), - ] + return ( + ( + "unicef", + _( + "UNICEF", + ), + ), + ( + "external", + _( + "External", + ), + ), + ) def queryset(self, request, queryset): if self.value() == "unicef": @@ -114,7 +124,7 @@ def sync_user(self, request, pk): try: synchronizer = Synchronizer() synchronizer.sync_user(obj) - except ValueError as e: + except ValueError as e: # pragma: no cover self.message_user(request, str(e), messages.ERROR) self.message_user(request, "User synchronized") @@ -147,7 +157,7 @@ def link_user_data(self, request, pk): ctx["data"] = data return TemplateResponse(request, "admin/link_user.html", ctx) - except ValueError as e: + except ValueError as e: # pragma: no cover self.message_user(request, str(e), messages.ERROR) @button() @@ -190,7 +200,7 @@ def ad(self, request, pk): try: synchronizer = Synchronizer() context = synchronizer.get_user(obj.username) - except ValueError as e: + except ValueError as e: # pragma: no cover self.message_user(request, str(e), messages.ERROR) return TemplateResponse(request, "admin/ad.html", {"ctx": context, "opts": self.model._meta}) diff --git a/src/unicef_security/graph.py b/src/unicef_security/graph.py index d2833d2..91dd0cc 100644 --- a/src/unicef_security/graph.py +++ b/src/unicef_security/graph.py @@ -39,7 +39,7 @@ def default_group(**kwargs): user.is_staff = True user.is_superuser = True user.save() - elif group_name := constance.get("DEFAULT_GROUP"): + elif group_name := constance.DEFAULT_GROUP: group = Group.objects.filter(name=group_name).first() if group: user.groups.add(group) @@ -70,7 +70,7 @@ def get_unicef_user(backend, details, response, *args, **kwargs): for k, v in data.items(): details[k] = v - except (ValueError, KeyError) as e: + except (ValueError, KeyError) as e: # pragma: no cover logger.error(e) user, created = User.objects.get_or_create( @@ -84,7 +84,7 @@ def get_unicef_user(backend, details, response, *args, **kwargs): "azure_id": details.get("id"), }, ) - social, __ = UserSocialAuth.objects.get_or_create(user=user, provider=backend.name, uid=user.username) + social, _ = UserSocialAuth.objects.get_or_create(user=user, provider=backend.name, uid=user.username) user.social_user = social return {"user": user, "social": social, "uid": details.get("id"), "is_new": created} @@ -147,7 +147,7 @@ def __init__(self, user_model=None, mapping=None, echo=None, identifier=None, se self.echo = echo or (lambda lmn: True) def get_token(self): - if not self.id and self.secret: + if not self.id and self.secret: # pragma: no cover raise ValueError("Configure AZURE_CLIENT_ID and/or AZURE_CLIENT_SECRET") post_dict = { "grant_type": "client_credentials", @@ -175,18 +175,18 @@ def get_page(self, url, single=False): headers = {"Authorization": f"Bearer {self.get_token()}"} try: response = requests.get(url, headers=headers, timeout=60) - if response.status_code == 401: + if response.status_code == 401: # pragma: no cover data = response.json() if data["error"]["message"] == "Access token has expired.": continue raise ConnectionError(f"400: Error processing the response {response.content}") - if response.status_code != 200: + if response.status_code != 200: # pragma: no cover raise ConnectionError( - f"Code {response.status_code}. " f"Error processing the response {response.content}" + f"Code {response.status_code}. Error processing the response {response.content}" ) break - except ConnectionError as e: + except ConnectionError as e: # pragma: no cover logger.exception(e) raise @@ -210,9 +210,7 @@ def __iter__(self): values = self.get_page(self.next_link) logger.debug(f"fetched page {pages}") pages += 1 - except KeyboardInterrupt: - break - except BaseException as e: + except GeneratorExit as e: logger.exception(e) break @@ -221,19 +219,23 @@ def get_record(self, user_info: dict) -> (dict, dict): pk = {fieldname: data.pop(fieldname) for fieldname in self.user_pk_fields} return pk, data - def fetch_users(self, filter_params, callback=None): + def fetch_users(self, filter_params, max_records=None, callback=None): self.startUrl = "%s?$filter=%s" % (self._baseurl, filter_params) - return self.synchronize(callback=callback) + return self.synchronize(max_records=max_records, callback=callback) def search_users(self, record): url = "%s?$filter=" % self._baseurl filters = [] - if record.email: - filters.append("mail eq '%s'" % record.email) - if record.last_name: - filters.append("surname eq '%s'" % record.last_name) - if record.first_name: - filters.append("givenName eq '%s'" % record.first_name) + field_map = { + "email": "mail eq '{value}'", + "last_name": "surname eq '{value}'", + "first_name": "givenName eq '{value}'", + } + + for field, filter_template in field_map.items(): + value = getattr(record, field, None) + if value: + filters.append(filter_template.format(value=value)) page = self.get_page(url + " or ".join(filters), single=True) return page["value"] @@ -284,7 +286,7 @@ def synchronize(self, max_records=None, callback=None): results.log(user_info) if max_records and i > max_records: break - except BaseException as e: + except BaseException as e: # pragma: no cover logger.exception(e) raise logger.debug(f"End Azure user synchronization: {results}") diff --git a/tests/.coveragerc b/tests/.coveragerc index b53fae9..01a7e7d 100644 --- a/tests/.coveragerc +++ b/tests/.coveragerc @@ -4,7 +4,7 @@ source = unicef_security omit = *migrations* [report] -fail_under = 20 +fail_under = 90 ignore_errors = True exclude_lines = pragma: no cover diff --git a/tests/conftest.py b/tests/conftest.py index d18d193..13f1d11 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ import pytest -from .factories import UserFactory +from .factories import UserFactory, SuperUserFactory @pytest.fixture @@ -14,3 +14,12 @@ def mocked_responses(): @pytest.fixture def auth_user(): return UserFactory() + + +@pytest.fixture +def app(django_app_factory, mocked_responses): + django_app = django_app_factory(csrf_checks=False) + admin_user = SuperUserFactory(username="superuser") + django_app.set_user(admin_user) + django_app._user = admin_user + return django_app diff --git a/tests/demoproject/demo/settings.py b/tests/demoproject/demo/settings.py index 3145229..9cc7d64 100644 --- a/tests/demoproject/demo/settings.py +++ b/tests/demoproject/demo/settings.py @@ -90,9 +90,11 @@ AUTH_USER_MODEL = "demo.User" CONSTANCE_CONFIG = { - "DEFAULT_GROUP": ("", "test_grp"), + "DEFAULT_GROUP": ("test_grp", "Test Group"), } CONSTANCE_BACKEND = "constance.backends.database.DatabaseBackend" LOGOUT_URL = "/" + +ADMINS = (("Me", "ddinicola@unicef.org"),) diff --git a/tests/test_admin.py b/tests/test_admin.py index 8cbf95a..71c516c 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -1,7 +1,63 @@ from django.urls import reverse +from mock import patch +import pytest +from demo.admin import UserPlus +from demo.models import User +from unicef_security.admin import UNICEFUserFilter +from .factories import UserFactory -def test_changelist(django_app, admin_user): - url = reverse("admin:demo_user_changelist") - res = django_app.get(url, user=admin_user) + +@pytest.mark.django_db +@patch("unicef_security.admin.Synchronizer.get_token") +@patch("unicef_security.admin.Synchronizer.get_user") +@patch("unicef_security.admin.Synchronizer.sync_user") +@patch("unicef_security.admin.Synchronizer.search_users") +def test_link_user_data(patch1, patch2, patch3, patch4, app): + user = UserFactory() + url = reverse("admin:demo_user_link_user_data", args=[user.pk]) + res = app.post(url) + assert res.status_code == 200 + + +@pytest.mark.django_db +@patch("unicef_security.admin.Synchronizer.get_token") +@patch("unicef_security.admin.Synchronizer.fetch_users") +def test_link_load(patch1, patch2, app): + url = reverse("admin:demo_user_load") + res = app.post(url) assert res.status_code == 200 + + +@pytest.mark.django_db +def test_unicef_admin_filter(): + UserFactory(email="test@unicef.org", username="test@unicef.org") + UserFactory(email="test@external.com", username="test@external.com") + qs = User.objects.all() + assert qs.count() == 2 + + filters = UNICEFUserFilter( + None, + { + "email": [ + "unicef", + ] + }, + User, + UserPlus, + ) + unicef_records = filters.queryset(None, qs) + assert unicef_records.count() == 1 + + filters = UNICEFUserFilter( + None, + { + "email": [ + "external", + ] + }, + User, + UserPlus, + ) + external_records = filters.queryset(None, qs) + assert external_records.count() == 1 diff --git a/tests/test_admin_smoke.py b/tests/test_admin_smoke.py index 913810e..1c5cb77 100644 --- a/tests/test_admin_smoke.py +++ b/tests/test_admin_smoke.py @@ -11,7 +11,7 @@ import pytest from unittest.mock import Mock -from .factories import SuperUserFactory +from mock import patch if TYPE_CHECKING: from django.db.models.options import Options @@ -112,15 +112,6 @@ def record(db, request): return instance -@pytest.fixture -def app(django_app_factory, mocked_responses): - django_app = django_app_factory(csrf_checks=False) - admin_user = SuperUserFactory(username="superuser") - django_app.set_user(admin_user) - django_app._user = admin_user - return django_app - - def test_admin_index(app): url = reverse("admin:index") @@ -144,7 +135,7 @@ def test_admin_changelist(app, modeladmin, record): def show_error(res): errors = [] for k, v in dict(res.context["adminform"].form.errors).items(): - errors.append(f'{k}: {"".join(v)}') + errors.append(f"{k}: {''.join(v)}") return (f"Form submitting failed: {res.status_code}: {errors}",) @@ -185,8 +176,11 @@ def test_admin_delete(app, modeladmin, record, monkeypatch): pytest.skip("No 'delete' permission") -@pytest.mark.skip_buttons("demo.UserPlus:link_user_data", "demo.UserPlus:sync_user", "demo.UserPlus:ad") -def test_admin_buttons(app, modeladmin, button_handler, record, monkeypatch): +@patch("unicef_security.admin.Synchronizer.get_token") +@patch("unicef_security.admin.Synchronizer.get_user") +@patch("unicef_security.admin.Synchronizer.sync_user") +@patch("unicef_security.admin.Synchronizer.search_users") +def test_admin_buttons(patch1, patch2, patch3, patch4, app, modeladmin, button_handler, record, monkeypatch): from admin_extra_buttons.handlers import LinkHandler if isinstance(button_handler, ChoiceHandler): diff --git a/tests/test_graph.py b/tests/test_graph.py new file mode 100644 index 0000000..9aac922 --- /dev/null +++ b/tests/test_graph.py @@ -0,0 +1,180 @@ +from social_django.utils import load_strategy, load_backend + +from demo.models import User +from .factories import GroupFactory, UserFactory +from unicef_security.graph import Synchronizer, get_unicef_user, default_group +import responses +import pytest +from constance import config as constance + + +@pytest.fixture +def strategy(): + return load_strategy() + + +@pytest.fixture +def backend(strategy): + return load_backend(strategy=strategy, name="azuread-b2c-oauth2", redirect_uri="/") + + +def get_response(email): + return { + "id_token": "token", + "token_type": "Bearer", + "not_before": 1607541825, + "id_token_expires_in": 3600, + "profile_info": "profile_info", + "scope": "openid", + "access_token": "access_token", + "exp": 1607545425, + "nbf": 1607541825, + "ver": "1.0", + "iss": "https://tenant.b2clogin.com/1234567890/v2.0/", + "sub": "abcdefgh", + "aud": "abcdefgh", + "acr": "b2c_1a_unicef_social_signup_signin", + "iat": 1607541825, + "auth_time": 1607541824, + "given_name": "Given", + "family_name": "Family", + "name": "Given Family", + "idp": "UNICEF Azure AD", + "email": email, + } + + +def get_details(email): + return { + "username": "Given Family", + "email": email, + "unique_name": email, + "fullname": "Given Family", + "first_name": "Given", + "last_name": "Family", + "idp": "UNICEF Azure AD", + } + + +@responses.activate +def test_get_user(django_app): + responses._add_from_file(file_path="tests/vcr_cassettes/get_user.yaml") + synchronizer = Synchronizer() + synchronizer.get_user("ddinicola@unicef.org") + + +@pytest.mark.django_db +@responses.activate +def test_sync_user(django_app): + responses._add_from_file(file_path="tests/vcr_cassettes/sync_user.yaml") + user = UserFactory(username="ddinicola@unicef.org", azure_id="12345678-aaaa-bbbb-cccc-123456789012") + synchronizer = Synchronizer() + synchronizer.sync_user(user) + user.refresh_from_db() + assert user.first_name == "Domenico" + + +@pytest.mark.django_db +@responses.activate +def test_fetch_users(): + responses._add_from_file(file_path="tests/vcr_cassettes/fetch_users.yaml") + synchronizer = Synchronizer() + synchronizer.fetch_users("startswith(mail,'ddinicola')") + assert User.objects.get(username="ddinicola@unicef.org") + + +@pytest.mark.django_db +@responses.activate +def test_search_users(): + responses._add_from_file(file_path="tests/vcr_cassettes/search_users.yaml") + user = UserFactory(email="ddinicola@unicef.org", first_name="Domenik", last_name="Di Nicola") + synchronizer = Synchronizer() + resp = synchronizer.search_users(user) + assert len(resp) == 1 + assert resp[0]["displayName"] == "Domenico Di Nicola" + + +@responses.activate +def test_filter_users_by_email(): + responses._add_from_file(file_path="tests/vcr_cassettes/filter_users_by_email.yaml") + synchronizer = Synchronizer() + resp = synchronizer.filter_users_by_email("ddinicola@unicef.org") + assert len(resp) == 1 + assert resp[0]["displayName"] == "Domenico Di Nicola" + + +@pytest.mark.django_db +@responses.activate +def test_sync_synchronize(django_app): + responses._add_from_file(file_path="tests/vcr_cassettes/synchronizer.yaml") # cassette changed manually + assert User.objects.count() == 0 + synchronizer = Synchronizer() + synchronizer.synchronize(max_records=20) + assert User.objects.count() == 4 + + +@pytest.mark.django_db +@responses.activate +def test_resume(): + responses._add_from_file(file_path="tests/vcr_cassettes/synchronizer.yaml") # cassette changed manually + assert User.objects.count() == 0 + synchronizer = Synchronizer() + synchronizer.resume( + max_records=20, + delta_link="https://graph.microsoft.com/v1.0/users/delta_changed_manually", + ) + assert User.objects.count() == 2 + + +@pytest.mark.django_db +def test_default_group_admin(): + email = "ddinicola@unicef.org" + user = UserFactory(email=email, username=email) + GroupFactory(name=constance.DEFAULT_GROUP) + + assert not user.is_staff + assert not user.is_superuser + assert not user.groups.exists() + default_group(user=user, is_new=True) + user.refresh_from_db() + assert user.is_staff + assert user.is_superuser + assert user.groups.count() == 0 + + +@pytest.mark.django_db +def test_default_group(): + email = "simple@unicef.org" + user = UserFactory(email=email, username=email) + GroupFactory(name=constance.DEFAULT_GROUP) + + assert not user.groups.exists() + default_group(user=user, is_new=True) + user.refresh_from_db() + assert user.groups.count() == 1 + + +@pytest.mark.django_db +@responses.activate +def test_get_unicef_user(backend): + responses._add_from_file(file_path="tests/vcr_cassettes/get_unicef_user.yaml") + email = "ddinicola@unicef.org" + details = get_details(email) + response = get_response(email) + result = get_unicef_user(backend, details, response) + assert result["is_new"] + assert result["user"] + assert result["social"] + + +@pytest.mark.django_db +def test_get_unicef_user_existing(backend): + email = "ddinicola@unicef.org" + user = UserFactory(email=email, username=email) + user.social_auth.create() + details = get_details(email) + response = get_response(email) + result = get_unicef_user(backend, details, response) + assert result["user"] == user + assert result["social"] == user.social_auth.get() + assert not result["is_new"] diff --git a/tests/vcr_cassettes/_test_user_data.yml b/tests/vcr_cassettes/_test_user_data.yml deleted file mode 100644 index 6b1f1a2..0000000 --- a/tests/vcr_cassettes/_test_user_data.yml +++ /dev/null @@ -1,94 +0,0 @@ -interactions: -- request: - body: grant_type=client_credentials&client_id=d1bd79b5-29c6-472e-8f66-f2c145b6aa5d&client_secret=%2BRXS9a0%2FsNGRSjrVyCwC7D2Ve5m6TrClXW04hxRD7TY%3D&resource=https%3A%2F%2Fgraph.microsoft.com - headers: - Accept: ['*/*'] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['184'] - Content-Type: [application/x-www-form-urlencoded] - User-Agent: [python-requests/2.20.1] - method: POST - uri: https://login.microsoftonline.com/unicef.org/oauth2/token - response: - body: {string: '{"token_type":"Bearer","expires_in":"3600","ext_expires_in":"3600","expires_on":"1543868546","not_before":"1543864646","resource":"https://graph.microsoft.com","access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFDNXVuYTBFVUZnVElGOEVsYXh0V2pUaDhvNElZMzZWU1ZpdmRFUlQtdW9IRm1iSERMWnRMN1dzY3Q2dGxVelJ3Sm5PVzh3N0JmbGhiOG5fNWVIWUdNQXBiempQTFlYanA0SjFTcklyS1k2cmlBQSIsImFsZyI6IlJTMjU2IiwieDV0Ijoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIiwia2lkIjoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83NzQxMDE5NS0xNGUxLTRmYjgtOTA0Yi1hYjE4OTIwMjM2NjcvIiwiaWF0IjoxNTQzODY0NjQ2LCJuYmYiOjE1NDM4NjQ2NDYsImV4cCI6MTU0Mzg2ODU0NiwiYWlvIjoiNDJSZ1lOZ2R6MnYrMUhaZm45Y3p4dHhicFl3ZkFBPT0iLCJhcHBfZGlzcGxheW5hbWUiOiJ1bmktZnJnLWV0b29scy1kZXYiLCJhcHBpZCI6ImQxYmQ3OWI1LTI5YzYtNDcyZS04ZjY2LWYyYzE0NWI2YWE1ZCIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0Lzc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2Ny8iLCJvaWQiOiIwZThmOWQ0Yi03Yzg0LTQ3MDYtYTY1Ny0wMzQ2ZmE0OGRhN2IiLCJyb2xlcyI6WyJEaXJlY3RvcnkuUmVhZC5BbGwiLCJVc2VyLlJlYWQuQWxsIl0sInN1YiI6IjBlOGY5ZDRiLTdjODQtNDcwNi1hNjU3LTAzNDZmYTQ4ZGE3YiIsInRpZCI6Ijc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2NyIsInV0aSI6IkNBbWg2QV9NX2stUUc0RUNnc0EwQUEiLCJ2ZXIiOiIxLjAiLCJ4bXNfdGNkdCI6MTM3MTEyNzk0OX0.gZj993J-31ymYg_csXI2jP2lqNC70uD7N4_qQydglmsJC1RtIobusWG2MlM648MFuYqgKMNOJtt2ic4TofindXogQdFJya65GApH-8vF1vhhzL4mQdOFAwoxh9Y1XGFSl-zi4RcrVWjs11Rt6jHRTrx9GTMJsB4BB7VwXAdV0IRNCiKp0umzsLlyRSZLsnSzjJDonj2UjNiq5tS2I-8bpycRU_jpR-glAqebBhUrERfMxNqMoc5XrtGMGvzPzzYYTC-H-GSKbkaJBMO2ll_ad8Twi0Tw0yh9dd2ePQl0PO5GhyDuh1VMMBlNUNTU1oEq4o7xnKMzxs3gdBSQx05v8Q"}'} - headers: - Cache-Control: ['no-cache, no-store'] - Content-Length: ['1652'] - Content-Type: [application/json; charset=utf-8] - Date: ['Mon, 03 Dec 2018 19:22:26 GMT'] - Expires: ['-1'] - P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] - Pragma: [no-cache] - Server: [Microsoft-IIS/10.0] - Set-Cookie: ['fpc=AZOCOBXL5-ZLty69fQqnYpehqu4lAQCkTfOoVFnWCA; expires=Wed, 02-Jan-2019 - 19:22:26 GMT; path=/; secure; HttpOnly', x-ms-gateway-slice=020; path=/; - secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-Content-Type-Options: [nosniff] - x-ms-request-id: [e8a10908-cc0f-4ffe-901b-810282c03400] - status: {code: 200, message: OK} -- request: - body: grant_type=client_credentials&client_id=d1bd79b5-29c6-472e-8f66-f2c145b6aa5d&client_secret=%2BRXS9a0%2FsNGRSjrVyCwC7D2Ve5m6TrClXW04hxRD7TY%3D&resource=https%3A%2F%2Fgraph.microsoft.com - headers: - Accept: ['*/*'] - Accept-Encoding: ['gzip, deflate'] - Connection: [keep-alive] - Content-Length: ['184'] - Content-Type: [application/x-www-form-urlencoded] - User-Agent: [python-requests/2.20.1] - method: POST - uri: https://login.microsoftonline.com/unicef.org/oauth2/token - response: - body: {string: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1543868547","not_before":"1543864647","resource":"https://graph.microsoft.com","access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFDNXVuYTBFVUZnVElGOEVsYXh0V2pUM2xFZzRWcEczeFBVT25KcTQ5cVAzTkZkUFB4VjRsZ0N2MDdwMkxXVU5IeElIZUd6UkZPUmo4YXZ1T2VmSG5KbWd3TEtEQ0RhelBRVEY5aUpOajh3S1NBQSIsImFsZyI6IlJTMjU2IiwieDV0Ijoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIiwia2lkIjoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83NzQxMDE5NS0xNGUxLTRmYjgtOTA0Yi1hYjE4OTIwMjM2NjcvIiwiaWF0IjoxNTQzODY0NjQ3LCJuYmYiOjE1NDM4NjQ2NDcsImV4cCI6MTU0Mzg2ODU0NywiYWlvIjoiNDJSZ1lIaGkwS2hiNnJsNWorbldSdjhaTjI0bEF3QT0iLCJhcHBfZGlzcGxheW5hbWUiOiJ1bmktZnJnLWV0b29scy1kZXYiLCJhcHBpZCI6ImQxYmQ3OWI1LTI5YzYtNDcyZS04ZjY2LWYyYzE0NWI2YWE1ZCIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0Lzc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2Ny8iLCJvaWQiOiIwZThmOWQ0Yi03Yzg0LTQ3MDYtYTY1Ny0wMzQ2ZmE0OGRhN2IiLCJyb2xlcyI6WyJEaXJlY3RvcnkuUmVhZC5BbGwiLCJVc2VyLlJlYWQuQWxsIl0sInN1YiI6IjBlOGY5ZDRiLTdjODQtNDcwNi1hNjU3LTAzNDZmYTQ4ZGE3YiIsInRpZCI6Ijc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2NyIsInV0aSI6InREQVJKNTVqYmt1bjZTcVVidmtzQUEiLCJ2ZXIiOiIxLjAiLCJ4bXNfdGNkdCI6MTM3MTEyNzk0OX0.lMArtpyTfI1qwHseTXUmHebKQfjPlmtmnje8ssoYztUmFSGEKwR3g5u86HrcbMrupxv0qv0-WAMa2JesCxvVAfDeOfwE6xnRt0ie1Xp_Wt9wOVbcepMOLOyND2-ZOHtiOH9yUUFmnknjjWBRi1s-O0nA7GE80uzNxCElwic5vUur1sX16ccj-lSPbsZA7WCriUcqVcdkSQMDqDOc1jyUsB4xNnJGRt-j0AD3bBwtI-T5OevWIFPSeQpDl1P1IG_CtNMC_iZi8xG44nn1HOAK4Jve_EmfTheoxcd3pk751qTxLz_nWt1B2oIPNbqO-HNsshlbaCr8e6O27Oz3ctELgA"}'} - headers: - Cache-Control: ['no-cache, no-store'] - Content-Length: ['1652'] - Content-Type: [application/json; charset=utf-8] - Date: ['Mon, 03 Dec 2018 19:22:26 GMT'] - Expires: ['-1'] - P3P: [CP="DSP CUR OTPi IND OTRi ONL FIN"] - Pragma: [no-cache] - Server: [Microsoft-IIS/10.0] - Set-Cookie: ['fpc=ATplY2Kar5hJusFRWCiozMKhqu4lAQAteS6pVFnWCA; expires=Wed, 02-Jan-2019 - 19:22:27 GMT; path=/; secure; HttpOnly', x-ms-gateway-slice=016; path=/; - secure; HttpOnly, stsservicecookie=ests; path=/; secure; HttpOnly] - Strict-Transport-Security: [max-age=31536000; includeSubDomains] - X-Content-Type-Options: [nosniff] - x-ms-request-id: [271130b4-639e-4b6e-a7e9-2a946ef92c00] - status: {code: 200, message: OK} -- request: - body: null - headers: - Accept: ['*/*'] - Accept-Encoding: ['gzip, deflate'] - Authorization: [Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFDNXVuYTBFVUZnVElGOEVsYXh0V2pUM2xFZzRWcEczeFBVT25KcTQ5cVAzTkZkUFB4VjRsZ0N2MDdwMkxXVU5IeElIZUd6UkZPUmo4YXZ1T2VmSG5KbWd3TEtEQ0RhelBRVEY5aUpOajh3S1NBQSIsImFsZyI6IlJTMjU2IiwieDV0Ijoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIiwia2lkIjoid1VMbVlmc3FkUXVXdFZfLWh4VnRESkpaTTRRIn0.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83NzQxMDE5NS0xNGUxLTRmYjgtOTA0Yi1hYjE4OTIwMjM2NjcvIiwiaWF0IjoxNTQzODY0NjQ3LCJuYmYiOjE1NDM4NjQ2NDcsImV4cCI6MTU0Mzg2ODU0NywiYWlvIjoiNDJSZ1lIaGkwS2hiNnJsNWorbldSdjhaTjI0bEF3QT0iLCJhcHBfZGlzcGxheW5hbWUiOiJ1bmktZnJnLWV0b29scy1kZXYiLCJhcHBpZCI6ImQxYmQ3OWI1LTI5YzYtNDcyZS04ZjY2LWYyYzE0NWI2YWE1ZCIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0Lzc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2Ny8iLCJvaWQiOiIwZThmOWQ0Yi03Yzg0LTQ3MDYtYTY1Ny0wMzQ2ZmE0OGRhN2IiLCJyb2xlcyI6WyJEaXJlY3RvcnkuUmVhZC5BbGwiLCJVc2VyLlJlYWQuQWxsIl0sInN1YiI6IjBlOGY5ZDRiLTdjODQtNDcwNi1hNjU3LTAzNDZmYTQ4ZGE3YiIsInRpZCI6Ijc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2NyIsInV0aSI6InREQVJKNTVqYmt1bjZTcVVidmtzQUEiLCJ2ZXIiOiIxLjAiLCJ4bXNfdGNkdCI6MTM3MTEyNzk0OX0.lMArtpyTfI1qwHseTXUmHebKQfjPlmtmnje8ssoYztUmFSGEKwR3g5u86HrcbMrupxv0qv0-WAMa2JesCxvVAfDeOfwE6xnRt0ie1Xp_Wt9wOVbcepMOLOyND2-ZOHtiOH9yUUFmnknjjWBRi1s-O0nA7GE80uzNxCElwic5vUur1sX16ccj-lSPbsZA7WCriUcqVcdkSQMDqDOc1jyUsB4xNnJGRt-j0AD3bBwtI-T5OevWIFPSeQpDl1P1IG_CtNMC_iZi8xG44nn1HOAK4Jve_EmfTheoxcd3pk751qTxLz_nWt1B2oIPNbqO-HNsshlbaCr8e6O27Oz3ctELgA] - Connection: [keep-alive] - User-Agent: [python-requests/2.20.1] - method: GET - uri: https://graph.microsoft.com/v1.0/users/sapostolico@unicef.org - response: - body: - string: !!binary | - H4sIAAAAAAAEAO29B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcpl - VmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/In7xR79n - NcvabDytlm3+rv3o0Ufztl01j+7evaiz1Xy8KKZ11VTnLbVY3L3cHe/c/d0WeZvhpR9fN3nd3P3d - 8mVbtNcfjT4qZvT+3u5sL59Osu2De/n+9n5+sLudPbw33Z7t75/fvz+b7e3t5dR2sm6KZd40L+cV - /fjo0fe+P/poVjSrMrt+kS1yAvS6zc+zZZUer6qmrcpiWtFrF8Vlvgwb0Kc/XU3eFG1JHy7XZTn6 - aJEVJTVoMvvq77leFtP8fFzVF9R+UU2KMueuzSvV+Tk1eF5Ns7aolubTVZ2f53Wdz55ny4t1dmGb - N+t6KVgE6IEiL+tiOS1WWaloDmDxS/4fCZH01nwBAAA= - headers: - Cache-Control: [private] - Content-Encoding: [gzip] - Content-Type: [application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8] - Date: ['Mon, 03 Dec 2018 19:22:26 GMT'] - Duration: ['82.0962'] - OData-Version: ['4.0'] - Strict-Transport-Security: [max-age=31536000] - Transfer-Encoding: [chunked] - Vary: [Accept-Encoding] - client-request-id: [500a4333-ed50-488d-94a6-02d98c26d5d7] - request-id: [500a4333-ed50-488d-94a6-02d98c26d5d7] - x-ms-ags-diagnostic: ['{"ServerInfo":{"DataCenter":"North Europe","Slice":"SliceC","Ring":"3","ScaleUnit":"003","Host":"AGSFE_IN_5","ADSiteName":"NEU"}}'] - status: {code: 200, message: OK} -version: 1 diff --git a/tests/vcr_cassettes/fetch_users.yaml b/tests/vcr_cassettes/fetch_users.yaml new file mode 100644 index 0000000..6201763 --- /dev/null +++ b/tests/vcr_cassettes/fetch_users.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365532","not_before":"1736361632","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-YJlG4tdIthNuNSgNDXEEEQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AloJWhaIiaRLgA-db5Q_iWGhqu4lAQAAAMy-EN8OAAAA; expires=Fri, 07-Feb-2025 + 18:45:32 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - EUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 6fd9bec0-886e-4b45-a469-b74b6e7e6300 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365533","not_before":"1736361633","resource":"https://graph.microsoft.com","access_token":"**token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-xg9DXECDse-VXuBzHZWbDQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AufIkPG0pO5Bmbk9ZH1jXvqhqu4lAQAAAM2-EN8OAAAA; expires=Fri, 07-Feb-2025 + 18:45:33 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - EUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 19f01324-d81a-424b-9b0a-3bf2bdee5c00 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users","value":[{"businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}]}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 9ae04701-6d46-4ff8-9b8c-f7fadbf363a7 + request-id: 9ae04701-6d46-4ff8-9b8c-f7fadbf363a7 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"003","RoleInstance":"SN4PEPF000011C4"}}' + x-ms-resource-unit: '2' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users?$filter=startswith(mail,'ddinicola') diff --git a/tests/vcr_cassettes/filter_users_by_email.yaml b/tests/vcr_cassettes/filter_users_by_email.yaml new file mode 100644 index 0000000..c4cbcb6 --- /dev/null +++ b/tests/vcr_cassettes/filter_users_by_email.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365985","not_before":"1736362085","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-AeZOt58SW_XST3tkxL13FQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AvdSRVKE0t9FjuL2yUqOR7Chqu4lAQAAAJDAEN8OAAAA; expires=Fri, 07-Feb-2025 + 18:53:05 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - SCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 84465325-2a39-444a-8dd9-902db4e30201 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365985","not_before":"1736362085","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-IrPp64PjJWS_VeJSj0vhtg'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AgDuIjmFGTRCtEVj8zmaKlWhqu4lAQAAAJDAEN8OAAAA; expires=Fri, 07-Feb-2025 + 18:53:05 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.6 - WUS3 ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 67ad1f3d-78c8-42f7-b63e-a6cccd2f1a00 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users","value":[{"businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}]}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: cc42ba05-5d95-40ea-93dd-d145f2e3ffe5 + request-id: cc42ba05-5d95-40ea-93dd-d145f2e3ffe5 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"003","RoleInstance":"SN4PEPF00001BC8"}}' + x-ms-resource-unit: '2' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users?$filter=mail%20eq%20'ddinicola@unicef.org' diff --git a/tests/vcr_cassettes/get_unicef_user.yaml b/tests/vcr_cassettes/get_unicef_user.yaml new file mode 100644 index 0000000..0d7cb1a --- /dev/null +++ b/tests/vcr_cassettes/get_unicef_user.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736384617","not_before":"1736380717","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-jweDyX8EoW7iDyMJQFNF1w'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AhPqNOhPu4lFl-DAN6jZVNehqu4lAQAAAFgJEd8OAAAA; expires=Sat, 08-Feb-2025 + 00:03:37 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.6 - NCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: c761ae9e-e000-4f9b-9ef7-6688a7fc0300 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736384619","not_before":"1736380719","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-5LcoiSs7SO_V2IOmH5Z7pg'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AuY1zhmfizhAhqqCeleSJcyhqu4lAQAAAFoJEd8OAAAA; expires=Sat, 08-Feb-2025 + 00:03:39 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.6 - SCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 1d3a518b-d781-4422-8952-b0f67d4c0400 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity","businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 4dae806b-2744-46e0-9bbc-8aa5f725143d + request-id: 4dae806b-2744-46e0-9bbc-8aa5f725143d + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"001","RoleInstance":"SA2PEPF0000600F"}}' + x-ms-resource-unit: '1' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users/ddinicola@unicef.org diff --git a/tests/vcr_cassettes/get_user.yaml b/tests/vcr_cassettes/get_user.yaml new file mode 100644 index 0000000..22e7402 --- /dev/null +++ b/tests/vcr_cassettes/get_user.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736356991","not_before":"1736353091","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-Lu9Fk4ErvWz42cshAs6CuQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AhUAHssrZLROhU-qGxtw9_mhqu4lAQAAAG-dEN8OAAAA; expires=Fri, 07-Feb-2025 + 16:23:12 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - EUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 7410a0e5-b840-4188-a8bb-07b2f6224301 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736356992","not_before":"1736353092","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-FAKop-AW0rfXtCdbdFr9jQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Ah_VjhGC9LBNgjQsjQCLDx6hqu4lAQAAAG-dEN8OAAAA; expires=Fri, 07-Feb-2025 + 16:23:12 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - NCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 4cbfb4ac-25dd-4ff0-9f59-44c4cf4a6800 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity","businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: c0c6fd98-12f4-42e8-8c19-b9c7f3edef95 + request-id: c0c6fd98-12f4-42e8-8c19-b9c7f3edef95 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"000","RoleInstance":"SA2PEPF0000613E"}}' + x-ms-resource-unit: '1' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users/ddinicola@unicef.org diff --git a/tests/vcr_cassettes/load_business_area.yml b/tests/vcr_cassettes/load_business_area.yml deleted file mode 100644 index d165018..0000000 --- a/tests/vcr_cassettes/load_business_area.yml +++ /dev/null @@ -1,100 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Ocp-Apim-Subscription-Key: - - 974e13d4b7564595b1fbd44d7851cba2 - User-Agent: - - python-requests/2.22.0 - method: GET - uri: https://unibiapitest.azure-api.net/biapi/v1/businessareas - response: - body: - string: !!binary | - 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 - headers: - Cache-Control: - - no-cache - Content-Encoding: - - gzip - Content-Length: - - '3056' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 22 Nov 2019 21:34:49 GMT - Expires: - - '-1' - Pragma: - - no-cache - Request-Context: - - appId=cid-v1:0dff1eb0-375a-4e6d-9908-8ab068acb434 - Vary: - - Accept-Encoding - X-AspNet-Version: - - 4.0.30319 - X-Powered-By: - - ASP.NET - status: - code: 200 - message: OK -version: 1 diff --git a/tests/vcr_cassettes/load_region.yml b/tests/vcr_cassettes/load_region.yml deleted file mode 100644 index 804355c..0000000 --- a/tests/vcr_cassettes/load_region.yml +++ /dev/null @@ -1,100 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - Ocp-Apim-Subscription-Key: - - 974e13d4b7564595b1fbd44d7851cba2 - User-Agent: - - python-requests/2.22.0 - method: GET - uri: https://unibiapitest.azure-api.net/biapi/v1/businessareas - response: - body: - string: !!binary | - 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 - headers: - Cache-Control: - - no-cache - Content-Encoding: - - gzip - Content-Length: - - '3056' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 22 Nov 2019 21:31:41 GMT - Expires: - - '-1' - Pragma: - - no-cache - Request-Context: - - appId=cid-v1:0dff1eb0-375a-4e6d-9908-8ab068acb434 - Vary: - - Accept-Encoding - X-AspNet-Version: - - 4.0.30319 - X-Powered-By: - - ASP.NET - status: - code: 200 - message: OK -version: 1 diff --git a/tests/vcr_cassettes/search_users.yaml b/tests/vcr_cassettes/search_users.yaml new file mode 100644 index 0000000..729aedd --- /dev/null +++ b/tests/vcr_cassettes/search_users.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365913","not_before":"1736362013","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-GyAJW4roX2WopA22AkIjDw'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AgtTq-vpfMVDkt8Nd7A8-5Chqu4lAQAAAEjAEN8OAAAA; expires=Fri, 07-Feb-2025 + 18:51:53 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - NCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 3aaa3930-7459-4cba-96e6-3f0ebe126600 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736365914","not_before":"1736362014","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-9yuQWTUR9_0-dl2cwdibqg'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Al7w4fGAcQ9Lj_b5XG4-w2Shqu4lAQAAAEnAEN8OAAAA; expires=Fri, 07-Feb-2025 + 18:51:54 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - SCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 84465325-2a39-444a-8dd9-902d16da0201 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users","value":[{"businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}]}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 197dfa90-0aaa-41b3-b7e8-9d0db89d6894 + request-id: 197dfa90-0aaa-41b3-b7e8-9d0db89d6894 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"001","RoleInstance":"SA2PEPF00006012"}}' + x-ms-resource-unit: '2' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users?$filter=mail%20eq%20'ddinicola@unicef.org'%20or%20surname%20eq%20'Di%20Nicola'%20or%20givenName%20eq%20'Domenik' diff --git a/tests/vcr_cassettes/sync_user.yaml b/tests/vcr_cassettes/sync_user.yaml new file mode 100644 index 0000000..506157c --- /dev/null +++ b/tests/vcr_cassettes/sync_user.yaml @@ -0,0 +1,88 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736359431","not_before":"1736355531","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-cJ56ePAZa-XiY272QvapEQ'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Ah8PoGvWmnVBgoMADO0ChjChqu4lAQAAAPemEN8OAAAA; expires=Fri, 07-Feb-2025 + 17:03:51 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.6 - WUS3 ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 311fb381-3d83-4e6a-b388-94d520111900 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736359432","not_before":"1736355532","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-1q6LVZC3pKB1EWUesfoPRw'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Aj2QTdMSoPdBtgHa-PJKjZehqu4lAQAAAPemEN8OAAAA; expires=Fri, 07-Feb-2025 + 17:03:52 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - EUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 95592228-213e-4fec-ba3d-fca4a1a35f00 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity","businessPhones":["+12345"],"displayName":"Domenico + Di Nicola","givenName":"Domenico","jobTitle":"Information Comm. Technology Specialist","mail":"ddinicola@unicef.org","mobilePhone":null,"officeLocation":"Valencia","preferredLanguage":null,"surname":"Di + Nicola","userPrincipalName":"ddinicola@unicef.org","id":"12345678-aaaa-bbbb-cccc-123456789012"}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 74822e21-303b-46de-a532-a6aac284d67c + request-id: 74822e21-303b-46de-a532-a6aac284d67c + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"003","RoleInstance":"SN4PEPF00001CD6"}}' + x-ms-resource-unit: '1' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users/12345678-aaaa-bbbb-cccc-123456789012 diff --git a/tests/vcr_cassettes/synchronizer.yaml b/tests/vcr_cassettes/synchronizer.yaml new file mode 100644 index 0000000..56733ce --- /dev/null +++ b/tests/vcr_cassettes/synchronizer.yaml @@ -0,0 +1,132 @@ +responses: +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736363199","not_before":"1736359299","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-Ao7eA5YZq1OP6o_ix_oo7A'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Am_RPJE6sKhGu9h7m-qAqOqhqu4lAQAAAK61EN8OAAAA; expires=Fri, 07-Feb-2025 + 18:06:39 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - NCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 2526a469-3c00-45ea-8755-07fcc7e55a00 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736363199","not_before":"1736359299","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + script-src ''self'' ''nonce-D2BBfou1lKtNM0DK0H_4gA'' ''unsafe-inline'' ''unsafe-eval'' + https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net https://*.msauthimages.net + https://*.msidentity.com https://*.microsoftonline-p.com https://*.microsoftazuread-sso.com + https://*.azureedge.net https://*.outlook.com https://*.office.com https://*.office365.com + https://*.microsoft.com https://*.bing.com ''report-sample''; img-src ''self'' + data: https://*.msauth.net https://*.msftauth.net https://*.msftauthimages.net + https://*.msauthimages.net https://*.msidentity.com https://*.microsoftonline-p.com + https://*.microsoftazuread-sso.com https://*.azureedge.net https://*.outlook.com + https://*.office.com https://*.office365.com https://*.microsoft.com https://*.bing.com + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=AoqgN3P9MqdLq3kVqH15qeOhqu4lAQAAAK61EN8OAAAA; expires=Fri, 07-Feb-2025 + 18:06:39 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.6 - WUS3 ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: 14c55d99-ff5e-4b66-80b4-07b723ac1900 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users","@odata.nextLink":"https://graph.microsoft.com/v1.0/users/delta_changed_manually","value":[{"displayName":"Alice + ","mail":"alice@unicef.org","userPrincipalName":"alice@Unicef.onmicrosoft.com","id":"11111111-aaaa-bbbb-cccc-123456789012"},{"displayName":"Bob + ","mail":"bob@unicef.org","userPrincipalName":"bob@Unicef.onmicrosoft.com","id":"22222222-aaaa-bbbb-cccc-123456789012"}]}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Preference-Applied: odata.track-changes + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 7c8c074a-af60-4790-b44f-66f4e2090465 + request-id: 7c8c074a-af60-4790-b44f-66f4e2090465 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"005","RoleInstance":"SN4PEPF00000008"}}' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users/delta +- response: + auto_calculate_content_length: false + body: '{"token_type":"Bearer","expires_in":"3599","ext_expires_in":"3599","expires_on":"1736363203","not_before":"1736359303","resource":"https://graph.microsoft.com","access_token":"***token***"}' + content_type: text/plain + headers: + Cache-Control: no-store, no-cache + Content-Security-Policy-Report-Only: 'object-src ''none''; base-uri ''self''; + ''report-sample''; report-uri https://csp.microsoft.com/report/ESTS-UX-All' + Expires: '-1' + P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" + Pragma: no-cache + Set-Cookie: fpc=Ar-F72aathNAnovLLN1P_4mhqu4lAQAAALO1EN8OAAAA; expires=Fri, 07-Feb-2025 + 18:06:43 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=estsfd; + path=/; secure; samesite=none; httponly, stsservicecookie=estsfd; path=/; + secure; samesite=none; httponly + Strict-Transport-Security: max-age=31536000; includeSubDomains + X-Content-Type-Options: nosniff + X-XSS-Protection: '0' + x-ms-ests-server: 2.1.19683.3 - SCUS ProdSlices + x-ms-httpver: '1.1' + x-ms-request-id: cc9f9964-7a9a-49f0-925e-2a51d0719d00 + x-ms-srs: 1.P + method: POST + status: 200 + url: https://login.microsoftonline.com/unicef.org/oauth2/token +- response: + auto_calculate_content_length: false + body: '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users","@odata.nextLink":null,"value":[{"displayName":"Charlie + ","mail":"charlie@unicef.org","userPrincipalName":"charlie@Unicef.onmicrosoft.com","id":"33333333-aaaa-bbbb-cccc-123456789012"},{"displayName":"Dave + ","mail":"dave@unicef.org","userPrincipalName":"dave@Unicef.onmicrosoft.com","id":"44444444-aaaa-bbbb-cccc-123456789012"}]}' + content_type: text/plain + headers: + Cache-Control: no-cache + OData-Version: '4.0' + Preference-Applied: odata.track-changes + Strict-Transport-Security: max-age=31536000 + Transfer-Encoding: chunked + Vary: Accept-Encoding + client-request-id: 7c1d7139-e6dc-46fd-842a-837af1786d03 + request-id: 7c1d7139-e6dc-46fd-842a-837af1786d03 + x-ms-ags-diagnostic: '{"ServerInfo":{"DataCenter":"South Central US","Slice":"E","Ring":"5","ScaleUnit":"004","RoleInstance":"SA2PEPF000000F3"}}' + method: GET + status: 200 + url: https://graph.microsoft.com/v1.0/users/delta_changed_manually diff --git a/uv.lock b/uv.lock index 5dcc1bd..3549d04 100644 --- a/uv.lock +++ b/uv.lock @@ -7,14 +7,14 @@ resolution-markers = [ [[package]] name = "amqp" -version = "5.2.0" +version = "5.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "vine" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/2c/6eb09fbdeb3c060b37bd33f8873832897a83e7a428afe01aad333fc405ec/amqp-5.2.0.tar.gz", hash = "sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd", size = 128754 } +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/f0/8e5be5d5e0653d9e1d02b1144efa33ff7d2963dfad07049e02c0fa9b2e8d/amqp-5.2.0-py3-none-any.whl", hash = "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637", size = 50917 }, + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944 }, ] [[package]] @@ -87,11 +87,11 @@ wheels = [ [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, ] [[package]] @@ -99,7 +99,7 @@ name = "cffi" version = "1.17.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser", marker = "platform_python_implementation != 'PyPy'" }, + { name = "pycparser" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } wheels = [ @@ -147,53 +147,49 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d3/0b/4b7a70987abf9b8196845806198975b6aab4ce016632f817ad758a5aa056/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", size = 194445 }, - { url = "https://files.pythonhosted.org/packages/50/89/354cc56cf4dd2449715bc9a0f54f3aef3dc700d2d62d1fa5bbea53b13426/charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", size = 125275 }, - { url = "https://files.pythonhosted.org/packages/fa/44/b730e2a2580110ced837ac083d8ad222343c96bb6b66e9e4e706e4d0b6df/charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", size = 119020 }, - { url = "https://files.pythonhosted.org/packages/9d/e4/9263b8240ed9472a2ae7ddc3e516e71ef46617fe40eaa51221ccd4ad9a27/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", size = 139128 }, - { url = "https://files.pythonhosted.org/packages/6b/e3/9f73e779315a54334240353eaea75854a9a690f3f580e4bd85d977cb2204/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", size = 149277 }, - { url = "https://files.pythonhosted.org/packages/1a/cf/f1f50c2f295312edb8a548d3fa56a5c923b146cd3f24114d5adb7e7be558/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", size = 142174 }, - { url = "https://files.pythonhosted.org/packages/16/92/92a76dc2ff3a12e69ba94e7e05168d37d0345fa08c87e1fe24d0c2a42223/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", size = 143838 }, - { url = "https://files.pythonhosted.org/packages/a4/01/2117ff2b1dfc61695daf2babe4a874bca328489afa85952440b59819e9d7/charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", size = 146149 }, - { url = "https://files.pythonhosted.org/packages/f6/9b/93a332b8d25b347f6839ca0a61b7f0287b0930216994e8bf67a75d050255/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", size = 140043 }, - { url = "https://files.pythonhosted.org/packages/ab/f6/7ac4a01adcdecbc7a7587767c776d53d369b8b971382b91211489535acf0/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", size = 148229 }, - { url = "https://files.pythonhosted.org/packages/9d/be/5708ad18161dee7dc6a0f7e6cf3a88ea6279c3e8484844c0590e50e803ef/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", size = 151556 }, - { url = "https://files.pythonhosted.org/packages/5a/bb/3d8bc22bacb9eb89785e83e6723f9888265f3a0de3b9ce724d66bd49884e/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", size = 149772 }, - { url = "https://files.pythonhosted.org/packages/f7/fa/d3fc622de05a86f30beea5fc4e9ac46aead4731e73fd9055496732bcc0a4/charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", size = 144800 }, - { url = "https://files.pythonhosted.org/packages/9a/65/bdb9bc496d7d190d725e96816e20e2ae3a6fa42a5cac99c3c3d6ff884118/charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", size = 94836 }, - { url = "https://files.pythonhosted.org/packages/3e/67/7b72b69d25b89c0b3cea583ee372c43aa24df15f0e0f8d3982c57804984b/charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", size = 102187 }, - { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617 }, - { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310 }, - { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126 }, - { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342 }, - { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383 }, - { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214 }, - { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104 }, - { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255 }, - { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251 }, - { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474 }, - { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849 }, - { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781 }, - { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970 }, - { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973 }, - { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446 }, +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, ] [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, ] [[package]] @@ -244,69 +240,71 @@ wheels = [ [[package]] name = "coverage" -version = "7.6.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/12/3669b6382792783e92046730ad3327f53b2726f0603f4c311c4da4824222/coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", size = 798716 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/e7/9291de916d084f41adddfd4b82246e68d61d6a75747f075f7e64628998d2/coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", size = 207013 }, - { url = "https://files.pythonhosted.org/packages/27/03/932c2c5717a7fa80cd43c6a07d3177076d97b79f12f40f882f9916db0063/coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", size = 207251 }, - { url = "https://files.pythonhosted.org/packages/d5/3f/0af47dcb9327f65a45455fbca846fe96eb57c153af46c4754a3ba678938a/coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", size = 240268 }, - { url = "https://files.pythonhosted.org/packages/8a/3c/37a9d81bbd4b23bc7d46ca820e16174c613579c66342faa390a271d2e18b/coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", size = 237298 }, - { url = "https://files.pythonhosted.org/packages/c0/70/6b0627e5bd68204ee580126ed3513140b2298995c1233bd67404b4e44d0e/coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", size = 239367 }, - { url = "https://files.pythonhosted.org/packages/3c/eb/634d7dfab24ac3b790bebaf9da0f4a5352cbc125ce6a9d5c6cf4c6cae3c7/coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", size = 238853 }, - { url = "https://files.pythonhosted.org/packages/d9/0d/8e3ed00f1266ef7472a4e33458f42e39492e01a64281084fb3043553d3f1/coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", size = 237160 }, - { url = "https://files.pythonhosted.org/packages/ce/9c/4337f468ef0ab7a2e0887a9c9da0e58e2eada6fc6cbee637a4acd5dfd8a9/coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", size = 238824 }, - { url = "https://files.pythonhosted.org/packages/5e/09/3e94912b8dd37251377bb02727a33a67ee96b84bbbe092f132b401ca5dd9/coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", size = 209639 }, - { url = "https://files.pythonhosted.org/packages/01/69/d4f3a4101171f32bc5b3caec8ff94c2c60f700107a6aaef7244b2c166793/coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", size = 210428 }, - { url = "https://files.pythonhosted.org/packages/c2/4d/2dede4f7cb5a70fb0bb40a57627fddf1dbdc6b9c1db81f7c4dcdcb19e2f4/coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", size = 207039 }, - { url = "https://files.pythonhosted.org/packages/3f/f9/d86368ae8c79e28f1fb458ebc76ae9ff3e8bd8069adc24e8f2fed03c58b7/coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", size = 207298 }, - { url = "https://files.pythonhosted.org/packages/64/c5/b4cc3c3f64622c58fbfd4d8b9a7a8ce9d355f172f91fcabbba1f026852f6/coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", size = 239813 }, - { url = "https://files.pythonhosted.org/packages/8a/86/14c42e60b70a79b26099e4d289ccdfefbc68624d096f4481163085aa614c/coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", size = 236959 }, - { url = "https://files.pythonhosted.org/packages/7f/f8/4436a643631a2fbab4b44d54f515028f6099bfb1cd95b13cfbf701e7f2f2/coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", size = 238950 }, - { url = "https://files.pythonhosted.org/packages/49/50/1571810ddd01f99a0a8be464a4ac8b147f322cd1e8e296a1528984fc560b/coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", size = 238610 }, - { url = "https://files.pythonhosted.org/packages/f3/8c/6312d241fe7cbd1f0cade34a62fea6f333d1a261255d76b9a87074d8703c/coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", size = 236697 }, - { url = "https://files.pythonhosted.org/packages/ce/5f/fef33dfd05d87ee9030f614c857deb6df6556b8f6a1c51bbbb41e24ee5ac/coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", size = 238541 }, - { url = "https://files.pythonhosted.org/packages/a9/64/6a984b6e92e1ea1353b7ffa08e27f707a5e29b044622445859200f541e8c/coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", size = 209707 }, - { url = "https://files.pythonhosted.org/packages/5c/60/ce5a9e942e9543783b3db5d942e0578b391c25cdd5e7f342d854ea83d6b7/coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", size = 210439 }, - { url = "https://files.pythonhosted.org/packages/78/53/6719677e92c308207e7f10561a1b16ab8b5c00e9328efc9af7cfd6fb703e/coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", size = 207784 }, - { url = "https://files.pythonhosted.org/packages/fa/dd/7054928930671fcb39ae6a83bb71d9ab5f0afb733172543ced4b09a115ca/coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", size = 208058 }, - { url = "https://files.pythonhosted.org/packages/b5/7d/fd656ddc2b38301927b9eb3aae3fe827e7aa82e691923ed43721fd9423c9/coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", size = 250772 }, - { url = "https://files.pythonhosted.org/packages/90/d0/eb9a3cc2100b83064bb086f18aedde3afffd7de6ead28f69736c00b7f302/coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", size = 246490 }, - { url = "https://files.pythonhosted.org/packages/45/44/3f64f38f6faab8a0cfd2c6bc6eb4c6daead246b97cf5f8fc23bf3788f841/coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", size = 248848 }, - { url = "https://files.pythonhosted.org/packages/5d/11/4c465a5f98656821e499f4b4619929bd5a34639c466021740ecdca42aa30/coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", size = 248340 }, - { url = "https://files.pythonhosted.org/packages/f1/96/ebecda2d016cce9da812f404f720ca5df83c6b29f65dc80d2000d0078741/coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", size = 246229 }, - { url = "https://files.pythonhosted.org/packages/16/d9/3d820c00066ae55d69e6d0eae11d6149a5ca7546de469ba9d597f01bf2d7/coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", size = 247510 }, - { url = "https://files.pythonhosted.org/packages/8f/c3/4fa1eb412bb288ff6bfcc163c11700ff06e02c5fad8513817186e460ed43/coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", size = 210353 }, - { url = "https://files.pythonhosted.org/packages/7e/77/03fc2979d1538884d921c2013075917fc927f41cd8526909852fe4494112/coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", size = 211502 }, +version = "7.6.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/ba/ac14d281f80aab516275012e8875991bb06203957aa1e19950139238d658/coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", size = 803868 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/77/19d09ea06f92fdf0487499283b1b7af06bc422ea94534c8fe3a4cd023641/coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", size = 208281 }, + { url = "https://files.pythonhosted.org/packages/b6/67/5479b9f2f99fcfb49c0d5cf61912a5255ef80b6e80a3cddba39c38146cf4/coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", size = 208514 }, + { url = "https://files.pythonhosted.org/packages/15/d1/febf59030ce1c83b7331c3546d7317e5120c5966471727aa7ac157729c4b/coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", size = 241537 }, + { url = "https://files.pythonhosted.org/packages/4b/7e/5ac4c90192130e7cf8b63153fe620c8bfd9068f89a6d9b5f26f1550f7a26/coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", size = 238572 }, + { url = "https://files.pythonhosted.org/packages/dc/03/0334a79b26ecf59958f2fe9dd1f5ab3e2f88db876f5071933de39af09647/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", size = 240639 }, + { url = "https://files.pythonhosted.org/packages/d7/45/8a707f23c202208d7b286d78ad6233f50dcf929319b664b6cc18a03c1aae/coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", size = 240072 }, + { url = "https://files.pythonhosted.org/packages/66/02/603ce0ac2d02bc7b393279ef618940b4a0535b0868ee791140bda9ecfa40/coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", size = 238386 }, + { url = "https://files.pythonhosted.org/packages/04/62/4e6887e9be060f5d18f1dd58c2838b2d9646faf353232dec4e2d4b1c8644/coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", size = 240054 }, + { url = "https://files.pythonhosted.org/packages/5c/74/83ae4151c170d8bd071924f212add22a0e62a7fe2b149edf016aeecad17c/coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", size = 210904 }, + { url = "https://files.pythonhosted.org/packages/c3/54/de0893186a221478f5880283119fc40483bc460b27c4c71d1b8bba3474b9/coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", size = 211692 }, + { url = "https://files.pythonhosted.org/packages/25/6d/31883d78865529257bf847df5789e2ae80e99de8a460c3453dbfbe0db069/coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", size = 208308 }, + { url = "https://files.pythonhosted.org/packages/70/22/3f2b129cc08de00c83b0ad6252e034320946abfc3e4235c009e57cfeee05/coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", size = 208565 }, + { url = "https://files.pythonhosted.org/packages/97/0a/d89bc2d1cc61d3a8dfe9e9d75217b2be85f6c73ebf1b9e3c2f4e797f4531/coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", size = 241083 }, + { url = "https://files.pythonhosted.org/packages/4c/81/6d64b88a00c7a7aaed3a657b8eaa0931f37a6395fcef61e53ff742b49c97/coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", size = 238235 }, + { url = "https://files.pythonhosted.org/packages/9a/0b/7797d4193f5adb4b837207ed87fecf5fc38f7cc612b369a8e8e12d9fa114/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", size = 240220 }, + { url = "https://files.pythonhosted.org/packages/65/4d/6f83ca1bddcf8e51bf8ff71572f39a1c73c34cf50e752a952c34f24d0a60/coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", size = 239847 }, + { url = "https://files.pythonhosted.org/packages/30/9d/2470df6aa146aff4c65fee0f87f58d2164a67533c771c9cc12ffcdb865d5/coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", size = 237922 }, + { url = "https://files.pythonhosted.org/packages/08/dd/723fef5d901e6a89f2507094db66c091449c8ba03272861eaefa773ad95c/coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", size = 239783 }, + { url = "https://files.pythonhosted.org/packages/3d/f7/64d3298b2baf261cb35466000628706ce20a82d42faf9b771af447cd2b76/coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", size = 210965 }, + { url = "https://files.pythonhosted.org/packages/d5/58/ec43499a7fc681212fe7742fe90b2bc361cdb72e3181ace1604247a5b24d/coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", size = 211719 }, + { url = "https://files.pythonhosted.org/packages/ab/c9/f2857a135bcff4330c1e90e7d03446b036b2363d4ad37eb5e3a47bbac8a6/coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", size = 209050 }, + { url = "https://files.pythonhosted.org/packages/aa/b3/f840e5bd777d8433caa9e4a1eb20503495709f697341ac1a8ee6a3c906ad/coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", size = 209321 }, + { url = "https://files.pythonhosted.org/packages/85/7d/125a5362180fcc1c03d91850fc020f3831d5cda09319522bcfa6b2b70be7/coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", size = 252039 }, + { url = "https://files.pythonhosted.org/packages/a9/9c/4358bf3c74baf1f9bddd2baf3756b54c07f2cfd2535f0a47f1e7757e54b3/coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", size = 247758 }, + { url = "https://files.pythonhosted.org/packages/cf/c7/de3eb6fc5263b26fab5cda3de7a0f80e317597a4bad4781859f72885f300/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", size = 250119 }, + { url = "https://files.pythonhosted.org/packages/3e/e6/43de91f8ba2ec9140c6a4af1102141712949903dc732cf739167cfa7a3bc/coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", size = 249597 }, + { url = "https://files.pythonhosted.org/packages/08/40/61158b5499aa2adf9e37bc6d0117e8f6788625b283d51e7e0c53cf340530/coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", size = 247473 }, + { url = "https://files.pythonhosted.org/packages/50/69/b3f2416725621e9f112e74e8470793d5b5995f146f596f133678a633b77e/coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", size = 248737 }, + { url = "https://files.pythonhosted.org/packages/3c/6e/fe899fb937657db6df31cc3e61c6968cb56d36d7326361847440a430152e/coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", size = 211611 }, + { url = "https://files.pythonhosted.org/packages/1c/55/52f5e66142a9d7bc93a15192eba7a78513d2abf6b3558d77b4ca32f5f424/coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", size = 212781 }, ] [[package]] name = "cryptography" -version = "43.0.3" +version = "44.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz", hash = "sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", size = 686989 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/f3/01fdf26701a26f4b4dbc337a26883ad5bccaa6f1bbbdd29cd89e22f18a1c/cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e", size = 6225303 }, - { url = "https://files.pythonhosted.org/packages/a3/01/4896f3d1b392025d4fcbecf40fdea92d3df8662123f6835d0af828d148fd/cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e", size = 3760905 }, - { url = "https://files.pythonhosted.org/packages/0a/be/f9a1f673f0ed4b7f6c643164e513dbad28dd4f2dcdf5715004f172ef24b6/cryptography-43.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f", size = 3977271 }, - { url = "https://files.pythonhosted.org/packages/4e/49/80c3a7b5514d1b416d7350830e8c422a4d667b6d9b16a9392ebfd4a5388a/cryptography-43.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6", size = 3746606 }, - { url = "https://files.pythonhosted.org/packages/0e/16/a28ddf78ac6e7e3f25ebcef69ab15c2c6be5ff9743dd0709a69a4f968472/cryptography-43.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18", size = 3986484 }, - { url = "https://files.pythonhosted.org/packages/01/f5/69ae8da70c19864a32b0315049866c4d411cce423ec169993d0434218762/cryptography-43.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd", size = 3852131 }, - { url = "https://files.pythonhosted.org/packages/fd/db/e74911d95c040f9afd3612b1f732e52b3e517cb80de8bf183be0b7d413c6/cryptography-43.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73", size = 4075647 }, - { url = "https://files.pythonhosted.org/packages/56/48/7b6b190f1462818b324e674fa20d1d5ef3e24f2328675b9b16189cbf0b3c/cryptography-43.0.3-cp37-abi3-win32.whl", hash = "sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2", size = 2623873 }, - { url = "https://files.pythonhosted.org/packages/eb/b1/0ebff61a004f7f89e7b65ca95f2f2375679d43d0290672f7713ee3162aff/cryptography-43.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd", size = 3068039 }, - { url = "https://files.pythonhosted.org/packages/30/d5/c8b32c047e2e81dd172138f772e81d852c51f0f2ad2ae8a24f1122e9e9a7/cryptography-43.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984", size = 6222984 }, - { url = "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", size = 3762968 }, - { url = "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", size = 3977754 }, - { url = "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", size = 3749458 }, - { url = "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", size = 3988220 }, - { url = "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", size = 3853898 }, - { url = "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", size = 4076592 }, - { url = "https://files.pythonhosted.org/packages/81/1e/ffcc41b3cebd64ca90b28fd58141c5f68c83d48563c88333ab660e002cd3/cryptography-43.0.3-cp39-abi3-win32.whl", hash = "sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995", size = 2623145 }, - { url = "https://files.pythonhosted.org/packages/87/5c/3dab83cc4aba1f4b0e733e3f0c3e7d4386440d660ba5b1e3ff995feb734d/cryptography-43.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362", size = 3068026 }, +sdist = { url = "https://files.pythonhosted.org/packages/91/4c/45dfa6829acffa344e3967d6006ee4ae8be57af746ae2eba1c431949b32c/cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", size = 710657 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/09/8cc67f9b84730ad330b3b72cf867150744bf07ff113cda21a15a1c6d2c7c/cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", size = 6541833 }, + { url = "https://files.pythonhosted.org/packages/7e/5b/3759e30a103144e29632e7cb72aec28cedc79e514b2ea8896bb17163c19b/cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", size = 3922710 }, + { url = "https://files.pythonhosted.org/packages/5f/58/3b14bf39f1a0cfd679e753e8647ada56cddbf5acebffe7db90e184c76168/cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", size = 4137546 }, + { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, + { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 }, + { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 }, + { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 }, + { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 }, + { url = "https://files.pythonhosted.org/packages/ef/d4/cae11bf68c0f981e0413906c6dd03ae7fa864347ed5fac40021df1ef467c/cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", size = 2757925 }, + { url = "https://files.pythonhosted.org/packages/64/b1/50d7739254d2002acae64eed4fc43b24ac0cc44bf0a0d388d1ca06ec5bb1/cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", size = 3202055 }, + { url = "https://files.pythonhosted.org/packages/11/18/61e52a3d28fc1514a43b0ac291177acd1b4de00e9301aaf7ef867076ff8a/cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", size = 6542801 }, + { url = "https://files.pythonhosted.org/packages/1a/07/5f165b6c65696ef75601b781a280fc3b33f1e0cd6aa5a92d9fb96c410e97/cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", size = 3922613 }, + { url = "https://files.pythonhosted.org/packages/28/34/6b3ac1d80fc174812486561cf25194338151780f27e438526f9c64e16869/cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", size = 4137925 }, + { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 }, + { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 }, + { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, + { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 }, + { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, + { url = "https://files.pythonhosted.org/packages/46/b0/f4f7d0d0bcfbc8dd6296c1449be326d04217c57afb8b2594f017eed95533/cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", size = 2758672 }, + { url = "https://files.pythonhosted.org/packages/97/9b/443270b9210f13f6ef240eff73fd32e02d381e7103969dc66ce8e89ee901/cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", size = 3202071 }, ] [[package]] @@ -329,16 +327,16 @@ wheels = [ [[package]] name = "django" -version = "5.1.3" +version = "5.1.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/85/ba2c2b83ba8b95354f99ed8344405d9571109ce0175028876209d6b93fba/Django-5.1.3.tar.gz", hash = "sha256:c0fa0e619c39325a169208caef234f90baa925227032ad3f44842ba14d75234a", size = 10698518 } +sdist = { url = "https://files.pythonhosted.org/packages/d3/e8/536555596dbb79f6e77418aeb40bdc1758c26725aba31919ba449e6d5e6a/Django-5.1.4.tar.gz", hash = "sha256:de450c09e91879fa5a307f696e57c851955c910a438a35e6b4c895e86bedc82a", size = 10716397 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/f6/88ed57e1b3ed54ff18c1da352aecbd6f51784c3e642d97586b61f050f5b1/Django-5.1.3-py3-none-any.whl", hash = "sha256:8b38a9a12da3ae00cb0ba72da985ec4b14de6345046b1e174b1fd7254398f818", size = 8276180 }, + { url = "https://files.pythonhosted.org/packages/58/0b/8a4ab2c02982df4ed41e29f28f189459a7eba37899438e6bea7f39db793b/Django-5.1.4-py3-none-any.whl", hash = "sha256:236e023f021f5ce7dee5779de7b286565fdea5f4ab86bae5338e3f7b69896cf0", size = 8276471 }, ] [[package]] @@ -416,15 +414,15 @@ wheels = [ [[package]] name = "faker" -version = "30.8.2" +version = "33.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/df/7574c0d13f0bbab725e52bec4b00783aaa14163fe9093dde11a928a4c638/faker-30.8.2.tar.gz", hash = "sha256:aa31b52cdae3673d6a78b4857c7bcdc0e98f201a5cb77d7827fa9e6b5876da94", size = 1808329 } +sdist = { url = "https://files.pythonhosted.org/packages/cf/d8/8beb1b27c9a068943bc7702418b08f3d52f9f9ac13be16ec1ebc82fa7af2/faker-33.3.0.tar.gz", hash = "sha256:2abb551a05b75d268780b6095100a48afc43c53e97422002efbfc1272ebf5f26", size = 1854655 } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/82/f7d0c0a4ab512fd1572a315eec903d50a578c75d5aa894cf3f5cc04025e5/Faker-30.8.2-py3-none-any.whl", hash = "sha256:4a82b2908cd19f3bba1a4da2060cc4eb18a40410ccdf9350d071d79dc92fe3ce", size = 1846458 }, + { url = "https://files.pythonhosted.org/packages/d2/7e/553601891ef96f030a1a6cc14d7957fb1c81e394ca89cafccb97e0eb5882/Faker-33.3.0-py3-none-any.whl", hash = "sha256:ae074d9c7ef65817a93b448141a5531a16b2ea2e563dc5774578197c7c84060c", size = 1894526 }, ] [[package]] @@ -458,11 +456,11 @@ sdist = { url = "https://files.pythonhosted.org/packages/6e/19/850b7ed736319d0c4 [[package]] name = "identify" -version = "2.6.4" +version = "2.6.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/49/a5/7de3053524ee006b91099968d7ecb2e0b420f7ae728094394c33e8a2a2b9/identify-2.6.4.tar.gz", hash = "sha256:285a7d27e397652e8cafe537a6cc97dd470a970f48fb2e9d979aa38eae5513ac", size = 99209 } +sdist = { url = "https://files.pythonhosted.org/packages/cf/92/69934b9ef3c31ca2470980423fda3d00f0460ddefdf30a67adf7f17e2e00/identify-2.6.5.tar.gz", hash = "sha256:c10b33f250e5bba374fae86fb57f3adcebf1161bce7cdf92031915fd480c13bc", size = 99213 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/9d/52f036403ae86474804f699c0d084b4b071e333a390b20269bb8accc65e0/identify-2.6.4-py2.py3-none-any.whl", hash = "sha256:993b0f01b97e0568c179bb9196391ff391bfb88a99099dbf5ce392b68f42d0af", size = 99072 }, + { url = "https://files.pythonhosted.org/packages/ec/fa/dce098f4cdf7621aa8f7b4f919ce545891f489482f0bfa5102f3eca8608b/identify-2.6.5-py2.py3-none-any.whl", hash = "sha256:14181a47091eb75b337af4c23078c9d09225cd4c48929f521f3bf16b09d02566", size = 99078 }, ] [[package]] @@ -507,7 +505,7 @@ version = "5.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "amqp" }, - { name = "tzdata", marker = "python_full_version >= '3.12'" }, + { name = "tzdata" }, { name = "vine" }, ] sdist = { url = "https://files.pythonhosted.org/packages/38/4d/b93fcb353d279839cc35d0012bee805ed0cf61c07587916bfc35dbfddaf1/kombu-5.4.2.tar.gz", hash = "sha256:eef572dd2fd9fc614b37580e3caeafdd5af46c1eff31e7fba89138cdb406f2cf", size = 442858 } @@ -610,11 +608,11 @@ wheels = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, ] [[package]] @@ -665,43 +663,43 @@ wheels = [ [[package]] name = "propcache" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/4d/5e5a60b78dbc1d464f8a7bbaeb30957257afdc8512cbb9dfd5659304f5cd/propcache-0.2.0.tar.gz", hash = "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70", size = 40951 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/46/a41ca1097769fc548fc9216ec4c1471b772cc39720eb47ed7e38ef0006a9/propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2", size = 80800 }, - { url = "https://files.pythonhosted.org/packages/75/4f/93df46aab9cc473498ff56be39b5f6ee1e33529223d7a4d8c0a6101a9ba2/propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7", size = 46443 }, - { url = "https://files.pythonhosted.org/packages/0b/17/308acc6aee65d0f9a8375e36c4807ac6605d1f38074b1581bd4042b9fb37/propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8", size = 45676 }, - { url = "https://files.pythonhosted.org/packages/65/44/626599d2854d6c1d4530b9a05e7ff2ee22b790358334b475ed7c89f7d625/propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793", size = 246191 }, - { url = "https://files.pythonhosted.org/packages/f2/df/5d996d7cb18df076debae7d76ac3da085c0575a9f2be6b1f707fe227b54c/propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09", size = 251791 }, - { url = "https://files.pythonhosted.org/packages/2e/6d/9f91e5dde8b1f662f6dd4dff36098ed22a1ef4e08e1316f05f4758f1576c/propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89", size = 253434 }, - { url = "https://files.pythonhosted.org/packages/3c/e9/1b54b7e26f50b3e0497cd13d3483d781d284452c2c50dd2a615a92a087a3/propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e", size = 248150 }, - { url = "https://files.pythonhosted.org/packages/a7/ef/a35bf191c8038fe3ce9a414b907371c81d102384eda5dbafe6f4dce0cf9b/propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9", size = 233568 }, - { url = "https://files.pythonhosted.org/packages/97/d9/d00bb9277a9165a5e6d60f2142cd1a38a750045c9c12e47ae087f686d781/propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4", size = 229874 }, - { url = "https://files.pythonhosted.org/packages/8e/78/c123cf22469bdc4b18efb78893e69c70a8b16de88e6160b69ca6bdd88b5d/propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c", size = 225857 }, - { url = "https://files.pythonhosted.org/packages/31/1b/fd6b2f1f36d028820d35475be78859d8c89c8f091ad30e377ac49fd66359/propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887", size = 227604 }, - { url = "https://files.pythonhosted.org/packages/99/36/b07be976edf77a07233ba712e53262937625af02154353171716894a86a6/propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57", size = 238430 }, - { url = "https://files.pythonhosted.org/packages/0d/64/5822f496c9010e3966e934a011ac08cac8734561842bc7c1f65586e0683c/propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23", size = 244814 }, - { url = "https://files.pythonhosted.org/packages/fd/bd/8657918a35d50b18a9e4d78a5df7b6c82a637a311ab20851eef4326305c1/propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348", size = 235922 }, - { url = "https://files.pythonhosted.org/packages/a8/6f/ec0095e1647b4727db945213a9f395b1103c442ef65e54c62e92a72a3f75/propcache-0.2.0-cp312-cp312-win32.whl", hash = "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5", size = 40177 }, - { url = "https://files.pythonhosted.org/packages/20/a2/bd0896fdc4f4c1db46d9bc361c8c79a9bf08ccc08ba054a98e38e7ba1557/propcache-0.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3", size = 44446 }, - { url = "https://files.pythonhosted.org/packages/a8/a7/5f37b69197d4f558bfef5b4bceaff7c43cc9b51adf5bd75e9081d7ea80e4/propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7", size = 78120 }, - { url = "https://files.pythonhosted.org/packages/c8/cd/48ab2b30a6b353ecb95a244915f85756d74f815862eb2ecc7a518d565b48/propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763", size = 45127 }, - { url = "https://files.pythonhosted.org/packages/a5/ba/0a1ef94a3412aab057bd996ed5f0ac7458be5bf469e85c70fa9ceb43290b/propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d", size = 44419 }, - { url = "https://files.pythonhosted.org/packages/b4/6c/ca70bee4f22fa99eacd04f4d2f1699be9d13538ccf22b3169a61c60a27fa/propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a", size = 229611 }, - { url = "https://files.pythonhosted.org/packages/19/70/47b872a263e8511ca33718d96a10c17d3c853aefadeb86dc26e8421184b9/propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b", size = 234005 }, - { url = "https://files.pythonhosted.org/packages/4f/be/3b0ab8c84a22e4a3224719099c1229ddfdd8a6a1558cf75cb55ee1e35c25/propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb", size = 237270 }, - { url = "https://files.pythonhosted.org/packages/04/d8/f071bb000d4b8f851d312c3c75701e586b3f643fe14a2e3409b1b9ab3936/propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf", size = 231877 }, - { url = "https://files.pythonhosted.org/packages/93/e7/57a035a1359e542bbb0a7df95aad6b9871ebee6dce2840cb157a415bd1f3/propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2", size = 217848 }, - { url = "https://files.pythonhosted.org/packages/f0/93/d1dea40f112ec183398fb6c42fde340edd7bab202411c4aa1a8289f461b6/propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f", size = 216987 }, - { url = "https://files.pythonhosted.org/packages/62/4c/877340871251145d3522c2b5d25c16a1690ad655fbab7bb9ece6b117e39f/propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136", size = 212451 }, - { url = "https://files.pythonhosted.org/packages/7c/bb/a91b72efeeb42906ef58ccf0cdb87947b54d7475fee3c93425d732f16a61/propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325", size = 212879 }, - { url = "https://files.pythonhosted.org/packages/9b/7f/ee7fea8faac57b3ec5d91ff47470c6c5d40d7f15d0b1fccac806348fa59e/propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44", size = 222288 }, - { url = "https://files.pythonhosted.org/packages/ff/d7/acd67901c43d2e6b20a7a973d9d5fd543c6e277af29b1eb0e1f7bd7ca7d2/propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83", size = 228257 }, - { url = "https://files.pythonhosted.org/packages/8d/6f/6272ecc7a8daad1d0754cfc6c8846076a8cb13f810005c79b15ce0ef0cf2/propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544", size = 221075 }, - { url = "https://files.pythonhosted.org/packages/7c/bd/c7a6a719a6b3dd8b3aeadb3675b5783983529e4a3185946aa444d3e078f6/propcache-0.2.0-cp313-cp313-win32.whl", hash = "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032", size = 39654 }, - { url = "https://files.pythonhosted.org/packages/88/e7/0eef39eff84fa3e001b44de0bd41c7c0e3432e7648ffd3d64955910f002d/propcache-0.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e", size = 43705 }, - { url = "https://files.pythonhosted.org/packages/3d/b6/e6d98278f2d49b22b4d033c9f792eda783b9ab2094b041f013fc69bcde87/propcache-0.2.0-py3-none-any.whl", hash = "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036", size = 11603 }, +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 }, + { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 }, + { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 }, + { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 }, + { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 }, + { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 }, + { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 }, + { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 }, + { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 }, + { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 }, + { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 }, + { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 }, + { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 }, + { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 }, + { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 }, + { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 }, + { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 }, + { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 }, + { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 }, + { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 }, + { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 }, + { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 }, + { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 }, + { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 }, + { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 }, + { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 }, + { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 }, + { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 }, + { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 }, + { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 }, + { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 }, ] [[package]] @@ -733,11 +731,11 @@ wheels = [ [[package]] name = "pyjwt" -version = "2.9.0" +version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/68/ce067f09fca4abeca8771fe667d89cc347d1e99da3e093112ac329c6020e/pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c", size = 78825 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", size = 22344 }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, ] [[package]] @@ -754,7 +752,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -762,9 +760,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487 } +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341 }, + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, ] [[package]] @@ -926,11 +924,11 @@ wheels = [ [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] @@ -975,11 +973,11 @@ wheels = [ [[package]] name = "sqlparse" -version = "0.5.1" +version = "0.5.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/73/82/dfa23ec2cbed08a801deab02fe7c904bfb00765256b155941d789a338c68/sqlparse-0.5.1.tar.gz", hash = "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e", size = 84502 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/40/edede8dd6977b0d3da179a342c198ed100dd2aba4be081861ee5911e4da4/sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272", size = 84999 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/a5/b2860373aa8de1e626b2bdfdd6df4355f0565b47e51f7d0c54fe70faf8fe/sqlparse-0.5.1-py3-none-any.whl", hash = "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", size = 44156 }, + { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415 }, ] [[package]] @@ -1132,17 +1130,17 @@ wheels = [ [[package]] name = "vcrpy" -version = "6.0.2" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, - { name = "urllib3", marker = "python_full_version >= '3.12'" }, + { name = "urllib3" }, { name = "wrapt" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/4e/fff59599826793f9e3460c22c0af0377abb27dc9781a7d5daca8cb03da25/vcrpy-6.0.2.tar.gz", hash = "sha256:88e13d9111846745898411dbc74a75ce85870af96dd320d75f1ee33158addc09", size = 85472 } +sdist = { url = "https://files.pythonhosted.org/packages/25/d3/856e06184d4572aada1dd559ddec3bedc46df1f2edc5ab2c91121a2cccdb/vcrpy-7.0.0.tar.gz", hash = "sha256:176391ad0425edde1680c5b20738ea3dc7fb942520a48d2993448050986b3a50", size = 85502 } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/25d19705791d3fccc84423d564695421a75b4e08e8ab15a004a49068742d/vcrpy-6.0.2-py2.py3-none-any.whl", hash = "sha256:40370223861181bc76a5e5d4b743a95058bb1ad516c3c08570316ab592f56cad", size = 42431 }, + { url = "https://files.pythonhosted.org/packages/13/5d/1f15b252890c968d42b348d1e9b0aa12d5bf3e776704178ec37cceccdb63/vcrpy-7.0.0-py2.py3-none-any.whl", hash = "sha256:55791e26c18daa363435054d8b35bd41a4ac441b6676167635d1b37a71dbe124", size = 42321 }, ] [[package]] @@ -1156,25 +1154,25 @@ wheels = [ [[package]] name = "virtualenv" -version = "20.28.0" +version = "20.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/75/53316a5a8050069228a2f6d11f32046cfa94fbb6cc3f08703f59b873de2e/virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa", size = 7650368 } +sdist = { url = "https://files.pythonhosted.org/packages/50/39/689abee4adc85aad2af8174bb195a819d0be064bf55fcc73b49d2b28ae77/virtualenv-20.28.1.tar.gz", hash = "sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329", size = 7650532 } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/f9/0919cf6f1432a8c4baa62511f8f8da8225432d22e83e3476f5be1a1edc6e/virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0", size = 4276702 }, + { url = "https://files.pythonhosted.org/packages/51/8f/dfb257ca6b4e27cb990f1631142361e4712badab8e3ca8dc134d96111515/virtualenv-20.28.1-py3-none-any.whl", hash = "sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb", size = 4276719 }, ] [[package]] name = "waitress" -version = "3.0.1" +version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/0b/5920c63f93c17f9b04117f271f97619a74e087bf3de0aeed2cfd28510194/waitress-3.0.1.tar.gz", hash = "sha256:ef0c1f020d9f12a515c4ec65c07920a702613afcad1dbfdc3bcec256b6c072b3", size = 180560 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/cb/04ddb054f45faa306a230769e868c28b8065ea196891f09004ebace5b184/waitress-3.0.2.tar.gz", hash = "sha256:682aaaf2af0c44ada4abfb70ded36393f0e307f4ab9456a215ce0020baefc31f", size = 179901 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/7a/e3d9728774c66c84cdab509955539720fc0dc55781b8d79b299665752749/waitress-3.0.1-py3-none-any.whl", hash = "sha256:26cdbc593093a15119351690752c99adc13cbc6786d75f7b6341d1234a3730ac", size = 56678 }, + { url = "https://files.pythonhosted.org/packages/8d/57/a27182528c90ef38d82b636a11f606b0cbb0e17588ed205435f8affe3368/waitress-3.0.2-py3-none-any.whl", hash = "sha256:c56d67fd6e87c2ee598b76abdd4e96cfad1f24cacdea5078d382b1f9d7b5ed2e", size = 56232 }, ] [[package]] @@ -1191,7 +1189,7 @@ name = "webob" version = "1.8.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "legacy-cgi", marker = "python_full_version >= '3.13' and python_full_version >= '3.12'" }, + { name = "legacy-cgi", marker = "python_full_version >= '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/85/0b/1732085540b01f65e4e7999e15864fe14cd18b12a95731a43fd6fd11b26a/webob-1.8.9.tar.gz", hash = "sha256:ad6078e2edb6766d1334ec3dee072ac6a7f95b1e32ce10def8ff7f0f02d56589", size = 279775 } wheels = [ @@ -1200,79 +1198,96 @@ wheels = [ [[package]] name = "webtest" -version = "3.0.1" +version = "3.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "beautifulsoup4" }, { name = "waitress" }, { name = "webob" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/7e/7534c43c97234d0b5c9f228bb9646c4611e0fa33c2cefeb2e968be96d27e/webtest-3.0.1.tar.gz", hash = "sha256:493b5c802f8948a65b5e3a1ad5b2524ee5e1ab60cd713d9a3da3b8da082c06fe", size = 79278 } +sdist = { url = "https://files.pythonhosted.org/packages/26/a1/0f122e385fe9634360adb39f1844b75f315be1d7bd5b310e0af59f1cacc7/webtest-3.0.2.tar.gz", hash = "sha256:0b2de681c16f57b31da5cce6e94ff03cdc77bd86c37a57ba0ee27fed8e065ceb", size = 79331 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/6d/075023456a2ff8e01ef07afa069563f0d1e1a2fd359d7dbd7672a5bf218a/WebTest-3.0.1-py3-none-any.whl", hash = "sha256:b3bc75d020d0576ee93a5f149666045e58fe2400ea5f0c214d7430d7d213d0d0", size = 32154 }, + { url = "https://files.pythonhosted.org/packages/88/be/4cfe50dbe2e0b8e64a421157e18bbdbdb58a12ffc7ebcf5d32845ae56146/WebTest-3.0.2-py3-none-any.whl", hash = "sha256:799846e169d15e0c1233ab4ab00ee4de59a5d964407d6f2945d89249328dbbdb", size = 32152 }, ] [[package]] name = "wrapt" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/4c/063a912e20bcef7124e0df97282a8af3ff3e4b603ce84c481d6d7346be0a/wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d", size = 53972 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/17/224132494c1e23521868cdd57cd1e903f3b6a7ba6996b7b8f077ff8ac7fe/wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b", size = 37614 }, - { url = "https://files.pythonhosted.org/packages/6a/d7/cfcd73e8f4858079ac59d9db1ec5a1349bc486ae8e9ba55698cc1f4a1dff/wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36", size = 38316 }, - { url = "https://files.pythonhosted.org/packages/7e/79/5ff0a5c54bda5aec75b36453d06be4f83d5cd4932cc84b7cb2b52cee23e2/wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73", size = 86322 }, - { url = "https://files.pythonhosted.org/packages/c4/81/e799bf5d419f422d8712108837c1d9bf6ebe3cb2a81ad94413449543a923/wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809", size = 79055 }, - { url = "https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b", size = 87291 }, - { url = "https://files.pythonhosted.org/packages/49/4e/5d2f6d7b57fc9956bf06e944eb00463551f7d52fc73ca35cfc4c2cdb7aed/wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81", size = 90374 }, - { url = "https://files.pythonhosted.org/packages/a6/9b/c2c21b44ff5b9bf14a83252a8b973fb84923764ff63db3e6dfc3895cf2e0/wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9", size = 83896 }, - { url = "https://files.pythonhosted.org/packages/14/26/93a9fa02c6f257df54d7570dfe8011995138118d11939a4ecd82cb849613/wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c", size = 91738 }, - { url = "https://files.pythonhosted.org/packages/a2/5b/4660897233eb2c8c4de3dc7cefed114c61bacb3c28327e64150dc44ee2f6/wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc", size = 35568 }, - { url = "https://files.pythonhosted.org/packages/5c/cc/8297f9658506b224aa4bd71906447dea6bb0ba629861a758c28f67428b91/wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8", size = 37653 }, - { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/82/518605474beafff11f1a34759f6410ab429abff9f7881858a447e0d20712/wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/80/6c/17c3b2fed28edfd96d8417c865ef0b4c955dc52c4e375d86f459f14340f1/wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504", size = 88622 }, + { url = "https://files.pythonhosted.org/packages/4a/11/60ecdf3b0fd3dca18978d89acb5d095a05f23299216e925fcd2717c81d93/wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451", size = 80920 }, + { url = "https://files.pythonhosted.org/packages/d2/50/dbef1a651578a3520d4534c1e434989e3620380c1ad97e309576b47f0ada/wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1", size = 89170 }, + { url = "https://files.pythonhosted.org/packages/44/a2/78c5956bf39955288c9e0dd62e807b308c3aa15a0f611fbff52aa8d6b5ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106", size = 86748 }, + { url = "https://files.pythonhosted.org/packages/99/49/2ee413c78fc0bdfebe5bee590bf3becdc1fab0096a7a9c3b5c9666b2415f/wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada", size = 79734 }, + { url = "https://files.pythonhosted.org/packages/c0/8c/4221b7b270e36be90f0930fe15a4755a6ea24093f90b510166e9ed7861ea/wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4", size = 87552 }, + { url = "https://files.pythonhosted.org/packages/4c/6b/1aaccf3efe58eb95e10ce8e77c8909b7a6b0da93449a92c4e6d6d10b3a3d/wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635", size = 36647 }, + { url = "https://files.pythonhosted.org/packages/b3/4f/243f88ac49df005b9129194c6511b3642818b3e6271ddea47a15e2ee4934/wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7", size = 38830 }, + { url = "https://files.pythonhosted.org/packages/67/9c/38294e1bb92b055222d1b8b6591604ca4468b77b1250f59c15256437644f/wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181", size = 38904 }, + { url = "https://files.pythonhosted.org/packages/78/b6/76597fb362cbf8913a481d41b14b049a8813cd402a5d2f84e57957c813ae/wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393", size = 88608 }, + { url = "https://files.pythonhosted.org/packages/bc/69/b500884e45b3881926b5f69188dc542fb5880019d15c8a0df1ab1dfda1f7/wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4", size = 80879 }, + { url = "https://files.pythonhosted.org/packages/52/31/f4cc58afe29eab8a50ac5969963010c8b60987e719c478a5024bce39bc42/wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b", size = 89119 }, + { url = "https://files.pythonhosted.org/packages/aa/9c/05ab6bf75dbae7a9d34975fb6ee577e086c1c26cde3b6cf6051726d33c7c/wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721", size = 86778 }, + { url = "https://files.pythonhosted.org/packages/0e/6c/4b8d42e3db355603d35fe5c9db79c28f2472a6fd1ccf4dc25ae46739672a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90", size = 79793 }, + { url = "https://files.pythonhosted.org/packages/69/23/90e3a2ee210c0843b2c2a49b3b97ffcf9cad1387cb18cbeef9218631ed5a/wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a", size = 87606 }, + { url = "https://files.pythonhosted.org/packages/5f/06/3683126491ca787d8d71d8d340e775d40767c5efedb35039d987203393b7/wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045", size = 36651 }, + { url = "https://files.pythonhosted.org/packages/f1/bc/3bf6d2ca0d2c030d324ef9272bea0a8fdaff68f3d1fa7be7a61da88e51f7/wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838", size = 38835 }, + { url = "https://files.pythonhosted.org/packages/ce/b5/251165c232d87197a81cd362eeb5104d661a2dd3aa1f0b33e4bf61dda8b8/wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b", size = 40146 }, + { url = "https://files.pythonhosted.org/packages/89/33/1e1bdd3e866eeb73d8c4755db1ceb8a80d5bd51ee4648b3f2247adec4e67/wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379", size = 113444 }, + { url = "https://files.pythonhosted.org/packages/9f/7c/94f53b065a43f5dc1fbdd8b80fd8f41284315b543805c956619c0b8d92f0/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d", size = 101246 }, + { url = "https://files.pythonhosted.org/packages/62/5d/640360baac6ea6018ed5e34e6e80e33cfbae2aefde24f117587cd5efd4b7/wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f", size = 109320 }, + { url = "https://files.pythonhosted.org/packages/e3/cf/6c7a00ae86a2e9482c91170aefe93f4ccda06c1ac86c4de637c69133da59/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c", size = 110193 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/aa718df0d20287e8f953ce0e2f70c0af0fba1d3c367db7ee8bdc46ea7003/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b", size = 100460 }, + { url = "https://files.pythonhosted.org/packages/f7/16/9f3ac99fe1f6caaa789d67b4e3c562898b532c250769f5255fa8b8b93983/wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab", size = 106347 }, + { url = "https://files.pythonhosted.org/packages/64/85/c77a331b2c06af49a687f8b926fc2d111047a51e6f0b0a4baa01ff3a673a/wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf", size = 37971 }, + { url = "https://files.pythonhosted.org/packages/05/9b/b2469f8be9efed24283fd7b9eeb8e913e9bc0715cf919ea8645e428ab7af/wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a", size = 40755 }, + { url = "https://files.pythonhosted.org/packages/4b/d9/a8ba5e9507a9af1917285d118388c5eb7a81834873f45df213a6fe923774/wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371", size = 23592 }, ] [[package]] name = "yarl" -version = "1.17.1" +version = "1.18.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/9c/9c0a9bfa683fc1be7fdcd9687635151544d992cccd48892dc5e0a5885a29/yarl-1.17.1.tar.gz", hash = "sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47", size = 178163 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/af/e25615c7920396219b943b9ff8b34636ae3e1ad30777649371317d7f05f8/yarl-1.17.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61", size = 141839 }, - { url = "https://files.pythonhosted.org/packages/83/5e/363d9de3495c7c66592523f05d21576a811015579e0c87dd38c7b5788afd/yarl-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d", size = 94125 }, - { url = "https://files.pythonhosted.org/packages/e3/a2/b65447626227ebe36f18f63ac551790068bf42c69bb22dfa3ae986170728/yarl-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139", size = 92048 }, - { url = "https://files.pythonhosted.org/packages/a1/f5/2ef86458446f85cde10582054fd5113495ef8ce8477da35aaaf26d2970ef/yarl-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5", size = 331472 }, - { url = "https://files.pythonhosted.org/packages/f3/6b/1ba79758ba352cdf2ad4c20cab1b982dd369aa595bb0d7601fc89bf82bee/yarl-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac", size = 341260 }, - { url = "https://files.pythonhosted.org/packages/2d/41/4e07c2afca3f9ed3da5b0e38d43d0280d9b624a3d5c478c425e5ce17775c/yarl-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463", size = 340882 }, - { url = "https://files.pythonhosted.org/packages/c3/c0/cd8e94618983c1b811af082e1a7ad7764edb3a6af2bc6b468e0e686238ba/yarl-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147", size = 336648 }, - { url = "https://files.pythonhosted.org/packages/ac/fc/73ec4340d391ffbb8f34eb4c55429784ec9f5bd37973ce86d52d67135418/yarl-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7", size = 325019 }, - { url = "https://files.pythonhosted.org/packages/57/48/da3ebf418fc239d0a156b3bdec6b17a5446f8d2dea752299c6e47b143a85/yarl-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685", size = 342841 }, - { url = "https://files.pythonhosted.org/packages/5d/79/107272745a470a8167924e353a5312eb52b5a9bb58e22686adc46c94f7ec/yarl-1.17.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172", size = 341433 }, - { url = "https://files.pythonhosted.org/packages/30/9c/6459668b3b8dcc11cd061fc53e12737e740fb6b1575b49c84cbffb387b3a/yarl-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7", size = 344927 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/93a17ed733aca8164fc3a01cb7d47b3f08854ce4f957cce67a6afdb388a0/yarl-1.17.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da", size = 355732 }, - { url = "https://files.pythonhosted.org/packages/9a/63/ead2ed6aec3c59397e135cadc66572330325a0c24cd353cd5c94f5e63463/yarl-1.17.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c", size = 362123 }, - { url = "https://files.pythonhosted.org/packages/89/bf/f6b75b4c2fcf0e7bb56edc0ed74e33f37fac45dc40e5a52a3be66b02587a/yarl-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199", size = 356355 }, - { url = "https://files.pythonhosted.org/packages/45/1f/50a0257cd07eef65c8c65ad6a21f5fb230012d659e021aeb6ac8a7897bf6/yarl-1.17.1-cp312-cp312-win32.whl", hash = "sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96", size = 83279 }, - { url = "https://files.pythonhosted.org/packages/bc/82/fafb2c1268d63d54ec08b3a254fbe51f4ef098211501df646026717abee3/yarl-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df", size = 89590 }, - { url = "https://files.pythonhosted.org/packages/06/1e/5a93e3743c20eefbc68bd89334d9c9f04f3f2334380f7bbf5e950f29511b/yarl-1.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488", size = 139974 }, - { url = "https://files.pythonhosted.org/packages/a1/be/4e0f6919013c7c5eaea5c31811c551ccd599d2fc80aa3dd6962f1bbdcddd/yarl-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374", size = 93364 }, - { url = "https://files.pythonhosted.org/packages/73/f0/650f994bc491d0cb85df8bb45392780b90eab1e175f103a5edc61445ff67/yarl-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac", size = 91177 }, - { url = "https://files.pythonhosted.org/packages/f3/e8/9945ed555d14b43ede3ae8b1bd73e31068a694cad2b9d3cad0a28486c2eb/yarl-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170", size = 333086 }, - { url = "https://files.pythonhosted.org/packages/a6/c0/7d167e48e14d26639ca066825af8da7df1d2fcdba827e3fd6341aaf22a3b/yarl-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8", size = 343661 }, - { url = "https://files.pythonhosted.org/packages/fa/81/80a266517531d4e3553aecd141800dbf48d02e23ebd52909e63598a80134/yarl-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938", size = 345196 }, - { url = "https://files.pythonhosted.org/packages/b0/77/6adc482ba7f2dc6c0d9b3b492e7cd100edfac4cfc3849c7ffa26fd7beb1a/yarl-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e", size = 338743 }, - { url = "https://files.pythonhosted.org/packages/6d/cc/f0c4c0b92ff3ada517ffde2b127406c001504b225692216d969879ada89a/yarl-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556", size = 326719 }, - { url = "https://files.pythonhosted.org/packages/18/3b/7bfc80d3376b5fa162189993a87a5a6a58057f88315bd0ea00610055b57a/yarl-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67", size = 345826 }, - { url = "https://files.pythonhosted.org/packages/2e/66/cf0b0338107a5c370205c1a572432af08f36ca12ecce127f5b558398b4fd/yarl-1.17.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8", size = 340335 }, - { url = "https://files.pythonhosted.org/packages/2f/52/b084b0eec0fd4d2490e1d33ace3320fad704c5f1f3deaa709f929d2d87fc/yarl-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3", size = 345301 }, - { url = "https://files.pythonhosted.org/packages/ef/38/9e2036d948efd3bafcdb4976cb212166fded76615f0dfc6c1492c4ce4784/yarl-1.17.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0", size = 354205 }, - { url = "https://files.pythonhosted.org/packages/81/c1/13dfe1e70b86811733316221c696580725ceb1c46d4e4db852807e134310/yarl-1.17.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299", size = 360501 }, - { url = "https://files.pythonhosted.org/packages/91/87/756e05c74cd8bf9e71537df4a2cae7e8211a9ebe0d2350a3e26949e1e41c/yarl-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258", size = 359452 }, - { url = "https://files.pythonhosted.org/packages/06/b2/b2bb09c1e6d59e1c9b1b36a86caa473e22c3dbf26d1032c030e9bfb554dc/yarl-1.17.1-cp313-cp313-win32.whl", hash = "sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2", size = 308904 }, - { url = "https://files.pythonhosted.org/packages/f3/27/f084d9a5668853c1f3b246620269b14ee871ef3c3cc4f3a1dd53645b68ec/yarl-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda", size = 314637 }, - { url = "https://files.pythonhosted.org/packages/52/ad/1fe7ff5f3e8869d4c5070f47b96bac2b4d15e67c100a8278d8e7876329fc/yarl-1.17.1-py3-none-any.whl", hash = "sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06", size = 44352 }, +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, ]