Spaces:
Paused
Paused
| import os | |
| import re | |
| import sys | |
| from typing import get_type_hints | |
| sys.path.insert( | |
| 0, os.path.abspath("../..") | |
| ) # Adds the parent directory to the system path | |
| from litellm.types.utils import StandardLoggingPayload | |
| def get_all_fields(type_dict, prefix=""): | |
| """Recursively get all fields from TypedDict and its nested types""" | |
| fields = set() | |
| # Get type hints for the TypedDict | |
| hints = get_type_hints(type_dict) | |
| for field_name, field_type in hints.items(): | |
| full_field_name = f"{prefix}{field_name}" if prefix else field_name | |
| fields.add(full_field_name) | |
| # Check if the field type is another TypedDict we should process | |
| if hasattr(field_type, "__annotations__"): | |
| nested_fields = get_all_fields(field_type) | |
| fields.update(nested_fields) | |
| return fields | |
| def test_standard_logging_payload_documentation(): | |
| # Get all fields from StandardLoggingPayload and its nested types | |
| all_fields = get_all_fields(StandardLoggingPayload) | |
| print("All fields in StandardLoggingPayload: ") | |
| for _field in all_fields: | |
| print(_field) | |
| # Read the documentation | |
| docs_path = "../../docs/my-website/docs/proxy/logging_spec.md" | |
| try: | |
| with open(docs_path, "r", encoding="utf-8") as docs_file: | |
| content = docs_file.read() | |
| # Extract documented fields from the table | |
| doc_field_pattern = re.compile(r"\|\s*`([^`]+?)`\s*\|") | |
| documented_fields = set(doc_field_pattern.findall(content)) | |
| # Clean up documented fields (remove whitespace) | |
| documented_fields = {field.strip() for field in documented_fields} | |
| # Clean up documented fields (remove whitespace) | |
| documented_fields = {field.strip() for field in documented_fields} | |
| print("\n\nDocumented fields: ") | |
| for _field in documented_fields: | |
| print(_field) | |
| # Compare and find undocumented fields | |
| undocumented_fields = all_fields - documented_fields | |
| print("\n\nUndocumented fields: ") | |
| for _field in undocumented_fields: | |
| print(_field) | |
| if undocumented_fields: | |
| raise Exception( | |
| f"\nFields not documented in 'StandardLoggingPayload': {undocumented_fields}" | |
| ) | |
| print( | |
| f"All {len(all_fields)} fields are documented in 'StandardLoggingPayload'" | |
| ) | |
| except FileNotFoundError: | |
| raise Exception( | |
| f"Documentation file not found at {docs_path}. Please ensure the documentation exists." | |
| ) | |