Skip to content

Commit bd69747

Browse files
ntkatholeaniketpalu
authored andcommitted
feat: Replace ORJSONResponse with Pydantic response models for faster JSON serialization
Signed-off-by: ntkathole <nikhilkathole2683@gmail.com> Signed-off-by: Aniket Paluskar <apaluska@redhat.com>
1 parent a7d15c9 commit bd69747

20 files changed

+960
-1493
lines changed

infra/scripts/pixi/pixi.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[project]
1+
[workspace]
22
name = "pixi-feast"
33
channels = ["conda-forge"]
44
platforms = ["linux-64", "osx-arm64", "osx-64"]

pixi.lock

Lines changed: 2 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ dependencies = [
4343
"psutil",
4444
"bigtree>=0.19.2",
4545
"pyjwt",
46-
"orjson>=3.9.0",
4746
]
4847

4948
[project.optional-dependencies]

sdk/python/feast/feature_server.py

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
)
3939
from fastapi.concurrency import run_in_threadpool
4040
from fastapi.logger import logger
41-
from fastapi.responses import JSONResponse, ORJSONResponse
41+
from fastapi.responses import JSONResponse
4242
from fastapi.staticfiles import StaticFiles
4343
from google.protobuf.json_format import MessageToDict
44-
from pydantic import BaseModel
44+
from pydantic import BaseModel, field_validator
4545

4646
import feast
4747
from feast import metrics as feast_metrics
@@ -111,6 +111,32 @@ class GetOnlineDocumentsRequest(BaseModel):
111111
api_version: Optional[int] = 1
112112

113113

114+
class FeatureVectorResponse(BaseModel):
115+
values: List[Any] = []
116+
statuses: List[str] = []
117+
event_timestamps: List[str] = []
118+
119+
120+
class OnlineFeaturesMetadataResponse(BaseModel):
121+
feature_names: List[str] = []
122+
123+
@field_validator("feature_names", mode="before")
124+
@classmethod
125+
def _unwrap_feature_list(cls, v: Any) -> Any:
126+
"""Accept both the proto_json-patched flat list and the raw
127+
protobuf ``{"val": [...]}`` dict produced by ``MessageToDict``
128+
when the monkey-patch is absent or ineffective."""
129+
if isinstance(v, dict) and "val" in v:
130+
return v["val"]
131+
return v
132+
133+
134+
class OnlineFeaturesResponse(BaseModel):
135+
metadata: Optional[OnlineFeaturesMetadataResponse] = None
136+
results: List[FeatureVectorResponse] = []
137+
status: Optional[bool] = None
138+
139+
114140
class ChatMessage(BaseModel):
115141
role: str
116142
content: str
@@ -338,8 +364,9 @@ async def lifespan(app: FastAPI):
338364
@app.post(
339365
"/get-online-features",
340366
dependencies=[Depends(inject_user_details)],
367+
response_model=OnlineFeaturesResponse,
341368
)
342-
async def get_online_features(request: GetOnlineFeaturesRequest) -> ORJSONResponse:
369+
async def get_online_features(request: GetOnlineFeaturesRequest) -> Any:
343370
with feast_metrics.track_request_latency(
344371
"/get-online-features",
345372
) as metrics_ctx:
@@ -370,15 +397,16 @@ async def get_online_features(request: GetOnlineFeaturesRequest) -> ORJSONRespon
370397
preserving_proto_field_name=True,
371398
float_precision=18,
372399
)
373-
return ORJSONResponse(content=response_dict)
400+
return response_dict
374401

