अतिरिक्त Data Types¶
🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद
यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝
इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖
आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।
अब तक, आप सामान्य data types का उपयोग करते रहे हैं, जैसे:
intfloatstrbool
लेकिन आप अधिक जटिल data types भी उपयोग कर सकते हैं।
और आपको अब तक देखी गई वही features मिलती रहेंगी:
- शानदार editor support.
- आने वाली requests से data conversion.
- response data के लिए data conversion.
- Data validation.
- Automatic annotation और documentation.
अन्य data types¶
यहाँ कुछ अतिरिक्त data types हैं जिनका आप उपयोग कर सकते हैं:
UUID:- एक standard "Universally Unique Identifier", जो कई databases और systems में ID के रूप में आम है।
- requests और responses में इसे
strके रूप में दर्शाया जाएगा।
datetime.datetime:- एक Python
datetime.datetime. - requests और responses में इसे ISO 8601 format में
strके रूप में दर्शाया जाएगा, जैसे:2008-09-15T15:53:00+05:00.
- एक Python
datetime.date:- Python
datetime.date. - requests और responses में इसे ISO 8601 format में
strके रूप में दर्शाया जाएगा, जैसे:2008-09-15.
- Python
datetime.time:- एक Python
datetime.time. - requests और responses में इसे ISO 8601 format में
strके रूप में दर्शाया जाएगा, जैसे:14:23:55.003.
- एक Python
datetime.timedelta:- एक Python
datetime.timedelta. - requests और responses में इसे कुल seconds के
floatके रूप में दर्शाया जाएगा। - Pydantic इसे "ISO 8601 time diff encoding" के रूप में दर्शाने की अनुमति भी देता है, अधिक जानकारी के लिए docs देखें.
- एक Python
frozenset:- requests और responses में, इसे
setजैसा ही माना जाता है:- requests में, एक list पढ़ी जाएगी, duplicates हटाए जाएँगे और उसे
setमें convert किया जाएगा। - responses में,
setकोlistमें convert किया जाएगा। - generate किया गया schema बताएगा कि
setvalues unique हैं (JSON Schema केuniqueItemsका उपयोग करते हुए)।
- requests में, एक list पढ़ी जाएगी, duplicates हटाए जाएँगे और उसे
- requests और responses में, इसे
bytes:- Standard Python
bytes. - requests और responses में इसे
strकी तरह माना जाएगा। - generate किया गया schema बताएगा कि यह
binary"format" वालाstrहै।
- Standard Python
Decimal:- Standard Python
Decimal. - requests और responses में, इसे
floatजैसा ही handle किया जाएगा।
- Standard Python
- आप सभी valid Pydantic data types यहाँ देख सकते हैं: Pydantic data types.
उदाहरण¶
यहाँ ऊपर दिए गए कुछ types का उपयोग करते हुए parameters वाला एक उदाहरण path operation है।
from datetime import datetime, time, timedelta
from typing import Annotated
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: Annotated[datetime, Body()],
end_datetime: Annotated[datetime, Body()],
process_after: Annotated[timedelta, Body()],
repeat_at: Annotated[time | None, Body()] = None,
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"process_after": process_after,
"repeat_at": repeat_at,
"start_process": start_process,
"duration": duration,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from datetime import datetime, time, timedelta
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: datetime = Body(),
end_datetime: datetime = Body(),
process_after: timedelta = Body(),
repeat_at: time | None = Body(default=None),
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"process_after": process_after,
"repeat_at": repeat_at,
"start_process": start_process,
"duration": duration,
}
ध्यान दें कि function के अंदर parameters के अपने natural data type होते हैं, और उदाहरण के लिए, आप सामान्य date manipulations कर सकते हैं, जैसे:
from datetime import datetime, time, timedelta
from typing import Annotated
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: Annotated[datetime, Body()],
end_datetime: Annotated[datetime, Body()],
process_after: Annotated[timedelta, Body()],
repeat_at: Annotated[time | None, Body()] = None,
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"process_after": process_after,
"repeat_at": repeat_at,
"start_process": start_process,
"duration": duration,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from datetime import datetime, time, timedelta
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: datetime = Body(),
end_datetime: datetime = Body(),
process_after: timedelta = Body(),
repeat_at: time | None = Body(default=None),
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"process_after": process_after,
"repeat_at": repeat_at,
"start_process": start_process,
"duration": duration,
}