सामग्री पर जाएं

के लिए संदर्भ hub_sdk/base/paginated_list.py

नोट

यह फ़ाइल यहाँ उपलब्ध है https://github.com/ultralytics/hub-एसडीके/बूँद/मुख्य/hub_sdk/आधार/paginated_list.py। यदि आप कोई समस्या देखते हैं तो कृपया पुल अनुरोध का योगदान करके इसे ठीक करने में मदद करें 🛠️। 🙏 धन्यवाद !



hub_sdk.base.paginated_list.PaginatedList

का रूप: APIClient

में स्रोत कोड hub_sdk/base/paginated_list.py
 9 बांग्लादेश के साथ 9 बांग्लादेश बांग्लादेश 10 11 12 13 14 15 16 17 18  19 20 21 22 23 24 25 26 27 28  29 30 31 32 33   34 35  36 37    38          39         40 41 42 43   44 45 46 47 48  49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65  66 67   68          69 70 71 72 73   74       75 76 77 78  79 80 81 82 83 84 85 86 87 88  89 90 91 92 93 94  95 96  97    98       99  100 101  102  103 104  
class PaginatedList(APIClient):
    def __init__(self, base_endpoint, name, page_size=None, headers=None):
        """
        Initialize a PaginatedList instance.

        Args:
            base_endpoint (str): The base API endpoint for the paginated resource.
            name (str): A descriptive name for the paginated resource.
            page_size (int, optional): The number of items per page.
            headers (dict, optional): Additional headers to include in API requests.
        """
        super().__init__(f"{HUB_FUNCTIONS_ROOT}/v1/{base_endpoint}", headers)
        self.name = name
        self.page_size = page_size
        self.pages = [None]
        self.current_page = 0
        self.total_pages = 1
        self._get()

    def _get(self, query=None):
        """
        Retrieve data for the current page.

        Args:
            query (dict, optional): Additional query parameters for the API request.
        """
        try:
            last_record = self.pages[self.current_page]
            resp = self.list(
                self.page_size,
                last_record,
                query=query,
            )
            self.__update_data(resp)
        except Exception as e:
            self.results = []
            self.logger.error("Failed to get data: %s", e)

    def previous(self) -> None:
        """Move to the previous page of results if available."""
        try:
            if self.current_page > 0:
                self.current_page -= 1
                self._get()
        except Exception as e:
            self.logger.error("Failed to get previous page: %s", e)

    def next(self) -> None:
        """Move to the next page of results if available."""
        try:
            if self.current_page < self.total_pages - 1:
                self.current_page += 1
                self._get()
        except Exception as e:
            self.logger.error("Failed to get next page: %s", e)

    def __update_data(self, resp: Response) -> None:
        """
        Update the internal data with the response from the API.

        Args:
            resp (Response): API response data.
        """
        resp_data = resp.json().get("data", {})
        self.results = resp_data.get("results", {})
        self.total_pages = resp_data.get("total") // self.page_size
        last_record_id = resp_data.get("lastRecordId")
        if last_record_id is None:
            self.pages[self.current_page + 1 :] = [None] * (len(self.pages) - self.current_page - 1)

        elif len(self.pages) <= self.current_page + 1:
            self.pages.append(last_record_id)
        else:
            self.pages[self.current_page + 1] = last_record_id

    def list(self, page_size: int = 10, last_record=None, query=None) -> Optional[Response]:
        """
        Retrieve a list of items from the API.

        Args:
            page_size (int, optional): The number of items per page.
            last_record (str, optional): ID of the last record from the previous page.
            query (dict, optional): Additional query parameters for the API request.

        Returns:
            (Optional[Response]): Response object from the list request, or None if it fails.
        """
        try:
            params = {"perPage": page_size}
            if last_record:
                params["lastRecordId"] = last_record
            if query:
                params["query"] = query
            return self.get("", params=params)
        except Exception as e:
            self.logger.error(f"Failed to list {self.name}: %s", e)

__init__(base_endpoint, name, page_size=None, headers=None)

PaginatedList इंस्टेंस प्रारंभ करें.

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
base_endpoint str

पृष्ठांकित संसाधन के लिए मूल API समापन बिंदु.

आवश्यक
name str

पृष्ठांकित संसाधन के लिए वर्णनात्मक नाम.

