विषय पर बढ़ें

अतिरिक्त Data Types

🌐 एआई और मनुष्यों द्वारा किया गया अनुवाद

यह अनुवाद मनुष्यों के मार्गदर्शन में एआई द्वारा किया गया है। 🤝

इसमें मूल अर्थ को गलत समझने या अप्राकृतिक लगने आदि जैसी गलतियाँ हो सकती हैं। 🤖

आप हमें एआई LLM को बेहतर मार्गदर्शन करने में मदद करके इस अनुवाद को बेहतर बना सकते हैं।

अंग्रेज़ी संस्करण

अब तक, आप सामान्य data types का उपयोग करते रहे हैं, जैसे:

  • int
  • float
  • str
  • bool

लेकिन आप अधिक जटिल 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.
  • datetime.date:
    • Python datetime.date.
    • requests और responses में इसे ISO 8601 format में str के रूप में दर्शाया जाएगा, जैसे: 2008-09-15.
  • datetime.time:
    • एक Python datetime.time.
    • requests और responses में इसे ISO 8601 format में str के रूप में दर्शाया जाएगा, जैसे: 14:23:55.003.
  • datetime.timedelta:
    • एक Python datetime.timedelta.
    • requests और responses में इसे कुल seconds के float के रूप में दर्शाया जाएगा।
    • Pydantic इसे "ISO 8601 time diff encoding" के रूप में दर्शाने की अनुमति भी देता है, अधिक जानकारी के लिए docs देखें.
  • frozenset:
    • requests और responses में, इसे set जैसा ही माना जाता है:
      • requests में, एक list पढ़ी जाएगी, duplicates हटाए जाएँगे और उसे set में convert किया जाएगा।
      • responses में, set को list में convert किया जाएगा।
      • generate किया गया schema बताएगा कि set values unique हैं (JSON Schema के uniqueItems का उपयोग करते हुए)।
  • bytes:
    • Standard Python bytes.
    • requests और responses में इसे str की तरह माना जाएगा।
    • generate किया गया schema बताएगा कि यह binary "format" वाला str है।
  • Decimal:
    • Standard Python Decimal.
    • requests और responses में, इसे float जैसा ही handle किया जाएगा।
  • आप सभी 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,
    }