diff --git a/docs/vectorizer-api-reference.md b/docs/vectorizer-api-reference.md index 78ef54e1c..e01edcbe1 100644 --- a/docs/vectorizer-api-reference.md +++ b/docs/vectorizer-api-reference.md @@ -298,6 +298,7 @@ The function takes several parameters to customize the OpenAI embedding configur | dimensions | int | - | ✔ | Define the number of dimensions for the embedding vectors. This should match the output dimensions of the chosen model. | | chat_user | text | - | ✖ | The identifier for the user making the API call. This can be useful for tracking API usage or for OpenAI's monitoring purposes. | | api_key_name | text | `OPENAI_API_KEY` | ✖ | Set [the name of the environment variable that contains the OpenAI API key][openai-use-env-var]. This allows for flexible API key management without hardcoding keys in the database. On Timescale Cloud, you should set this to the name of the secret that contains the OpenAI API key. | +| base_url | text | - | ✖ | Set the base_url of the OpenAI API. Note: no default configured here to allow configuration of the vectorizer worker through `OPENAI_BASE_URL` env var. | #### Returns A JSON configuration object that you can use in [ai.create_vectorizer](#create-vectorizers). diff --git a/projects/extension/sql/idempotent/008-embedding.sql b/projects/extension/sql/idempotent/008-embedding.sql index e03e21ed5..518e92eef 100644 --- a/projects/extension/sql/idempotent/008-embedding.sql +++ b/projects/extension/sql/idempotent/008-embedding.sql @@ -6,6 +6,7 @@ create or replace function ai.embedding_openai , dimensions pg_catalog.int4 , chat_user pg_catalog.text default null , api_key_name pg_catalog.text default 'OPENAI_API_KEY' +, base_url text default null ) returns pg_catalog.jsonb as $func$ select json_object @@ -15,6 +16,7 @@ as $func$ , 'dimensions': dimensions , 'user': chat_user , 'api_key_name': api_key_name + , 'base_url': base_url absent on null ) $func$ language sql immutable security invoker diff --git a/projects/extension/sql/incremental/010-drop-embedding-openai-outdated-function.sql b/projects/extension/sql/incremental/010-drop-embedding-openai-outdated-function.sql new file mode 100644 index 000000000..ddb39cb55 --- /dev/null +++ b/projects/extension/sql/incremental/010-drop-embedding-openai-outdated-function.sql @@ -0,0 +1,3 @@ + +-- dropping in favour of the new signature (adding base_url param) +drop function if exists ai.embedding_openai(text,integer,text,text); \ No newline at end of file diff --git a/projects/extension/tests/contents/output16.expected b/projects/extension/tests/contents/output16.expected index ef557f1bc..bccda7779 100644 --- a/projects/extension/tests/contents/output16.expected +++ b/projects/extension/tests/contents/output16.expected @@ -21,7 +21,7 @@ CREATE EXTENSION function ai.disable_vectorizer_schedule(integer) function ai.drop_vectorizer(integer,boolean) function ai.embedding_ollama(text,integer,text,jsonb,text) - function ai.embedding_openai(text,integer,text,text) + function ai.embedding_openai(text,integer,text,text,text) function ai.embedding_voyageai(text,integer,text,text) function ai.enable_vectorizer_schedule(integer) function ai.execute_vectorizer(integer) diff --git a/projects/extension/tests/contents/output17.expected b/projects/extension/tests/contents/output17.expected index 35c69d53b..bbb38a833 100644 --- a/projects/extension/tests/contents/output17.expected +++ b/projects/extension/tests/contents/output17.expected @@ -21,7 +21,7 @@ CREATE EXTENSION function ai.disable_vectorizer_schedule(integer) function ai.drop_vectorizer(integer,boolean) function ai.embedding_ollama(text,integer,text,jsonb,text) - function ai.embedding_openai(text,integer,text,text) + function ai.embedding_openai(text,integer,text,text,text) function ai.embedding_voyageai(text,integer,text,text) function ai.enable_vectorizer_schedule(integer) function ai.execute_vectorizer(integer) diff --git a/projects/extension/tests/privileges/function.expected b/projects/extension/tests/privileges/function.expected index 3b19b8a8a..99b91dcfc 100644 --- a/projects/extension/tests/privileges/function.expected +++ b/projects/extension/tests/privileges/function.expected @@ -168,10 +168,10 @@ f | bob | execute | no | ai | embedding_ollama(model text, dimensions integer, base_url text, options jsonb, keep_alive text) f | fred | execute | no | ai | embedding_ollama(model text, dimensions integer, base_url text, options jsonb, keep_alive text) f | jill | execute | YES | ai | embedding_ollama(model text, dimensions integer, base_url text, options jsonb, keep_alive text) - f | alice | execute | YES | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text) - f | bob | execute | no | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text) - f | fred | execute | no | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text) - f | jill | execute | YES | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text) + f | alice | execute | YES | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text, base_url text) + f | bob | execute | no | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text, base_url text) + f | fred | execute | no | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text, base_url text) + f | jill | execute | YES | ai | embedding_openai(model text, dimensions integer, chat_user text, api_key_name text, base_url text) f | alice | execute | YES | ai | embedding_voyageai(model text, dimensions integer, input_type text, api_key_name text) f | bob | execute | no | ai | embedding_voyageai(model text, dimensions integer, input_type text, api_key_name text) f | fred | execute | no | ai | embedding_voyageai(model text, dimensions integer, input_type text, api_key_name text) diff --git a/projects/pgai/pgai/vectorizer/embedders/ollama.py b/projects/pgai/pgai/vectorizer/embedders/ollama.py index 877e66296..f57744c31 100644 --- a/projects/pgai/pgai/vectorizer/embedders/ollama.py +++ b/projects/pgai/pgai/vectorizer/embedders/ollama.py @@ -9,6 +9,7 @@ from typing_extensions import TypedDict, override from ..embeddings import ( + BaseURLMixin, BatchApiCaller, Embedder, EmbeddingResponse, @@ -58,7 +59,7 @@ class OllamaOptions(TypedDict, total=False): stop: Sequence[str] -class Ollama(BaseModel, Embedder): +class Ollama(BaseModel, BaseURLMixin, Embedder): """ Embedder that uses Ollama to embed documents into vector representations. @@ -66,14 +67,12 @@ class Ollama(BaseModel, Embedder): implementation (Literal["ollama"]): The literal identifier for this implementation. model (str): The name of the Ollama model used for embeddings. - base_url (str): The base url used to access the Ollama API. options (dict): Additional ollama-specific runtime options keep_alive (str): How long to keep the model loaded after the request """ implementation: Literal["ollama"] model: str - base_url: str | None = None options: OllamaOptions | None = None keep_alive: str | None = None # this is only `str` because of the SQL API diff --git a/projects/pgai/pgai/vectorizer/embedders/openai.py b/projects/pgai/pgai/vectorizer/embedders/openai.py index 7c4e9aa5c..ec5383ed0 100644 --- a/projects/pgai/pgai/vectorizer/embedders/openai.py +++ b/projects/pgai/pgai/vectorizer/embedders/openai.py @@ -11,6 +11,7 @@ from ..embeddings import ( ApiKeyMixin, + BaseURLMixin, BatchApiCaller, ChunkEmbeddingError, Embedder, @@ -29,7 +30,7 @@ ) -class OpenAI(ApiKeyMixin, BaseModel, Embedder): +class OpenAI(ApiKeyMixin, BaseURLMixin, BaseModel, Embedder): """ Embedder that uses OpenAI's API to embed documents into vector representations. @@ -60,7 +61,9 @@ def _openai_user(self) -> str | openai.NotGiven: @cached_property def _embedder(self) -> resources.AsyncEmbeddings: - return openai.AsyncOpenAI(api_key=self._api_key, max_retries=3).embeddings + return openai.AsyncOpenAI( + base_url=self.base_url, api_key=self._api_key, max_retries=3 + ).embeddings @override def _max_chunks_per_batch(self) -> int: diff --git a/projects/pgai/pgai/vectorizer/embeddings.py b/projects/pgai/pgai/vectorizer/embeddings.py index a40f91f02..89ae384df 100644 --- a/projects/pgai/pgai/vectorizer/embeddings.py +++ b/projects/pgai/pgai/vectorizer/embeddings.py @@ -165,6 +165,17 @@ async def setup(self) -> None: # noqa: B027 empty on purpose """ +class BaseURLMixin: + """ + A mixin class that provides functionality for managing base URLs. + + Attributes: + base_url (str | None): The base URL for the API. + """ + + base_url: str | None = None + + class ApiKeyMixin: """ A mixin class that provides functionality for managing API keys. diff --git a/projects/pgai/pyproject.toml b/projects/pgai/pyproject.toml index 2851c44f3..455e8d24a 100644 --- a/projects/pgai/pyproject.toml +++ b/projects/pgai/pyproject.toml @@ -118,4 +118,5 @@ dev-dependencies = [ "testcontainers==4.8.1", "build==1.2.2.post1", "twine==5.1.1", + "mitmproxy>=11.0.2", ] diff --git a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=False.yaml b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=False.yaml new file mode 100644 index 000000000..7b83e73da --- /dev/null +++ b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=False.yaml @@ -0,0 +1,231 @@ +interactions: +- request: + body: '{"input": [[2252, 62, 16]], "model": "text-embedding-ada-002", "encoding_format": + "float"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '90' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.53.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.53.0 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.10.15 + method: POST + uri: https://api.openai.com/v1/embeddings + response: + body: + string: !!binary | + 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 + Cb/oXz/9HwAAAP//AwAh9zmhzoIAAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8ffc76804cd9af92-MAD + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 10 Jan 2025 11:52:47 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-allow-origin: + - '*' + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-model: + - text-embedding-ada-002 + openai-organization: + - popsql + openai-processing-ms: + - '55' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-848859d8f6-fztj8 + x-envoy-upstream-service-time: + - '40' + x-ratelimit-limit-requests: + - '10000' + x-ratelimit-limit-tokens: + - '10000000' + x-ratelimit-remaining-requests: + - '9999' + x-ratelimit-remaining-tokens: + - '9999996' + x-ratelimit-reset-requests: + - 6ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_a0bed71a4b2357f0632501afabee6c2b + status: + code: 200 + message: OK +version: 1 diff --git a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=True.yaml b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=True.yaml new file mode 100644 index 000000000..99254512d --- /dev/null +++ b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1-custom_base_url=True.yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: '{"input": [[2252, 62, 16]], "model": "text-embedding-ada-002", "encoding_format": + "float"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, br, zstd + connection: + - keep-alive + content-length: + - '90' + content-type: + - application/json + host: + - localhost:8000 + user-agent: + - AsyncOpenAI/Python 1.53.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.53.0 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.10.15 + method: POST + uri: http://localhost:8000/embeddings + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 9015732fea9dcbcf-MAD + Connection: + - keep-alive + Content-Encoding: + - br + Content-Type: + - application/json + Date: + - Mon, 13 Jan 2025 12:39:36 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-allow-origin: + - '*' + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-model: + - text-embedding-ada-002 + openai-organization: + - popsql + openai-processing-ms: + - '107' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-bd9f9f96-68zj9 + x-envoy-upstream-service-time: + - '62' + x-ratelimit-limit-requests: + - '10000' + x-ratelimit-limit-tokens: + - '10000000' + x-ratelimit-remaining-requests: + - '9999' + x-ratelimit-remaining-tokens: + - '9999996' + x-ratelimit-reset-requests: + - 6ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_a99abbf780f5ed8a792db75e6a0fcdef + status: + code: 200 + message: OK +version: 1 diff --git a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1.yaml b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1.yaml deleted file mode 100644 index ca0decafb..000000000 --- a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=1-batch_size=1.yaml +++ /dev/null @@ -1,232 +0,0 @@ -interactions: -- request: - body: '{"input": [[2252, 62, 16]], "model": "text-embedding-ada-002", - "encoding_format": "float"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '62' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.42.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.42.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.4 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - body: - string: !!binary | - H4sIAAAAAAAAA2xXy64dRQzc8xVHdx1Q+VW28yusEhKhIAgLskDKz6M+IYSpyV3chU+P23aVy+7P - PzweL3++/e39L59eXj9efv/w16eXV8f27s2nNy+vHz//8Hg8Hp+f/y8n3//x9v27dx8+/vo8/vzx - w8d37/9+ef3Af5Zvh756On8/4ieAWQPfV1drR3R5X60+3mFiNDOLnSw5G1Ooim/Wp1suC0VxsQ10 - zfVs1uZqYEbfZoxcho3i/0M4DoAMbmbl1W47ETW3GIZrEq+jJ6fFWt0evRejAZs516tsyxKjV5kD - FtfvEWN1PMjZCfT61RhWCwutl8XCS+ABBoyipQaRMKOeNtbkuKmT8gIoBZ5dAoKQuxVNSuY+MzmS - MpfdWkdOho+wKbgIuObQFV5ODaCA3pAUtoowZd40Oy2Uu7lWneph3Ei7hvs9fAybM0I7mxn30WAT - ZTcuprECpYjV9IRm0I2cKCli7pAUhoXXxrSQOWPq1v+sAcavIBqY0xosbdsUmicdc6ddJYRd7rdW - p9NxoxecLVWA+xa5khvCKzzrmlx4s0trbkSs3eDtHDMb7Qif6bu8YbYz5WzWOUxJLjLa3bWHZ9Nx - LbBZL5HKcrKxfU3YQbrgc7hgRSmjpcP0psysw4Xr95sRSxG707sJ6Cwwrx7aSAIMrN1aLxJ06fOo - HZPvndHdVGSGmDBJNhPj16KEBXy1bQ4zcpW1nXHqIkWttYvKPJs5rFGqiGk+XtRUsUPfvLq468kT - F7Knb2BXI+nqFj4ZPTJPAz2EX43m2WPIWzPtRZK+gGjZk/J9BmZWhaoR4zLf3DtQsbeWYVIrFl2R - o2JtMd5zQ3yZG7pRHKGFpuCbvKGL9OrLuPkyGNx7qdFmsGxcxCd8g4GrnvisbYSUdgPZYbpPsF1A - iK51v4F7XBrke7fA7EgzWsD8Yn3eVdZN17BA0FW3zLjRWtuj7KdTdDh1lbRoxoyJzFoPD4pCo82+ - T4uzokyLTNvk4bHsiqdUqfPOSeYm7+OmDmIiqMReJva/0m0NAdE5mBJBvHHrafMoVwoYuF1KrRP/ - VMjGYGcgKF2cHmkt4WcnJ8VreMfomIojSJySgW1Byipm5Y7GjYSJM0BUuMzGZbkIWKWLcs4saKVf - LyAMphO1UPx2a9DKa4v2TBkc44UcXblyI8p0pzbi4CqX1ZYN5ex4YxSA72KFtPVp7beqpa7v58kU - wUmFMN2XsonxvD+owT53lfO60VGFVBKc2VVeikIcbrlgCA5kQfRCG7Rhg9zV1wMYAPqGwu5ROH0u - nTeBhWTbsEHULYWxpUvLgOFbyo70TNkkPW0wtwVkJst12+nN7lXZbiJD3z/Gbb8o4Zee7d5RxhAb - LRBwy00WIM/ilH296R8AAAD//4yZW24jUQhEVxSJV/HY/8Yi7GQkFx45/1a7RV+gzrn/Uqju8eLp - YNEZTnUd7WlmB2lVGyqgeKh3nyBs7oFTLWRpJ0UNc8SIvj7XW8yFR7RojcsQFeUiBfjAAFLNY8tm - 485pJevcQnLmnY4mmA5B9ZxWyglLCMelkY34vP4NYZGM2HC/48QHAeXfGrzn6gvVawkKrSe3pocU - A6v4zHBE/Z3TdXZtux/w36GoNE7US9B8GBWT5bzCRUeh/B28FOFCZawlWaGYLpjQnfg00d45HJsa - WBzAFrPkfKe+qsM+f56nUSiXUi5DOyQYACIlg7skRoOm6k+SpMZp6a0BK4bxLCF8QrbocHK33UK0 - g91nOHerjC4c80e0apZFuhvbnSfqRJ0gqgroQcUY8ZeI/0QEWAYrtMoqy/7L8OtpPV1r3nKxTqpn - iYL3dU2yXcBiPXhQA5A5/Ia2NKPuiCWnQ5DrSIN2uCIn2HqqlY2z/PJM92p+1ywEmHwCqjcdeYUW - 6zfVynLuOJtW10M+pe5zkiAe2YSekFU+zormMMbjy5S2BBsp31HPakJMiyBcd2hNC6eYlavD3OFi - dXTLWB9DLL5jgJPcidLPSdaLHvSqOtnO8Lkqt2X4G3hGOO4xXLanx84qX1YuBtvsylZSwl2utoKF - zuGhJSdk94dD/0xHYkpe03I9/Q2Y4Tr8vVc3YA7pBbSUl61sDGFvJkjbpE6Dc1Ya0Z9Z9bYIQ6FY - ZBxh2oAJG4ffJMPdOOv/6Hx1JLr0L44KFRveuAYeUTTQNbHHDmyHfYzDt6fFqbbG7sQPLfeMd6YW - GMYUycP/li6Y5L9fgsxzozCWmrcVEOlCFyi62QZnz7TGDK2EUMehfdmAmixnFJiQgySzZEmwON7R - 4F42FIr/CrZ554jssRFnLtwpIeeupgxzyVraM0yo6yzcIkgQGboHOFGjK4bljJRDb6Qv7K0Mh+St - rHBpNHggW03YQaK9wnLuWZMyMZwiBjJuYlSfQvFBysoscNu6OGDXejAyP94Cts6aOqS14uagZaWi - IphOziECT8tz0WK2EZdT5AiyeS1ZonAuoHr2BmiOgR0590em25BsOuGdc5D7neJS0zS7J3Gb34IP - s6lEJYeOPR2jcbgo1e1cuUmlv3jRr/9PSlOZfRXuyVzbyNlx4k12NtR2CjsCQ9XJc5pzs6OHj9Cw - 31uKal7lAn94HfZqNXX0dDv0aOBluOOcl6DwytLfAAAA//+EmkdyA0EMA7/EHP7/MRdXuhhYl88u - K6xmSKCBY4h68QN5sPbGjV0ZZ6KIFPUlj45GdE9S4aSRzaOm+GDUqoX05xyKJGZn5RNLcZWf7QWA - s3G3l5jdAflQkuB5r0pbZ71Q79sFj0GLILwQGur4KmZwsqG0YLX2Yc8UVfNyyRk19OIy4+mUvZ5l - a8yO028C4jm65wf5puol6Mh6yjujKNOxUKVZq3voHnzBXWWe1udA2pm/eFf44seNVZKqKmHRlJmu - qszQHmtxJNdSWv0Sr42HVaGNcNubuPgcqhVxkd51iqYtomFDgqB0tJRi/LgUidSPjJsOQYYzf0k8 - QTsLf2CJ9UK5rquU9phdXLLMwdQFKcXLbP+cxoepgiAJX4NkRjcnkc9dySQxVhBXcdRJviWWeEHN - JEAnWsV1C/DSzf2BDC4y+Y9GsaXPGVdXoJ+1N2PxKobh7Xze+lYY+thxKpfYJYNBP9ToZdfwstMj - hePFJScWyU/7xpZTHJ6HXpp0QDWeClXX/JVyfyd01LhhD8QCV+Ip2l7p/0pcf9V+pCMXe12qukoA - 8m4wNifO1akFGvTVU99GeFhdkd2dwz+GSE46Oph+ZetLm8gnaXPppu8LsYWz8fn/sEGA6e7q5iT0 - K86DcEQuNQhUfNbIgVCM++ktacSAi91Oe2Ftt6UT4yqLmQjiNDJNQGjG5QWme+kGidS5vUwFiHs7 - pQ8WEfXLy37rFtfQE9KYam66AedpoiEhvFaFKgZWr37LMh+iAEow06ngd0S/t0GseGY69R8itwQf - WMkmRtyHbFXJG3pO6WKi8Eo+buxO06OdrMSM13Zk68VAmMytqSWb3lYoEK+vIo0osr3KqC2aNymK - tfe5YRxKdUcUF/vtZDQV14ccbayFtsZhZny3CWksuKhVReNUO1BgSSUGaTfBsZz3NZS8AhaNvoKj - vKqIzTxIF3lspAy6s0qJQr5nmRc7wRc7924YAK96YGNPJjQCX5Ms2NerVFG1pPJqWUhwbA1xrrS3 - n3DEg59RTRWfuVIXuYRXcykZHWGNV1cF3ZbU1LNgsV0YD2rHc1CurjhldpxujmePC8Y9cY4+KEiT - qOIBaKVZhTGQZTY+xjmWZfS8xH0DVWelBSa914vDpb2SHgQYN+4jkYEzucSIGND4SzARcw1U6pRv - FC+Biiu0KPq118acmsyUYpFgQiGo1XQ7XkJ3MbKVxKPMuaNF7YON4z/LyQdKVgrdacgPAAAA//+M - nEty5ToMQ1f0qkRS/O1/Y69wfXsQwF3paQadjm1JIHCgnw7b84FnC3b5pqiUoXt19Z99tsIOCSrg - a8dYkuKhwMv7zXt5P7Q/Dxt+BltNL8bWQX1Atj3rBF/Avx+qgfO5V2vO9hTMVFqI1/q2RviZcXmT - AhYQ6iOeAu3HC7xBwbHQfJ9MDzjIs7Kayu9R024h1VKG5vlknay23whmuxVrL05tgNCmpNNyrvE+ - 5VgMzDcglTb1dKDs/crSvX12DkNIA8KNX5t7rXjCUGmu1JiVmTKtEz9cpce8uJhwaOhMBHWy/0bB - FBa3/e1s8mgXbPIjOnaCzxv4L5ay/wFGM85oIm8K6i8U0nfuubOy3eq38DCVe++VPw5javTKmbHT - e1Zs+5mZI4LENrd5SmkcL+JKZJyC7OQ3t1WqlWA5q3GVA5qWhc79qdufgkaelfDeMYQKKtLHMGew - FN6UxPH0/bxRUlWvwIyVxZbsmR/tcDnmntO3hUW+Ec3fU3eWs3o4n2aSSfdl9+iJXDar29C1KWHC - Ezw2vwRsbyEDhfVp2J28ANvEWD7b68ufh9t6Se6Z6BAw14ZUSWZ+y+phKwXAy5GN2NZCzn41vZ4/ - a9BTk3fb2WRmxQf55G6B1/QVFtk264Ymt29gnlvFuj4tfDP8zblnjkvaZFM/qM/nQzxxVoHkcLgn - fGqcmubtqnt2NH4HaeD8bHDax+XayLVUqTTmR/MQHDpXToI3ptsWWpqnyjsRvqor+Ck+tlyPM3t1 - Is72sFxrtGRIintg7XOpsAArH6mD2I1m6gSvgP/NN5/2lM8KfXcwjx1JqjQj/op5Cy6pIA0axg3R - gutlYGTSmmEch3s9nEbf6tgjrROfDioWOFKfI5Gnp9uPM/ML+SZOIDHm21LR3UUeTJ8hyiWAgiXm - mmlZjB94+ax+86jIinoBg8Bg3GmAGMvefE/4mqRfL6CVu0/qUgABltw6QApxRvbfO1etgUVpQXV3 - NMsJu9M/sZ1vUBTYgnX/7DbZ6WCa8mANitE25cgvNsjzU28I6ZqGHaHFsz2cPf7bgbVYQjwUBnaa - M8sEAHtvq+pe8N259nJZ62wAP5YT6HovH6H3VLtAgEh4XPRyb7FB37MoPoswvwz46LfyOs4+/eja - NNfVdYcTrgPeceVZoeY0HHxFAojWkujOOVT58zxr0kaJY0IHS/T3bTFCl9Of2hFC4ZiVR0sY80mw - uSdm6EU76ZJAEGD8rXkGmNOQfgVWm4BjL07ahKvZg77odelLwyYY/7VX/NdmH6iSHJHzNT4rzjbo - 1OKnGIBpxfNHsc/ZgMCHpYwzBphuKaPeAGYu21sg7BN9l3i9rR5AmDQRDRt9BXfUXyf1mxgALh92 - CRNbLI8g/PtZeOi+KAO3HoiW+MNB4mzqOMTy3QLu/TGsWdxMuwm1OREK51RCy8km9QZ1iGP+HM7u - ral5g34qXibZVvs7lPCkH51XyutvfWHcUpHp/8R7G8bA1ryqjzhHNig/SqvfUGZ46agbtqDkypJH - MG4tNY9vmBCXJyu7ZnnejPC8JnGEYw5hC8G6yjp/5aD/EJkOlUOHs0HnsVCejlAbF0Fvz7KonJqV - GyIy4hq71m/Jo30gdwYobncmdw88oS946TFX/Lyx8TAZuRBdBjhzwUggQa+OTGjcxK9ONLhxzUPj - hi8JrxuO9yu1RvNgWYyceEvdbYT9I+sRuK6nzM7o6iu0fa12ud+JImyYYBMwnZKnm+pJqbe+1M8e - mCKRT61cn4FamMtzhL4vOQ1s0rRGeGPMWQIM0kd2oqKrj0kxwOQyiU8f24mGOYNO+LIzudkrytxx - nISASvI/+C4ooGRCyvdKiI0PEUKKTXFU1UODP8eVJfq4cL2JhJQbzYlo1ZXfdfBD2d4huCM18IkC - GKVe7CsXA0PPyfi12hy5YOWhRcJH67o1fsUceLI33oXQ9XSBs262WmL+6QMq/6gjL6Lw9eL99S+M - LuJ1Z5N3CtZcMBEAZ/GyF4KfiZ4zg0hjZzFx0YHewlHr3Pwf/wg62Z7mCpeI/g9KIVzNLbfkFLcL - V3HwRioN0v/ecKJvZGz4chgn+Kxf+fTgZ8vACVFtwUQXrjxheZa1n8oQE00D6l3YqTa+SgVAGDhB - 7lOkBwvlrlkBSzCWYGLh8ojfki/Zxm+LH/R+r0+bQDBwUC9D9O/JSHe4Njdg2gdlooHgq7T+CsF2 - 5JKe8IR/xrOGAdrh/0PMvSUDF+bQywYgssI8QrsAXP4ZzzzN8S5jgg5Hzoa4OT3JUDfCgMqrOc7m - FV9yP9bY8D/QMqDn1IbcBcP6+Nt8N9ZPf0u9YGT0i+tRo2oPswPsiN/2vq+NG5PtvwwqD8tUphej - DUp6bBy9d13RDbiMNqKvZBJIwF61n7eiPYtpXApur6m1YZeRIf3Cl/wjRP8HAAD//4yd3YodyRGE - 7/UUYu5lKiuzKjP1LouRkViMV6vFOwsGs+9uovsYeyJqmLkSjM78nD7dVVmREV/+796IwJGeHjGz - Km7LJvrrvIWBTjJmy7t1bNF8YRv7klivs3CeJ50FpZaLHcLN1kvqyu12gaa3uAHSMB2xwLshQfIz - k7b4URRNZ/wFPLJMXs/HTEA3+i3H1bHIup3YvgbnhHp3JCOsEkq45PNwfN5KNEoEYLmnNSO23i1H - IkH3VQ/JMc86d0vforMZWwjzYK5sDWGBCCAaYHSm0ntY13ok78Brkp8wl2/OGomj/W70AGXBdVDA - 0yHyQkWxhjqvTZxzjhXYlkSH2HulHDky1owxJOWzl7OD5Vzb7PJaIZ21qp16VOZ02auwpPPTBYUk - NpeNuYZYDvDM7mZmGFKHSziX9rI5eR/EAG4Txdu7mP5w3vvCCj+Cy1sc8MT/3mVIMgtTwkryQci2 - VRzojGg7syt0wtnDx50FIZfWt9pzc8vWu+F95GVsD1X8GzgGRW+uhC+CfkLBBif5cmgK8mShf7d5 - 3R+IAXKlUg6gwMtnYG2PpQCQteZkcRqWfDQbuSZwtAeWntBbTmUOY5jgfJCLWAIeQC8d+VfRHiHA - MujwGO2eEHtMgK8wOhkf5i8KU88hTbXpRJI8E2Zv8Js738vwmBepebAZdQtXEDA6vYzIG9rWwAF6 - 3CH9tzlLGi2Roe3RhslOEEJ4ZOYbdf/9KDeOmuzeQLSRG9lrxdxi9AgLYzHiHEs+IzBgbBubRShU - fGscUl7XgZm7emsWZ+TRiq8SN5/wnl510GLVTaMCBtQ0kSe9bDPcazYqIgkV7AGhSPA2KDZL2uZz - vLwAl+bY2JKEUAbLT5T41jPnUDHwxB07korwFnJytbFhRuQw68Z5bMh+dExxbFtTvJMTfUWNORXW - 2amJJitTSFk1ODtyLKxwAQiCoRtsxzpWbQaLvUSCACNbEio473ZSmrx2Xg7DKrcFNgiYmOixsWcq - AwoKjaQaNnCNosEhBTIkrrZXCdhw+AKojddZMDymmOr8KnlSdDnBpGK/6rW4bD1FMMx2meWBVHBg - WiPRnLygIpSVjPbwzErdwxqiTbyDhwrjVpRAj62wBXCHdYMRI0y8l/7DB9oQawd/N9jVUobAkoJ2 - qqRrChALUqhwuzIBQlMwt4Gl01OUc/xVQx0Fp7JvgRM3VRdFi3gLlac75cDuKwbzH6xRzvLvkrLx - hiW5Vr2yxNwfVpZJAxMhlNFMxRu9crgkjByONs64jprAI7JvK4AVFzbIcjHkw6eA7YIjxmu2NCDP - QkgimMLxh0grwRbMGuGSjM/2WGz+k93jgYdMzpAE9oSlya/rYCsxB5wndJln1+9DYQI0kTMB2KlM - 6VgHafvqbomfuXJCvJO1ALgQyTiJxf7uiVoO1saF9Xf3+GIYo8SkO/ZAeOzr8iomNGKbIHzm9u0h - AiAHG+6VHi5fujRIxiQjcAVE8uCxwbcjT5iNtcX6nNtniJEd3dYpAc1Yob2ImMAYvScJpEydWxME - XpmfGix9iz6xGWuF4A7X0FpM9ebbbJK1Jb+BBrayXo+ZDIE03KHNgvbFeoFvALaEHtc5D2CUaSLW - wgy1s8RdC0jDFIgtQFamzSMcejnJHxsUfbEEAlnAiO2wrdCYNvhwxFgJbDKDJEfDANhvnopexbWf - 6U6ONMSQ2Omwlymzh8qUs7k6OvtTEyThl5cA3WuX1Cueo8XGaUhBmu83GInYtYzJDUtaRzCr8/VT - geW+NzGNRdDjXuZSIYOlE+z2QSpmCk1swhR38Jl7mEwyqIl6gYOsiGMxZ9VxD01ezCYMzqUr5wKp - dfiblAoUmDE5srFn25aNJirSt8L61myj0t9r1NDcbcZAX4wuQWLtZUo3mMt0a8BpejrmgFx9GI7S - UCpNjGc2mZMN3SW5YTv3tQGy+WZ2LDGCIM3MJRd4FNLDBZ5yd4lqs3ti5hBvtjmTQ+zHxFWDljgE - 4W8t7NpTxG6g9ZduojBdhw8uo6ICBrf5ji4XJgBwpNwcb/Uw3AAOF763T0RxoLBHJQvb2M5Gi/rG - Yx9uqke3GEbBgT7QsI9Shlg7H4EzWHzbGfkI9KhcxasIkMQG7PNmsv0cD2uQ6oZGyM/n1cB8AsnI - ncmu964gyC4k8oYqDNcGzQBQICjEaij8hjsbhmgj67bI6AkJDGtq9FZqOyZtqbYYo0OiK4yNf4xy - cWciP87Sex74tPuyYUgL6eVcjNcbMLayBKl5iOqekW6Pz3KjzOHXHiP252a/qu2P3BZmMzBFFP7f - Win5vZNlciTYoIIu8Q7cQOydn4YICp8IfcZWrC8Oup46Q2YiDORsoHdk3dh7kovDuqM7nM03gQ6s - hOQhs/oSmI87wFkKJrOG75PFTpS3SwOaiBxKXOTITj0qTLAWIcIvid3lnUL0A6JahlqALDmHaNa7 - IiVtPxtJGN6pEExnZqWChO+o107BDHnWnEPebngvGVOEMRdr68i+g+PfsIC7ZI7bNlgMUrgfrAfm - cC5wMe1ocyiHgBf6u77zLTAeu/FD6w1ow/3SBQa5jp+6iFPvAQGcDcMShTxRMm6NqpmpgiPG8mZ3 - k/z2G3cJrvqS7jgMuOKHRweMRxGhcHfuWwRUK9nOGn8CL2vYdtyYdxxZM9+DerkGAZWldFNMPZUj - MJyRj7UYSjJd4lDAjwjIzTDWq2USj9cUv/PxukDpW6c3UXgUxT084eAsRYlapdSDSEIGS+nwCm26 - Za8+j+RWZ4bnYf7FleLYuj/N3SIronbUt7YdxkapmeBQFy+s56o1BJsf2SKxY0BabYkrEZn2Qa+G - mVaQTGDuhPSkMbdSZGuv2CXwuphCO1BZ7fHkRJgWtUeIynmsFC7ukvmbu4GKTk1DXlOQpCXAZ9lb - z0DsLxlQE5hJwTUXcpMKPsuJT4ijpjjbaZmIrJCxIq2dlTvpj5idaDLE4bsTuzigMacfE4ykYYVi - VLOXFcuWmhN5XN/dHgPptN+aSfDoG0r3HATtHvvwROkIorgQ6coyPs6HjQHvvVzu86YpyIh7FWsT - mOdrUNSAJM0rkEyneNAK0tT9dGQjwPIu6EUMohxGgWE3GzIVQKW589n1cRl9yRlo4YViZKya7FjU - oQKvWWeAqyidQdh1zejg1ZqGnd7F32TDoY7nfLXlp7nix1mie3FcDcH3JeekCuA4Ga+I2tXZRdkb - zHkRzi12MTcFKDYJLh7xpwPjckVmwHEqZcoyjsEyQWlZOXs7ZriNIdObUVC7Unmvhw52b/Emnq7Y - eZ4XOr01RR2D2BImyTArK+EtbMwLGPM95jh4E4RXimjry/7SvXLEtGHsvYXU7vL9a8i0NjidkHNe - 79ESGdT9Kmxwxu5MXY7EKPxwuuJ/ZFJLVbu0lTMwNYNrQEtG5aFfkkvsGcIcvveVDZWAB+ZibqCc - AsD7S5n1IpLyo4OdS2gkILOWNN1uMSzeE+k6d3Lm3Ok2ZJrlaW4xosiLwgQBZ5rxxF1AniTmAW+c - iN+oT4ZOBioYuDWNCfY1tzQHxjG7zFjEzizgKOyt3Bi5vekMeAoTPSmiiqepQK3zlxN4/gs7UDWo - o0JTbsfhpTJQ5REdgY4jg9v3Jdi9J2uPB1xGgSWYNvOtS/VIEGLIuxSYB6OyoalfYvrAXufiqnIE - JtXzLyDJT6+FT46g6CsBaLJyKdX8brrhACCRLz74PR6kbBmKYCCyMNILcjCUqDfn5Z0Mho9l1leL - JHCE5rqtHsbzqHDX7jSxA2JEPH++4zI2t+ywCMQDpCOoGIz40DbbwPyrxxd/uv7988PHjz/hdU/f - f3z99svT549Pz9/+9fzp2/e/ffv69e+//vzpy9cvn8aYT9eL/vj9y8/fnj5//Pf1zU+//fPH99+e - //r84x/ffv396fPHx4f09Pzj+csv//flD/hFf374DwAAAP//AwCSu6/q4YIAAA== - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8bcdf5532d02c8f8-MAD - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Mon, 02 Sep 2024 13:48:33 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=2yQZ4Mxn7QYXUCA__6TiGT8t4fWLVpXqYUNvHI6pq6Q-1725284913-1.0.1.1-lJhjMIzsp1QOtTqrIM4qbpjA1hESOXEVscYq.L4Sg4j1SHWXI3q_W596.q_Mk.W5Oa6R72781dpHqzSrqagozw; - path=/; expires=Mon, 02-Sep-24 14:18:33 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=G3wshS_PIVpp9RYiGquyvrDs4PthRGviSeA1hMfNRgo-1725284913354-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - openai-model: - - text-embedding-ada-002 - openai-organization: - - timescale-team - openai-processing-ms: - - '21' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15552000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '5000' - x-ratelimit-limit-tokens: - - '5000000' - x-ratelimit-remaining-requests: - - '4999' - x-ratelimit-remaining-tokens: - - '4999997' - x-ratelimit-reset-requests: - - 12ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_a20b5637cf51e90dbd6fde3b6cbc7840 - status: - code: 200 - message: OK -version: 1 diff --git a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2-custom_base_url=False.yaml b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2-custom_base_url=False.yaml new file mode 100644 index 000000000..1c66631ad --- /dev/null +++ b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2-custom_base_url=False.yaml @@ -0,0 +1,723 @@ +interactions: +- request: + body: '{"input": [[2252, 62, 16], [2252, 62, 17]], "model": "text-embedding-ada-002", + "encoding_format": "float"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '106' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.53.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.53.0 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.10.15 + method: POST + uri: https://api.openai.com/v1/embeddings + response: + body: + string: !!binary | + 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 + 98+//M+Pf8B/9NcP/wUAAP//AwBRdm6i0wQBAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8ffc76cf9e9ecc02-MAD + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 10 Jan 2025 11:53:00 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-allow-origin: + - '*' + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-model: + - text-embedding-ada-002 + openai-organization: + - popsql + openai-processing-ms: + - '57' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-848859d8f6-slf7s + x-envoy-upstream-service-time: + - '31' + x-ratelimit-limit-requests: + - '10000' + x-ratelimit-limit-tokens: + - '10000000' + x-ratelimit-remaining-requests: + - '9999' + x-ratelimit-remaining-tokens: + - '9999994' + x-ratelimit-reset-requests: + - 6ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_4c9b5834525589f606949e764a94427a + status: + code: 200 + message: OK +- request: + body: '{"input": [[2252, 62, 18], [2252, 62, 19]], "model": "text-embedding-ada-002", + "encoding_format": "float"}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '106' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.53.0 + x-stainless-arch: + - arm64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - MacOS + x-stainless-package-version: + - 1.53.0 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.10.15 + method: POST + uri: https://api.openai.com/v1/embeddings + response: + body: + string: !!binary | + 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 + T9VRAwUBAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8ffc76cf9dc9af27-MAD + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - application/json + Date: + - Fri, 10 Jan 2025 11:53:00 GMT + Server: + - cloudflare + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-allow-origin: + - '*' + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-model: + - text-embedding-ada-002 + openai-organization: + - popsql + openai-processing-ms: + - '121' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-64d9bbc5f5-ngphr + x-envoy-upstream-service-time: + - '53' + x-ratelimit-limit-requests: + - '10000' + x-ratelimit-limit-tokens: + - '10000000' + x-ratelimit-remaining-requests: + - '9999' + x-ratelimit-remaining-tokens: + - '9999994' + x-ratelimit-reset-requests: + - 6ms + x-ratelimit-reset-tokens: + - 0s + x-request-id: + - req_4a9b23c61c9064dea20983b289b55db2 + status: + code: 200 + message: OK +version: 1 diff --git a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2.yaml b/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2.yaml deleted file mode 100644 index 7702c771a..000000000 --- a/projects/pgai/tests/vectorizer/cassettes/openai-character_text_splitter-chunk_value-items=4-batch_size=2.yaml +++ /dev/null @@ -1,721 +0,0 @@ -interactions: -- request: - body: '{"input": [[2252, 62, 18], [2252, 62, 19]], "model": "text-embedding-ada-002", - "encoding_format": "float"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '78' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.42.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.42.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.4 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - body: - string: !!binary | - H4sIAAAAAAAAA4xZzY4exw28+ykWe3YCFv+pV8nJtoRAQeIcokMAv3zAT4qNKergFbCH1mxPN3+K - VTW//fD29v7vn//x6Zcv7x/e3v/5+T9f3n/ctY8/ffnp/cPb3354e3t7++31+/Hkp3/9/Onjx8+/ - /v31+Os/P//68dN/3z+8ye8rfzz0/5325y/yV0Fqakz/+FgVzxQte67qACGZz1WIlWUFPbtrAv9j - dR8tH2/a1UymjRYlURgp2hThU+fZ0hDI1ONdki5tas9FEwmL5OuWWFeW0+skxSVpX5vwlKCLSY3h - saYKK4xxtEas9fkoxGV8OLBuoxV0VlUZVxl6v46rOV8LFt68jGyL0ucO4j0G6eeiqBdSW5/LbT0q - zSlXt5Z+hkt3Y3e6L7TSgp50dxenTU3a3GPoZhaoGKXYoEPTs3jVgHDlRPSWTZ5npwJ6KqxjTJ4H - hlep0y1kO0S5PtTgmyROcMLb6QgiKCCiKEFAVUpw0C0dmVTmaRlmTata4p5ckJoxYicO7chuquhp - jeRbaFm1n4reNuHDRps13SsyTeN5VJ3yiOeWMjEzzt3YIlF0f21xced2RqVnUIkjt8ImTsbT3bj3 - IhPjwwBWm518BiCnRsDBzlHkcARUNU+fw6pqCEDdXYfr0CxbOyjZ+2TheVsz9C7TUWu03PlQpc0A - DI+osGe0MREN4Z5BYmZASeytbb5Vd/tBX1TJVPCxJPGoq1ddVmN4Lqlhyg9IwVWKeksFMVyXAwyX - BWQSMJ5qYyPCaCZRIOBEdZbdATqtqcUwMOObRdpWX8P5uYhIF6o/je1rxCnAEIvns1LpDuMEmPSg - 6nkF09AAV5BaqeccDoBMx3BeFv/BPRCDBM6oUm9NbjitcHcOWCYW0elt2Rmh3N7pW93CAzO8HT7P - +rbUOLi7VCILzhxJxiWDwMCtyzDBXCRb3A5EDlRo4KppRjCgoavdihIvGiOMUeJR1R13B4cNN7mW - TJ45jqohOBHzOnDi6RYMByptZuC+a690ZmPq6Z5nYHsLwIgqUbFwT2foyPGD6W5pVQQeHTCt599b - uDeSei8MLYWza0hJcolCXZglWkwFDxVLUegkD7uCDrfvd7myxYzSWSUjJ3BWS0ZRhwG0hD5TiyW5 - iucFrGLKGekmyqKI/DrcEFTGtSGJwwp8yjF6EmswEICKZQY4BbOyYJi7yta7M89VU51Sygx8dRDD - AdwicOpIQ+TM27G0sHOylALTSbMuFaI84ohQYQQUcwiYesqMSLveUqxOKiWT0QfMvCZG12jTHJtc - VsycWt1yDti2hyUPV+mYnOREDETHgqmMpCnfSy1jog6XEO0rkFbfeZHsMoiF8Mus5GTRa4Nw9oye - 5sGgjiU0TNFaY6NApbRYTdPYxsof2PUVUitOcaiNawSTGRmzBEUrSqYxt59EgwpcylO5OvdFzmx0 - xNtYX8JziuSAuSOD8bjbqwilM8oniQlKoyVCnfvIR4WVS4aGUiuvRnIWHi6eJnl4hKuc60d4p7Jc - XOBZzXrKZRnp8Umw7J/OpR5QNkQw1gkSKtgwmBxDI3Va5mCJgln6/rEemaJpnc1N5O6o42Z0wguH - uY1G86BYdRx9GL1kthJOp1eF8gmkE8Ps07zWZuk/Jc+P1PmWXfMwHmszSOMoakoanAZT5ng3WRci - 0yE5x5qyXPvj+XCoRYTFGXhVelXURpxLwT1KjVHKcjLnMhFTG+ZtSF0APapXkcVCJGQQwx1ZC2d2 - iLVnpLG+jVH4cCp7JE859yoJHrkZKnHSrqg1yI6YnfaxQxSj19DgWf4arjeSBU9h6SQSE8ekM7d5 - jIZFFlWAi/+bnCSfZKWI8RS0roo5EAyoklwQSZ25grYBlc4jk7PkjCapRNZpKlM7YmiNhtVpbJ9i - hLkEdEtBDmSX5HAWZCkKq7xaYti37Bo8Hno1MVWt26aAghXtMcau8jLgWXwnuKv0+s505Wh9jYAl - k0q3UGbFK+vbvFk+x8t5rMPr22k467ajMVEtTFoxfOlkq13RuWr2DCd1oI716nJwalqqhBXAmMkR - ZzbR6OJmNom4fuOoqnG+FqWy6s80Psqk47h7DefZpFsaffwD7VC/dr+P5bBmE91/zXr6u3O7alkq - RxHeKfdgbU4zD6tsUCyxmeO9yqjWlueBZVKhwrmd6TpOZri5CPcsdMT9HLbTVY31CrY++FMK1pyq - Q6r2i4P4oTQeosnWsa6eTtImHll9WnQFgJRdX70NbOlWIY7Fp+tQBc/chY/jRqZD5rjcI3Po3xoo - EjhExza4Z8LrTLD7EIke9jPrBcknWCHJfWdYi5PHV2WwcQi1kKnjHJseN/UwpG9EJFuMPxQia7+z - UQIsY297eABgM6SCXkvXE0hNKx74GBQO3UW27ucVzk10t+ixlXupBPEhmYDd9FZZ6SXH+12MPz3t - B55iQpWhGXb8Flvdddhb9phwn0NrYdHPx1U9LQaHShzTLLQfkPa1mf4HAAD//4yaW24rOAxDt6S3 - pf1vbMC0PyUD3PkPisS1JfKQCZAeDMEBTPijkHQRj4lx4KGreQbkE+T+Va3a8074YkZkSH5paW53 - Hu/XuPNXAjr3jb8SQWedKkyro/zLT96altno6XlG2UdWmp9MO3yxmnX+C70Z6uuucoMP2NNP/I/t - IIBrzlQQdNMfKFiHY8Z0lwgmOKqiUOrna1nmyU+AE6hjXWb5N677sQ0RF3zHmAL/nMsCbosPx5PQ - WAQXHZ5XFAgMn0ytz0pjnOBx8JxMBqsfT+yPwKfbqGWBn43e7fSkrCFXpQThbdfxjwzuV5e+YYr8 - ZaHjs/2Bs/zZhKpaJRwP7Ivk3tQUQ4OI7RRNA3/ziU0lNEbtg9eW1YZEFzFpom5xVu9Y1Wwu1jy/ - BKg9thJer6AqpJiAhz6c3seVRPJTtTsa9kz3sWrPMP4CiKaWx0H5i2R/FGNCHND4uAsXVImMQzHC - Zb9mFevRjoyWjyBm2Hl5zpzzPciJ4awqsyoYeXgfigN8ghAVRJn8qrJY8ssW+9HAZyIcNjeM0df3 - /bH3bIpTA6vykNs6t8UPZl5WnBjy157JY2+72yPl97+Z7v9R+4GeBcNgj5ph3P5wCx/Fmt1jX9oq - 7o9HWXjauF6LRceIdc+vkWBIBixZywSyLZf8ZNirx1jGDgFashs9G84hehJNL+4ndfJ4c/d7unh8 - MyJWBMcl8nc5wj0f7tqk1ePYOTBzToxB+8uRngEm99+C0k8rxmdac3JbKT65f8yB7N+bGjLa3m9c - PnkDb/KEABW4BGeg0ApSdhgfvt0Ja5badUGIyUruyhEQ8IQ+tELodiN0ZztsnzS/WOzYYsIwWHJc - Lb5x0Z80h5efLSLLotTotXOI3FA1kocdmOOI5bQPSBcNZZ2UcMQ7iB2pHmTv4xFpD12mkFCw0KMR - BgKTi5dLiLPbd/jeIzizkdFxMRmkcSOz+0+98rchdWnHUznr1djTjLvupEMBhOxCPOwtgiHJFrHa - uRO2sf6KtTOqesYljp6W40XFtDSncMNUIVTsm7PbvC/aL0dcPVQeH0I88AqJKfp8H9dhwC9hKU8J - rgWbECgetCPYLPROLiPQrADZa16b5UdTISfBVVnrQydS5SMCpTAXr9IVK2Km8FRlAEAhMGyuCkwG - Gaxfn9pA9TyNtJt9I+TU2yTqhMKL67AYZLkl2bFHFv6ZwpzH3/J99JkvIPcK5IlGw9SFGLHcy+dU - CfKEfFyeYjtjEpPnA2v8g4f/AwAA//+MnFuOHMkOQ1c0QEgKvfa/sQtm1v0YMgf2r2G43VURepCH - 8S43mB/pPN9qOzz+wX4Z3VjusizwraB6TAmeET1ebHHgQkLfdTFfHeCfsD+GU8ai1nbH0b2xqrGz - 8BSeuH00Ktla8kIeoGdFQECHLDY014N/0GnvNDmK2d7tH/T9KQGWj3epLS1b+nMdUa5p9vi2iiGQ - bzFCAYvV5Lu5aSE+rXcmFG5ZQgKdmlf0tWQJ9lTGETdA6KNf8QPTpN/sziZv2TrovFKDb5Xs2X4q - k+fd6FvAXATDxjYh/wJ457/5aIAdeEr5iS3rWkEwvSx81MnPYOUL5vwVjEua1g+l85VmyMDr08is - Dpcz9+GprnNjh4+33Wo3Zff3DLgDIu6q++rmHh63qM7eg2mREckcDNGlFG3jNrEOZmPj8QdI/7Wr - wo7I4RbgYYSa/5iYv5lSvQs/4GwfxI1XAYdnJisGciAjRAg6tKjT50Y4b+U1pw//vjG9McSNQ2yt - q3LkPXn38I2OdJPICNqgBIrs3r2qGM2GbD4oVOs8ooMbXobbPKsPBxIGpeaqwj99XcyxhphHtpTV - 2eBtxKGkbTKkDRz6CM+O6VyGtAGgQfunzyQ8LLHAJpKzHo4rTsVkdsfE4ybG/f0/5UhFt3Q74hQN - vH/BkrPPUafo+rLVdirQfmUYvCeXBXjPXfbY29ErWXPFp8/T/+Jn83wJt/bKvGYBC1O+qNu4Rlwz - gfOL2uOQZ4ese8+6zfCCYrLvfyHvE4CRZSdCUA8NsPxaeIxC3GlWIQVK0O5/vjvdP59Zg98YsucG - i+LYaI/IDR/E79MYfezolNxjYutfmzKtEN6YPsW3ge0oplQbll1euO/cHBfVJWAPykF5JkfZU6dM - wG2fzprkA2FAx4OjLDasH685AjJMzfRpY4kNwoI4QR6WzOPDDJcAxAKEcc2CoUxR4gOg6jEGM25g - oKX1JRN/nVQUKI8MoiN+gY7E21o76ZbhkLZKBpjTnYJ4lef15enuFMiQ5tEg4jHFOclyn3b7J/3/ - 51HfvQIYxsLN4r9aD2IkV4lDsr8p4EyJsYlZcO6a0LoGdFB2XNi5ydDeQtu+giO2JVB33u+Q6uP7 - WFj/WRM412OEng/fPSP1Q8yn34hjxhiBavG/ZRDZRMkwBYsolj045lwYWdV7lyMcEKEQBnInqZ1h - tWD1+ZAhbxVST2YsjvJarAu+ty8spevD1G9XowsEkQ6K0yIZxX2MFmb2viITnb6SrvDr91+/1+8H - jcDIj3BWx4VMsEZlFlLorqfxonz6IFdLVUBSwO+0HVEsoUwb0lYsud6jkhGutK0cZgQQeKI6U4tV - QtLJtWayScHsADLFjhXKzdBcmeZnhRaPjIgUBl3CbP+5wt/bMeK6xlx4JhLgPR90vCPVOOwUIBaV - o9tQV1ytx4jpyer0mbWB6CPUr8EX4U3im/eEMLomcml6bpmYtJAmV8Y+YAhMTGButTotR9qvjMiQ - kmSSs0TEgNt8nhpj6XwWX6Z0jo0cWbwgQOpTDJ9WOWILJv7z5o2WE5qt2LGMYJ+22c9l9jDGbKCG - +SjPB01TYoqRG5x6jpmjSjggjA1mOAoxxWJZ0reMo0YB9rtliBQH+r0hm5Zar+GHSs4DzARzWN95 - QAmKvEMQ0u/SMbKuuXTuLyAaSr7J521zb1fZX8R1ADT7DYYF8CSA7EqGhxzogtlFQM5ES+cHOf7P - NtQ9IltNYhSl8dIQMJAXPez8W0J9ZwRzjhZ9swEX8DmfQwh01aK7FaSFEJquD8ZLGRp3fa9ouwi4 - qWqTt3a4BNsDqElBQHaDZmQcWgUdETs7Eg6DGM9VytDcUu5CDJRRftFD5PHfxrr4JvnbNZAr1KIN - gzonUs7O9ipNvKtxvBiwXlrA17K5ItxYgSLhhmg+qhFNEKwMn41uflHdshKFQgfKT726wwXLyw7U - 9opC5TewfnJJRbOwKx5DIIVK46pfCCLzN7sLcOBmmvoBwot1K/caK01EYjPjK9ZYDMXdt8EUqfFL - Gyt9fwV7HXtVC6EphO2LMM5zG+YedV8m0tb1szV5zQi7BEss0E0wwZYS/16qGH8OwWaQH9lruvgz - fpEDKESV0LUqsr+CRQl+3h617HXjxZ4rsg2WIcywf1LrPjmVt4khXCBvAGBIC4nK57CvDwmyKji9 - /v1oAyJgnqJsepokndBXJBKIYft5P4lrItLULA1nPzIHX91+8FFSmPCQULIZGgfGLxfwW8gQ0a+7 - MVcSWBd7gbBw8rLBy6TPXsmhSvjwbTW9Fbl/erThP7+wUzFNW+pPHpY0iZcqbIGDdXhvqwC8y04s - bH7BckAwS2zbM73ZGfx88OhUwFYLsWnKR3PnY6taZ8Bpkn5fL8vN0VIL6DNkgn0Ko+fJkyfHzKv8 - zBFRsBCcpdpnGbzW/A8AAP//jJ1djtwwDINPVMC2fizd/2IFk/RhSKczr4sWmJ1NbIkiP1Xl+hiR - PDU5xjkCd4E0zD09yhh3gUawl+WR2QN9gUgjp9HkQISqUh3iDUwFj2li99BLLPBr0D+9Ux+CZ5hd - IgzCYZZ9UOpBJdEKxaZJpnE6rtctPl4U6xr3XnjPXCQHCFhrsxEBAKcUwyIUi9A0rRwW/wrTZQKL - 6205ZDRQM9Ym0RHjsRlM4ipDXpFf9r3CgiXdKzJaX7rnezARw3nss1YCBfbxtSBDW5LUOXseDA7C - xSpKQCQjCwCMb1l0DVmki8VFau3bMFElo50zfe+IFAmvzXiLuWzsbo4J3Z6X5IceF9uUQTksJ0q2 - OnqkA5w9aTtRcUxR+SRT/tz5Hkynmci7bEFMRDib7A/vxquIi2642PXSa29B1gG22HmAvnmlfthA - EzL5UJwIawqeoMGkkLxY+5ayCSVliKw68VcQnzyaO1XBR7Uv+eO6rWyt5yYgVPQgW01nBajS95T8 - lbcYSDGAQQKAvyyYC+Xrnkj9CkRS4S0jAEVhsbvQHI78ISggddgt1RUcCVLdTZYW1+o52Ju8uhKn - E9ORDBKYjAlrT/49N6bpHJ24aCb8NRtywiEHc4D4N3n2fQYl1EY2+/M3CA8zt19CFUdOysQvYC0z - OPPhc/CZgzPPSy5PwczePoURYwnQIDt4srkCnZIqLwHOiXKQMD5vgV+OKp3WwQglHi14BZvNpGiY - ja/CzF5OVyEYCcn/8IVKMZGRk9GyobmUhiS2K9IBPX/L+Xh0u3hWmG925E+8SUywOJ3a8L/4lqwv - A0r+HO2074OGuGY2OlCDvYk9eQtOqK1qfIBLycIFPNGUD1Id9n7krv6H9Xx+vu/DODvZ0IApR9pS - Oz7uz7F+qJM0V/movkjnyHwYT1yyRi1ZoPu9Q/3SGkQFZ1DGVmY7pxAUMWkvLtdOZYiaJx7LSU25 - EixK4F8FRailXQQeVb6uU9rzXBstX5d3V67qPWSsc8Gsh8j/0wHvWl989HdbNBOygYxQEWwUy+cV - aqA7CMhMacQ1Znz/UzTYIgW4hUZDZiPIbuzaSQ/hJOIdc2OAGDoRTWqYy2j5HFwajn51Mxctw9Tv - glHDCGZkh1/1NBs5d6jzdgQOb22/EJxVua4dKWFONFxmGh0nIuLKOg+gqkvFc4xRxNDLAMe7nLZQ - azkm/OpDgonQv7CcHmsmgt4/zasNndPgowPz9pSjFpkqyB9fMVXPRQyulmDAkHIQv4iC8/68+4Jt - TgTvPn46MT8tBpzlhoWX4y5R3IDiw2Jobv9HOf2Hs4iEowlrBv7lFXw3wXnWEm0LiHMsoi34ZiVC - nmjLRVgzBWk0vj6+2taaziY1nQg/k7BE9U52DH6M7uJ79+CA1pHNv+ALcqnIETuVnmwh4bVLmaUY - vaq3qCWmDJDIp0X2mXhVSLL/5AaeM0cIc/ui2cyfUta7avJtDb54DYYjHChUEEud24cBvMuMISZt - dmy8QnYg4vYn6u1xUG4+Co+KtaLrn2hXefFjfYFCUq9a2HQZ/A4ajLh3xO15v21wZogK7SFlwdqr - w3jado74tgGKIzBDwgu+gjCw76HZKoHmTRyBEz4ySzHfr15MApteuPwmSz7IXEg+1wssMcEGo/Jm - V0QvBDB/AWbBlJrmgrzZNaZCc2eN1Xx77315j/jIb8z5BUAE/8BhzHO6j15OXbgMU1i2xxjEAJPS - msnUANDJb4z2gXPxp4wMDK8IocsPp8Cq8BCLZpFoul3cPbC3inicyGtozimHb249HK88Sy5paxk7 - RV82oiAeWFMJkdUOlDcb6TySza22MkuH3AhqMzFxJXKP0pVBJZRT4+Rrsxhb2HG9ZyowS/C2Z97i - fffj4ZaIdESkti4aKkeiG1FXCeCDJMv+14GVLNouY4rL8ogu1vCYPTlTC1khTeJrmEaNoXizjc0O - yYFy8Q7cnP122XcQGM42e7/RYyr2d6SAW+D73Gho2OqbvsXajKg/f60o11XPXRf/ih62Cpir6wfg - JAB10xQL672LC+50kKfELomuljE3Oy+d8/OW2+1zSa7uBIEAUCfZu3/FucI4unsMVh8V6ZU+trD8 - E/7Skjl+2qGqx9+KLUTD0adTpYMFCUsRJzDJ29YAAO/eeZxYGO/LG8u0x9vLtdcarkyamqa0Ikwn - iFAKp2OVrCDytjFSKzPUFc71ntlBDiuEC3kIGxsPAzuOIlMQRsOwN0QuyoHifonoc5wjTyszwTXM - nSnczpcI85xZvkWgwYBc/mpzlxVDtJf35/6he5KCF1KCzQFxWuZZyL1I+GB3w2D0i5fpHIA4B4SO - bAjNGt8tMXWZT9mFy0Z7FBhP8xf81wFE8YS2vRmcDjTlaGVcYecSp3d0jcybhQNVxJLDcuM72DI8 - 0jzp+64D+PraJE538X1ltIkhuKnGTri31xC0wYUyGISB1naLW3svBPLEv0aowjfe9yluPeH3UUgT - nH6S1YK7p4D4lWYnc09loeOGpK/QwIaR8GWD3Klr69jf8+fNi4DC1bYajMraxPaa0KdlhuXbp3wz - vWWq5PCVi8UVsld3Co95rvFJRHzq5xjsOwC7qKKESN27eJRsia0u8uZanuTa9blk6ew9u/VLCwmA - RVbZ0jkgAsTc8PUFSdZB9Gy2OheKZ66SY+GG958ORNFE7zcR8rrghWXjxW102fvyjMsEqAxVqfw4 - +/OQOAUyHsEXg5IlWH90s4dxpu/R32XrM+TtYZdCGyVLV+SmyuGYPHyJleFTbdeo2Gkpy5zgKS1l - 2FhaKUanoNPLtwhmOr+l6CMk+zTnlSkoNn4eqGMgbuWQZhLmnLW0Ezgs0sGct1LkKoC4+KgAi2PZ - Dl2fgfJcjCTMmnsqEjjeSEe0imTH3pmo/y99rRFy5bQBPyWIz7aKoSe+2PGfHyPOxFXC9ZAJigI8 - I9Y/MGthPgWEtHIhnB+vYkDLncOA85rVSueD5lm2eZ6XbhoWiTUfCkiZfa6wuvOU11hW2qzOoWQ+ - eCynmWaXbPM+C4ShS/yjivG+lk0hbKZnWNjFhlWYmd5xA9geSTXA1GSyCOVkShoXZrnE0L4uZItI - OR0+hmJVo6XkxEPapDafto6tHX1YqAP5PE7bO3BRS8u/qyXBdjS7TswwOGvANuDrUyHBKo1aFCCZ - /NQikSoQsbGHLOI8xYbQfcbglbA4JzF7lPPIYlPt9OKJhTTBqqNst7wfTcNGQL51DxThVauLd3IB - SGqyynU7MPs8LQPUu3idyoNsZFPRJxXn3YO9DbA1vfABW0uJ1G9LaSUFzvhk+rJS2EBz5zJxV7jl - ZiNlXCw8iQIUYl/sYiysuJa9sbuH/v8GD5S3IOPNdnGdHE1oo7KG6IO9egrHDuKM7pi1Ss7lSF/1 - FAvwxsstB4pSy/k6fYY6PhA+qRY03NHFdpKHUG5MBY3VqM/U1d1vpR+A88jRM65jAiEkc8RpIP/r - ooH0dg0nwTkteYSzQ+Vk4QoA0Oa3z/X4UIqBIxbAL7BKjdcgdN8bAEZXEPYvAAAA//+Mnc1qVEEQ - hV8lzBP0f3XnVcRNTJAIxo0LQXx3+XomYs5pMavAEIabm751q06dH8EIII97ewYkP5R+DG9R4bxt - HlM9aidncwH2IL5CeLoaDDjSc7Zs/vfMXWZaph1vfb1lnv8T18pImLK++kmfTx55p2rAm+vIGkvV - /gW7UTXa9A3hlQvMBsmC8PDUcBBPsyNulaAkc47oM+D8xDv0yTiRJddHnMPMUdbipqhfUUnJ9RD7 - g12eFvQrRjPDAB1wk1WMwY4FaTkI5QFJjMEBMc86fKzXq04/R0m5bxJvfiELdFD5QYSUx0E9TmiR - wiQdNpGmYk78CYvbu7LUjZORwu2jj/vnr+tv/Lx9ePn28OXp0/fL/d3l6evD0+Pj88vny+uXXJ5f - Hp9+XO7v/lzYX790f/dB92a7oNlgGEz0el01v6UhXM9SsEa2zV1vp+4AEpwu2UqrKxvSsB18TRRY - uL3LRCaNK/C8OCQZy18N21jS7LYCSvfymOk63UuNiIFmGeq4Uixtp3EzsmU8e/ChJYQgHrsqAFGL - z2bHMTQCEUZQ9nDjRUR1s9vYuZHW5kebtZ5U5HhNTWuUEPQeuHi96bsgd0zyND40gsW/3tpeZ9cJ - GZAhkpUx4MADvo9zUj9ER6duQUAd81fD/pibq/UDcyKMUE5j3sI0m7JrdHUozxAlzHI4k0Abym3Z - +TPqrgUwG7OEX+60eMhZmfcMlASWsNVFjTKdS7x4c2iKxA7ls4kvtUk2lzYV0ftqTnDBXXLo5Ny3 - QkKJc/r/vaLuMacdc+ICzPBi0P5Yr7DWcvN27Bb7soy20eyvzbPtBbaiGq0YSZDeOKyPbqUvi6HE - M8Ui1ytsDTkEZHOUZET5OpMOIvRKYygrFEp8URPlwRxlCtc2SCcxm+4oPB7jHWcbaWV0s85pCBhV - d4oezCMFAROGtVWByYDQkEd/G/f+umPuyVPkc8WnS+oOaJcq2lDimNaAYCbMCKQtrhFKEMeUOBn9 - BXPB5OWpr0O2L93mVO4m0YFtGESBd7iW6LLKsNAsYl81FxN2eGu+k4QqoDNfK6NNc5sjwHJobUF6 - 8JYhf1N5wWg8NJpRrdFcm62jjxssIqWv0g4GGjCbT1ppzuGAtuWE57wP/tTsgYFMSRmY0Fq758gV - N1qFaTl0lALtmeEsYKD2qU9j2bmOy+f6upmcDtitkmzQbbl45nthcTP6f2/Psce4PmXk3eiYlLvT - xGCLWhQdoHq1gRSqni9+NkHXHx98dlrNuvkeqR6SiHqz6rE9R+TVjucXInA5+qWFT06YQa9QvKK0 - GbOoAIqQ6TyNeLx6T8KgSJMtrA56twL+GwAA//+MnUFy5DAMA78kkaIk/v9jW+2ZHAK4KnudY2LL - IgE0PGNzTFjUV/rLQyjTdhEWeW/S1p7ojbJ25IpYyqt/yK0iQVIJoTdnACjeDMK2x5X4w8BhkmBS - elVmNKsMvteeWhxe5M62R51iXA77twXyh3KG9cgSEI1PyIQFIMcrPJlN1lTV7L3G0D6pscH+h++P - 8d3oPu3s3U7nbNL+GobB36hTTOAjNN24lAXGB/vWNJ/xvBHWmwhioU0QxH/xZGv1HV8svgy3zgQ9 - 0jzoPaERGleI5GCqD43UvpdCktP0jVrh3dH9RK7fMtv3lJnTYCpR86iLnL66rW4zElxqTIkY+F3u - /8zfoDlbE5nscDOW8Y5YXQ3L4tBa2G0vGsbXtovK+5R6j2YZAKz4AnY8aGXZ1HFL8z4Xeg/O0Xn6 - 7cefD7FaMPa6fUTRo+rzmBQR2fPqOVtPp7mpXvUBRCvDCH+N5+ho7zHZ4bGlrbYJqMDPmPACss+e - 7+dbPv/aCnyD/3MZAffpIO0XLhAkYUNl9t2x7RZI3VUO85dDdjCph0d3tZKr2FtrS9w4lQ/fQ0Ec - K5xZvtC6MqxRuQv6oZv8r3UVrttR9yV8cO40ivVYtqyjYW1qIcrT7CMfvtXoxcMaoVfYxoXNWVkO - GPzDsGwbSP7ZKoxSQGiXLD19vnVhMXTsxmfxu+vxO7bdtg5xupDX0Mjb7LNDpQ/kHx+7KjBOtqkE - ZcVGDxo0u03u41Rz3jsFTwbTMbfvIEI0NYRT4z44MBMkXmrf1povFA2Aaid0dTEIdZiNkcNHx+HV - mXlW/fXr53lH2xxWutqoeF4UuKeD+Gqsa5blwJtXeqBgQ26tySV3OK1EjZ3M3vPl/0h8Mv9Yin6C - sU0eS2f9C9ZHUYDzlsUceUPOsqJgQtvOiZn7MZXbE74xT+rkdYKnSSdrmjTzpS1wt5nt8TKOMnWr - hxKYYhNj0lN5ElawCEFUnr62TayEK2AcIp5xqxqYN9TsxoHcd+sycVNz6vaLDosMkcq8ZnBC7tFm - dZJMDrKfZWB4chVrWvtuJo5r+6MwOevRP+nsNOxF7uHheySHNcxDDTd36y408vQ2QMZyKAEOs9vh - qYZit66n1Pb+YZa5qco3HUxhBNBPicZwJyVPdlqny5ppDGcKLPLWC9Hkbrs7Evhdus1E0M/1AnBh - kDBrEAFXOWtx3422ZOLb8M4dK9ooRP6tgZ9Uoc6zYPi1S15Hp82YzysbXiU4QXZ7Zd+J39U8Xx+Q - hsSom2hFhebTHW91eZOupY+L5B8AAAD//4yd24plx5VF3/UVRb0XRKy4rdC/GKNGhWnasky7DA2N - /93M2EfQOUdkZz4JRN3ynL0j1mXOMd/0USsmFMRRd4DqqdWK4xhDMQRpp05XOPZgFJZMtygNpDXe - iyGcba8gt6mLtVYXNuhrvjUvvdqYNQlzlRYN9hiFS5EHoiTjhlB0ZRE4kEmslt4nNTJddQfKQbG4 - Jz6IM0Zxk8910DiHfg5s5se5jCG9F9kN6T59V+6fZQUlu3Zvmr0PTtuZYkXbrBjtMx3H1C4FHteV - iztt7e8KlvhNQSCQ8N3mgcpiZtAVW+/jSCYGr4nkw/qkHayL+zr0xW5gMyRTmnakhXALC3iMrcUo - 0fozB5gJuptFOnGHZdefu2neTelsfcgvwAI1sjMYDprRmosr2xPN5XfLyZTyK78XNvr6uth2iqDV - XHOpXWv3+qiqwpmwuUqQvBq7EBHV/aGNpT7S/wi13vRw1xN6hxtrVKXouDRcbBp3loTywrD9UHwM - tpK5pEwA6lGZJ2CEjHnZNMrIQ6U0ssJ0mCmr4zNLzaqpSvNZbTkVCjxtgp5hvy5cKp7u3noWTLVb - TdwLouIEjem7CWGDJ36o5/ExUCg+iMAeRcwi5lpgzgUVlsS3iFGrUzqfzenSuUb8rTnzGucDiKs6 - XT0kN5PrZ9Wr4K3bS+woTE9VFkPzVtYM2Ep0eVyCRaXFS4SSlbmHV0NQ87zbHfa1VyANooprj9fj - Vfl5C6Nc4Wi+X9B+F8YHeUfGxoWto8/HrFII+Ki55dyNIv6ueq4Roiw20GJ8sAjdjrSaQe/YPpcC - XDz7xJh5RdjPp+NK2THDtXyi675Njnj5+vZyYkkR9bUxgFihbwkXnmiwvdDRKsm/D1HW2k54ldm5 - +VIwRh8V6nZRZ8PL8tyytfmWfOdMzOA02vLS4N40X+/wctjWiIFT4nfhjEBpj5y1aOCIlCLNXi+g - 4KaCeccnJgeoaJ/6WX3FIsM/aulM0prd759oo04Y3LVBS6mL7AY6E0YgvbTQIUXloHdcF9wVn2HX - Yl1aTbpSoM7qjFdlKU5Sw7sufCiQoxI0PVpIRPyJ/lbjaNF/JwgciqVDH1ey4GZUksFaAHGuXRu8 - AxJD7u4zYrk22wdF+iuKTNKW6g9H1NV5SOlI79sW4Yrd2W3i6cxRFp7viJbdZV81hS/kc1TfWhif - t3nM5Ws6iYuYJlF1HiUG1VKI4zOUzcGxe+KNqCvwV/+QjSeAZe0t3eT1eK8NAUZZQ6UjKlLZu0SX - 8Mm8kFntAlibTJGUxhTRDfp4RlC+L/h7Qc5izoSQpEvmCgfhrsMXzD0UEQiqUIwJBq7U5B0JeMq0 - CLzQU8lnaE/bDIA4NGGc3fuCVHSOVx0qGVqBTOtk2EPqW4a0GqATtwH5vG7csqv7nupaCGzRZKj5 - QadA3T5hrNwKCtlAfDHRTmmQ28EJCi2lL+Ku/hVMzeNpU2fvxkOxA6m5tStXtLrSQ2FG1pKsnVka - Km+lqUMlcaw91YX3Sy8Mghz2XgxG1Oin+nrqPrHTETsC2HOl9CGMN6JSP5iq0WF2HcQQaOoMDPV5 - rMApWvNgUyG/27x+Y9Z0M6Dkezqh/OyPNHL8tTd/NqwKVxsf6Dr/SCldzTeBwjd1+u6E5IREI5ow - //i4MD97KoCKeO1alH0FfcP5ZnhELy1e4VDQJNP5SXtMbuaFJIYMTKb8nZCeKNkiEFdzRt+j0Lew - JULE6jCTRfoIzL2LFFutMtdrKfkOW86YjTy5vVrzU+9aRVQxaxPdtWi6y+N19OsS2VNKZJ+Oe5lr - NOZZ1bV7YNAl1JLjErW1nAlibJcNG5z3bHJ/wIYUi4b625NYtqhtDnXPQ7fGGi+y7c+t1fMQ5FG0 - ZYjjaYf81uxl8/ms4UJHXDyvgmucfAEfXRV5GxZYg/KkuaxyJ+1NZZ7MN3C7rhP5IrJC0K+wd7w1 - mj3rjlE40z+RgJC6x4RSuc0emcB2CjLmUMBhaIin2NoDWsP7oazYhOakwMiee14YDMoR8tZWMXTA - 39V5QL0QVUus5JOX+8OxFGY83AFw6b78Trwv514NZBKx2iUEAf1PmiJ3pkpAuhvd8EXoWWQmLH/l - ypHRwDDW6+xQHt3X2XVqWutr+l4VBg3Hy7j4ngV/eZsd8nipJeahG+/6ECgVvHsHeSRn1gccPDvJ - TxrmoP8bKZu7q5kU6JW0x4W0Q8hg1oQHP24/MUDtAlgrDbtqKABeX4Tiu9ylfZafjDzQcmx/IAd/ - iQXqumSmyutPr2TUBO6YtonX1SpFu0+Cj89p4R3FJPY1pF6L6plTzySkkhgKnT9X+zE/KDUFpcRk - 5hp1f8LRcVcS6J/UN7I6dtcc84KwaSTQjBk+Q1OdXxwrI/SKNu4uL17pyERZDVbHhNvlDc9tFxLW - u3kmpQ6E0HJngNZzd0FIRTzhBGzHEkOencLlOmgqRSiGydH10lYhaf3oFbtHgc4rcg8kk1zDo8nO - mHxSXaXKA8s01VmgtB3AsbfSsszXIGayaXbhU4PbGr32GgHYnbKeNtpTOYGSymNhqaGdvgsHDvEQ - xcQSCTWgorHn4bH46T6E51UhuvHBQvQxL0vP7FtSTbUgSx1jkntUz8YKjchse1QaUwWnWXmR7aZC - 232/tArYOjJFa40OvU4ve7u8aPWmitvFaF0SI7+S9del2z+a+hAUGjmqBLaU2a1dAbZSmlhtHzuZ - nio231LAr4XdM67gEkLpJhUmpGPGcj3a1YB3v5Hl6izJkqAps8Tf57pX2Nc4mjYuuI5d9vvyKu6F - PXocMfICl2KRPVUUZ4aUO+X50MV0CMgaGXm9OS4Tt6rpXuB4Vv88O5JCpZkH3uKu0JctpBcXLtV6 - um3CWDaSsWuT9BaCLGggn7JX7jXf0Jfs0RKFws31r1kS5EUlJd8KcGOtcfojxK1dco5z1uFf8WHB - at+H2l0LXsBR25zTR2ey7LeL+dTNC39kjxJeq+TQCaiCpESN+3QsE17rRg01qW1RAqg9ebtQWXKs - cpiAy5DVUSXf2jotHZqf78fZ8nZ384hEBX+jM+2mRqqzZ4EeU/Kmt5jGu47uKQO1iiSGZ2kG+KHO - 6zlDaobvbA8SDstzZRbMASxd1yPJOepFDln63sV9xHondXchD13lFb4ecQA9+Fyo3QCWbJ0Cbbuw - Tj+sG7Hl/hreaag19aF3bxpITdx6tri5G7FfmvOpCTPGP0tZvEB+KhUZDLHMkMsaqx99NzgwYWw7 - uLOlcSqmi3LGTVB7pCW/RDuui/f7Wm/VKOJvu4hhIbRaTLDq11bR8sDbpIgxK/c5Uz5XzADlFJ2Q - d7e1fTQZS0YziJfWLVZRK/UMB2CG2iofXoQM8dUfD/He3vIVX74MMfZ8DHkxUwkvmCiJ9L0o2xJ1 - 7MzqLYKkKb7Xk26oIWI19LVCJXVv+4v0xgk2cast2Pyoc3FyYOyzhRzgmET3MaakJTMZwxK9Q0Wt - PKVFa/dtL3L9ZMvqJ1sZH83T8Hn/dr5eD0COMXbGZ3aeEisoBhKl2c5wMafvoZ7q/MAxwJmS9cpH - a0t86OX+CTVf/tbkEVGsTxlfmyxhwJtpd+9Lxz1X477oyMkXTto6KqhvIhK7jEPs8tb9m5VW740R - /f9x9ijgpwLVcATIs4NSp8nDRrKxyHuxYY7W2nND8Zc5fGrZdxFkxM6Y28usuOOF5FThTickh6k0 - HP8U1Kq/NXu8PoUL50Xy4Zz4tUoYYJbceUnd8yNYs7fLW+A3oDH6TOTLVQH9VoXKtnWCfymh+/Yu - u4SK1DvQ5Nu729OhBTS6CwnIYG6sq+w5G4Z9WQayKlZb7iO90oOKpFe7UoCh2LAPDJfPTE+hX64U - uF+hUTa8KmVqAIj1xQMz9n+rNhJ9Q7YjGXiFIQ7bmnfdnULk9VywEy/JNZyrNCJBsGhtT1o6lgYD - 0CCkVAheJN/czNEzqqeMR5OzBjP2oTFdQ/9wUyfq9hsNcw0NV6Esl+J7JfrsKrj2wmI9juLPyWWt - NTAvFa+VHhF91RzljAUuTwiX5NoGwbaBN41eAiXnkODDpfUrFUn45vfLnNSDWj2tWwC7q6PM6jSG - uvVq+ZUGI+2zuti4pURSqxNe09MT0bMxK7zvD+QHWU9jZ/OR+bkkt7/d975BYam9fqg1fz6WPRkc - rBAzYpa1/hn8tJcCjMEql8bWCdQnNNczMjSJ3OgfhTn6nK1VWrZCevEsIxm9nmqsOXud1TNEqwSU - w7/wJlwptsZNo/bF1qsxbvMCzrjXhdqD7wkoNMfEz6O9CzT4ReXqcmdUG6HoX0/GvLQox+ENY2qc - yDJ44vXUo17UTDwAYCltK6DIC3+d72V4/6YVQjgyUoS2HHBCuHbqqgf7duUXvrI1Z0EWcIhEbkfB - aEAF0PL3PkbsRJbWUv3RWNlQsWq0IKoxD+g24UZRWk33XqKPfcwc/n6OVVzbetMpymsaZNaKpFuD - IXFng4jx296zVUcjbC1iO6RMpSciWv33/xEfM29EptZic8AqY5YmYFC2S/WPQnCfb96N3m+lKVf6 - 0SMgKAsMSzHeaPqbJ0QS7821U1NpVthUaneF0gqi2afuXiyCVEOU2TA/KxnzMk4S7Xi4FFb+x8on - Z3QV9Y4Iqyp5oISI2dJtNSdcbCPmVXNyDcshplhngW7vvwZdjnQT5BukJOmJwmXsd0k2EchHU52e - OC2R9VtP5DMR22tf/vrZAKq/KPNe5n4VA5DqXr/1yzt1d8ldnW/3VfnzefeQW8LdSakRmNfPMiNs - OH78bH+V+hn0vIY07KhI3nGLXyclEgGcTGTMQveGPkNhoY5mkstNS0cX+3SczpTXvzQLEz5lTNae - FVHVuMrHbbYFeaH9Y15IXpdBrL7Dt1zNd51rbW+1oahrJRDEhOBKVJZykQHmcg3MifyTs8Swv2u0 - MV1ncHL2qn9YvZe5yAGMOQetsJpAiW3VMSgJlzWprl4emataO/DTHhYvNPKUKr0mrHK0uchlKUTd - gZjREHd/6U7ryDaGrxmHgg8W88P7Al2szdGbA//rWRKMiT+h180lQQg2AtB77tlcaXs/54a25l43 - SAsodTQqF6UNvv0XiL49+mWl0QRzDChlY9RO4KD2Lf6CbL057merc5Tt0dGShC2QHPVhDXTo77DU - TzftCBAVkK7UuE6f5ANetI8f0LSDmmEUfHaJmRDyCOi8uucm6JPaABX3Rxbrl6BW614jNbUxsIkf - BPlHM7Vv7ytdixrU6Uh87bUZUFVbK8APK0xpeof27jUsZ04j/NIHhu+8t0CQP16NrH59hoZ1w8+X - PpYGMoxwT+YO1ROf4cWRzHS53W0jWHX1HesWr305tbLtXWJ8oo25ywWk7K7p5ZnCRM/Cx5quenjX - 9noJWNknMsSH1jqk7Cl8Gcoavc3QJhwujCsZZ4weaLlUTIJDUWfxJn0esCPmyPKE8IMR7swXXtcJ - lrpRKQj9nNYbjtmo6vQERqGNPsoiUzqzMk3j7qNRNEwHxPZkUHnYtgIJmfQqfYTvU9VaFWIopWFe - Cz9ZToeDXT04z+xgYapxm3depZXXyVZMdcNgiwlawQwzVf8ujAj5LG3jNxXnREzKiTuG+SM1x4VK - FmjNb+8S/UQpyQ3JR9vN1anKgRvMBeva+4JjNnNN5G3cncgKEQyEysZJMvUM3met70ePnD1YtOiH - gqo6a2RHD7m6kusoaxRIFJq8a4RCzyNm83/CBZatMkQNAcwDb8G0L2fwyUL92OqnCFNQJPuSCARr - hlAOT8OQt8cMf5XVxHJaJOc5EB/aIrovKDRqGhcSs74wJHDGUUrjuyl7nzRWPw3kjATKbGWkyyAi - LgHN1xVvWQdv48yLqx28KaK5gmAIe9IJiNtj5MKJoJV06746nYqwci2+ZCMDT+KYqWwdZ3jvrAtk - GC3CCDHUTAajpVrORtUJRZQOaczTEaLZuqJAUE3WCTC4Ogo1Rj4Wv+DZ5UbomNeVrmCHSyT4kRNC - 8F4tsOuq0H3t4laloWClnkUfncjJM7k/30Im9E9oVOSYqQ1/mVJyR/FEkik7kzWssrogEK70kiux - p9W4evQO0IfSq/GiZ8lB5Yn0Py5SOcTaghDFc+KDXVSGkgGDMXyuZXhXp8Jt61OtK4sdJfARd4Or - MaroeUBfRg4InsSIK+wCelODh1G4BvcJ34vmBE4lSo2QJxH6tyidPqpeIczX1GICYBF7je5k7aNm - zznc7SueGb63Y4VW+sQH1NbzJ3SKQ+Uwr04KUv/cetaP3rUXOlhzex+tjB2oLNGNvA5Xxa5fkhQU - fw2q3MHhQkHCgAR9Kvxy5jq3DCyR2bJgMj3lOYYPWe4Sbwm7dnbIQrsKAgRV29n2Z7R+t1aTqVzv - j43keilg994zJjT12rR1XlIiQthE73EA238uedkB4JSQ97Gz/dU9z1bAol1uC/EnhKCieRZ3F8pc - 7BDfHQgcdzyzRp1v85pqiEBxceCWsV3roh3RXHgClMCGyiPk1p1+cqla7F53aO0N/FFr0laRwpKx - N0eEMsuxdMAk6/UnxMUYC2LFy3E8VkFs7skrBXanIJJTgcjJpcBlXfcO/1pjlWQS287tIr8bSaeN - JYa1k08JE22HBYxTYCiqNYE17J0u/HUWvoNBMbOnfypVyJSKMn7JAYhHq6xVMcaSZYQsemHuIJOX - i3z6bMmxxU/m0dzbUyWLImRRA6iZrAwfAHbo+baPVQBEvT1bcRnWLQ2KOOWX+r83hpxcHUzClfti - ybOUXnOhyD28+z9TPKz3joiof4SLfF7NWWaG496jN14awvM4b4ypFq/qbl/Ogdk11IdeSLM1oGCu - qm0JH1SI+RWh8GhYjG41uVZDI3yCJPp180xZsT4CLWr0qf4QY5W5dmf4VJeNwRdcOrMG7ikFxOHs - LrPF4uIfk4bnX3ZVnk85/fDmS7h3ycvtko77npIhTe/paGjH+faeg/OkbR2QFV4dZ7dd04SfpWrb - 2EKXlGjHdWJKrU9UBlq6uITvFvLSco/qP4HA0zira+Rwx3uVS6rQ5agUM7AxYOz89i5aTMlfztbi - IO0P43EdzebXx5pH6nI740Qf5o2x8pILtMpWU5FOCOhj+g2SSlyGeXLVCWbwsZdshotHjgUOR0RT - LQqQoqZD0M/rc5gwD2lP96mDRqaT6eJ3MNCvCNpX61+Loxl1dIj97FfA8VkBHrjndsbYOwQMKX4r - acqa9bYENVgP/fRE01C6XOAMrSN2uvj5ndgMKWw3ojvVcc4JU7gMunhJNftDMO1S9Alq7YhzksOa - 8Hb79YKH5dkm24mvHapHVjw8fnYVuRD3KCQLJyBRj3VmfcaN3PrewxdwyAV7CAOnIvKKUo5/SKpj - rUs2kDaxvgsRw3aTxtBkNXJRtua3/vunspgQS9bVKlQH+83VWNSis3te8WOWheF4bKz/lqBugIWf - CFkA/2pdtI4PjczYaEjN6fk573Tc0TUTZcMkH/T2Svft0fM822r4PBFsyrNYEbUjPD2u25shvR7m - rq995k5kzxYllkKlcTgQOHsvatiyJCzqyzcWWiLE/OgrfC2DenHolzy2q3cY88QRQ+mYuTbMqPf0 - SA1zBpL4rtnputN2cxrOFbCssE+fr14jZquiNTmpV+KUEJmTwr2rfEWsEzp9D2M/Xv/zT+e///rp - y5c/6dd9/e33X7//9evPX77++P4/P759/+0/vv/663/+7S/ffvn1l2+lxNfzi/75j1/+8v3rz1/+ - 9/zmr3//799/+/uPP//4/b++/+0fX3/+8vrnff3x+49f/vp//vdP+ov+9dO/AQAA//8DANxVCmAQ - BQEA - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8bcdf5579949040a-MAD - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Mon, 02 Sep 2024 13:48:34 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=j.VcJfYXH0qoFWAS8ur6T7lAmbf8rCCHTJJw11Sf9VE-1725284914-1.0.1.1-DwLmtJyIBUe1n2WWON4q2QuGW8.W8u6pD5XniRerFRWIIAYlpXCXMT2q66jH6zBgS8tqXXKzn_nLirh4y6BD1A; - path=/; expires=Mon, 02-Sep-24 14:18:34 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=zVFh60VhTkyYmU7E9wzOPKdEBMwNRjmmc1.zDInTMx4-1725284914067-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - openai-model: - - text-embedding-ada-002 - openai-organization: - - timescale-team - openai-processing-ms: - - '27' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15552000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '5000' - x-ratelimit-limit-tokens: - - '5000000' - x-ratelimit-remaining-requests: - - '4999' - x-ratelimit-remaining-tokens: - - '4999993' - x-ratelimit-reset-requests: - - 12ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_68bf4a749941ecdfee99363e1c8b5903 - status: - code: 200 - message: OK -- request: - body: '{"input": [[2252, 62, 16], [2252, 62, 17]], "model": "text-embedding-ada-002", "encoding_format": "float"}' - headers: - accept: - - application/json - accept-encoding: - - gzip, deflate - connection: - - keep-alive - content-length: - - '78' - content-type: - - application/json - host: - - api.openai.com - user-agent: - - AsyncOpenAI/Python 1.42.0 - x-stainless-arch: - - arm64 - x-stainless-async: - - async:asyncio - x-stainless-lang: - - python - x-stainless-os: - - MacOS - x-stainless-package-version: - - 1.42.0 - x-stainless-runtime: - - CPython - x-stainless-runtime-version: - - 3.12.4 - method: POST - uri: https://api.openai.com/v1/embeddings - response: - body: - string: !!binary | - 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 - headers: - CF-Cache-Status: - - DYNAMIC - CF-RAY: - - 8bcdf5579f43d591-MAD - Connection: - - keep-alive - Content-Encoding: - - gzip - Content-Type: - - application/json - Date: - - Mon, 02 Sep 2024 13:48:34 GMT - Server: - - cloudflare - Set-Cookie: - - __cf_bm=V7TX2AF8CuAxdpeTUGwTw6Rj_qSzAOa._79HfT5Mei0-1725284914-1.0.1.1-WcOVYmHHTYbPWbhcS0Aq.sdyeNo3LtZVN5G3gXpS684dmkbO5l0k3zpkvxaRQLUY4E6yOdppiCMrZYIowTBi4g; - path=/; expires=Mon, 02-Sep-24 14:18:34 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=ZYReW.oB56f.XMniTzUmb7QzD5FFl2.6mYkiDQ411so-1725284914069-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - Transfer-Encoding: - - chunked - X-Content-Type-Options: - - nosniff - access-control-allow-origin: - - '*' - access-control-expose-headers: - - X-Request-ID - alt-svc: - - h3=":443"; ma=86400 - openai-model: - - text-embedding-ada-002 - openai-organization: - - timescale-team - openai-processing-ms: - - '30' - openai-version: - - '2020-10-01' - strict-transport-security: - - max-age=15552000; includeSubDomains; preload - x-ratelimit-limit-requests: - - '5000' - x-ratelimit-limit-tokens: - - '5000000' - x-ratelimit-remaining-requests: - - '4999' - x-ratelimit-remaining-tokens: - - '4999993' - x-ratelimit-reset-requests: - - 12ms - x-ratelimit-reset-tokens: - - 0s - x-request-id: - - req_eee4238b5c3e1ac21b154415956e70de - status: - code: 200 - message: OK -version: 1 diff --git a/projects/pgai/tests/vectorizer/conftest.py b/projects/pgai/tests/vectorizer/conftest.py index 23b593535..6459f8e56 100644 --- a/projects/pgai/tests/vectorizer/conftest.py +++ b/projects/pgai/tests/vectorizer/conftest.py @@ -1,12 +1,18 @@ +import asyncio import os +import threading from collections.abc import Callable, Generator, Mapping from pathlib import Path from typing import Any +from urllib.parse import urlparse import pytest import tiktoken import vcr # type:ignore from dotenv import load_dotenv +from mitmproxy import options +from mitmproxy.http import HTTPFlow +from mitmproxy.tools.dump import DumpMaster from testcontainers.core.image import DockerImage # type:ignore from testcontainers.postgres import PostgresContainer # type:ignore @@ -113,3 +119,49 @@ def postgres_container( load_openai_key: bool = params.get("load_openai_key", True) # type: ignore return postgres_container_manager(load_openai_key=load_openai_key) # type: ignore + + +class ReverseProxyAddon: + def __init__(self, target_url: str): + self.target = urlparse(target_url) + + def request(self, flow: HTTPFlow): + flow.request.host = str(self.target.hostname) + flow.request.path = self.target.path + flow.request.path + flow.request.scheme = "https" + flow.request.port = 443 + + +def run_reverse_proxy( + target_host: str, listen_port: int = 8000, listen_host: str = "localhost" +): + async def start_proxy(): + opts = options.Options(listen_host=listen_host, listen_port=listen_port) + master = DumpMaster(opts) + master.addons.add(ReverseProxyAddon(target_host)) # type:ignore + + try: + await master.run() + finally: + master.shutdown() + + # mitmproxy relies on asyncio for its event loop + def run_event_loop(): + asyncio.run(start_proxy()) + + proxy_thread = threading.Thread(target=run_event_loop, daemon=True) + proxy_thread.start() + + +@pytest.fixture(scope="function") +def openai_proxy_url(request: pytest.FixtureRequest): + if not hasattr(request, "param") or request.param is None: + # a valid url is required in order to start the openai proxy fixture + return None + + port = request.param + run_reverse_proxy("https://api.openai.com/v1", port) + + proxy_url = f"http://localhost:{port}" + print(f"OpenAI API proxy running on {proxy_url}") + return f"http://localhost:{port}" diff --git a/projects/pgai/tests/vectorizer/test_vectorizer_cli.py b/projects/pgai/tests/vectorizer/test_vectorizer_cli.py index 04f97154c..440103ac1 100644 --- a/projects/pgai/tests/vectorizer/test_vectorizer_cli.py +++ b/projects/pgai/tests/vectorizer/test_vectorizer_cli.py @@ -122,6 +122,7 @@ def configured_openai_vectorizer_id( source_table: str, cli_db: tuple[TestDatabase, Connection], test_params: tuple[int, int, int, str, str], + openai_proxy_url: str | None, ) -> int: """Creates and configures a vectorizer for testing""" _, concurrency, batch_size, chunking, formatting = test_params @@ -136,6 +137,10 @@ def configured_openai_vectorizer_id( 'text-embedding-ada-002', 1536, api_key_name => 'OPENAI_API_KEY' + { + f", base_url => '{openai_proxy_url}'" + if openai_proxy_url is not None else "" + } ), chunking => ai.{chunking}, formatting => ai.{formatting}, @@ -235,23 +240,41 @@ def test_params(request: pytest.FixtureRequest) -> tuple[int, int, int, str, str class TestWithOpenAiVectorizer: @pytest.mark.parametrize( - "test_params", + "test_params,openai_proxy_url", [ ( - 1, - 1, - 1, - "chunking_character_text_splitter('content')", - "formatting_python_template('$chunk')", + ( + 1, + 1, + 1, + "chunking_character_text_splitter('content')", + "formatting_python_template('$chunk')", + ), + None, # No base_url is set. Use default (https://api.openai.com/v1) ), ( - 4, - 2, - 2, - "chunking_character_text_splitter('content')", - "formatting_python_template('$chunk')", + ( + 1, + 1, + 1, + "chunking_character_text_splitter('content')", + "formatting_python_template('$chunk')", + ), + # Same test as before but with a custom base_url + 8000, + ), + ( + ( + 4, + 2, + 2, + "chunking_character_text_splitter('content')", + "formatting_python_template('$chunk')", + ), + None, # No base_url is set. Use default (https://api.openai.com/v1) ), ], + indirect=["openai_proxy_url"], ) def test_process_vectorizer( self, @@ -260,6 +283,7 @@ def test_process_vectorizer( configured_openai_vectorizer_id: int, vcr_: Any, test_params: tuple[int, int, int, str, str], + openai_proxy_url: str | None, ): """Test successful processing of vectorizer tasks""" num_items, concurrency, batch_size, _, _ = test_params @@ -280,9 +304,11 @@ def test_process_vectorizer( # When running the worker with cassette matching original test params cassette = ( f"openai-character_text_splitter-chunk_value-" - f"items={num_items}-batch_size={batch_size}.yaml" + f"items={num_items}-batch_size={batch_size}-" + f"custom_base_url={openai_proxy_url is not None}.yaml" ) logging.getLogger("vcr").setLevel(logging.DEBUG) + with vcr_.use_cassette(cassette): result = CliRunner().invoke( vectorizer_worker, diff --git a/projects/pgai/uv.lock b/projects/pgai/uv.lock index d9a17daf4..87f2b1751 100644 --- a/projects/pgai/uv.lock +++ b/projects/pgai/uv.lock @@ -105,6 +105,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/69/4b7dea755fafa10b248928da836a2cc8b5cff0762f363234e24218040f8e/aiolimiter-1.1.0-py3-none-any.whl", hash = "sha256:0b4997961fc58b8df40279e739f9cf0d3e255e63e9a44f64df567a8c17241e24", size = 7212 }, ] +[[package]] +name = "aioquic" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "cryptography" }, + { name = "pylsqpack" }, + { name = "pyopenssl" }, + { name = "service-identity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/1a/bf10b2c57c06c7452b685368cb1ac90565a6e686e84ec6f84465fb8f78f4/aioquic-1.2.0.tar.gz", hash = "sha256:f91263bb3f71948c5c8915b4d50ee370004f20a416f67fab3dcc90556c7e7199", size = 179891 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/03/1c385739e504c70ab2a66a4bc0e7cd95cee084b374dcd4dc97896378400b/aioquic-1.2.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3e23964dfb04526ade6e66f5b7cd0c830421b8138303ab60ba6e204015e7cb0b", size = 1753473 }, + { url = "https://files.pythonhosted.org/packages/6a/1f/4d1c40714db65be828e1a1e2cce7f8f4b252be67d89f2942f86a1951826c/aioquic-1.2.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:84d733332927b76218a3b246216104116f766f5a9b2308ec306cd017b3049660", size = 2083563 }, + { url = "https://files.pythonhosted.org/packages/15/48/56a8c9083d1deea4ccaf1cbf5a91a396b838b4a0f8650f4e9f45c7879a38/aioquic-1.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2466499759b31ea4f1d17f4aeb1f8d4297169e05e3c1216d618c9757f4dd740d", size = 2555697 }, + { url = "https://files.pythonhosted.org/packages/0f/93/fa4c981a8a8a903648d4cd6e12c0fca7f44e3ef4ba15a8b99a26af05b868/aioquic-1.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd75015462ca5070a888110dc201f35a9f4c7459f9201b77adc3c06013611bb8", size = 2149089 }, + { url = "https://files.pythonhosted.org/packages/b0/0f/4a280923313b831892caaa45348abea89e7dd2e4422a86699bb0e506b1dd/aioquic-1.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43ae3b11d43400a620ca0b4b4885d12b76a599c2cbddba755f74bebfa65fe587", size = 2205221 }, + { url = "https://files.pythonhosted.org/packages/d2/6b/a6a1d1762ce06f13b68f524bb9c5f4d6ca7cda9b072d7e744626b89b77be/aioquic-1.2.0-cp38-abi3-win32.whl", hash = "sha256:910d8c91da86bba003d491d15deaeac3087d1b9d690b9edc1375905d8867b742", size = 1214037 }, + { url = "https://files.pythonhosted.org/packages/dd/aa/e8a8a75c93dee0ab229df3c2d17f63cd44d0ad5ee8540e2ec42779ce3a39/aioquic-1.2.0-cp38-abi3-win_amd64.whl", hash = "sha256:e3dcfb941004333d477225a6689b55fc7f905af5ee6a556eb5083be0354e653a", size = 1530339 }, + { url = "https://files.pythonhosted.org/packages/00/ba/023fb3f1476bc34b48e484a4ea866bfdef6454ff17d76ce5da7b02c4c6b7/aioquic-1.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8e600da7aa7e4a7bc53ee8f45fd66808032127ae00938c119ac77d66633b8961", size = 1754235 }, + { url = "https://files.pythonhosted.org/packages/2d/bd/f1910e0d80b6acc3cc95a2daeaeb48fd07a1c83194b2c7791e9eaa1500a2/aioquic-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:358e2b9c1e0c24b9933094c3c2cf990faf44d03b64d6f8ff79b4b3f510c6c268", size = 2083057 }, + { url = "https://files.pythonhosted.org/packages/98/81/e3c2e0f2a7e2380250490ed526851ebdfa0af825512fb30c2f2fe7bd6f04/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fe683943ea3439dd0aca05ff80e85a552d4b39f9f34858c76ac54c205990e88", size = 2514822 }, + { url = "https://files.pythonhosted.org/packages/29/63/f17ce51381cdf75390d1d01f13cd7c4836c4dd8b75c0d4f7837cfabcafca/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c22689c33fe4799624aed6faaba0af9e6ea7d31ac45047745828ee68d67fe1d9", size = 2096691 }, + { url = "https://files.pythonhosted.org/packages/d3/de/7bb51c7bcf8aceaba6b72656031708faf2eed8c5f237143a4a381f4dc1c8/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3976b75e82d83742c8b811e38d273eda2ca7f81394b6a85da33a02849c5f1d9d", size = 2149914 }, + { url = "https://files.pythonhosted.org/packages/fc/40/e946f3e28a803f2e553e710b0902dd8f2b6992801b1eec8d7c383f597715/aioquic-1.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cbe7167b2faee887e115d83d25332c4b8fa4604d5175807d978cb4fe39b4e36e", size = 1530487 }, +] + [[package]] name = "aiosignal" version = "1.3.1" @@ -134,13 +162,25 @@ dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9f/09/45b9b7a6d4e45c6bcb5bf61d19e3ab87df68e0601fa8c5293de3542546cc/anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c", size = 173422 } wheels = [ { url = "https://files.pythonhosted.org/packages/e4/f5/f2b75d2fc6f1a260f340f0e7c6a060f4dd2961cc16884ed851b0d18da06a/anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d", size = 90377 }, ] +[[package]] +name = "asgiref" +version = "3.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/38/b3395cc9ad1b56d2ddac9970bc8f4141312dbaec28bc7c218b0dfafd0f42/asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590", size = 35186 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828 }, +] + [[package]] name = "async-timeout" version = "5.0.1" @@ -168,6 +208,85 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", size = 30181 }, ] +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, +] + +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/3a/dbf4fb970c1019a57b5e492e1e0eae745d32e59ba4d6161ab5422b08eefe/Brotli-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1140c64812cb9b06c922e77f1c26a75ec5e3f0fb2bf92cc8c58720dec276752", size = 873045 }, + { url = "https://files.pythonhosted.org/packages/dd/11/afc14026ea7f44bd6eb9316d800d439d092c8d508752055ce8d03086079a/Brotli-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8fd5270e906eef71d4a8d19b7c6a43760c6abcfcc10c9101d14eb2357418de9", size = 446218 }, + { url = "https://files.pythonhosted.org/packages/36/83/7545a6e7729db43cb36c4287ae388d6885c85a86dd251768a47015dfde32/Brotli-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ae56aca0402a0f9a3431cddda62ad71666ca9d4dc3a10a142b9dce2e3c0cda3", size = 2903872 }, + { url = "https://files.pythonhosted.org/packages/32/23/35331c4d9391fcc0f29fd9bec2c76e4b4eeab769afbc4b11dd2e1098fb13/Brotli-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43ce1b9935bfa1ede40028054d7f48b5469cd02733a365eec8a329ffd342915d", size = 2941254 }, + { url = "https://files.pythonhosted.org/packages/3b/24/1671acb450c902edb64bd765d73603797c6c7280a9ada85a195f6b78c6e5/Brotli-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c4855522edb2e6ae7fdb58e07c3ba9111e7621a8956f481c68d5d979c93032e", size = 2857293 }, + { url = "https://files.pythonhosted.org/packages/d5/00/40f760cc27007912b327fe15bf6bfd8eaecbe451687f72a8abc587d503b3/Brotli-1.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:38025d9f30cf4634f8309c6874ef871b841eb3c347e90b0851f63d1ded5212da", size = 3002385 }, + { url = "https://files.pythonhosted.org/packages/b8/cb/8aaa83f7a4caa131757668c0fb0c4b6384b09ffa77f2fba9570d87ab587d/Brotli-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e6a904cb26bfefc2f0a6f240bdf5233be78cd2488900a2f846f3c3ac8489ab80", size = 2911104 }, + { url = "https://files.pythonhosted.org/packages/bc/c4/65456561d89d3c49f46b7fbeb8fe6e449f13bdc8ea7791832c5d476b2faf/Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d", size = 2809981 }, + { url = "https://files.pythonhosted.org/packages/05/1b/cf49528437bae28abce5f6e059f0d0be6fecdcc1d3e33e7c54b3ca498425/Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0", size = 2935297 }, + { url = "https://files.pythonhosted.org/packages/81/ff/190d4af610680bf0c5a09eb5d1eac6e99c7c8e216440f9c7cfd42b7adab5/Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e", size = 2930735 }, + { url = "https://files.pythonhosted.org/packages/80/7d/f1abbc0c98f6e09abd3cad63ec34af17abc4c44f308a7a539010f79aae7a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c", size = 2933107 }, + { url = "https://files.pythonhosted.org/packages/34/ce/5a5020ba48f2b5a4ad1c0522d095ad5847a0be508e7d7569c8630ce25062/Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1", size = 2845400 }, + { url = "https://files.pythonhosted.org/packages/44/89/fa2c4355ab1eecf3994e5a0a7f5492c6ff81dfcb5f9ba7859bd534bb5c1a/Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2", size = 3031985 }, + { url = "https://files.pythonhosted.org/packages/af/a4/79196b4a1674143d19dca400866b1a4d1a089040df7b93b88ebae81f3447/Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec", size = 2927099 }, + { url = "https://files.pythonhosted.org/packages/e9/54/1c0278556a097f9651e657b873ab08f01b9a9ae4cac128ceb66427d7cd20/Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2", size = 333172 }, + { url = "https://files.pythonhosted.org/packages/f7/65/b785722e941193fd8b571afd9edbec2a9b838ddec4375d8af33a50b8dab9/Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128", size = 357255 }, + { url = "https://files.pythonhosted.org/packages/96/12/ad41e7fadd5db55459c4c401842b47f7fee51068f86dd2894dd0dcfc2d2a/Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc", size = 873068 }, + { url = "https://files.pythonhosted.org/packages/95/4e/5afab7b2b4b61a84e9c75b17814198ce515343a44e2ed4488fac314cd0a9/Brotli-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8146669223164fc87a7e3de9f81e9423c67a79d6b3447994dfb9c95da16e2d6", size = 446244 }, + { url = "https://files.pythonhosted.org/packages/9d/e6/f305eb61fb9a8580c525478a4a34c5ae1a9bcb12c3aee619114940bc513d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30924eb4c57903d5a7526b08ef4a584acc22ab1ffa085faceb521521d2de32dd", size = 2906500 }, + { url = "https://files.pythonhosted.org/packages/3e/4f/af6846cfbc1550a3024e5d3775ede1e00474c40882c7bf5b37a43ca35e91/Brotli-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ceb64bbc6eac5a140ca649003756940f8d6a7c444a68af170b3187623b43bebf", size = 2943950 }, + { url = "https://files.pythonhosted.org/packages/b3/e7/ca2993c7682d8629b62630ebf0d1f3bb3d579e667ce8e7ca03a0a0576a2d/Brotli-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a469274ad18dc0e4d316eefa616d1d0c2ff9da369af19fa6f3daa4f09671fd61", size = 2918527 }, + { url = "https://files.pythonhosted.org/packages/b3/96/da98e7bedc4c51104d29cc61e5f449a502dd3dbc211944546a4cc65500d3/Brotli-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524f35912131cc2cabb00edfd8d573b07f2d9f21fa824bd3fb19725a9cf06327", size = 2845489 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/ccbc16947d6ce943a7f57e1a40596c75859eeb6d279c6994eddd69615265/Brotli-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5b3cc074004d968722f51e550b41a27be656ec48f8afaeeb45ebf65b561481dd", size = 2914080 }, + { url = "https://files.pythonhosted.org/packages/80/d6/0bd38d758d1afa62a5524172f0b18626bb2392d717ff94806f741fcd5ee9/Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9", size = 2813051 }, + { url = "https://files.pythonhosted.org/packages/14/56/48859dd5d129d7519e001f06dcfbb6e2cf6db92b2702c0c2ce7d97e086c1/Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265", size = 2938172 }, + { url = "https://files.pythonhosted.org/packages/3d/77/a236d5f8cd9e9f4348da5acc75ab032ab1ab2c03cc8f430d24eea2672888/Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8", size = 2933023 }, + { url = "https://files.pythonhosted.org/packages/f1/87/3b283efc0f5cb35f7f84c0c240b1e1a1003a5e47141a4881bf87c86d0ce2/Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f", size = 2935871 }, + { url = "https://files.pythonhosted.org/packages/f3/eb/2be4cc3e2141dc1a43ad4ca1875a72088229de38c68e842746b342667b2a/Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757", size = 2847784 }, + { url = "https://files.pythonhosted.org/packages/66/13/b58ddebfd35edde572ccefe6890cf7c493f0c319aad2a5badee134b4d8ec/Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0", size = 3034905 }, + { url = "https://files.pythonhosted.org/packages/84/9c/bc96b6c7db824998a49ed3b38e441a2cae9234da6fa11f6ed17e8cf4f147/Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b", size = 2929467 }, + { url = "https://files.pythonhosted.org/packages/e7/71/8f161dee223c7ff7fea9d44893fba953ce97cf2c3c33f78ba260a91bcff5/Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50", size = 333169 }, + { url = "https://files.pythonhosted.org/packages/02/8a/fece0ee1057643cb2a5bbf59682de13f1725f8482b2c057d4e799d7ade75/Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1", size = 357253 }, + { url = "https://files.pythonhosted.org/packages/5c/d0/5373ae13b93fe00095a58efcbce837fd470ca39f703a235d2a999baadfbc/Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28", size = 815693 }, + { url = "https://files.pythonhosted.org/packages/8e/48/f6e1cdf86751300c288c1459724bfa6917a80e30dbfc326f92cea5d3683a/Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f", size = 422489 }, + { url = "https://files.pythonhosted.org/packages/06/88/564958cedce636d0f1bed313381dfc4b4e3d3f6015a63dae6146e1b8c65c/Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", size = 873081 }, + { url = "https://files.pythonhosted.org/packages/58/79/b7026a8bb65da9a6bb7d14329fd2bd48d2b7f86d7329d5cc8ddc6a90526f/Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", size = 446244 }, + { url = "https://files.pythonhosted.org/packages/e5/18/c18c32ecea41b6c0004e15606e274006366fe19436b6adccc1ae7b2e50c2/Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", size = 2906505 }, + { url = "https://files.pythonhosted.org/packages/08/c8/69ec0496b1ada7569b62d85893d928e865df29b90736558d6c98c2031208/Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", size = 2944152 }, + { url = "https://files.pythonhosted.org/packages/ab/fb/0517cea182219d6768113a38167ef6d4eb157a033178cc938033a552ed6d/Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", size = 2919252 }, + { url = "https://files.pythonhosted.org/packages/c7/53/73a3431662e33ae61a5c80b1b9d2d18f58dfa910ae8dd696e57d39f1a2f5/Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", size = 2845955 }, + { url = "https://files.pythonhosted.org/packages/55/ac/bd280708d9c5ebdbf9de01459e625a3e3803cce0784f47d633562cf40e83/Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", size = 2914304 }, + { url = "https://files.pythonhosted.org/packages/76/58/5c391b41ecfc4527d2cc3350719b02e87cb424ef8ba2023fb662f9bf743c/Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", size = 2814452 }, + { url = "https://files.pythonhosted.org/packages/c7/4e/91b8256dfe99c407f174924b65a01f5305e303f486cc7a2e8a5d43c8bec3/Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", size = 2938751 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/e2a39a5d3b412938362bbbeba5af904092bf3f95b867b4a3eb856104074e/Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", size = 2933757 }, + { url = "https://files.pythonhosted.org/packages/13/f0/358354786280a509482e0e77c1a5459e439766597d280f28cb097642fc26/Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9", size = 2936146 }, + { url = "https://files.pythonhosted.org/packages/80/f7/daf538c1060d3a88266b80ecc1d1c98b79553b3f117a485653f17070ea2a/Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb", size = 2848055 }, + { url = "https://files.pythonhosted.org/packages/ad/cf/0eaa0585c4077d3c2d1edf322d8e97aabf317941d3a72d7b3ad8bce004b0/Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111", size = 3035102 }, + { url = "https://files.pythonhosted.org/packages/d8/63/1c1585b2aa554fe6dbce30f0c18bdbc877fa9a1bf5ff17677d9cca0ac122/Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839", size = 2930029 }, + { url = "https://files.pythonhosted.org/packages/5f/3b/4e3fd1893eb3bbfef8e5a80d4508bec17a57bb92d586c85c12d28666bb13/Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", size = 333276 }, + { url = "https://files.pythonhosted.org/packages/3d/d5/942051b45a9e883b5b6e98c041698b1eb2012d25e5948c58d6bf85b1bb43/Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", size = 357255 }, + { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681 }, + { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475 }, + { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173 }, + { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803 }, + { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946 }, + { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707 }, + { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231 }, + { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157 }, + { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122 }, + { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206 }, + { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804 }, + { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517 }, +] + [[package]] name = "build" version = "1.2.2.post1" @@ -211,6 +330,8 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, @@ -219,6 +340,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, @@ -227,6 +352,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, @@ -234,6 +363,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, @@ -241,6 +374,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, ] [[package]] @@ -342,20 +477,28 @@ dependencies = [ ] 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 }, + { url = "https://files.pythonhosted.org/packages/6f/db/d8b8a039483f25fc3b70c90bc8f3e1d4497a99358d610c5067bf3bd4f0af/cryptography-43.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c", size = 3144545 }, { url = "https://files.pythonhosted.org/packages/93/90/116edd5f8ec23b2dc879f7a42443e073cdad22950d3c8ee834e3b8124543/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3", size = 3679828 }, { url = "https://files.pythonhosted.org/packages/d8/32/1e1d78b316aa22c0ba6493cc271c1c309969e5aa5c22c830a1d7ce3471e6/cryptography-43.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83", size = 3908132 }, + { url = "https://files.pythonhosted.org/packages/91/bb/cd2c13be3332e7af3cdf16154147952d39075b9f61ea5e6b5241bf4bf436/cryptography-43.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7", size = 2988811 }, ] [[package]] @@ -394,7 +537,8 @@ dependencies = [ { name = "envier" }, { name = "opentelemetry-api" }, { name = "protobuf" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "wrapt" }, { name = "xmltodict" }, ] @@ -503,6 +647,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b9/f8/feced7779d755758a52d1f6635d990b8d98dc0a29fa568bbe0625f18fdf3/filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", size = 16163 }, ] +[[package]] +name = "flask" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/50/dff6380f1c7f84135484e176e0cac8690af72fa90e932ad2a0a60e28c69b/flask-3.1.0.tar.gz", hash = "sha256:5f873c5184c897c8d9d1b05df1e3d01b14910ce69607a117bd3277098a5836ac", size = 680824 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/47/93213ee66ef8fae3b93b3e29206f6b251e65c97bd91d8e1c5596ef15af0a/flask-3.1.0-py3-none-any.whl", hash = "sha256:d667207822eb83f1c4b50949b1623c8fc8d51f2341d65f72e1a1815397551136", size = 102979 }, +] + [[package]] name = "frozenlist" version = "1.5.0" @@ -641,6 +801,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, ] +[[package]] +name = "h2" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/32/fec683ddd10629ea4ea46d206752a95a2d8a48c22521edd70b142488efe1/h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb", size = 2145593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", size = 57488 }, +] + +[[package]] +name = "hpack" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/9b/fda93fb4d957db19b0f6b370e79d586b3e8528b20252c729c476a2c02954/hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095", size = 49117 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/34/e8b383f35b77c402d28563d2b8f83159319b509bc5f760b15d60b0abf165/hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", size = 32611 }, +] + [[package]] name = "httpcore" version = "1.0.6" @@ -681,13 +863,23 @@ dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "tqdm" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d5/a8/882ae5d1cfa7c9c5be32feee4cee56d9873078913953423e47a756da110d/huggingface_hub-0.26.2.tar.gz", hash = "sha256:b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b", size = 375621 } wheels = [ { url = "https://files.pythonhosted.org/packages/60/bf/cea0b9720c32fa01b0c4ec4b16b9f4ae34ca106b202ebbae9f03ab98cd8f/huggingface_hub-0.26.2-py3-none-any.whl", hash = "sha256:98c2a5a8e786c7b2cb6fdeb2740893cba4d53e312572ed3d8afafda65b128c46", size = 447536 }, ] +[[package]] +name = "hyperframe" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/2a/4747bff0a17f7281abe73e955d60d80aae537a5d203f417fa1c2e7578ebb/hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914", size = 25008 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/de/85a784bcc4a3779d1753a7ec2dee5de90e18c7bcf402e71b51fcf150b129/hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", size = 12389 }, +] + [[package]] name = "idna" version = "3.10" @@ -718,6 +910,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, ] +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234 }, +] + [[package]] name = "jaraco-classes" version = "3.4.0" @@ -763,6 +964,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", size = 48435 }, ] +[[package]] +name = "jinja2" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, +] + [[package]] name = "jiter" version = "0.6.1" @@ -840,6 +1053,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, ] +[[package]] +name = "kaitaistruct" +version = "0.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/04/dd60b9cb65d580ef6cb6eaee975ad1bdd22d46a3f51b07a1e0606710ea88/kaitaistruct-0.10.tar.gz", hash = "sha256:a044dee29173d6afbacf27bcac39daf89b654dd418cfa009ab82d9178a9ae52a", size = 7061 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/bf/88ad23efc08708bda9a2647169828e3553bb2093a473801db61f75356395/kaitaistruct-0.10-py2.py3-none-any.whl", hash = "sha256:a97350919adbf37fda881f75e9365e2fb88d04832b7a4e57106ec70119efb235", size = 7013 }, +] + [[package]] name = "keyring" version = "25.5.0" @@ -869,7 +1091,8 @@ dependencies = [ { name = "pydantic" }, { name = "pyyaml" }, { name = "tenacity" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/60/d6/5128d9b885b070ad6e60a7719ab0d68fc2cd16d41797a195b03689256b7a/langchain_core-0.3.14.tar.gz", hash = "sha256:cef68958d59d0970a89c778004dfa7d4559a89139abbf8b0e348e18511792e84", size = 327895 } wheels = [ @@ -918,6 +1141,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6b/2a/fa797aebe2d6aaf1ed0955a798b31baeb6371319ae9a2fe3293ed82c5b1b/langsmith-0.1.138-py3-none-any.whl", hash = "sha256:5c2bd5c11c75f7b3d06a0f06b115186e7326ca969fd26d66ffc65a0669012aee", size = 299012 }, ] +[[package]] +name = "ldap3" +version = "2.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/43/ac/96bd5464e3edbc61595d0d69989f5d9969ae411866427b2500a8e5b812c0/ldap3-2.9.1.tar.gz", hash = "sha256:f3e7fc4718e3f09dda568b57100095e0ce58633bcabbed8667ce3f8fbaa4229f", size = 398830 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/f6/71d6ec9f18da0b2201287ce9db6afb1a1f637dedb3f0703409558981c723/ldap3-2.9.1-py2.py3-none-any.whl", hash = "sha256:5869596fc4948797020d3f03b7939da938778a0f9e2009f7a072ccf92b8e8d70", size = 432192 }, +] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -930,6 +1165,64 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, ] +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -939,6 +1232,74 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] +[[package]] +name = "mitmproxy" +version = "11.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aioquic" }, + { name = "asgiref" }, + { name = "brotli" }, + { name = "certifi" }, + { name = "cryptography" }, + { name = "flask" }, + { name = "h11" }, + { name = "h2" }, + { name = "hyperframe" }, + { name = "kaitaistruct" }, + { name = "ldap3" }, + { name = "mitmproxy-rs" }, + { name = "msgpack" }, + { name = "passlib" }, + { name = "publicsuffix2" }, + { name = "pydivert", marker = "sys_platform == 'win32'" }, + { name = "pyopenssl" }, + { name = "pyparsing" }, + { name = "pyperclip" }, + { name = "ruamel-yaml" }, + { name = "sortedcontainers" }, + { name = "tornado" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "urwid" }, + { name = "wsproto" }, + { name = "zstandard" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/88/5f503d5dd63aa8e0e6d788380e8e8b5d172b682eb5770da625bf70a5f0a7/mitmproxy-11.0.2-py3-none-any.whl", hash = "sha256:95db7b57b21320a0c76e59e1d6644daaa431291cdf89419608301424651199b4", size = 1658730 }, +] + +[[package]] +name = "mitmproxy-macos" +version = "0.10.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/92/c98ab2a8e5fb5b9880a35b347ffb0e013a1d694b538831e290ad483c503d/mitmproxy_macos-0.10.7-py3-none-any.whl", hash = "sha256:e01664e1a31479818596641148ab80b5b531b03c8c9f292af8ded7103291db82", size = 2653482 }, +] + +[[package]] +name = "mitmproxy-rs" +version = "0.10.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mitmproxy-macos", marker = "sys_platform == 'darwin'" }, + { name = "mitmproxy-windows", marker = "os_name == 'nt'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/64/114311494f8fb689343ce348b7f046bbc67a88247ffc655dc4c3440286fb/mitmproxy_rs-0.10.7.tar.gz", hash = "sha256:0959a540766403222464472b64122ac8ccbca66b5f019154496b98e62482277f", size = 1183834 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/d9/a0c427fa4af584db2fa87eaaf3b6ba18df4bece4c04fbe9c6d37de22edf0/mitmproxy_rs-0.10.7-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:8b8eedccd2b03ff2f9505bd9005a54f796d2e40f731dd7246e6656075935ae6b", size = 3854635 }, + { url = "https://files.pythonhosted.org/packages/f0/58/bdf172d78d123b9127d419153eaa8b14363449d5108d7367b550ea8600c4/mitmproxy_rs-0.10.7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb648320f9007378f67d70479727db862faa2b7832dddaa4eef376d8c94d8388", size = 1385919 }, + { url = "https://files.pythonhosted.org/packages/a2/59/780297cc8b5cecd9787257cae3fe0a60effaafb5238fd7879cfd4c63d357/mitmproxy_rs-0.10.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a57f099b80e5aaf2d98764761dab8e1644ae011c7cf2696079f68eecda0089c", size = 1469317 }, + { url = "https://files.pythonhosted.org/packages/a5/19/67421b239b90408943e5d2286f812538a64009eaa522bf71f3378fb527bd/mitmproxy_rs-0.10.7-cp310-abi3-win_amd64.whl", hash = "sha256:5a95503f57c1d991641690d6e0a9a3e4df484832bed1da1e81b6cf53acf18f75", size = 1592355 }, +] + +[[package]] +name = "mitmproxy-windows" +version = "0.10.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/1b/8519d7ffe246b32387012d738a7ce024de83120040e8400c325122870571/mitmproxy_windows-0.10.7-py3-none-any.whl", hash = "sha256:be2eb85980d69dcc5159bbbcd673f3a6966b6e3b34419eed6d5bfb36ed4cf9a3", size = 474415 }, +] + [[package]] name = "more-itertools" version = "10.5.0" @@ -948,12 +1309,64 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", size = 60952 }, ] +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/f9/a892a6038c861fa849b11a2bb0502c07bc698ab6ea53359e5771397d883b/msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd", size = 150428 }, + { url = "https://files.pythonhosted.org/packages/df/7a/d174cc6a3b6bb85556e6a046d3193294a92f9a8e583cdbd46dc8a1d7e7f4/msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d", size = 84131 }, + { url = "https://files.pythonhosted.org/packages/08/52/bf4fbf72f897a23a56b822997a72c16de07d8d56d7bf273242f884055682/msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5", size = 81215 }, + { url = "https://files.pythonhosted.org/packages/02/95/dc0044b439b518236aaf012da4677c1b8183ce388411ad1b1e63c32d8979/msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5", size = 371229 }, + { url = "https://files.pythonhosted.org/packages/ff/75/09081792db60470bef19d9c2be89f024d366b1e1973c197bb59e6aabc647/msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e", size = 378034 }, + { url = "https://files.pythonhosted.org/packages/32/d3/c152e0c55fead87dd948d4b29879b0f14feeeec92ef1fd2ec21b107c3f49/msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b", size = 363070 }, + { url = "https://files.pythonhosted.org/packages/d9/2c/82e73506dd55f9e43ac8aa007c9dd088c6f0de2aa19e8f7330e6a65879fc/msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f", size = 359863 }, + { url = "https://files.pythonhosted.org/packages/cb/a0/3d093b248837094220e1edc9ec4337de3443b1cfeeb6e0896af8ccc4cc7a/msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68", size = 368166 }, + { url = "https://files.pythonhosted.org/packages/e4/13/7646f14f06838b406cf5a6ddbb7e8dc78b4996d891ab3b93c33d1ccc8678/msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b", size = 370105 }, + { url = "https://files.pythonhosted.org/packages/67/fa/dbbd2443e4578e165192dabbc6a22c0812cda2649261b1264ff515f19f15/msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044", size = 68513 }, + { url = "https://files.pythonhosted.org/packages/24/ce/c2c8fbf0ded750cb63cbcbb61bc1f2dfd69e16dca30a8af8ba80ec182dcd/msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f", size = 74687 }, + { url = "https://files.pythonhosted.org/packages/b7/5e/a4c7154ba65d93be91f2f1e55f90e76c5f91ccadc7efc4341e6f04c8647f/msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7", size = 150803 }, + { url = "https://files.pythonhosted.org/packages/60/c2/687684164698f1d51c41778c838d854965dd284a4b9d3a44beba9265c931/msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa", size = 84343 }, + { url = "https://files.pythonhosted.org/packages/42/ae/d3adea9bb4a1342763556078b5765e666f8fdf242e00f3f6657380920972/msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701", size = 81408 }, + { url = "https://files.pythonhosted.org/packages/dc/17/6313325a6ff40ce9c3207293aee3ba50104aed6c2c1559d20d09e5c1ff54/msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6", size = 396096 }, + { url = "https://files.pythonhosted.org/packages/a8/a1/ad7b84b91ab5a324e707f4c9761633e357820b011a01e34ce658c1dda7cc/msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59", size = 403671 }, + { url = "https://files.pythonhosted.org/packages/bb/0b/fd5b7c0b308bbf1831df0ca04ec76fe2f5bf6319833646b0a4bd5e9dc76d/msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0", size = 387414 }, + { url = "https://files.pythonhosted.org/packages/f0/03/ff8233b7c6e9929a1f5da3c7860eccd847e2523ca2de0d8ef4878d354cfa/msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e", size = 383759 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/eb82e1fed5a16dddd9bc75f0854b6e2fe86c0259c4353666d7fab37d39f4/msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6", size = 394405 }, + { url = "https://files.pythonhosted.org/packages/90/2e/962c6004e373d54ecf33d695fb1402f99b51832631e37c49273cc564ffc5/msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5", size = 396041 }, + { url = "https://files.pythonhosted.org/packages/f8/20/6e03342f629474414860c48aeffcc2f7f50ddaf351d95f20c3f1c67399a8/msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88", size = 68538 }, + { url = "https://files.pythonhosted.org/packages/aa/c4/5a582fc9a87991a3e6f6800e9bb2f3c82972912235eb9539954f3e9997c7/msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788", size = 74871 }, + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 }, +] + [[package]] name = "multidict" version = "6.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } wheels = [ @@ -1137,7 +1550,8 @@ dependencies = [ { name = "pydantic" }, { name = "sniffio" }, { name = "tqdm" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/83/fc/77552f9ddd40ac32fe44c591c5a0918a050aea6ce62a3f22fc7d8fe0359a/openai-1.53.0.tar.gz", hash = "sha256:be2c4e77721b166cce8130e544178b7d579f751b4b074ffbaade3854b6f85ec5", size = 310497 } wheels = [ @@ -1211,6 +1625,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, ] +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554 }, +] + [[package]] name = "pgai" version = "0.3.0" @@ -1229,7 +1652,8 @@ dependencies = [ { name = "pytimeparse" }, { name = "structlog" }, { name = "tiktoken" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "voyageai" }, ] @@ -1241,6 +1665,7 @@ sqlalchemy = [ [package.dev-dependencies] dev = [ { name = "build" }, + { name = "mitmproxy" }, { name = "psycopg", extra = ["binary"] }, { name = "pyright" }, { name = "pytest" }, @@ -1274,6 +1699,7 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "build", specifier = "==1.2.2.post1" }, + { name = "mitmproxy", specifier = ">=11.0.2" }, { name = "psycopg", extras = ["binary"], specifier = "==3.2.1" }, { name = "pyright", specifier = "==1.1.385" }, { name = "pytest", specifier = "==8.3.2" }, @@ -1473,7 +1899,8 @@ name = "psycopg" version = "3.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ff/8e/f176997fd790d3dce9fa0ca695391beaeee39af7ecd6d426c4c063cf6744/psycopg-3.2.1.tar.gz", hash = "sha256:dc8da6dc8729dacacda3cc2f17d2c9397a70a66cf0d2b69c91065d60d5f00cb7", size = 155313 } @@ -1526,6 +1953,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/2f/979228189adbeb59afce626f1e7c3bf73cc7ff94217099a2ddfd6fd132ff/psycopg_binary-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:334046a937bb086c36e2c6889fe327f9f29bfc085d678f70fac0b0618949f674", size = 2911959 }, ] +[[package]] +name = "publicsuffix2" +version = "2.20191221" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/04/1759906c4c5b67b2903f546de234a824d4028ef24eb0b1122daa43376c20/publicsuffix2-2.20191221.tar.gz", hash = "sha256:00f8cc31aa8d0d5592a5ced19cccba7de428ebca985db26ac852d920ddd6fe7b", size = 99592 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/16/053c2945c5e3aebeefb4ccd5c5e7639e38bc30ad1bdc7ce86c6d01707726/publicsuffix2-2.20191221-py2.py3-none-any.whl", hash = "sha256:786b5e36205b88758bd3518725ec8cfe7a8173f5269354641f581c6b80a99893", size = 89033 }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135 }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/67/6afbf0d507f73c32d21084a79946bfcfca5fbc62a72057e9c23797a737c9/pyasn1_modules-0.4.1.tar.gz", hash = "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c", size = 310028 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/bc88a6711935ba795a679ea6ebee07e128050d6382eaa35a0a47c8032bdc/pyasn1_modules-0.4.1-py3-none-any.whl", hash = "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd", size = 181537 }, +] + [[package]] name = "pycparser" version = "2.22" @@ -1542,7 +1999,8 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917 } wheels = [ @@ -1554,7 +2012,8 @@ name = "pydantic-core" version = "2.23.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156 } wheels = [ @@ -1616,6 +2075,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/f9/b6bcaf874f410564a78908739c80861a171788ef4d4f76f5009656672dfe/pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753", size = 1920344 }, ] +[[package]] +name = "pydivert" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/71/2da9bcf742df3ab23f75f10fedca074951dd13a84bda8dea3077f68ae9a6/pydivert-2.1.0.tar.gz", hash = "sha256:f0e150f4ff591b78e35f514e319561dadff7f24a82186a171dd4d465483de5b4", size = 91057 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/8f/86d7931c62013a5a7ebf4e1642a87d4a6050c0f570e714f61b0df1984c62/pydivert-2.1.0-py2.py3-none-any.whl", hash = "sha256:382db488e3c37c03ec9ec94e061a0b24334d78dbaeebb7d4e4d32ce4355d9da1", size = 104718 }, +] + [[package]] name = "pygments" version = "2.18.0" @@ -1625,6 +2093,48 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, ] +[[package]] +name = "pylsqpack" +version = "0.3.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/93/1d/3f400f2e7413caec3cd58a9718bcab97d6e66ffb037af79cb45f06ac8813/pylsqpack-0.3.18.tar.gz", hash = "sha256:45ae55e721877505f4d5ccd49591d69353f2a548a8673dfafb251d385b3c097f", size = 659125 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/30/dc13ed88ad762d9fbb8351064a4c1e137a2574155deb6f88e8ca9c90cf5e/pylsqpack-0.3.18-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1f415d2e03c779261ac7ed421a009a4c752eef6f1ef7b5a34c4a463a5e17fbad", size = 161023 }, + { url = "https://files.pythonhosted.org/packages/cc/5b/29e9b02f84393b4acbe0584f38916722be70402e85efcc71187695d2a224/pylsqpack-0.3.18-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c84e6d4dcb708d766a50bfd16579d8a0bff4eb4e5f5dff9f3df4018454d4013b", size = 165427 }, + { url = "https://files.pythonhosted.org/packages/ea/48/b3099486580ffd36cddda413ff00f54b19413ceafe811c5ee2a7874a900f/pylsqpack-0.3.18-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bac5f2dc255ae70e5a14033e769769b38bd4c980b365dacd88665610f245e36f", size = 246632 }, + { url = "https://files.pythonhosted.org/packages/82/42/1c8fb200785bee0bd9d87c554ede22669ac0dc368be9d55ed6cf2e3ec090/pylsqpack-0.3.18-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75042b442a0a7a283b5adc21045e6583f3c817d40ccec769837bf2f90b79c494", size = 246478 }, + { url = "https://files.pythonhosted.org/packages/b3/ba/3087e5ce2d5bd65770a2d499f2729db3336fbdd0af43b45b426e58ea1136/pylsqpack-0.3.18-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b5fd04bb27180286811f8e1659974e6e5e854a882de3f2aba8caefc1bb9ab81", size = 243340 }, + { url = "https://files.pythonhosted.org/packages/8e/fb/010f792c4b862fdf03063dfa402165f3aa404955e3e9266cf9333e1b1e9e/pylsqpack-0.3.18-cp38-abi3-win32.whl", hash = "sha256:a2798e1c08bd36875f77a1ebec0f130fdf9e27eebdb0499a764201d55ef78770", size = 152023 }, + { url = "https://files.pythonhosted.org/packages/83/6b/e62ec15297e3516e7b1c898cb94bd856781903ad9eb59fd84e23aaa7fe03/pylsqpack-0.3.18-cp38-abi3-win_amd64.whl", hash = "sha256:40465d025b946bca195bdaed74b3b79fe3f7f419ab1d4bc4109dca34ba9881d7", size = 154515 }, +] + +[[package]] +name = "pyopenssl" +version = "24.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/d4/1067b82c4fc674d6f6e9e8d26b3dff978da46d351ca3bac171544693e085/pyopenssl-24.3.0.tar.gz", hash = "sha256:49f7a019577d834746bc55c5fce6ecbcec0f2b4ec5ce1cf43a9a173b8138bb36", size = 178944 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/22/40f9162e943f86f0fc927ebc648078be87def360d9d8db346619fb97df2b/pyOpenSSL-24.3.0-py3-none-any.whl", hash = "sha256:e474f5a473cd7f92221cc04976e48f4d11502804657a08a989fb3be5514c904a", size = 56111 }, +] + +[[package]] +name = "pyparsing" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/d5/e5aeee5387091148a19e1145f63606619cb5f20b83fccb63efae6474e7b2/pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c", size = 920984 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/ec/2eb3cd785efd67806c46c13a17339708ddc346cbb684eade7a6e6f79536a/pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84", size = 106921 }, +] + +[[package]] +name = "pyperclip" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/23/2f0a3efc4d6a32f3b63cdff36cd398d9701d26cda58e3ab97ac79fb5e60d/pyperclip-1.9.0.tar.gz", hash = "sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310", size = 20961 } + [[package]] name = "pyproject-hooks" version = "1.2.0" @@ -1640,7 +2150,8 @@ version = "1.1.385" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodeenv" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/29/ca/3238db97766ecfd6b2758fb50727a0b433e7b1bb6be0de090ed08b291fff/pyright-1.1.385.tar.gz", hash = "sha256:1bf042b8f080441534aa02101dea30f8fc2efa8f7b6f1ab05197c21317f5bfa7", size = 21971 } wheels = [ @@ -1880,13 +2391,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/d9/e9/cf9ef5245d835065e6673781dbd4b8911d352fb770d56cf0879cf11b7ee1/rich-13.9.3.tar.gz", hash = "sha256:bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", size = 222889 } wheels = [ { url = "https://files.pythonhosted.org/packages/9a/e2/10e9819cf4a20bd8ea2f5dabafc2e6bf4a78d6a0965daeb60a4b34d1c11f/rich-13.9.3-py3-none-any.whl", hash = "sha256:9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", size = 242157 }, ] +[[package]] +name = "ruamel-yaml" +version = "0.18.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.13' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/29/81/4dfc17eb6ebb1aac314a3eb863c1325b907863a1b8b1382cdffcb6ac0ed9/ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b", size = 143362 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/67/8ece580cc363331d9a53055130f86b096bf16e38156e33b1d3014fffda6b/ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636", size = 117761 }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301 }, + { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728 }, + { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230 }, + { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712 }, + { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936 }, + { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580 }, + { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393 }, + { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326 }, + { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079 }, + { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224 }, + { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480 }, + { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068 }, + { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012 }, + { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352 }, + { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344 }, + { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498 }, + { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205 }, + { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185 }, + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, +] + [[package]] name = "ruff" version = "0.6.9" @@ -1925,6 +2492,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", size = 15221 }, ] +[[package]] +name = "service-identity" +version = "24.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cryptography" }, + { name = "pyasn1" }, + { name = "pyasn1-modules" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/07/a5/dfc752b979067947261dbbf2543470c58efe735c3c1301dd870ef27830ee/service_identity-24.2.0.tar.gz", hash = "sha256:b8683ba13f0d39c6cd5d625d2c5f65421d6d707b013b375c355751557cbe8e09", size = 39245 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/2c/ca6dd598b384bc1ce581e24aaae0f2bed4ccac57749d5c3befbb5e742081/service_identity-24.2.0-py3-none-any.whl", hash = "sha256:6b047fbd8a84fd0bb0d55ebce4031e400562b9196e1e0d3e0fe2b8a59f6d4a85", size = 11364 }, +] + [[package]] name = "setuptools" version = "75.3.0" @@ -1943,13 +2525,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, ] +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, +] + [[package]] name = "sqlalchemy" version = "2.0.36" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "(python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64')" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/65/9cbc9c4c3287bed2499e05033e207473504dc4df999ce49385fb1f8b058a/sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5", size = 9574485 } wheels = [ @@ -2012,7 +2604,8 @@ version = "4.8.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docker" }, - { name = "typing-extensions" }, + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "urllib3" }, { name = "wrapt" }, ] @@ -2132,6 +2725,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cf/db/ce8eda256fa131af12e0a76d481711abe4681b6923c27efb9a255c9e4594/tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", size = 13237 }, ] +[[package]] +name = "tornado" +version = "6.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, +] + [[package]] name = "tqdm" version = "4.66.6" @@ -2164,10 +2775,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl", hash = "sha256:215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", size = 38650 }, ] +[[package]] +name = "typing-extensions" +version = "4.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/f3/b827b3ab53b4e3d8513914586dcca61c355fa2ce8252dea4da56e67bf8f2/typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", size = 78744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/f3/936e209267d6ef7510322191003885de524fc48d1b43269810cd589ceaf5/typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a", size = 34698 }, +] + [[package]] name = "typing-extensions" version = "4.12.2" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.11.*'", + "python_full_version >= '3.12' and python_full_version < '3.12.4'", + "python_full_version >= '3.12.4' and python_full_version < '3.13'", + "python_full_version >= '3.13' and python_full_version < '4'", + "python_full_version >= '4'", +] sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } wheels = [ { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, @@ -2245,6 +2875,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225 }, ] +[[package]] +name = "urwid" +version = "2.6.16" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", version = "4.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", version = "4.12.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/21/ad23c9e961b2d36d57c63686a6f86768dd945d406323fb58c84f09478530/urwid-2.6.16.tar.gz", hash = "sha256:93ad239939e44c385e64aa00027878b9e5c486d59e855ec8ab5b1e1adcdb32a2", size = 848179 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/cb/271a4f5a1bf4208dbdc96d85b9eae744cf4e5e11ac73eda76dc98c8fd2d7/urwid-2.6.16-py3-none-any.whl", hash = "sha256:de14896c6df9eb759ed1fd93e0384a5279e51e0dde8f621e4083f7a8368c0797", size = 297196 }, +] + [[package]] name = "vcrpy" version = "6.0.1" @@ -2279,6 +2923,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/aa/1d/12e46b85e80ac730c1c8da46a0aeec2cf3ee3bcad4f4c2ee65e2b89d9720/voyageai-0.3.1-py3-none-any.whl", hash = "sha256:2d0751ef8b944711efc9ee809760d13807b431cd28917cb19c5455963f3fd998", size = 25149 }, ] +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "werkzeug" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 }, +] + [[package]] name = "wrapt" version = "1.16.0" @@ -2318,6 +2983,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ff/21/abdedb4cdf6ff41ebf01a74087740a709e2edb146490e4d9beea054b0b7a/wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1", size = 23362 }, ] +[[package]] +name = "wsproto" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/4a/44d3c295350d776427904d73c189e10aeae66d7f555bb2feee16d1e4ba5a/wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065", size = 53425 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226 }, +] + [[package]] name = "xmltodict" version = "0.14.2" @@ -2413,3 +3090,78 @@ sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123 wheels = [ { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200 }, ] + +[[package]] +name = "zstandard" +version = "0.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/55/bd0487e86679db1823fc9ee0d8c9c78ae2413d34c0b461193b5f4c31d22f/zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9", size = 788701 }, + { url = "https://files.pythonhosted.org/packages/e1/8a/ccb516b684f3ad987dfee27570d635822e3038645b1a950c5e8022df1145/zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880", size = 633678 }, + { url = "https://files.pythonhosted.org/packages/12/89/75e633d0611c028e0d9af6df199423bf43f54bea5007e6718ab7132e234c/zstandard-0.23.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77da4c6bfa20dd5ea25cbf12c76f181a8e8cd7ea231c673828d0386b1740b8dc", size = 4941098 }, + { url = "https://files.pythonhosted.org/packages/4a/7a/bd7f6a21802de358b63f1ee636ab823711c25ce043a3e9f043b4fcb5ba32/zstandard-0.23.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2170c7e0367dde86a2647ed5b6f57394ea7f53545746104c6b09fc1f4223573", size = 5308798 }, + { url = "https://files.pythonhosted.org/packages/79/3b/775f851a4a65013e88ca559c8ae42ac1352db6fcd96b028d0df4d7d1d7b4/zstandard-0.23.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c16842b846a8d2a145223f520b7e18b57c8f476924bda92aeee3a88d11cfc391", size = 5341840 }, + { url = "https://files.pythonhosted.org/packages/09/4f/0cc49570141dd72d4d95dd6fcf09328d1b702c47a6ec12fbed3b8aed18a5/zstandard-0.23.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:157e89ceb4054029a289fb504c98c6a9fe8010f1680de0201b3eb5dc20aa6d9e", size = 5440337 }, + { url = "https://files.pythonhosted.org/packages/e7/7c/aaa7cd27148bae2dc095191529c0570d16058c54c4597a7d118de4b21676/zstandard-0.23.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:203d236f4c94cd8379d1ea61db2fce20730b4c38d7f1c34506a31b34edc87bdd", size = 4861182 }, + { url = "https://files.pythonhosted.org/packages/ac/eb/4b58b5c071d177f7dc027129d20bd2a44161faca6592a67f8fcb0b88b3ae/zstandard-0.23.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc5d1a49d3f8262be192589a4b72f0d03b72dcf46c51ad5852a4fdc67be7b9e4", size = 4932936 }, + { url = "https://files.pythonhosted.org/packages/44/f9/21a5fb9bb7c9a274b05ad700a82ad22ce82f7ef0f485980a1e98ed6e8c5f/zstandard-0.23.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:752bf8a74412b9892f4e5b58f2f890a039f57037f52c89a740757ebd807f33ea", size = 5464705 }, + { url = "https://files.pythonhosted.org/packages/49/74/b7b3e61db3f88632776b78b1db597af3f44c91ce17d533e14a25ce6a2816/zstandard-0.23.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80080816b4f52a9d886e67f1f96912891074903238fe54f2de8b786f86baded2", size = 4857882 }, + { url = "https://files.pythonhosted.org/packages/4a/7f/d8eb1cb123d8e4c541d4465167080bec88481ab54cd0b31eb4013ba04b95/zstandard-0.23.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84433dddea68571a6d6bd4fbf8ff398236031149116a7fff6f777ff95cad3df9", size = 4697672 }, + { url = "https://files.pythonhosted.org/packages/5e/05/f7dccdf3d121309b60342da454d3e706453a31073e2c4dac8e1581861e44/zstandard-0.23.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19a2d91963ed9e42b4e8d77cd847ae8381576585bad79dbd0a8837a9f6620a", size = 5206043 }, + { url = "https://files.pythonhosted.org/packages/86/9d/3677a02e172dccd8dd3a941307621c0cbd7691d77cb435ac3c75ab6a3105/zstandard-0.23.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:59556bf80a7094d0cfb9f5e50bb2db27fefb75d5138bb16fb052b61b0e0eeeb0", size = 5667390 }, + { url = "https://files.pythonhosted.org/packages/41/7e/0012a02458e74a7ba122cd9cafe491facc602c9a17f590367da369929498/zstandard-0.23.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:27d3ef2252d2e62476389ca8f9b0cf2bbafb082a3b6bfe9d90cbcbb5529ecf7c", size = 5198901 }, + { url = "https://files.pythonhosted.org/packages/65/3a/8f715b97bd7bcfc7342d8adcd99a026cb2fb550e44866a3b6c348e1b0f02/zstandard-0.23.0-cp310-cp310-win32.whl", hash = "sha256:5d41d5e025f1e0bccae4928981e71b2334c60f580bdc8345f824e7c0a4c2a813", size = 430596 }, + { url = "https://files.pythonhosted.org/packages/19/b7/b2b9eca5e5a01111e4fe8a8ffb56bdcdf56b12448a24effe6cfe4a252034/zstandard-0.23.0-cp310-cp310-win_amd64.whl", hash = "sha256:519fbf169dfac1222a76ba8861ef4ac7f0530c35dd79ba5727014613f91613d4", size = 495498 }, + { url = "https://files.pythonhosted.org/packages/9e/40/f67e7d2c25a0e2dc1744dd781110b0b60306657f8696cafb7ad7579469bd/zstandard-0.23.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34895a41273ad33347b2fc70e1bff4240556de3c46c6ea430a7ed91f9042aa4e", size = 788699 }, + { url = "https://files.pythonhosted.org/packages/e8/46/66d5b55f4d737dd6ab75851b224abf0afe5774976fe511a54d2eb9063a41/zstandard-0.23.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77ea385f7dd5b5676d7fd943292ffa18fbf5c72ba98f7d09fc1fb9e819b34c23", size = 633681 }, + { url = "https://files.pythonhosted.org/packages/63/b6/677e65c095d8e12b66b8f862b069bcf1f1d781b9c9c6f12eb55000d57583/zstandard-0.23.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:983b6efd649723474f29ed42e1467f90a35a74793437d0bc64a5bf482bedfa0a", size = 4944328 }, + { url = "https://files.pythonhosted.org/packages/59/cc/e76acb4c42afa05a9d20827116d1f9287e9c32b7ad58cc3af0721ce2b481/zstandard-0.23.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80a539906390591dd39ebb8d773771dc4db82ace6372c4d41e2d293f8e32b8db", size = 5311955 }, + { url = "https://files.pythonhosted.org/packages/78/e4/644b8075f18fc7f632130c32e8f36f6dc1b93065bf2dd87f03223b187f26/zstandard-0.23.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:445e4cb5048b04e90ce96a79b4b63140e3f4ab5f662321975679b5f6360b90e2", size = 5344944 }, + { url = "https://files.pythonhosted.org/packages/76/3f/dbafccf19cfeca25bbabf6f2dd81796b7218f768ec400f043edc767015a6/zstandard-0.23.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd30d9c67d13d891f2360b2a120186729c111238ac63b43dbd37a5a40670b8ca", size = 5442927 }, + { url = "https://files.pythonhosted.org/packages/0c/c3/d24a01a19b6733b9f218e94d1a87c477d523237e07f94899e1c10f6fd06c/zstandard-0.23.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d20fd853fbb5807c8e84c136c278827b6167ded66c72ec6f9a14b863d809211c", size = 4864910 }, + { url = "https://files.pythonhosted.org/packages/1c/a9/cf8f78ead4597264f7618d0875be01f9bc23c9d1d11afb6d225b867cb423/zstandard-0.23.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ed1708dbf4d2e3a1c5c69110ba2b4eb6678262028afd6c6fbcc5a8dac9cda68e", size = 4935544 }, + { url = "https://files.pythonhosted.org/packages/2c/96/8af1e3731b67965fb995a940c04a2c20997a7b3b14826b9d1301cf160879/zstandard-0.23.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:be9b5b8659dff1f913039c2feee1aca499cfbc19e98fa12bc85e037c17ec6ca5", size = 5467094 }, + { url = "https://files.pythonhosted.org/packages/ff/57/43ea9df642c636cb79f88a13ab07d92d88d3bfe3e550b55a25a07a26d878/zstandard-0.23.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:65308f4b4890aa12d9b6ad9f2844b7ee42c7f7a4fd3390425b242ffc57498f48", size = 4860440 }, + { url = "https://files.pythonhosted.org/packages/46/37/edb78f33c7f44f806525f27baa300341918fd4c4af9472fbc2c3094be2e8/zstandard-0.23.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:98da17ce9cbf3bfe4617e836d561e433f871129e3a7ac16d6ef4c680f13a839c", size = 4700091 }, + { url = "https://files.pythonhosted.org/packages/c1/f1/454ac3962671a754f3cb49242472df5c2cced4eb959ae203a377b45b1a3c/zstandard-0.23.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8ed7d27cb56b3e058d3cf684d7200703bcae623e1dcc06ed1e18ecda39fee003", size = 5208682 }, + { url = "https://files.pythonhosted.org/packages/85/b2/1734b0fff1634390b1b887202d557d2dd542de84a4c155c258cf75da4773/zstandard-0.23.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b69bb4f51daf461b15e7b3db033160937d3ff88303a7bc808c67bbc1eaf98c78", size = 5669707 }, + { url = "https://files.pythonhosted.org/packages/52/5a/87d6971f0997c4b9b09c495bf92189fb63de86a83cadc4977dc19735f652/zstandard-0.23.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:034b88913ecc1b097f528e42b539453fa82c3557e414b3de9d5632c80439a473", size = 5201792 }, + { url = "https://files.pythonhosted.org/packages/79/02/6f6a42cc84459d399bd1a4e1adfc78d4dfe45e56d05b072008d10040e13b/zstandard-0.23.0-cp311-cp311-win32.whl", hash = "sha256:f2d4380bf5f62daabd7b751ea2339c1a21d1c9463f1feb7fc2bdcea2c29c3160", size = 430586 }, + { url = "https://files.pythonhosted.org/packages/be/a2/4272175d47c623ff78196f3c10e9dc7045c1b9caf3735bf041e65271eca4/zstandard-0.23.0-cp311-cp311-win_amd64.whl", hash = "sha256:62136da96a973bd2557f06ddd4e8e807f9e13cbb0bfb9cc06cfe6d98ea90dfe0", size = 495420 }, + { url = "https://files.pythonhosted.org/packages/7b/83/f23338c963bd9de687d47bf32efe9fd30164e722ba27fb59df33e6b1719b/zstandard-0.23.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b4567955a6bc1b20e9c31612e615af6b53733491aeaa19a6b3b37f3b65477094", size = 788713 }, + { url = "https://files.pythonhosted.org/packages/5b/b3/1a028f6750fd9227ee0b937a278a434ab7f7fdc3066c3173f64366fe2466/zstandard-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e172f57cd78c20f13a3415cc8dfe24bf388614324d25539146594c16d78fcc8", size = 633459 }, + { url = "https://files.pythonhosted.org/packages/26/af/36d89aae0c1f95a0a98e50711bc5d92c144939efc1f81a2fcd3e78d7f4c1/zstandard-0.23.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0e166f698c5a3e914947388c162be2583e0c638a4703fc6a543e23a88dea3c1", size = 4945707 }, + { url = "https://files.pythonhosted.org/packages/cd/2e/2051f5c772f4dfc0aae3741d5fc72c3dcfe3aaeb461cc231668a4db1ce14/zstandard-0.23.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12a289832e520c6bd4dcaad68e944b86da3bad0d339ef7989fb7e88f92e96072", size = 5306545 }, + { url = "https://files.pythonhosted.org/packages/0a/9e/a11c97b087f89cab030fa71206963090d2fecd8eb83e67bb8f3ffb84c024/zstandard-0.23.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d50d31bfedd53a928fed6707b15a8dbeef011bb6366297cc435accc888b27c20", size = 5337533 }, + { url = "https://files.pythonhosted.org/packages/fc/79/edeb217c57fe1bf16d890aa91a1c2c96b28c07b46afed54a5dcf310c3f6f/zstandard-0.23.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72c68dda124a1a138340fb62fa21b9bf4848437d9ca60bd35db36f2d3345f373", size = 5436510 }, + { url = "https://files.pythonhosted.org/packages/81/4f/c21383d97cb7a422ddf1ae824b53ce4b51063d0eeb2afa757eb40804a8ef/zstandard-0.23.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53dd9d5e3d29f95acd5de6802e909ada8d8d8cfa37a3ac64836f3bc4bc5512db", size = 4859973 }, + { url = "https://files.pythonhosted.org/packages/ab/15/08d22e87753304405ccac8be2493a495f529edd81d39a0870621462276ef/zstandard-0.23.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6a41c120c3dbc0d81a8e8adc73312d668cd34acd7725f036992b1b72d22c1772", size = 4936968 }, + { url = "https://files.pythonhosted.org/packages/eb/fa/f3670a597949fe7dcf38119a39f7da49a8a84a6f0b1a2e46b2f71a0ab83f/zstandard-0.23.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:40b33d93c6eddf02d2c19f5773196068d875c41ca25730e8288e9b672897c105", size = 5467179 }, + { url = "https://files.pythonhosted.org/packages/4e/a9/dad2ab22020211e380adc477a1dbf9f109b1f8d94c614944843e20dc2a99/zstandard-0.23.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9206649ec587e6b02bd124fb7799b86cddec350f6f6c14bc82a2b70183e708ba", size = 4848577 }, + { url = "https://files.pythonhosted.org/packages/08/03/dd28b4484b0770f1e23478413e01bee476ae8227bbc81561f9c329e12564/zstandard-0.23.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76e79bc28a65f467e0409098fa2c4376931fd3207fbeb6b956c7c476d53746dd", size = 4693899 }, + { url = "https://files.pythonhosted.org/packages/2b/64/3da7497eb635d025841e958bcd66a86117ae320c3b14b0ae86e9e8627518/zstandard-0.23.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:66b689c107857eceabf2cf3d3fc699c3c0fe8ccd18df2219d978c0283e4c508a", size = 5199964 }, + { url = "https://files.pythonhosted.org/packages/43/a4/d82decbab158a0e8a6ebb7fc98bc4d903266bce85b6e9aaedea1d288338c/zstandard-0.23.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9c236e635582742fee16603042553d276cca506e824fa2e6489db04039521e90", size = 5655398 }, + { url = "https://files.pythonhosted.org/packages/f2/61/ac78a1263bc83a5cf29e7458b77a568eda5a8f81980691bbc6eb6a0d45cc/zstandard-0.23.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8fffdbd9d1408006baaf02f1068d7dd1f016c6bcb7538682622c556e7b68e35", size = 5191313 }, + { url = "https://files.pythonhosted.org/packages/e7/54/967c478314e16af5baf849b6ee9d6ea724ae5b100eb506011f045d3d4e16/zstandard-0.23.0-cp312-cp312-win32.whl", hash = "sha256:dc1d33abb8a0d754ea4763bad944fd965d3d95b5baef6b121c0c9013eaf1907d", size = 430877 }, + { url = "https://files.pythonhosted.org/packages/75/37/872d74bd7739639c4553bf94c84af7d54d8211b626b352bc57f0fd8d1e3f/zstandard-0.23.0-cp312-cp312-win_amd64.whl", hash = "sha256:64585e1dba664dc67c7cdabd56c1e5685233fbb1fc1966cfba2a340ec0dfff7b", size = 495595 }, + { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975 }, + { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448 }, + { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269 }, + { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228 }, + { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891 }, + { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310 }, + { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912 }, + { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946 }, + { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994 }, + { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681 }, + { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239 }, + { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149 }, + { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392 }, + { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299 }, + { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862 }, + { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578 }, +]