1. def paginate_records(records, page_size, page_number):
  2. """
  3. Paginates a list of records.
  4. Args:
  5. records (list): The list of records to paginate.
  6. page_size (int): The number of records per page.
  7. page_number (int): The page number to retrieve (1-based).
  8. Returns:
  9. list: A list of records for the requested page, or an empty list if the page number is invalid.
  10. Raises:
  11. TypeError: if records is not a list, or page_size or page_number are not integers
  12. ValueError: if page_size or page_number are not positive
  13. """
  14. # Input validation
  15. if not isinstance(records, list):
  16. raise TypeError("records must be a list")
  17. if not isinstance(page_size, int):
  18. raise TypeError("page_size must be an integer")
  19. if not isinstance(page_number, int):
  20. raise TypeError("page_number must be an integer")
  21. if page_size <= 0:
  22. raise ValueError("page_size must be a positive integer")
  23. if page_number <= 0:
  24. raise ValueError("page_number must be a positive integer")
  25. # Calculate the start and end indices for the page
  26. start_index = (page_number - 1) * page_size
  27. end_index = start_index + page_size
  28. # Handle cases where the page number is out of range
  29. if start_index >= len(records):
  30. return [] # Return an empty list if the page is beyond the last record
  31. # Slice the list to get the records for the page
  32. return records[start_index:end_index]

Add your comment