आवश्यक
page_size int

प्रति पृष्ठ आइटम्स की संख्या.

None
headers dict

एपीआई अनुरोधों में शामिल करने के लिए अतिरिक्त हेडर।

None
में स्रोत कोड hub_sdk/base/paginated_list.py
10 बांग्लादेश 10 बांग्लादेश 10 बांग्लादेश 12 13 14 15 16 17181920212223242526
def __init__(self, base_endpoint, name, page_size=None, headers=None):
    """
    Initialize a PaginatedList instance.

    Args:
        base_endpoint (str): The base API endpoint for the paginated resource.
        name (str): A descriptive name for the paginated resource.
        page_size (int, optional): The number of items per page.
        headers (dict, optional): Additional headers to include in API requests.
    """
    super().__init__(f"{HUB_FUNCTIONS_ROOT}/v1/{base_endpoint}", headers)
    self.name = name
    self.page_size = page_size
    self.pages = [None]
    self.current_page = 0
    self.total_pages = 1
    self._get()

__update_data(resp)

एपीआई से प्रतिक्रिया के साथ आंतरिक डेटा अपडेट करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
resp Response

एपीआई प्रतिक्रिया डेटा।

आवश्यक
में स्रोत कोड hub_sdk/base/paginated_list.py
def __update_data(self, resp: Response) -> None:
    """
    Update the internal data with the response from the API.

    Args:
        resp (Response): API response data.
    """
    resp_data = resp.json().get("data", {})
    self.results = resp_data.get("results", {})
    self.total_pages = resp_data.get("total") // self.page_size
    last_record_id = resp_data.get("lastRecordId")
    if last_record_id is None:
        self.pages[self.current_page + 1 :] = [None] * (len(self.pages) - self.current_page - 1)

    elif len(self.pages) <= self.current_page + 1:
        self.pages.append(last_record_id)
    else:
        self.pages[self.current_page + 1] = last_record_id

list(page_size=10, last_record=None, query=None)

एपीआई से आइटम की एक सूची प्राप्त करें।

पैरामीटर:

नाम प्रकार विवरण: __________ चूक
page_size int

प्रति पृष्ठ आइटम्स की संख्या.

10
last_record str

पिछले पृष्ठ से अंतिम रिकॉर्ड की आईडी।

None
query dict

API अनुरोध के लिए अतिरिक्त क्वेरी पैरामीटर.

None

देता:

प्रकार विवरण: __________
Optional[Response]

सूची अनुरोध से प्रतिसाद ऑब्जेक्ट, या कोई नहीं यदि यह विफल रहता है।

में स्रोत कोड hub_sdk/base/paginated_list.py
84 85 86 87 88 89  90 91 92 93 94  95 96 97 98      99 100 101   102   103 104  
def list(self, page_size: int = 10, last_record=None, query=None) -> Optional[Response]:
    """
    Retrieve a list of items from the API.

    Args:
        page_size (int, optional): The number of items per page.
        last_record (str, optional): ID of the last record from the previous page.
        query (dict, optional): Additional query parameters for the API request.

    Returns:
        (Optional[Response]): Response object from the list request, or None if it fails.
    """
    try:
        params = {"perPage": page_size}
        if last_record:
            params["lastRecordId"] = last_record
        if query:
            params["query"] = query
        return self.get("", params=params)
    except Exception as e:
        self.logger.error(f"Failed to list {self.name}: %s", e)

next()

यदि उपलब्ध हो तो परिणामों के अगले पृष्ठ पर जाएँ.

में स्रोत कोड hub_sdk/base/paginated_list.py
def next(self) -> None:
    """Move to the next page of results if available."""
    try:
        if self.current_page < self.total_pages - 1:
            self.current_page += 1
            self._get()
    except Exception as e:
        self.logger.error("Failed to get next page: %s", e)

previous()

यदि उपलब्ध हो तो परिणामों के पिछले पृष्ठ पर जाएँ.

में स्रोत कोड hub_sdk/base/paginated_list.py
def previous(self) -> None:
    """Move to the previous page of results if available."""
    try:
        if self.current_page > 0:
            self.current_page -= 1
            self._get()
    except Exception as e:
        self.logger.error("Failed to get previous page: %s", e)