375402
@app.post(
376403
"/retrieve-online-documents",
377404
dependencies=[Depends(inject_user_details)],
405+
response_model=OnlineFeaturesResponse,
378406
)
379407
async def retrieve_online_documents(
380408
request: GetOnlineDocumentsRequest,
381-
) -> ORJSONResponse:
409+
) -> Any:
382410
with feast_metrics.track_request_latency("/retrieve-online-documents"):
383411
logger.warning(
384412
"This endpoint is in alpha and will be moved to /get-online-features when stable."
@@ -406,7 +434,7 @@ async def retrieve_online_documents(
406434
preserving_proto_field_name=True,
407435
float_precision=18,
408436
)
409-
return ORJSONResponse(content=response_dict)
437+
return response_dict
410438

411439
@app.post("/push", dependencies=[Depends(inject_user_details)])
412440
async def push(request: PushFeaturesRequest) -> Response:

sdk/python/requirements/py3.10-ci-requirements.txt

Lines changed: 196 additions & 171 deletions
Large diffs are not rendered by default.

sdk/python/requirements/py3.10-minimal-requirements.txt

Lines changed: 32 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,9 @@ atpublic==7.0.0 \
171171
--hash=sha256:466ef10d0c8bbd14fd02a5fbd5a8b6af6a846373d91106d3a07c16d72d96b63e \
172172
--hash=sha256:6702bd9e7245eb4e8220a3e222afcef7f87412154732271ee7deee4433b72b4b
173173
# via ibis-framework
174-
attrs==25.4.0 \
175-
--hash=sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11 \
176-
--hash=sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373
174+
attrs==26.1.0 \
175+
--hash=sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 \
176+
--hash=sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32
177177
# via
178178
# aiohttp
179179
# jsonschema
@@ -497,9 +497,9 @@ cryptography==46.0.5 \
497497
# pyjwt
498498
# pyopenssl
499499
# snowflake-connector-python
500-
dask[dataframe]==2026.1.2 \
501-
--hash=sha256:1136683de2750d98ea792670f7434e6c1cfce90cab2cc2f2495a9e60fd25a4fc \
502-
--hash=sha256:46a0cf3b8d87f78a3d2e6b145aea4418a6d6d606fe6a16c79bd8ca2bb862bc91
500+
dask[dataframe]==2026.3.0 \
501+
--hash=sha256:be614b9242b0b38288060fb2d7696125946469c98a1c30e174883fd199e0428d \
502+
--hash=sha256:f7d96c8274e8a900d217c1ff6ea8d1bbf0b4c2c21e74a409644498d925eb8f85
503503
# via feast (pyproject.toml)
504504
db-dtypes==1.5.0 \
505505
--hash=sha256:abdbb2e4eb965800ed6f98af0c5c1cafff9063ace09114be2d26a7f046be2c8a \
@@ -1087,9 +1087,9 @@ idna==3.11 \
10871087
# requests
10881088
# snowflake-connector-python
10891089
# yarl
1090-
importlib-metadata==8.7.1 \
1091-
--hash=sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb \
1092-
--hash=sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151
1090+
importlib-metadata==9.0.0 \
1091+
--hash=sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7 \
1092+
--hash=sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc
10931093
# via dask
10941094
jinja2==3.1.6 \
10951095
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
@@ -1694,82 +1694,6 @@ oauthlib==3.3.1 \
16941694
--hash=sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9 \
16951695
--hash=sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1
16961696
# via requests-oauthlib
1697-
orjson==3.11.7 \
1698-
--hash=sha256:043d3006b7d32c7e233b8cfb1f01c651013ea079e08dcef7189a29abd8befe11 \
1699-
--hash=sha256:0527a4510c300e3b406591b0ba69b5dc50031895b0a93743526a3fc45f59d26e \
1700-
--hash=sha256:0724e265bc548af1dedebd9cb3d24b4e1c1e685a343be43e87ba922a5c5fff2f \
1701-
--hash=sha256:136dcd6a2e796dfd9ffca9fc027d778567b0b7c9968d092842d3c323cef88aa8 \
1702-
--hash=sha256:14f440c7268c8f8633d1b3d443a434bd70cb15686117ea6beff8fdc8f5917a1e \
1703-
--hash=sha256:1d98b30cc1313d52d4af17d9c3d307b08389752ec5f2e5febdfada70b0f8c733 \
1704-
--hash=sha256:1eb80451a9c351a71dfaf5b7ccc13ad065405217726b59fdbeadbcc544f9d223 \
1705-
--hash=sha256:1ee5cc7160a821dfe14f130bc8e63e7611051f964b463d9e2a3a573204446a4d \
1706-
--hash=sha256:23d6c20517a97a9daf1d48b580fcdc6f0516c6f4b5038823426033690b4d2650 \
1707-
--hash=sha256:26c3b9132f783b7d7903bf1efb095fed8d4a3a85ec0d334ee8beff3d7a4749d5 \
1708-
--hash=sha256:31c80ce534ac4ea3739c5ee751270646cbc46e45aea7576a38ffec040b4029a1 \
1709-
--hash=sha256:3726be79e36e526e3d9c1aceaadbfb4a04ee80a72ab47b3f3c17fefb9812e7b8 \
1710-
--hash=sha256:390a1dce0c055ddf8adb6aa94a73b45a4a7d7177b5c584b8d1c1947f2ba60fb3 \
1711-
--hash=sha256:3a2479753bbb95b0ebcf7969f562cdb9668e6d12416a35b0dda79febf89cdea2 \
1712-
--hash=sha256:3c4bc6c6ac52cdaa267552544c73e486fecbd710b7ac09bc024d5a78555a22f6 \
1713-
--hash=sha256:411ebaf34d735e25e358a6d9e7978954a9c9d58cfb47bc6683cdc3964cd2f910 \
1714-
--hash=sha256:4682d1db3bcebd2b64757e0ddf9e87ae5f00d29d16c5cdf3a62f561d08cc3dd2 \
1715-
--hash=sha256:4a2e9c5be347b937a2e0203866f12bba36082e89b402ddb9e927d5822e43088d \
1716-
--hash=sha256:57036b27ac8a25d81112eb0cc9835cd4833c5b16e1467816adc0015f59e870dc \
1717-
--hash=sha256:5ede977b5fe5ac91b1dffc0a517ca4542d2ec8a6a4ff7b2652d94f640796342a \
1718-
--hash=sha256:5fdfad2093bdd08245f2e204d977facd5f871c88c4a71230d5bcbd0e43bf6222 \
1719-
--hash=sha256:623ad1b9548ef63886319c16fa317848e465a21513b31a6ad7b57443c3e0dcf5 \
1720-
--hash=sha256:652c6c3af76716f4a9c290371ba2e390ede06f6603edb277b481daf37f6f464e \
1721-
--hash=sha256:6543001328aa857187f905308a028935864aefe9968af3848401b6fe80dbb471 \
1722-
--hash=sha256:6e776b998ac37c0396093d10290e60283f59cfe0fc3fccbd0ccc4bd04dd19892 \
1723-
--hash=sha256:71924496986275a737f38e3f22b4e0878882b3f7a310d2ff4dc96e812789120c \
1724-
--hash=sha256:733ae23ada68b804b222c44affed76b39e30806d38660bf1eb200520d259cc16 \
1725-
--hash=sha256:7477aa6a6ec6139c5cb1cc7b214643592169a5494d200397c7fc95d740d5fcf3 \
1726-
--hash=sha256:79cacb0b52f6004caf92405a7e1f11e6e2de8bdf9019e4f76b44ba045125cd6b \
1727-
--hash=sha256:7ba61079379b0ae29e117db13bda5f28d939766e410d321ec1624afc6a0b0504 \
1728-
--hash=sha256:800988273a014a0541483dc81021247d7eacb0c845a9d1a34a422bc718f41539 \
1729-
--hash=sha256:814be4b49b228cfc0b3c565acf642dd7d13538f966e3ccde61f4f55be3e20785 \
1730-
--hash=sha256:845c3e0d8ded9c9271cd79596b9b552448b885b97110f628fb687aee2eed11c1 \
1731-
--hash=sha256:849e38203e5be40b776ed2718e587faf204d184fc9a008ae441f9442320c0cab \
1732-
--hash=sha256:89e13dd3f89f1c38a9c9eba5fbf7cdc2d1feca82f5f290864b4b7a6aac704576 \
1733-
--hash=sha256:89e440ebc74ce8ab5c7bc4ce6757b4a6b1041becb127df818f6997b5c71aa60b \
1734-
--hash=sha256:8ff206156006da5b847c9304b6308a01e8cdbc8cce824e2779a5ba71c3def141 \
1735-
--hash=sha256:91c81ef070c8f3220054115e1ef468b1c9ce8497b4e526cb9f68ab4dc0a7ac62 \
1736-
--hash=sha256:9487abc2c2086e7c8eb9a211d2ce8855bae0e92586279d0d27b341d5ad76c85c \
1737-
--hash=sha256:962d046ee1765f74a1da723f4b33e3b228fe3a48bd307acce5021dfefe0e29b2 \
1738-
--hash=sha256:996b65230271f1a97026fd0e6a753f51fbc0c335d2ad0c6201f711b0da32693b \
1739-
--hash=sha256:9b1a67243945819ce55d24a30b59d6a168e86220452d2c96f4d1f093e71c0c49 \
1740-
--hash=sha256:9c0b51672e466fd7e56230ffbae7f1639e18d0ce023351fb75da21b71bc2c960 \
1741-
--hash=sha256:9e54f3808e2b6b945078c41aa8d9b5834b28c50843846e97807e5adb75fa9705 \
1742-
--hash=sha256:a02c833f38f36546ba65a452127633afce4cf0dd7296b753d3bb54e55e5c0174 \
1743-
--hash=sha256:a12b80df61aab7b98b490fe9e4879925ba666fccdfcd175252ce4d9035865ace \
1744-
--hash=sha256:a16bcd08ab0bcdfc7e8801d9c4a9cc17e58418e4d48ddc6ded4e9e4b1a94062b \
1745-
--hash=sha256:a56df3239294ea5964adf074c54bcc4f0ccd21636049a2cf3ca9cf03b5d03cf1 \
1746-
--hash=sha256:a709e881723c9b18acddcfb8ba357322491ad553e277cf467e1e7e20e2d90561 \
1747-
--hash=sha256:ab49d4b2a6a1d415ddb9f37a21e02e0d5dbfe10b7870b21bf779fc21e9156157 \
1748-
--hash=sha256:ae9e0b37a834cef7ce8f99de6498f8fad4a2c0bf6bfc3d02abd8ed56aa15b2de \
1749-
--hash=sha256:b4a9eefdc70bf8bf9857f0290f973dec534ac84c35cd6a7f4083be43e7170a8f \
1750-
--hash=sha256:b63c6e6738d7c3470ad01601e23376aa511e50e1f3931395b9f9c722406d1a67 \
1751-
--hash=sha256:b7b1dae39230a393df353827c855a5f176271c23434cfd2db74e0e424e693e10 \
1752-
--hash=sha256:b8d14b71c0b12963fe8a62aac87119f1afdf4cb88a400f61ca5ae581449efcb5 \
1753-
--hash=sha256:b9f95dcdea9d4f805daa9ddf02617a89e484c6985fa03055459f90e87d7a0757 \
1754-
--hash=sha256:b9fc4d0f81f394689e0814617aadc4f2ea0e8025f38c226cbf22d3b5ddbf025d \
1755-
--hash=sha256:bd03ea7606833655048dab1a00734a2875e3e86c276e1d772b2a02556f0d895f \
1756-
--hash=sha256:bd0d68edd7dfca1b2eca9361a44ac9f24b078de3481003159929a0573f21a6bf \
1757-
--hash=sha256:bda117c4148e81f746655d5a3239ae9bd00cb7bc3ca178b5fc5a5997e9744183 \
1758-
--hash=sha256:bf742e149121dc5648ba0a08ea0871e87b660467ef168a3a5e53bc1fbd64bb74 \
1759-
--hash=sha256:c2428d358d85e8da9d37cba18b8c4047c55222007a84f97156a5b22028dfbfc0 \
1760-
--hash=sha256:c2e85fe4698b6a56d5e2ebf7ae87544d668eb6bde1ad1226c13f44663f20ec9e \
1761-
--hash=sha256:c43b8b5bab288b6b90dac410cca7e986a4fa747a2e8f94615aea407da706980d \
1762-
--hash=sha256:cededd6738e1c153530793998e31c05086582b08315db48ab66649768f326baa \
1763-
--hash=sha256:d06e5c5fed5caedd2e540d62e5b1c25e8c82431b9e577c33537e5fa4aa909539 \
1764-
--hash=sha256:d772afdb22555f0c58cfc741bdae44180122b3616faa1ecadb595cd526e4c993 \
1765-
--hash=sha256:d897e81f8d0cbd2abb82226d1860ad2e1ab3ff16d7b08c96ca00df9d45409ef4 \
1766-
--hash=sha256:de0a37f21d0d364954ad5de1970491d7fbd0fb1ef7417d4d56a36dc01ba0c0a0 \
1767-
--hash=sha256:e7745312efa9e11c17fbd3cb3097262d079da26930ae9ae7ba28fb738367cbad \
1768-
--hash=sha256:ed46f17096e28fb28d2975834836a639af7278aa87c84f68ab08fbe5b8bd75fa \
1769-
--hash=sha256:f4f7c956b5215d949a1f65334cf9d7612dde38f20a95f2315deef167def91a6f \
1770-
--hash=sha256:f50979824bde13d32b4320eedd513431c921102796d86be3eee0b58e58a3ecd1 \
1771-
--hash=sha256:f904c24bdeabd4298f7a977ef14ca2a022ca921ed670b92ecd16ab6f3d01f867
1772-
# via feast (pyproject.toml)
17731697
packaging==26.0 \
17741698
--hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \
17751699
--hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529
@@ -2004,17 +1928,17 @@ proto-plus==1.27.1 \
20041928
# google-cloud-bigquery-storage
20051929
# google-cloud-bigtable
20061930
# google-cloud-datastore
2007-
protobuf==6.33.5 \
2008-
--hash=sha256:3093804752167bcab3998bec9f1048baae6e29505adaf1afd14a37bddede533c \
2009-
--hash=sha256:69915a973dd0f60f31a08b8318b73eab2bd6a392c79184b3612226b0a3f8ec02 \
2010-
--hash=sha256:6ddcac2a081f8b7b9642c09406bc6a4290128fce5f471cddd165960bb9119e5c \
2011-
--hash=sha256:8afa18e1d6d20af15b417e728e9f60f3aa108ee76f23c3b2c07a2c3b546d3afd \
2012-
--hash=sha256:8f04fa32763dcdb4973d537d6b54e615cc61108c7cb38fe59310c3192d29510a \
2013-
--hash=sha256:9b71e0281f36f179d00cbcb119cb19dec4d14a81393e5ea220f64b286173e190 \
2014-
--hash=sha256:a3157e62729aafb8df6da2c03aa5c0937c7266c626ce11a278b6eb7963c4e37c \
2015-
--hash=sha256:a5cb85982d95d906df1e2210e58f8e4f1e3cdc088e52c921a041f9c9a0386de5 \
2016-
--hash=sha256:cbf16ba3350fb7b889fca858fb215967792dc125b35c7976ca4818bee3521cf0 \
2017-
--hash=sha256:d71b040839446bac0f4d162e758bea99c8251161dae9d0983a3b88dee345153b
1931+
protobuf==6.33.6 \
1932+
--hash=sha256:0cd27b587afca21b7cfa59a74dcbd48a50f0a6400cfb59391340ad729d91d326 \
1933+
--hash=sha256:77179e006c476e69bf8e8ce866640091ec42e1beb80b213c3900006ecfba6901 \
1934+
--hash=sha256:7d29d9b65f8afef196f8334e80d6bc1d5d4adedb449971fefd3723824e6e77d3 \
1935+
--hash=sha256:9720e6961b251bde64edfdab7d500725a2af5280f3f4c87e57c0208376aa8c3a \
1936+
--hash=sha256:a6768d25248312c297558af96a9f9c929e8c4cee0659cb07e780731095f38135 \
1937+
--hash=sha256:bd56799fb262994b2c2faa1799693c95cc2e22c62f56fb43af311cae45d26f0e \
1938+
--hash=sha256:c96c37eec15086b79762ed265d59ab204dabc53056e3443e702d2681f4b39ce3 \
1939+
--hash=sha256:e2afbae9b8e1825e3529f88d514754e094278bb95eadc0e199751cdd9a2e82a2 \
1940+
--hash=sha256:e9db7e292e0ab79dd108d7f1a94fe31601ce1ee3f7b79e0692043423020b0593 \
1941+
--hash=sha256:f443a394af5ed23672bc6c486be138628fbe5c651ccbc536873d7da23d1868cf
20181942
# via
20191943
# feast (pyproject.toml)
20201944
# google-api-core
@@ -2127,9 +2051,9 @@ pyarrow-hotfix==0.7 \
21272051
--hash=sha256:3236f3b5f1260f0e2ac070a55c1a7b339c4bb7267839bd2015e283234e758100 \
21282052
--hash=sha256:59399cd58bdd978b2e42816a4183a55c6472d4e33d183351b6069f11ed42661d
21292053
# via ibis-framework
2130-
pyasn1==0.6.2 \
2131-
--hash=sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf \
2132-
--hash=sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b
2054+
pyasn1==0.6.3 \
2055+
--hash=sha256:697a8ecd6d98891189184ca1fa05d1bb00e2f84b5977c481452050549c8a72cf \
2056+
--hash=sha256:a80184d120f0864a52a073acc6fc642847d0be408e7c7252f31390c0f4eadcde
21332057
# via pyasn1-modules
21342058
pyasn1-modules==0.4.2 \
21352059
--hash=sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a \
@@ -2685,17 +2609,17 @@ sqlalchemy[mypy]==2.0.48 \
26852609
--hash=sha256:fac0fa4e4f55f118fd87177dacb1c6522fe39c28d498d259014020fec9164c29 \
26862610
--hash=sha256:fd08b90d211c086181caed76931ecfa2bdfc83eea3cfccdb0f82abc6c4b876cb
26872611
# via feast (pyproject.toml)
2688-
sqlglot==29.0.1 \
2689-
--hash=sha256:0010b4f77fb996c8d25dd4b16f3654e6da163ff1866ceabc70b24e791c203048 \
2690-
--hash=sha256:06a473ea6c2b3632ac67bd38e687a6860265bf4156e66b54adeda15d07f00c65
2612+
sqlglot==30.0.3 \
2613+
--hash=sha256:35ba7514c132b54f87fd1732a65a73615efa9fd83f6e1eed0a315bc9ee3e1027 \
2614+
--hash=sha256:5489cc98b5666f1fafc21e0304ca286e513e142aa054ee5760806a2139d07a05
26912615
# via ibis-framework
2692-
sse-starlette==3.3.2 \
2693-
--hash=sha256:5c3ea3dad425c601236726af2f27689b74494643f57017cafcb6f8c9acfbb862 \
2694-
--hash=sha256:678fca55a1945c734d8472a6cad186a55ab02840b4f6786f5ee8770970579dcd
2616+
sse-starlette==3.3.3 \
2617+
--hash=sha256:72a95d7575fd5129bd0ae15275ac6432bb35ac542fdebb82889c24bb9f3f4049 \
2618+
--hash=sha256:c5abb5082a1cc1c6294d89c5290c46b5f67808cfdb612b7ec27e8ba061c22e8d
26952619
# via mcp
2696-
starlette==0.52.1 \
2697-
--hash=sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74 \
2698-
--hash=sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933
2620+
starlette==1.0.0 \
2621+
--hash=sha256:6a4beaf1f81bb472fd19ea9b918b50dc3a77a6f2e190a12954b25e6ed5eea149 \
2622+
--hash=sha256:d3ec55e0bb321692d275455ddfd3df75fff145d009685eb40dc91fc66b03d38b
26992623
# via
27002624
# fastapi
27012625
# mcp

sdk/python/requirements/py3.10-minimal-sdist-requirements-build.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,6 @@ maturin==1.12.6 \
534534
--hash=sha256:fa84b7493a2e80759cacc2e668fa5b444d55b9994e90707c42904f55d6322c1e
535535
# via
536536
# cryptography
537-
# orjson
538537
# pydantic-core
539538
# rpds-py
540539
# watchfiles
@@ -814,9 +813,9 @@ typing-extensions==4.15.0 \
814813
# mypy
815814
# scikit-build-core
816815
# setuptools-scm
817-
uv-dynamic-versioning==0.13.0 \
818-
--hash=sha256:3220cbf10987d862d78e9931957782a274fa438d33efb1fa26b8155353749e06 \
819-
--hash=sha256:86d37b89fa2b6836a515301f74ea2d56a1bc59a46a74d66a24c869d1fc8f7585
816+
uv-dynamic-versioning==0.14.0 \
817+
--hash=sha256:574fbc07e87ace45c01d55967ad3b864871257b98ff5b8ac87c261227ac8db5b \
818+
--hash=sha256:e087c346a786e98d41292ac2315180fb700cedfb30565fc973d64ce11a112387
820819
# via mcp
821820
versioneer==0.29 \
822821
--hash=sha256:0f1a137bb5d6811e96a79bb0486798aeae9b9c6efc24b389659cebb0ee396cb9 \

0 commit comments

Comments
 (0)