From 7d7fe65092a409659d4e5f724d5eea3f8f6e70a3 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Mon, 17 Mar 2025 18:39:34 +0800 Subject: [PATCH] Optimize dependencies to reduce package size --- backend/common/schema.py | 7 +- backend/utils/request_parse.py | 6 +- pyproject.toml | 6 +- requirements.txt | 10 +- uv.lock | 175 ++++++--------------------------- 5 files changed, 41 insertions(+), 163 deletions(-) diff --git a/backend/common/schema.py b/backend/common/schema.py index edc84d521..09f9b61d5 100644 --- a/backend/common/schema.py +++ b/backend/common/schema.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- from datetime import datetime +from typing import Annotated -from pydantic import BaseModel, ConfigDict, EmailStr, validate_email -from pydantic_extra_types.phone_numbers import PhoneNumber +from pydantic import BaseModel, ConfigDict, EmailStr, Field, validate_email from backend.core.conf import settings @@ -142,8 +142,7 @@ } -class CustomPhoneNumber(PhoneNumber): - default_region_code = 'CN' +CustomPhoneNumber = Annotated[str, Field(pattern=r'^1[3-9]\d{9}$')] class CustomEmailStr(EmailStr): diff --git a/backend/utils/request_parse.py b/backend/utils/request_parse.py index 665e42dc8..2ec142c1b 100644 --- a/backend/utils/request_parse.py +++ b/backend/utils/request_parse.py @@ -4,8 +4,8 @@ from asgiref.sync import sync_to_async from fastapi import Request +from ip2loc import XdbSearcher from user_agents import parse -from XdbSearchIP.xdbSearcher import XdbSearcher from backend.common.dataclasses import IpInfo, UserAgentInfo from backend.common.log import log @@ -80,7 +80,7 @@ async def parse_ip_info(request: Request) -> IpInfo: ip = get_request_ip(request) location = await redis_client.get(f'{settings.IP_LOCATION_REDIS_PREFIX}:{ip}') if location: - country, region, city = location.split(' ') + country, region, city = location.split('|') return IpInfo(ip=ip, country=country, region=region, city=city) if settings.IP_LOCATION_PARSE == 'online': location_info = await get_location_online(ip, request.headers.get('User-Agent')) @@ -94,7 +94,7 @@ async def parse_ip_info(request: Request) -> IpInfo: city = location_info.get('city') await redis_client.set( f'{settings.IP_LOCATION_REDIS_PREFIX}:{ip}', - f'{country} {region} {city}', + f'{country}|{region}|{city}', ex=settings.IP_LOCATION_EXPIRE_SECONDS, ) return IpInfo(ip=ip, country=country, region=region, city=city) diff --git a/pyproject.toml b/pyproject.toml index f1fb729d9..7908e168d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,18 +29,19 @@ dependencies = [ "fastapi-limiter>=0.1.6", "fastapi-oauth20>=0.0.1a2", "fastapi-pagination>=0.12.34", - "fastapi[all]==0.111.0", + "fastapi[standard]==0.115.11", "flower>=2.0.0", "gevent>=24.11.1", + "ip2loc>=1.0.0", "itsdangerous>=2.2.0", "jinja2>=3.1.4", "loguru>=0.7.3", "msgspec>=0.19.0", "path==17.0.0", - "phonenumbers>=8.13.0", "psutil>=6.0.0", "pwdlib>=0.2.1", "pydantic>=2.10.6", + "pydantic-settings>=2.0.0", "python-jose>=3.3.0", "python-socketio>=5.12.0", "redis[hiredis]>=5.2.0", @@ -48,7 +49,6 @@ dependencies = [ "sqlalchemy-crud-plus==1.6.0", "sqlalchemy[asyncio]>=2.0.30", "user-agents==2.2.0", - "XdbSearchIP>=1.0.2", ] [dependency-groups] diff --git a/requirements.txt b/requirements.txt index fdee40f5d..034a4d8fc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -30,7 +30,7 @@ ecdsa==0.19.0 email-validator==2.2.0 exceptiongroup==1.2.2 ; python_full_version < '3.11' fast-captcha==0.3.2 -fastapi==0.111.0 +fastapi==0.115.11 fastapi-cli==0.0.5 fastapi-limiter==0.1.6 fastapi-oauth20==0.0.1a2 @@ -48,6 +48,7 @@ humanize==4.12.1 identify==2.6.9 idna==3.10 iniconfig==2.0.0 +ip2loc==1.0.0 itsdangerous==2.2.0 jinja2==3.1.6 kombu==5.4.2 @@ -58,10 +59,8 @@ markupsafe==3.0.2 mdurl==0.1.2 msgspec==0.19.0 nodeenv==1.9.1 -orjson==3.10.15 packaging==24.2 path==17.0.0 -phonenumbers==9.0.0 pillow==11.1.0 platformdirs==4.3.6 pluggy==1.5.0 @@ -74,7 +73,6 @@ pyasn1==0.4.8 pycparser==2.22 ; platform_python_implementation != 'PyPy' pydantic==2.10.6 pydantic-core==2.27.2 -pydantic-extra-types==2.10.2 pydantic-settings==2.8.1 pygments==2.19.1 pytest==8.3.5 @@ -99,7 +97,7 @@ six==1.17.0 sniffio==1.3.1 sqlalchemy==2.0.38 sqlalchemy-crud-plus==1.6.0 -starlette==0.37.2 +starlette==0.46.1 termcolor==2.5.0 tomli==2.2.1 ; python_full_version < '3.11' tornado==6.4.2 @@ -108,7 +106,6 @@ typing-extensions==4.12.2 tzdata==2025.1 ua-parser==1.0.1 ua-parser-builtins==0.18.0.post1 -ujson==5.10.0 user-agents==2.2.0 uvicorn==0.34.0 uvloop==0.21.0 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32' @@ -119,6 +116,5 @@ wcwidth==0.2.13 websockets==15.0.1 win32-setctime==1.2.0 ; sys_platform == 'win32' wsproto==1.2.0 -xdbsearchip==1.0.2 zope-event==5.0 zope-interface==7.2 diff --git a/uv.lock b/uv.lock index 3f07e38e5..015f99b9a 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 1 requires-python = ">=3.10, <3.13" [[package]] @@ -519,38 +520,25 @@ wheels = [ [[package]] name = "fastapi" -version = "0.111.0" +version = "0.115.11" source = { registry = "https://mirrors.aliyun.com/pypi/simple" } dependencies = [ - { name = "email-validator" }, - { name = "fastapi-cli" }, - { name = "httpx" }, - { name = "jinja2" }, - { name = "orjson" }, { name = "pydantic" }, - { name = "python-multipart" }, { name = "starlette" }, { name = "typing-extensions" }, - { name = "ujson" }, - { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/0e/1f/f4a99e92c583780787e04b05aa9d8a8db9ec76d091d81545948a006f5b44/fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/b5/28/c5d26e5860df807241909a961a37d45e10533acef95fc368066c7dd186cd/fastapi-0.115.11.tar.gz", hash = "sha256:cc81f03f688678b92600a65a5e618b93592c65005db37157147204d8924bf94f" } wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/e6/33/de41e554e5a187d583906e10d53bfae5fd6c07e98cbf4fe5262bd37e739a/fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0" }, + { url = "https://mirrors.aliyun.com/pypi/packages/b3/5d/4d8bbb94f0dbc22732350c06965e40740f4a92ca560e90bb566f4f73af41/fastapi-0.115.11-py3-none-any.whl", hash = "sha256:32e1541b7b74602e4ef4a0260ecaf3aadf9d4f19590bba3e1bf2ac4666aa2c64" }, ] [package.optional-dependencies] -all = [ +standard = [ { name = "email-validator" }, + { name = "fastapi-cli", extra = ["standard"] }, { name = "httpx" }, - { name = "itsdangerous" }, { name = "jinja2" }, - { name = "orjson" }, - { name = "pydantic-extra-types" }, - { name = "pydantic-settings" }, { name = "python-multipart" }, - { name = "pyyaml" }, - { name = "ujson" }, { name = "uvicorn", extra = ["standard"] }, ] @@ -570,22 +558,23 @@ dependencies = [ { name = "celery-aio-pool" }, { name = "cryptography" }, { name = "fast-captcha" }, - { name = "fastapi", extra = ["all"] }, + { name = "fastapi", extra = ["standard"] }, { name = "fastapi-cli" }, { name = "fastapi-limiter" }, { name = "fastapi-oauth20" }, { name = "fastapi-pagination" }, { name = "flower" }, { name = "gevent" }, + { name = "ip2loc" }, { name = "itsdangerous" }, { name = "jinja2" }, { name = "loguru" }, { name = "msgspec" }, { name = "path" }, - { name = "phonenumbers" }, { name = "psutil" }, { name = "pwdlib" }, { name = "pydantic" }, + { name = "pydantic-settings" }, { name = "python-jose" }, { name = "python-socketio" }, { name = "redis", extra = ["hiredis"] }, @@ -593,7 +582,6 @@ dependencies = [ { name = "sqlalchemy", extra = ["asyncio"] }, { name = "sqlalchemy-crud-plus" }, { name = "user-agents" }, - { name = "xdbsearchip" }, ] [package.dev-dependencies] @@ -624,22 +612,23 @@ requires-dist = [ { name = "celery-aio-pool", specifier = "==0.1.0rc8" }, { name = "cryptography", specifier = ">=44.0.0" }, { name = "fast-captcha", specifier = ">=0.3.2" }, - { name = "fastapi", extras = ["all"], specifier = "==0.111.0" }, + { name = "fastapi", extras = ["standard"], specifier = "==0.115.11" }, { name = "fastapi-cli", specifier = "==0.0.5" }, { name = "fastapi-limiter", specifier = ">=0.1.6" }, { name = "fastapi-oauth20", specifier = ">=0.0.1a2" }, { name = "fastapi-pagination", specifier = ">=0.12.34" }, { name = "flower", specifier = ">=2.0.0" }, { name = "gevent", specifier = ">=24.11.1" }, + { name = "ip2loc", specifier = ">=1.0.0" }, { name = "itsdangerous", specifier = ">=2.2.0" }, { name = "jinja2", specifier = ">=3.1.4" }, { name = "loguru", specifier = ">=0.7.3" }, { name = "msgspec", specifier = ">=0.19.0" }, { name = "path", specifier = "==17.0.0" }, - { name = "phonenumbers", specifier = ">=8.13.0" }, { name = "psutil", specifier = ">=6.0.0" }, { name = "pwdlib", specifier = ">=0.2.1" }, { name = "pydantic", specifier = ">=2.10.6" }, + { name = "pydantic-settings", specifier = ">=2.0.0" }, { name = "python-jose", specifier = ">=3.3.0" }, { name = "python-socketio", specifier = ">=5.12.0" }, { name = "redis", extras = ["hiredis"], specifier = ">=5.2.0" }, @@ -647,7 +636,6 @@ requires-dist = [ { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.30" }, { name = "sqlalchemy-crud-plus", specifier = "==1.6.0" }, { name = "user-agents", specifier = "==2.2.0" }, - { name = "xdbsearchip", specifier = ">=1.0.2" }, ] [package.metadata.requires-dev] @@ -678,6 +666,11 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/24/ea/4b5011012ac925fe2f83b19d0e09cee9d324141ec7bf5e78bb2817f96513/fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46" }, ] +[package.optional-dependencies] +standard = [ + { name = "uvicorn", extra = ["standard"] }, +] + [[package]] name = "fastapi-limiter" version = "0.1.6" @@ -989,6 +982,15 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" }, ] +[[package]] +name = "ip2loc" +version = "1.0.0" +source = { registry = "https://mirrors.aliyun.com/pypi/simple" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/80/74/b6f68d92571a11274c2a9d68c1c434f82a6c48a362e03386d356d8f6535b/ip2loc-1.0.0.tar.gz", hash = "sha256:6707400f1f8580386708e6072c82293ccbad496368b9bf2fea13cfc274ab1ea7" } +wheels = [ + { url = "https://mirrors.aliyun.com/pypi/packages/55/9f/dd1a683eb6c58fcd37cce62ef2c910948fd14bf5e6398f15c03c6f9308ad/ip2loc-1.0.0-py3-none-any.whl", hash = "sha256:8094e071acfb3ce65c588d61da50de0eb26b21d3dc068cee85ff01823c3bc947" }, +] + [[package]] name = "itsdangerous" version = "2.2.0" @@ -1203,53 +1205,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9" }, ] -[[package]] -name = "orjson" -version = "3.10.15" -source = { registry = "https://mirrors.aliyun.com/pypi/simple" } -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/ae/f9/5dea21763eeff8c1590076918a446ea3d6140743e0e36f58f369928ed0f4/orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e" } -wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/52/09/e5ff18ad009e6f97eb7edc5f67ef98b3ce0c189da9c3eaca1f9587cd4c61/orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04" }, - { url = "https://mirrors.aliyun.com/pypi/packages/bd/b8/a75883301fe332bd433d9b0ded7d2bb706ccac679602c3516984f8814fb5/orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8" }, - { url = "https://mirrors.aliyun.com/pypi/packages/83/4b/22f053e7a364cc9c685be203b1e40fc5f2b3f164a9b2284547504eec682e/orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8" }, - { url = "https://mirrors.aliyun.com/pypi/packages/63/64/1b54fc75ca328b57dd810541a4035fe48c12a161d466e3cf5b11a8c25649/orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814" }, - { url = "https://mirrors.aliyun.com/pypi/packages/5e/ff/ff0c5da781807bb0a5acd789d9a7fbcb57f7b0c6e1916595da1f5ce69f3c/orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164" }, - { url = "https://mirrors.aliyun.com/pypi/packages/4e/9a/11e2974383384ace8495810d4a2ebef5f55aacfc97b333b65e789c9d362d/orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf" }, - { url = "https://mirrors.aliyun.com/pypi/packages/2d/c4/dd9583aea6aefee1b64d3aed13f51d2aadb014028bc929fe52936ec5091f/orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061" }, - { url = "https://mirrors.aliyun.com/pypi/packages/53/3e/dcf1729230654f5c5594fc752de1f43dcf67e055ac0d300c8cdb1309269a/orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3" }, - { url = "https://mirrors.aliyun.com/pypi/packages/e8/2b/b9759fe704789937705c8a56a03f6c03e50dff7df87d65cba9a20fec5282/orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d" }, - { url = "https://mirrors.aliyun.com/pypi/packages/a7/6b/b9dfdbd4b6e20a59238319eb203ae07c3f6abf07eef909169b7a37ae3bba/orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7c/b5/40f5bbea619c7caf75eb4d652a9821875a8ed04acc45fe3d3ef054ca69fb/orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/38/60/2272514061cbdf4d672edbca6e59c7e01cd1c706e881427d88f3c3e79761/orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab" }, - { url = "https://mirrors.aliyun.com/pypi/packages/11/5d/be1490ff7eafe7fef890eb4527cf5bcd8cfd6117f3efe42a3249ec847b60/orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7a/a2/21b25ce4a2c71dbb90948ee81bd7a42b4fbfc63162e57faf83157d5540ae/orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b2/85/2076fc12d8225698a51278009726750c9c65c846eda741e77e1761cfef33/orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef" }, - { url = "https://mirrors.aliyun.com/pypi/packages/06/df/a85a7955f11274191eccf559e8481b2be74a7c6d43075d0a9506aa80284d/orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334" }, - { url = "https://mirrors.aliyun.com/pypi/packages/37/b3/94c55625a29b8767c0eed194cb000b3787e3c23b4cdd13be17bae6ccbb4b/orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d" }, - { url = "https://mirrors.aliyun.com/pypi/packages/53/ba/c608b1e719971e8ddac2379f290404c2e914cf8e976369bae3cad88768b1/orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b2/c4/c1fb835bb23ad788a39aa9ebb8821d51b1c03588d9a9e4ca7de5b354fdd5/orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13" }, - { url = "https://mirrors.aliyun.com/pypi/packages/78/14/bb2b48b26ab3c570b284eb2157d98c1ef331a8397f6c8bd983b270467f5c/orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/4a/97/d5b353a5fe532e92c46467aa37e637f81af8468aa894cd77d2ec8a12f99e/orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b5/5d/a067bec55293cca48fea8b9928cfa84c623be0cce8141d47690e64a6ca12/orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399" }, - { url = "https://mirrors.aliyun.com/pypi/packages/6f/9a/1485b8b05c6b4c4db172c438cf5db5dcfd10e72a9bc23c151a1137e763e0/orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f8/d2/fc67523656e43a0c7eaeae9007c8b02e86076b15d591e9be11554d3d3138/orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c" }, - { url = "https://mirrors.aliyun.com/pypi/packages/79/42/f58c7bd4e5b54da2ce2ef0331a39ccbbaa7699b7f70206fbf06737c9ed7d/orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/00/f8/bb60a4644287a544ec81df1699d5b965776bc9848d9029d9f9b3402ac8bb/orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/66/85/22fe737188905a71afcc4bf7cc4c79cd7f5bbe9ed1fe0aac4ce4c33edc30/orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a" }, - { url = "https://mirrors.aliyun.com/pypi/packages/48/b7/2622b29f3afebe938a0a9037e184660379797d5fd5234e5998345d7a5b43/orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ce/8f/0b72a48f4403d0b88b2a41450c535b3e8989e8a2d7800659a967efc7c115/orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0" }, - { url = "https://mirrors.aliyun.com/pypi/packages/06/ec/acb1a20cd49edb2000be5a0404cd43e3c8aad219f376ac8c60b870518c03/orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4" }, - { url = "https://mirrors.aliyun.com/pypi/packages/33/e1/f7840a2ea852114b23a52a1c0b2bea0a1ea22236efbcdb876402d799c423/orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767" }, - { url = "https://mirrors.aliyun.com/pypi/packages/fa/da/31543337febd043b8fa80a3b67de627669b88c7b128d9ad4cc2ece005b7a/orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ed/78/66115dc9afbc22496530d2139f2f4455698be444c7c2475cb48f657cefc9/orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514" }, - { url = "https://mirrors.aliyun.com/pypi/packages/22/84/cd4f5fb5427ffcf823140957a47503076184cb1ce15bcc1165125c26c46c/orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17" }, - { url = "https://mirrors.aliyun.com/pypi/packages/93/1f/67596b711ba9f56dd75d73b60089c5c92057f1130bb3a25a0f53fb9a583b/orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/7c/0c/6a3b3271b46443d90efb713c3e4fe83fa8cd71cda0d11a0f69a03f437c6e/orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7" }, - { url = "https://mirrors.aliyun.com/pypi/packages/3b/9b/33c58e0bfc788995eccd0d525ecd6b84b40d7ed182dd0751cd4c1322ac62/orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a" }, - { url = "https://mirrors.aliyun.com/pypi/packages/01/c1/d577ecd2e9fa393366a1ea0a9267f6510d86e6c4bb1cdfb9877104cac44c/orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665" }, - { url = "https://mirrors.aliyun.com/pypi/packages/ed/eb/a85317ee1732d1034b92d56f89f1de4d7bf7904f5c8fb9dcdd5b1c83917f/orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa" }, -] - [[package]] name = "packaging" version = "24.2" @@ -1277,15 +1232,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/55/49/5ffc63f96029e4f899d6caee9db40c445ded1bf15cb60b32d77363c2c8de/path-17.0.0-py3-none-any.whl", hash = "sha256:b7309739c569e30110a34c6c812e582c09ff504c43e1232817410181838918ed" }, ] -[[package]] -name = "phonenumbers" -version = "9.0.0" -source = { registry = "https://mirrors.aliyun.com/pypi/simple" } -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/88/96/58ab3aa4f8695c85f5dce60c15bb3b113856f420d4f0575f6b6e92c1acb5/phonenumbers-9.0.0.tar.gz", hash = "sha256:094a6f728e3c2b1906df4494a480743a3c797320f721f2b53f1400fd4d8ed5f5" } -wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/62/82/943ce12a9db8932be3a1baff7cbc93524262942f2c41678242f410c8f420/phonenumbers-9.0.0-py2.py3-none-any.whl", hash = "sha256:f566eddf6219d9af9b4aad454ba411a1df565d13b875a490fd33d1d202c1148d" }, -] - [[package]] name = "pillow" version = "11.1.0" @@ -1563,19 +1509,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151" }, ] -[[package]] -name = "pydantic-extra-types" -version = "2.10.2" -source = { registry = "https://mirrors.aliyun.com/pypi/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/23/ed/69f3f3de12c02ebd58b2f66ffb73d0f5a1b10b322227897499753cebe818/pydantic_extra_types-2.10.2.tar.gz", hash = "sha256:934d59ab7a02ff788759c3a97bc896f5cfdc91e62e4f88ea4669067a73f14b98" } -wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/08/da/86bc9addde8a24348ac15f8f7dcb853f78e9573c7667800dd9bc60558678/pydantic_extra_types-2.10.2-py3-none-any.whl", hash = "sha256:9eccd55a2b7935cea25f0a67f6ff763d55d80c41d86b887d88915412ccf5b7fa" }, -] - [[package]] name = "pydantic-settings" version = "2.8.1" @@ -1961,14 +1894,14 @@ wheels = [ [[package]] name = "starlette" -version = "0.37.2" +version = "0.46.1" source = { registry = "https://mirrors.aliyun.com/pypi/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/61/b5/6bceb93ff20bd7ca36e6f7c540581abb18f53130fabb30ba526e26fd819b/starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823" } +sdist = { url = "https://mirrors.aliyun.com/pypi/packages/04/1b/52b27f2e13ceedc79a908e29eac426a63465a1a01248e5f24aa36a62aeb3/starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230" } wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/fd/18/31fa32ed6c68ba66220204ef0be798c349d0a20c1901f9d4a794e08c76d8/starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee" }, + { url = "https://mirrors.aliyun.com/pypi/packages/a0/4b/528ccf7a982216885a1ff4908e886b8fb5f19862d1962f56a3fce2435a70/starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227" }, ] [[package]] @@ -2080,50 +2013,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/6f/d3/13adff37f15489c784cc7669c35a6c3bf94b87540229eedf52ef2a1d0175/ua_parser_builtins-0.18.0.post1-py3-none-any.whl", hash = "sha256:eb4f93504040c3a990a6b0742a2afd540d87d7f9f05fd66e94c101db1564674d" }, ] -[[package]] -name = "ujson" -version = "5.10.0" -source = { registry = "https://mirrors.aliyun.com/pypi/simple" } -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1" } -wheels = [ - { url = "https://mirrors.aliyun.com/pypi/packages/7d/91/91678e49a9194f527e60115db84368c237ac7824992224fac47dcb23a5c6/ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd" }, - { url = "https://mirrors.aliyun.com/pypi/packages/de/2f/1ed8c9b782fa4f44c26c1c4ec686d728a4865479da5712955daeef0b2e7b/ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf" }, - { url = "https://mirrors.aliyun.com/pypi/packages/51/bf/a3a38b2912288143e8e613c6c4c3f798b5e4e98c542deabf94c60237235f/ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6" }, - { url = "https://mirrors.aliyun.com/pypi/packages/b4/6d/0df8f7a6f1944ba619d93025ce468c9252aa10799d7140e07014dfc1a16c/ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569" }, - { url = "https://mirrors.aliyun.com/pypi/packages/d5/ec/370741e5e30d5f7dc7f31a478d5bec7537ce6bfb7f85e72acefbe09aa2b2/ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770" }, - { url = "https://mirrors.aliyun.com/pypi/packages/fe/29/72b33a88f7fae3c398f9ba3e74dc2e5875989b25f1c1f75489c048a2cf4e/ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1" }, - { url = "https://mirrors.aliyun.com/pypi/packages/70/5c/808fbf21470e7045d56a282cf5e85a0450eacdb347d871d4eb404270ee17/ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8f/6a/e1e8281408e6270d6ecf2375af14d9e2f41c402ab6b161ecfa87a9727777/ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51" }, - { url = "https://mirrors.aliyun.com/pypi/packages/cb/ca/e319acbe4863919ec62498bc1325309f5c14a3280318dca10fe1db3cb393/ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518" }, - { url = "https://mirrors.aliyun.com/pypi/packages/78/ec/dc96ca379de33f73b758d72e821ee4f129ccc32221f4eb3f089ff78d8370/ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00" }, - { url = "https://mirrors.aliyun.com/pypi/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126" }, - { url = "https://mirrors.aliyun.com/pypi/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8" }, - { url = "https://mirrors.aliyun.com/pypi/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b" }, - { url = "https://mirrors.aliyun.com/pypi/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9" }, - { url = "https://mirrors.aliyun.com/pypi/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4" }, - { url = "https://mirrors.aliyun.com/pypi/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1" }, - { url = "https://mirrors.aliyun.com/pypi/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f" }, - { url = "https://mirrors.aliyun.com/pypi/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720" }, - { url = "https://mirrors.aliyun.com/pypi/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5" }, - { url = "https://mirrors.aliyun.com/pypi/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043" }, - { url = "https://mirrors.aliyun.com/pypi/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1" }, - { url = "https://mirrors.aliyun.com/pypi/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3" }, - { url = "https://mirrors.aliyun.com/pypi/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e" }, - { url = "https://mirrors.aliyun.com/pypi/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc" }, - { url = "https://mirrors.aliyun.com/pypi/packages/95/53/e5f5e733fc3525e65f36f533b0dbece5e5e2730b760e9beacf7e3d9d8b26/ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64" }, - { url = "https://mirrors.aliyun.com/pypi/packages/59/1f/f7bc02a54ea7b47f3dc2d125a106408f18b0f47b14fc737f0913483ae82b/ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3" }, - { url = "https://mirrors.aliyun.com/pypi/packages/1a/3a/d3921b6f29bc744d8d6c56db5f8bbcbe55115fd0f2b79c3c43ff292cc7c9/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a" }, - { url = "https://mirrors.aliyun.com/pypi/packages/f1/04/f4e3883204b786717038064afd537389ba7d31a72b437c1372297cb651ea/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746" }, - { url = "https://mirrors.aliyun.com/pypi/packages/17/cd/9c6547169eb01a22b04cbb638804ccaeb3c2ec2afc12303464e0f9b2ee5a/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88" }, - { url = "https://mirrors.aliyun.com/pypi/packages/70/bf/ecd14d3cf6127f8a990b01f0ad20e257f5619a555f47d707c57d39934894/ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b" }, -] - [[package]] name = "user-agents" version = "2.2.0" @@ -2353,12 +2242,6 @@ wheels = [ { url = "https://mirrors.aliyun.com/pypi/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736" }, ] -[[package]] -name = "xdbsearchip" -version = "1.0.2" -source = { registry = "https://mirrors.aliyun.com/pypi/simple" } -sdist = { url = "https://mirrors.aliyun.com/pypi/packages/fc/1e/b0347e278b30704047367dffc7b35e23d7e260f2ea9cb2e0a672466f734d/XdbSearchIP-1.0.2.tar.gz", hash = "sha256:fb0333d1746729f186474da4bfab1941ac0bc1ebc39bf7277da6b325e99e0765" } - [[package]] name = "yarl" version = "1.18.3"