diff --git a/docs/json_handler.md b/docs/json_handler.md index 9ad0794a..4bdb673d 100644 --- a/docs/json_handler.md +++ b/docs/json_handler.md @@ -1,9 +1,9 @@ # JSON Handler -For json loads and dumps you have the option to use the `json` module from the standard library, -orjson, or ujson. This done by setting the `json_handler` when creating the `AsyncClient` or -`Client`. By default the standard library `json` module will be used. The examples below use -`Client`, and the same options are available for `AsyncClient`. +For json loads and dumps you have the option to use the `json` module from the standard library, or +orjson. This done by setting the `json_handler` when creating the `AsyncClient` or `Client`. By +default the standard library `json` module will be used. The examples below use `Client`, and the +same options are available for `AsyncClient`. ## Standard Library `json` Module @@ -61,23 +61,3 @@ with Client("http://127.0.0.1:7700", json_handler=OrjsonHandler()) as client: index = client.index("movies", primary_key="id") index.add_documents(documents) ``` - -## ujson - -### Example - -```py -from uuid import uuid4 - -from meilisearch_python_sdk import Client -from meilisearch_python_sdk.json_handler import UjsonHandler - - -documents = [ - {"id": uuid4(), "title": "test 1"}, - {"id": uuid4(), "title": "Test 2"}, -] -with Client("http://127.0.0.1:7700", json_handler=UjsonHandler()) as client: - index = client.index("movies", primary_key="id") - index.add_documents(documents) -``` diff --git a/examples/tests/test_examples.py b/examples/tests/test_examples.py index 92129f38..6c396ba9 100644 --- a/examples/tests/test_examples.py +++ b/examples/tests/test_examples.py @@ -3,7 +3,6 @@ from examples.orjson_example import add_documents as orjson_add_documents from examples.search_tracker import SearchTrackerPlugin, search from examples.search_tracker import add_documents as search_tracker_add_documents -from examples.ujson_example import add_documents as ujson_add_documents from examples.update_settings import add_documents as update_settings_add_documents from examples.update_settings import update_settings from meilisearch_python_sdk.plugins import IndexPlugins @@ -38,10 +37,3 @@ def test_update_settings(small_movies_path, empty_index, client): client.wait_for_task(task.task_uid) result = client.get_task(task.task_uid) assert result.status == "succeeded" - - -def test_ujson_example(small_movies_path, client): - task = ujson_add_documents(small_movies_path) - client.wait_for_task(task.task_uid) - result = client.get_task(task.task_uid) - assert result.status == "succeeded" diff --git a/examples/ujson_example.py b/examples/ujson_example.py deleted file mode 100644 index a0d3f0e5..00000000 --- a/examples/ujson_example.py +++ /dev/null @@ -1,23 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -from meilisearch_python_sdk import Client -from meilisearch_python_sdk.json_handler import UjsonHandler -from meilisearch_python_sdk.models.task import TaskInfo - - -def add_documents(file_path: Path | str = "../datasets/small_movies.json") -> TaskInfo: - with Client("http://127.0.0.1:7700", "masterKey", json_handler=UjsonHandler()) as client: - index = client.create_index("movies", primary_key="id") - return index.add_documents_from_file(file_path) - - -def main() -> int: - add_documents() - - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/meilisearch_python_sdk/_client.py b/meilisearch_python_sdk/_client.py index 1f58f5b5..26e34790 100644 --- a/meilisearch_python_sdk/_client.py +++ b/meilisearch_python_sdk/_client.py @@ -16,7 +16,7 @@ from meilisearch_python_sdk._http_requests import AsyncHttpRequests, HttpRequests from meilisearch_python_sdk.errors import InvalidRestriction, MeilisearchApiError from meilisearch_python_sdk.index import AsyncIndex, Index -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler from meilisearch_python_sdk.models.client import ( ClientStats, Key, @@ -59,7 +59,7 @@ def __init__( self, api_key: str | None = None, custom_headers: dict[str, str] | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, ) -> None: self.json_handler = json_handler if json_handler else BuiltinHandler() self._headers: dict[str, str] | None = None @@ -153,7 +153,7 @@ def __init__( timeout: int | None = None, verify: bool | SSLContext = True, custom_headers: dict[str, str] | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, http2: bool = False, ) -> None: """Class initializer. @@ -169,9 +169,9 @@ def __init__( custom_headers: Custom headers to add when sending data to Meilisearch. Defaults to None. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. http2: Whether or not to use HTTP/2. Defaults to False. """ super().__init__(api_key, custom_headers, json_handler) @@ -1316,7 +1316,7 @@ def __init__( timeout: int | None = None, verify: bool | SSLContext = True, custom_headers: dict[str, str] | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, http2: bool = False, ) -> None: """Class initializer. @@ -1332,9 +1332,9 @@ def __init__( custom_headers: Custom headers to add when sending data to Meilisearch. Defaults to None. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. http2: If set to True, the client will use HTTP/2. Defaults to False. """ super().__init__(api_key, custom_headers, json_handler) @@ -2467,7 +2467,7 @@ def _build_offset_limit_url(base: str, offset: int | None, limit: int | None) -> def _build_update_key_payload( - key: KeyUpdate, json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler + key: KeyUpdate, json_handler: BuiltinHandler | OrjsonHandler ) -> JsonDict: # The json_handler.loads(key.json()) is because Pydantic can't serialize a date in a Python dict, # but can when converting to a json string. diff --git a/meilisearch_python_sdk/_http_requests.py b/meilisearch_python_sdk/_http_requests.py index 29984984..4833eedc 100644 --- a/meilisearch_python_sdk/_http_requests.py +++ b/meilisearch_python_sdk/_http_requests.py @@ -21,12 +21,12 @@ MeilisearchCommunicationError, MeilisearchError, ) -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler class AsyncHttpRequests: def __init__( - self, http_client: AsyncClient, json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler + self, http_client: AsyncClient, json_handler: BuiltinHandler | OrjsonHandler ) -> None: self.http_client = http_client self.json_handler = json_handler @@ -118,9 +118,7 @@ async def delete(self, path: str, body: dict | None = None) -> Response: class HttpRequests: - def __init__( - self, http_client: Client, json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler - ) -> None: + def __init__(self, http_client: Client, json_handler: BuiltinHandler | OrjsonHandler) -> None: self.http_client = http_client self.json_handler = json_handler diff --git a/meilisearch_python_sdk/_utils.py b/meilisearch_python_sdk/_utils.py index 3f6c9287..dfd6d54d 100644 --- a/meilisearch_python_sdk/_utils.py +++ b/meilisearch_python_sdk/_utils.py @@ -8,7 +8,7 @@ from httpx import AsyncClient as HttpxAsyncClient from httpx import Client as HttpxClient -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler if TYPE_CHECKING: from meilisearch_python_sdk._client import AsyncClient, Client # pragma: no cover @@ -34,7 +34,7 @@ def get_client( def get_json_handler( client: AsyncClient | Client | HttpxAsyncClient | HttpxClient, -) -> BuiltinHandler | OrjsonHandler | UjsonHandler: +) -> BuiltinHandler | OrjsonHandler: if isinstance(client, (HttpxAsyncClient, HttpxClient)): return BuiltinHandler() diff --git a/meilisearch_python_sdk/index/_common.py b/meilisearch_python_sdk/index/_common.py index b71545e2..30f89ce6 100644 --- a/meilisearch_python_sdk/index/_common.py +++ b/meilisearch_python_sdk/index/_common.py @@ -9,7 +9,7 @@ from meilisearch_python_sdk._utils import iso_to_date_time from meilisearch_python_sdk.errors import MeilisearchError -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler from meilisearch_python_sdk.models.search import ( Hybrid, ) @@ -50,7 +50,7 @@ def __init__( primary_key: str | None = None, created_at: str | datetime | None = None, updated_at: str | datetime | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, hits_type: Any = JsonDict, ): self.uid = uid diff --git a/meilisearch_python_sdk/index/async_index.py b/meilisearch_python_sdk/index/async_index.py index c2e1633d..556675fb 100644 --- a/meilisearch_python_sdk/index/async_index.py +++ b/meilisearch_python_sdk/index/async_index.py @@ -29,7 +29,7 @@ validate_ranking_score_threshold, ) from meilisearch_python_sdk.index._common import combine_documents as combine_documents_ -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler from meilisearch_python_sdk.models.documents import DocumentsInfo from meilisearch_python_sdk.models.index import IndexStats from meilisearch_python_sdk.models.search import ( @@ -84,7 +84,7 @@ def __init__( created_at: str | datetime | None = None, updated_at: str | datetime | None = None, plugins: AsyncIndexPlugins | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, *, hits_type: Any = JsonDict, ): @@ -99,9 +99,9 @@ def __init__( updated_at: The date and time the index was last updated. Defaults to None. plugins: Optional plugins can be provided to extend functionality. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. hits_type: Allows for a custom type to be passed to use for hits. Defaults to JsonDict """ @@ -581,7 +581,7 @@ async def create( wait: bool = True, timeout_in_ms: int | None = None, plugins: AsyncIndexPlugins | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, hits_type: Any = JsonDict, ) -> Self: """Creates a new index. @@ -607,9 +607,9 @@ async def create( if the `None` option is used the wait time could be very long. Defaults to None. plugins: Optional plugins can be provided to extend functionality. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. hits_type: Allows for a custom type to be passed to use for hits. Defaults to JsonDict @@ -4888,7 +4888,7 @@ async def _async_load_documents_from_file( file_path: Path | str, csv_delimiter: str | None = None, *, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler, + json_handler: BuiltinHandler | OrjsonHandler, ) -> list[dict[Any, Any]]: if isinstance(file_path, str): file_path = Path(file_path) diff --git a/meilisearch_python_sdk/index/index.py b/meilisearch_python_sdk/index/index.py index b78e3757..20620f48 100644 --- a/meilisearch_python_sdk/index/index.py +++ b/meilisearch_python_sdk/index/index.py @@ -26,7 +26,7 @@ validate_ranking_score_threshold, ) from meilisearch_python_sdk.index._common import combine_documents as combine_documents_ -from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import BuiltinHandler, OrjsonHandler from meilisearch_python_sdk.models.documents import DocumentsInfo from meilisearch_python_sdk.models.index import IndexStats from meilisearch_python_sdk.models.search import ( @@ -81,7 +81,7 @@ def __init__( created_at: str | datetime | None = None, updated_at: str | datetime | None = None, plugins: IndexPlugins | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, *, hits_type: Any = JsonDict, ): @@ -96,9 +96,9 @@ def __init__( updated_at: The date and time the index was last updated. Defaults to None. plugins: Optional plugins can be provided to extend functionality. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. hits_type: Allows for a custom type to be passed to use for hits. Defaults to JsonDict """ @@ -460,7 +460,7 @@ def create( wait: bool = True, timeout_in_ms: int | None = None, plugins: IndexPlugins | None = None, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler | None = None, + json_handler: BuiltinHandler | OrjsonHandler | None = None, hits_type: Any = JsonDict, ) -> Self: """Creates a new index. @@ -486,9 +486,9 @@ def create( if the `None` option is used the wait time could be very long. Defaults to None. plugins: Optional plugins can be provided to extend functionality. json_handler: The module to use for json operations. The options are BuiltinHandler - (uses the json module from the standard library), OrjsonHandler (uses orjson), or - UjsonHandler (uses ujson). Note that in order use orjson or ujson the corresponding - extra needs to be included. Default: BuiltinHandler. + (uses the json module from the standard library), or OrjsonHandler (uses orjson). + Note that in order use orjson the corresponding extra needs to be included. + Default: BuiltinHandler. hits_type: Allows for a custom type to be passed to use for hits. Defaults to JsonDict @@ -3855,7 +3855,7 @@ def _load_documents_from_file( file_path: Path | str, csv_delimiter: str | None = None, *, - json_handler: BuiltinHandler | OrjsonHandler | UjsonHandler, + json_handler: BuiltinHandler | OrjsonHandler, ) -> list[dict[Any, Any]]: if isinstance(file_path, str): file_path = Path(file_path) diff --git a/meilisearch_python_sdk/json_handler.py b/meilisearch_python_sdk/json_handler.py index dc18b3c8..85e9202f 100644 --- a/meilisearch_python_sdk/json_handler.py +++ b/meilisearch_python_sdk/json_handler.py @@ -9,11 +9,6 @@ except ImportError: # pragma: no cover orjson = None # type: ignore -try: - import ujson -except ImportError: # pragma: no cover - ujson = None # type: ignore - class _JsonHandler(ABC): @staticmethod @@ -70,21 +65,3 @@ def dump_bytes(obj: Any) -> bytes: @staticmethod def loads(json_string: str | bytes | bytearray) -> Any: return orjson.loads(json_string) - - -class UjsonHandler(_JsonHandler): - def __init__(self) -> None: - if ujson is None: # pragma: no cover - raise ValueError("ujson must be installed to use the UjsonHandler") - - @staticmethod - def dumps(obj: Any) -> str: - return ujson.dumps(obj) - - @staticmethod - def dump_bytes(obj: Any) -> bytes: - return ujson.dumps(obj).encode("utf-8") - - @staticmethod - def loads(json_string: str | bytes | bytearray) -> Any: - return ujson.loads(json_string) diff --git a/pyproject.toml b/pyproject.toml index 65306b00..26bd7150 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,8 +33,7 @@ dependencies = [ [project.optional-dependencies] orjson = ["orjson>=3.10.6"] -ujson = ["ujson>=5.10.0"] -all = ["orjson", "ujson"] +all = ["orjson"] [dependency-groups] dev = [ @@ -50,7 +49,6 @@ dev = [ "ruff==0.14.10", "types-aiofiles==25.1.0.20251011", "typing-extensions==4.15.0", - "types-ujson==5.10.0.20250822", ] [tool.hatch.version] diff --git a/tests/conftest.py b/tests/conftest.py index 0f043cfd..770a3501 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,7 +18,7 @@ from meilisearch_python_sdk import AsyncClient, Client from meilisearch_python_sdk._task import async_wait_for_task, wait_for_task from meilisearch_python_sdk.errors import MeilisearchApiError -from meilisearch_python_sdk.json_handler import OrjsonHandler, UjsonHandler +from meilisearch_python_sdk.json_handler import OrjsonHandler from meilisearch_python_sdk.models.settings import ( Embedders, Faceting, @@ -71,14 +71,6 @@ async def async_client_orjson_handler(base_url, ssl_verify): yield client -@pytest.fixture(scope="session") -async def async_client_ujson_handler(base_url, ssl_verify): - async with AsyncClient( - base_url, MASTER_KEY, json_handler=UjsonHandler(), verify=ssl_verify - ) as client: - yield client - - @pytest.fixture(scope="session") async def async_client_with_plugins(base_url, ssl_verify): async with AsyncClient(base_url, MASTER_KEY, verify=ssl_verify) as client: @@ -96,11 +88,6 @@ def client_orjson_handler(base_url, ssl_verify): yield Client(base_url, MASTER_KEY, json_handler=OrjsonHandler(), verify=ssl_verify) -@pytest.fixture(scope="session") -def client_ujson_handler(base_url, ssl_verify): - yield Client(base_url, MASTER_KEY, json_handler=UjsonHandler(), verify=ssl_verify) - - @pytest.fixture(autouse=True) async def clear_indexes(async_client, pytestconfig): """Auto-clears the indexes after each test function run if not a parallel test.""" diff --git a/tests/test_async_client.py b/tests/test_async_client.py index 853ba2db..1dfa084c 100644 --- a/tests/test_async_client.py +++ b/tests/test_async_client.py @@ -136,17 +136,6 @@ async def test_create_index_orjson_handler(async_client_orjson_handler): assert isinstance(index.updated_at, datetime) -async def test_create_index_ujson_handler(async_client_ujson_handler): - uid = str(uuid4()) - index = await async_client_ujson_handler.create_index(uid=uid) - - assert index.uid == uid - - assert index.primary_key is None - assert isinstance(index.created_at, datetime) - assert isinstance(index.updated_at, datetime) - - async def test_create_index_with_settings(async_client, new_settings): uid = str(uuid4()) index = await async_client.create_index(uid=uid, settings=new_settings) diff --git a/tests/test_async_documents.py b/tests/test_async_documents.py index a47a392e..dcfd8b60 100644 --- a/tests/test_async_documents.py +++ b/tests/test_async_documents.py @@ -411,17 +411,6 @@ async def test_add_documents_from_file_orjson_handler( assert update.status == "succeeded" -async def test_add_documents_from_file_ujson_handler( - async_client_ujson_handler, - small_movies_path, -): - index = async_client_ujson_handler.index(str(uuid4())) - response = await index.add_documents_from_file(small_movies_path) - - update = await async_wait_for_task(index.http_client, response.task_uid) - assert update.status == "succeeded" - - @pytest.mark.parametrize( "primary_key, expected_primary_key", (("release_date", "release_date"), (None, "id")) ) @@ -1701,14 +1690,6 @@ async def test_add_documents_orjson_handler(compress, async_client_orjson_handle assert update.status == "succeeded" -@pytest.mark.parametrize("compress", (True, False)) -async def test_add_documents_ujson_handler(compress, async_client_ujson_handler, small_movies): - index = await async_client_ujson_handler.create_index(str(uuid4())) - response = await index.add_documents(small_movies, compress=compress) - update = await async_wait_for_task(index.http_client, response.task_uid) - assert update.status == "succeeded" - - async def test_edit_documents_by_function(async_index_with_documents): index = await async_index_with_documents() task = await index.update_filterable_attributes(["id"]) diff --git a/tests/test_client.py b/tests/test_client.py index 28638f89..7bb428a8 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -132,17 +132,6 @@ def test_create_index_orjson_handler(client_orjson_handler): assert isinstance(index.updated_at, datetime) -def test_create_index_ujson_handler(client_ujson_handler): - uid = str(uuid4()) - index = client_ujson_handler.create_index(uid=uid) - - assert index.uid == uid - - assert index.primary_key is None - assert isinstance(index.created_at, datetime) - assert isinstance(index.updated_at, datetime) - - def test_create_index_with_settings(client, new_settings): uid = str(uuid4()) index = client.create_index(uid=uid, settings=new_settings) diff --git a/tests/test_documents.py b/tests/test_documents.py index 87ae7519..d86e4c51 100644 --- a/tests/test_documents.py +++ b/tests/test_documents.py @@ -349,17 +349,6 @@ def test_add_documents_from_file_orjson_handler( assert update.status == "succeeded" -def test_add_documents_from_file_ujson_handler( - client_ujson_handler, - small_movies_path, -): - index = client_ujson_handler.index(str(uuid4())) - response = index.add_documents_from_file(small_movies_path) - - update = wait_for_task(index.http_client, response.task_uid) - assert update.status == "succeeded" - - @pytest.mark.parametrize( "primary_key, expected_primary_key", [("release_date", "release_date"), (None, "id")] ) @@ -1550,14 +1539,6 @@ def test_add_documents_orjson_handler(compress, client_orjson_handler, small_mov assert update.status == "succeeded" -@pytest.mark.parametrize("compress", (True, False)) -def test_add_documents_ujson_handler(compress, client_ujson_handler, small_movies): - index = client_ujson_handler.create_index(str(uuid4())) - response = index.add_documents(small_movies, compress=compress) - update = wait_for_task(index.http_client, response.task_uid) - assert update.status == "succeeded" - - def test_edit_documents_by_function(index_with_documents): index = index_with_documents() task = index.update_filterable_attributes(["id"]) diff --git a/uv.lock b/uv.lock index 38823a14..71301372 100644 --- a/uv.lock +++ b/uv.lock @@ -22,16 +22,16 @@ wheels = [ [[package]] name = "anyio" -version = "4.12.0" +version = "4.12.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266, upload-time = "2025-11-28T23:37:38.911Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362, upload-time = "2025-11-28T23:36:57.897Z" }, + { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" }, ] [[package]] @@ -668,14 +668,10 @@ dependencies = [ [package.optional-dependencies] all = [ { name = "orjson" }, - { name = "ujson" }, ] orjson = [ { name = "orjson" }, ] -ujson = [ - { name = "ujson" }, -] [package.dev-dependencies] dev = [ @@ -690,7 +686,6 @@ dev = [ { name = "pytest-xdist" }, { name = "ruff" }, { name = "types-aiofiles" }, - { name = "types-ujson" }, { name = "typing-extensions" }, ] @@ -703,10 +698,8 @@ requires-dist = [ { name = "orjson", marker = "extra == 'orjson'", specifier = ">=3.10.6" }, { name = "pydantic", specifier = ">=2.0.0" }, { name = "pyjwt", specifier = ">=2.3.0" }, - { name = "ujson", marker = "extra == 'all'" }, - { name = "ujson", marker = "extra == 'ujson'", specifier = ">=5.10.0" }, ] -provides-extras = ["all", "orjson", "ujson"] +provides-extras = ["all", "orjson"] [package.metadata.requires-dev] dev = [ @@ -721,7 +714,6 @@ dev = [ { name = "pytest-xdist", specifier = "==3.8.0" }, { name = "ruff", specifier = "==0.14.10" }, { name = "types-aiofiles", specifier = "==25.1.0.20251011" }, - { name = "types-ujson", specifier = "==5.10.0.20250822" }, { name = "typing-extensions", specifier = "==4.15.0" }, ] @@ -1024,11 +1016,11 @@ wheels = [ [[package]] name = "pathspec" -version = "0.12.1" +version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/2e/83722ece0f6ee24387d6cb830dd562ddbcd6ce0b9d76072c6849670c31b4/pathspec-1.0.1.tar.gz", hash = "sha256:e2769b508d0dd47b09af6ee2c75b2744a2cb1f474ae4b1494fd6a1b7a841613c", size = 129791, upload-time = "2026-01-06T13:02:55.15Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/d2/fe/2257c71721aeab6a6e8aa1f00d01f2a20f58547d249a6c8fef5791f559fc/pathspec-1.0.1-py3-none-any.whl", hash = "sha256:8870061f22c58e6d83463cfce9a7dd6eca0512c772c1001fb09ac64091816721", size = 54584, upload-time = "2026-01-06T13:02:53.601Z" }, ] [[package]] @@ -1484,15 +1476,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/0f/76917bab27e270bb6c32addd5968d69e558e5b6f7fb4ac4cbfa282996a96/types_aiofiles-25.1.0.20251011-py3-none-any.whl", hash = "sha256:8ff8de7f9d42739d8f0dadcceeb781ce27cd8d8c4152d4a7c52f6b20edb8149c", size = 14338, upload-time = "2025-10-11T02:44:50.054Z" }, ] -[[package]] -name = "types-ujson" -version = "5.10.0.20250822" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5c/bd/d372d44534f84864a96c19a7059d9b4d29db8541828b8b9dc3040f7a46d0/types_ujson-5.10.0.20250822.tar.gz", hash = "sha256:0a795558e1f78532373cf3f03f35b1f08bc60d52d924187b97995ee3597ba006", size = 8437, upload-time = "2025-08-22T03:02:19.433Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/f2/d812543c350674d8b3f6e17c8922248ee3bb752c2a76f64beb8c538b40cf/types_ujson-5.10.0.20250822-py3-none-any.whl", hash = "sha256:3e9e73a6dc62ccc03449d9ac2c580cd1b7a8e4873220db498f7dd056754be080", size = 7657, upload-time = "2025-08-22T03:02:18.699Z" }, -] - [[package]] name = "typing-extensions" version = "4.15.0" @@ -1514,93 +1497,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, ] -[[package]] -name = "ujson" -version = "5.11.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/d9/3f17e3c5773fb4941c68d9a37a47b1a79c9649d6c56aefbed87cc409d18a/ujson-5.11.0.tar.gz", hash = "sha256:e204ae6f909f099ba6b6b942131cee359ddda2b6e4ea39c12eb8b991fe2010e0", size = 7156583, upload-time = "2025-08-20T11:57:02.452Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/8bf7a4fabfd01c7eed92d9b290930ce6d14910dec708e73538baa38885d1/ujson-5.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:446e8c11c06048611c9d29ef1237065de0af07cabdd97e6b5b527b957692ec25", size = 55248, upload-time = "2025-08-20T11:55:02.368Z" }, - { url = "https://files.pythonhosted.org/packages/7b/2e/eeab0b8b641817031ede4f790db4c4942df44a12f44d72b3954f39c6a115/ujson-5.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16ccb973b7ada0455201808ff11d48fe9c3f034a6ab5bd93b944443c88299f89", size = 53157, upload-time = "2025-08-20T11:55:04.012Z" }, - { url = "https://files.pythonhosted.org/packages/21/1b/a4e7a41870797633423ea79618526747353fd7be9191f3acfbdee0bf264b/ujson-5.11.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3134b783ab314d2298d58cda7e47e7a0f7f71fc6ade6ac86d5dbeaf4b9770fa6", size = 57657, upload-time = "2025-08-20T11:55:05.169Z" }, - { url = "https://files.pythonhosted.org/packages/94/ae/4e0d91b8f6db7c9b76423b3649612189506d5a06ddd3b6334b6d37f77a01/ujson-5.11.0-cp310-cp310-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:185f93ebccffebc8baf8302c869fac70dd5dd78694f3b875d03a31b03b062cdb", size = 59780, upload-time = "2025-08-20T11:55:06.325Z" }, - { url = "https://files.pythonhosted.org/packages/b3/cc/46b124c2697ca2da7c65c4931ed3cb670646978157aa57a7a60f741c530f/ujson-5.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d06e87eded62ff0e5f5178c916337d2262fdbc03b31688142a3433eabb6511db", size = 57307, upload-time = "2025-08-20T11:55:07.493Z" }, - { url = "https://files.pythonhosted.org/packages/39/eb/20dd1282bc85dede2f1c62c45b4040bc4c389c80a05983515ab99771bca7/ujson-5.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:181fb5b15703a8b9370b25345d2a1fd1359f0f18776b3643d24e13ed9c036d4c", size = 1036369, upload-time = "2025-08-20T11:55:09.192Z" }, - { url = "https://files.pythonhosted.org/packages/64/a2/80072439065d493e3a4b1fbeec991724419a1b4c232e2d1147d257cac193/ujson-5.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4df61a6df0a4a8eb5b9b1ffd673429811f50b235539dac586bb7e9e91994138", size = 1195738, upload-time = "2025-08-20T11:55:11.402Z" }, - { url = "https://files.pythonhosted.org/packages/5d/7e/d77f9e9c039d58299c350c978e086a804d1fceae4fd4a1cc6e8d0133f838/ujson-5.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6eff24e1abd79e0ec6d7eae651dd675ddbc41f9e43e29ef81e16b421da896915", size = 1088718, upload-time = "2025-08-20T11:55:13.297Z" }, - { url = "https://files.pythonhosted.org/packages/ab/f1/697559d45acc849cada6b3571d53522951b1a64027400507aabc6a710178/ujson-5.11.0-cp310-cp310-win32.whl", hash = "sha256:30f607c70091483550fbd669a0b37471e5165b317d6c16e75dba2aa967608723", size = 39653, upload-time = "2025-08-20T11:55:14.869Z" }, - { url = "https://files.pythonhosted.org/packages/86/a2/70b73a0f55abe0e6b8046d365d74230c20c5691373e6902a599b2dc79ba1/ujson-5.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:3d2720e9785f84312b8e2cb0c2b87f1a0b1c53aaab3b2af3ab817d54409012e0", size = 43720, upload-time = "2025-08-20T11:55:15.897Z" }, - { url = "https://files.pythonhosted.org/packages/1c/5f/b19104afa455630b43efcad3a24495b9c635d92aa8f2da4f30e375deb1a2/ujson-5.11.0-cp310-cp310-win_arm64.whl", hash = "sha256:85e6796631165f719084a9af00c79195d3ebf108151452fefdcb1c8bb50f0105", size = 38410, upload-time = "2025-08-20T11:55:17.556Z" }, - { url = "https://files.pythonhosted.org/packages/da/ea/80346b826349d60ca4d612a47cdf3533694e49b45e9d1c07071bb867a184/ujson-5.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d7c46cb0fe5e7056b9acb748a4c35aa1b428025853032540bb7e41f46767321f", size = 55248, upload-time = "2025-08-20T11:55:19.033Z" }, - { url = "https://files.pythonhosted.org/packages/57/df/b53e747562c89515e18156513cc7c8ced2e5e3fd6c654acaa8752ffd7cd9/ujson-5.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8951bb7a505ab2a700e26f691bdfacf395bc7e3111e3416d325b513eea03a58", size = 53156, upload-time = "2025-08-20T11:55:20.174Z" }, - { url = "https://files.pythonhosted.org/packages/41/b8/ab67ec8c01b8a3721fd13e5cb9d85ab2a6066a3a5e9148d661a6870d6293/ujson-5.11.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952c0be400229940248c0f5356514123d428cba1946af6fa2bbd7503395fef26", size = 57657, upload-time = "2025-08-20T11:55:21.296Z" }, - { url = "https://files.pythonhosted.org/packages/7b/c7/fb84f27cd80a2c7e2d3c6012367aecade0da936790429801803fa8d4bffc/ujson-5.11.0-cp311-cp311-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:94fcae844f1e302f6f8095c5d1c45a2f0bfb928cccf9f1b99e3ace634b980a2a", size = 59779, upload-time = "2025-08-20T11:55:22.772Z" }, - { url = "https://files.pythonhosted.org/packages/5d/7c/48706f7c1e917ecb97ddcfb7b1d756040b86ed38290e28579d63bd3fcc48/ujson-5.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7e0ec1646db172beb8d3df4c32a9d78015e671d2000af548252769e33079d9a6", size = 57284, upload-time = "2025-08-20T11:55:24.01Z" }, - { url = "https://files.pythonhosted.org/packages/ec/ce/48877c6eb4afddfd6bd1db6be34456538c07ca2d6ed233d3f6c6efc2efe8/ujson-5.11.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:da473b23e3a54448b008d33f742bcd6d5fb2a897e42d1fc6e7bf306ea5d18b1b", size = 1036395, upload-time = "2025-08-20T11:55:25.725Z" }, - { url = "https://files.pythonhosted.org/packages/8b/7a/2c20dc97ad70cd7c31ad0596ba8e2cf8794d77191ba4d1e0bded69865477/ujson-5.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:aa6b3d4f1c0d3f82930f4cbd7fe46d905a4a9205a7c13279789c1263faf06dba", size = 1195731, upload-time = "2025-08-20T11:55:27.915Z" }, - { url = "https://files.pythonhosted.org/packages/15/f5/ca454f2f6a2c840394b6f162fff2801450803f4ff56c7af8ce37640b8a2a/ujson-5.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4843f3ab4fe1cc596bb7e02228ef4c25d35b4bb0809d6a260852a4bfcab37ba3", size = 1088710, upload-time = "2025-08-20T11:55:29.426Z" }, - { url = "https://files.pythonhosted.org/packages/fe/d3/9ba310e07969bc9906eb7548731e33a0f448b122ad9705fed699c9b29345/ujson-5.11.0-cp311-cp311-win32.whl", hash = "sha256:e979fbc469a7f77f04ec2f4e853ba00c441bf2b06720aa259f0f720561335e34", size = 39648, upload-time = "2025-08-20T11:55:31.194Z" }, - { url = "https://files.pythonhosted.org/packages/57/f7/da05b4a8819f1360be9e71fb20182f0bb3ec611a36c3f213f4d20709e099/ujson-5.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:683f57f0dd3acdd7d9aff1de0528d603aafcb0e6d126e3dc7ce8b020a28f5d01", size = 43717, upload-time = "2025-08-20T11:55:32.241Z" }, - { url = "https://files.pythonhosted.org/packages/9a/cc/f3f9ac0f24f00a623a48d97dc3814df5c2dc368cfb00031aa4141527a24b/ujson-5.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:7855ccea3f8dad5e66d8445d754fc1cf80265a4272b5f8059ebc7ec29b8d0835", size = 38402, upload-time = "2025-08-20T11:55:33.641Z" }, - { url = "https://files.pythonhosted.org/packages/b9/ef/a9cb1fce38f699123ff012161599fb9f2ff3f8d482b4b18c43a2dc35073f/ujson-5.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7895f0d2d53bd6aea11743bd56e3cb82d729980636cd0ed9b89418bf66591702", size = 55434, upload-time = "2025-08-20T11:55:34.987Z" }, - { url = "https://files.pythonhosted.org/packages/b1/05/dba51a00eb30bd947791b173766cbed3492269c150a7771d2750000c965f/ujson-5.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12b5e7e22a1fe01058000d1b317d3b65cc3daf61bd2ea7a2b76721fe160fa74d", size = 53190, upload-time = "2025-08-20T11:55:36.384Z" }, - { url = "https://files.pythonhosted.org/packages/03/3c/fd11a224f73fbffa299fb9644e425f38b38b30231f7923a088dd513aabb4/ujson-5.11.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0180a480a7d099082501cad1fe85252e4d4bf926b40960fb3d9e87a3a6fbbc80", size = 57600, upload-time = "2025-08-20T11:55:37.692Z" }, - { url = "https://files.pythonhosted.org/packages/55/b9/405103cae24899df688a3431c776e00528bd4799e7d68820e7ebcf824f92/ujson-5.11.0-cp312-cp312-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:fa79fdb47701942c2132a9dd2297a1a85941d966d8c87bfd9e29b0cf423f26cc", size = 59791, upload-time = "2025-08-20T11:55:38.877Z" }, - { url = "https://files.pythonhosted.org/packages/17/7b/2dcbc2bbfdbf68f2368fb21ab0f6735e872290bb604c75f6e06b81edcb3f/ujson-5.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8254e858437c00f17cb72e7a644fc42dad0ebb21ea981b71df6e84b1072aaa7c", size = 57356, upload-time = "2025-08-20T11:55:40.036Z" }, - { url = "https://files.pythonhosted.org/packages/d1/71/fea2ca18986a366c750767b694430d5ded6b20b6985fddca72f74af38a4c/ujson-5.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1aa8a2ab482f09f6c10fba37112af5f957689a79ea598399c85009f2f29898b5", size = 1036313, upload-time = "2025-08-20T11:55:41.408Z" }, - { url = "https://files.pythonhosted.org/packages/a3/bb/d4220bd7532eac6288d8115db51710fa2d7d271250797b0bfba9f1e755af/ujson-5.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a638425d3c6eed0318df663df44480f4a40dc87cc7c6da44d221418312f6413b", size = 1195782, upload-time = "2025-08-20T11:55:43.357Z" }, - { url = "https://files.pythonhosted.org/packages/80/47/226e540aa38878ce1194454385701d82df538ccb5ff8db2cf1641dde849a/ujson-5.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7e3cff632c1d78023b15f7e3a81c3745cd3f94c044d1e8fa8efbd6b161997bbc", size = 1088817, upload-time = "2025-08-20T11:55:45.262Z" }, - { url = "https://files.pythonhosted.org/packages/7e/81/546042f0b23c9040d61d46ea5ca76f0cc5e0d399180ddfb2ae976ebff5b5/ujson-5.11.0-cp312-cp312-win32.whl", hash = "sha256:be6b0eaf92cae8cdee4d4c9e074bde43ef1c590ed5ba037ea26c9632fb479c88", size = 39757, upload-time = "2025-08-20T11:55:46.522Z" }, - { url = "https://files.pythonhosted.org/packages/44/1b/27c05dc8c9728f44875d74b5bfa948ce91f6c33349232619279f35c6e817/ujson-5.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:b7b136cc6abc7619124fd897ef75f8e63105298b5ca9bdf43ebd0e1fa0ee105f", size = 43859, upload-time = "2025-08-20T11:55:47.987Z" }, - { url = "https://files.pythonhosted.org/packages/22/2d/37b6557c97c3409c202c838aa9c960ca3896843b4295c4b7bb2bbd260664/ujson-5.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:6cd2df62f24c506a0ba322d5e4fe4466d47a9467b57e881ee15a31f7ecf68ff6", size = 38361, upload-time = "2025-08-20T11:55:49.122Z" }, - { url = "https://files.pythonhosted.org/packages/1c/ec/2de9dd371d52c377abc05d2b725645326c4562fc87296a8907c7bcdf2db7/ujson-5.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:109f59885041b14ee9569bf0bb3f98579c3fa0652317b355669939e5fc5ede53", size = 55435, upload-time = "2025-08-20T11:55:50.243Z" }, - { url = "https://files.pythonhosted.org/packages/5b/a4/f611f816eac3a581d8a4372f6967c3ed41eddbae4008d1d77f223f1a4e0a/ujson-5.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a31c6b8004438e8c20fc55ac1c0e07dad42941db24176fe9acf2815971f8e752", size = 53193, upload-time = "2025-08-20T11:55:51.373Z" }, - { url = "https://files.pythonhosted.org/packages/e9/c5/c161940967184de96f5cbbbcce45b562a4bf851d60f4c677704b1770136d/ujson-5.11.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78c684fb21255b9b90320ba7e199780f653e03f6c2528663768965f4126a5b50", size = 57603, upload-time = "2025-08-20T11:55:52.583Z" }, - { url = "https://files.pythonhosted.org/packages/2b/d6/c7b2444238f5b2e2d0e3dab300b9ddc3606e4b1f0e4bed5a48157cebc792/ujson-5.11.0-cp313-cp313-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:4c9f5d6a27d035dd90a146f7761c2272cf7103de5127c9ab9c4cd39ea61e878a", size = 59794, upload-time = "2025-08-20T11:55:53.69Z" }, - { url = "https://files.pythonhosted.org/packages/fe/a3/292551f936d3d02d9af148f53e1bc04306b00a7cf1fcbb86fa0d1c887242/ujson-5.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:837da4d27fed5fdc1b630bd18f519744b23a0b5ada1bbde1a36ba463f2900c03", size = 57363, upload-time = "2025-08-20T11:55:54.843Z" }, - { url = "https://files.pythonhosted.org/packages/90/a6/82cfa70448831b1a9e73f882225980b5c689bf539ec6400b31656a60ea46/ujson-5.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:787aff4a84da301b7f3bac09bc696e2e5670df829c6f8ecf39916b4e7e24e701", size = 1036311, upload-time = "2025-08-20T11:55:56.197Z" }, - { url = "https://files.pythonhosted.org/packages/84/5c/96e2266be50f21e9b27acaee8ca8f23ea0b85cb998c33d4f53147687839b/ujson-5.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6dd703c3e86dc6f7044c5ac0b3ae079ed96bf297974598116aa5fb7f655c3a60", size = 1195783, upload-time = "2025-08-20T11:55:58.081Z" }, - { url = "https://files.pythonhosted.org/packages/8d/20/78abe3d808cf3bb3e76f71fca46cd208317bf461c905d79f0d26b9df20f1/ujson-5.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3772e4fe6b0c1e025ba3c50841a0ca4786825a4894c8411bf8d3afe3a8061328", size = 1088822, upload-time = "2025-08-20T11:55:59.469Z" }, - { url = "https://files.pythonhosted.org/packages/d8/50/8856e24bec5e2fc7f775d867aeb7a3f137359356200ac44658f1f2c834b2/ujson-5.11.0-cp313-cp313-win32.whl", hash = "sha256:8fa2af7c1459204b7a42e98263b069bd535ea0cd978b4d6982f35af5a04a4241", size = 39753, upload-time = "2025-08-20T11:56:01.345Z" }, - { url = "https://files.pythonhosted.org/packages/5b/d8/1baee0f4179a4d0f5ce086832147b6cc9b7731c24ca08e14a3fdb8d39c32/ujson-5.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:34032aeca4510a7c7102bd5933f59a37f63891f30a0706fb46487ab6f0edf8f0", size = 43866, upload-time = "2025-08-20T11:56:02.552Z" }, - { url = "https://files.pythonhosted.org/packages/a9/8c/6d85ef5be82c6d66adced3ec5ef23353ed710a11f70b0b6a836878396334/ujson-5.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:ce076f2df2e1aa62b685086fbad67f2b1d3048369664b4cdccc50707325401f9", size = 38363, upload-time = "2025-08-20T11:56:03.688Z" }, - { url = "https://files.pythonhosted.org/packages/28/08/4518146f4984d112764b1dfa6fb7bad691c44a401adadaa5e23ccd930053/ujson-5.11.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:65724738c73645db88f70ba1f2e6fb678f913281804d5da2fd02c8c5839af302", size = 55462, upload-time = "2025-08-20T11:56:04.873Z" }, - { url = "https://files.pythonhosted.org/packages/29/37/2107b9a62168867a692654d8766b81bd2fd1e1ba13e2ec90555861e02b0c/ujson-5.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:29113c003ca33ab71b1b480bde952fbab2a0b6b03a4ee4c3d71687cdcbd1a29d", size = 53246, upload-time = "2025-08-20T11:56:06.054Z" }, - { url = "https://files.pythonhosted.org/packages/9b/f8/25583c70f83788edbe3ca62ce6c1b79eff465d78dec5eb2b2b56b3e98b33/ujson-5.11.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c44c703842024d796b4c78542a6fcd5c3cb948b9fc2a73ee65b9c86a22ee3638", size = 57631, upload-time = "2025-08-20T11:56:07.374Z" }, - { url = "https://files.pythonhosted.org/packages/ed/ca/19b3a632933a09d696f10dc1b0dfa1d692e65ad507d12340116ce4f67967/ujson-5.11.0-cp314-cp314-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:e750c436fb90edf85585f5c62a35b35082502383840962c6983403d1bd96a02c", size = 59877, upload-time = "2025-08-20T11:56:08.534Z" }, - { url = "https://files.pythonhosted.org/packages/55/7a/4572af5324ad4b2bfdd2321e898a527050290147b4ea337a79a0e4e87ec7/ujson-5.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f278b31a7c52eb0947b2db55a5133fbc46b6f0ef49972cd1a80843b72e135aba", size = 57363, upload-time = "2025-08-20T11:56:09.758Z" }, - { url = "https://files.pythonhosted.org/packages/7b/71/a2b8c19cf4e1efe53cf439cdf7198ac60ae15471d2f1040b490c1f0f831f/ujson-5.11.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ab2cb8351d976e788669c8281465d44d4e94413718af497b4e7342d7b2f78018", size = 1036394, upload-time = "2025-08-20T11:56:11.168Z" }, - { url = "https://files.pythonhosted.org/packages/7a/3e/7b98668cba3bb3735929c31b999b374ebc02c19dfa98dfebaeeb5c8597ca/ujson-5.11.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:090b4d11b380ae25453100b722d0609d5051ffe98f80ec52853ccf8249dfd840", size = 1195837, upload-time = "2025-08-20T11:56:12.6Z" }, - { url = "https://files.pythonhosted.org/packages/a1/ea/8870f208c20b43571a5c409ebb2fe9b9dba5f494e9e60f9314ac01ea8f78/ujson-5.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:80017e870d882d5517d28995b62e4e518a894f932f1e242cbc802a2fd64d365c", size = 1088837, upload-time = "2025-08-20T11:56:14.15Z" }, - { url = "https://files.pythonhosted.org/packages/63/b6/c0e6607e37fa47929920a685a968c6b990a802dec65e9c5181e97845985d/ujson-5.11.0-cp314-cp314-win32.whl", hash = "sha256:1d663b96eb34c93392e9caae19c099ec4133ba21654b081956613327f0e973ac", size = 41022, upload-time = "2025-08-20T11:56:15.509Z" }, - { url = "https://files.pythonhosted.org/packages/4e/56/f4fe86b4c9000affd63e9219e59b222dc48b01c534533093e798bf617a7e/ujson-5.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:849e65b696f0d242833f1df4182096cedc50d414215d1371fca85c541fbff629", size = 45111, upload-time = "2025-08-20T11:56:16.597Z" }, - { url = "https://files.pythonhosted.org/packages/0a/f3/669437f0280308db4783b12a6d88c00730b394327d8334cc7a32ef218e64/ujson-5.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:e73df8648c9470af2b6a6bf5250d4744ad2cf3d774dcf8c6e31f018bdd04d764", size = 39682, upload-time = "2025-08-20T11:56:17.763Z" }, - { url = "https://files.pythonhosted.org/packages/6e/cd/e9809b064a89fe5c4184649adeb13c1b98652db3f8518980b04227358574/ujson-5.11.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:de6e88f62796372fba1de973c11138f197d3e0e1d80bcb2b8aae1e826096d433", size = 55759, upload-time = "2025-08-20T11:56:18.882Z" }, - { url = "https://files.pythonhosted.org/packages/1b/be/ae26a6321179ebbb3a2e2685b9007c71bcda41ad7a77bbbe164005e956fc/ujson-5.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:49e56ef8066f11b80d620985ae36869a3ff7e4b74c3b6129182ec5d1df0255f3", size = 53634, upload-time = "2025-08-20T11:56:20.012Z" }, - { url = "https://files.pythonhosted.org/packages/ae/e9/fb4a220ee6939db099f4cfeeae796ecb91e7584ad4d445d4ca7f994a9135/ujson-5.11.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1a325fd2c3a056cf6c8e023f74a0c478dd282a93141356ae7f16d5309f5ff823", size = 58547, upload-time = "2025-08-20T11:56:21.175Z" }, - { url = "https://files.pythonhosted.org/packages/bd/f8/fc4b952b8f5fea09ea3397a0bd0ad019e474b204cabcb947cead5d4d1ffc/ujson-5.11.0-cp314-cp314t-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:a0af6574fc1d9d53f4ff371f58c96673e6d988ed2b5bf666a6143c782fa007e9", size = 60489, upload-time = "2025-08-20T11:56:22.342Z" }, - { url = "https://files.pythonhosted.org/packages/2e/e5/af5491dfda4f8b77e24cf3da68ee0d1552f99a13e5c622f4cef1380925c3/ujson-5.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10f29e71ecf4ecd93a6610bd8efa8e7b6467454a363c3d6416db65de883eb076", size = 58035, upload-time = "2025-08-20T11:56:23.92Z" }, - { url = "https://files.pythonhosted.org/packages/c4/09/0945349dd41f25cc8c38d78ace49f14c5052c5bbb7257d2f466fa7bdb533/ujson-5.11.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1a0a9b76a89827a592656fe12e000cf4f12da9692f51a841a4a07aa4c7ecc41c", size = 1037212, upload-time = "2025-08-20T11:56:25.274Z" }, - { url = "https://files.pythonhosted.org/packages/49/44/8e04496acb3d5a1cbee3a54828d9652f67a37523efa3d3b18a347339680a/ujson-5.11.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b16930f6a0753cdc7d637b33b4e8f10d5e351e1fb83872ba6375f1e87be39746", size = 1196500, upload-time = "2025-08-20T11:56:27.517Z" }, - { url = "https://files.pythonhosted.org/packages/64/ae/4bc825860d679a0f208a19af2f39206dfd804ace2403330fdc3170334a2f/ujson-5.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:04c41afc195fd477a59db3a84d5b83a871bd648ef371cf8c6f43072d89144eef", size = 1089487, upload-time = "2025-08-20T11:56:29.07Z" }, - { url = "https://files.pythonhosted.org/packages/30/ed/5a057199fb0a5deabe0957073a1c1c1c02a3e99476cd03daee98ea21fa57/ujson-5.11.0-cp314-cp314t-win32.whl", hash = "sha256:aa6d7a5e09217ff93234e050e3e380da62b084e26b9f2e277d2606406a2fc2e5", size = 41859, upload-time = "2025-08-20T11:56:30.495Z" }, - { url = "https://files.pythonhosted.org/packages/aa/03/b19c6176bdf1dc13ed84b886e99677a52764861b6cc023d5e7b6ebda249d/ujson-5.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:48055e1061c1bb1f79e75b4ac39e821f3f35a9b82de17fce92c3140149009bec", size = 46183, upload-time = "2025-08-20T11:56:31.574Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ca/a0413a3874b2dc1708b8796ca895bf363292f9c70b2e8ca482b7dbc0259d/ujson-5.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:1194b943e951092db611011cb8dbdb6cf94a3b816ed07906e14d3bc6ce0e90ab", size = 40264, upload-time = "2025-08-20T11:56:32.773Z" }, - { url = "https://files.pythonhosted.org/packages/50/17/30275aa2933430d8c0c4ead951cc4fdb922f575a349aa0b48a6f35449e97/ujson-5.11.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:abae0fb58cc820092a0e9e8ba0051ac4583958495bfa5262a12f628249e3b362", size = 51206, upload-time = "2025-08-20T11:56:48.797Z" }, - { url = "https://files.pythonhosted.org/packages/c3/15/42b3924258eac2551f8f33fa4e35da20a06a53857ccf3d4deb5e5d7c0b6c/ujson-5.11.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fac6c0649d6b7c3682a0a6e18d3de6857977378dce8d419f57a0b20e3d775b39", size = 48907, upload-time = "2025-08-20T11:56:50.136Z" }, - { url = "https://files.pythonhosted.org/packages/94/7e/0519ff7955aba581d1fe1fb1ca0e452471250455d182f686db5ac9e46119/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4b42c115c7c6012506e8168315150d1e3f76e7ba0f4f95616f4ee599a1372bbc", size = 50319, upload-time = "2025-08-20T11:56:51.63Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/209d90506b7d6c5873f82c5a226d7aad1a1da153364e9ebf61eff0740c33/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:86baf341d90b566d61a394869ce77188cc8668f76d7bb2c311d77a00f4bdf844", size = 56584, upload-time = "2025-08-20T11:56:52.89Z" }, - { url = "https://files.pythonhosted.org/packages/e9/97/bd939bb76943cb0e1d2b692d7e68629f51c711ef60425fa5bb6968037ecd/ujson-5.11.0-pp311-pypy311_pp73-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4598bf3965fc1a936bd84034312bcbe00ba87880ef1ee33e33c1e88f2c398b49", size = 51588, upload-time = "2025-08-20T11:56:54.054Z" }, - { url = "https://files.pythonhosted.org/packages/52/5b/8c5e33228f7f83f05719964db59f3f9f276d272dc43752fa3bbf0df53e7b/ujson-5.11.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:416389ec19ef5f2013592f791486bef712ebce0cd59299bf9df1ba40bb2f6e04", size = 43835, upload-time = "2025-08-20T11:56:55.237Z" }, -] - [[package]] name = "urllib3" -version = "2.6.2" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]]