mirror of
https://github.com/wassname/openrouter-python-sdk-retry-errors.git
synced 2026-07-31 12:30:30 +08:00
Initial commit: OpenRouter Python SDK
Auto-generated Python SDK for OpenRouter API, providing comprehensive client library with: - Chat completions and streaming support - Embeddings API - Model and provider information - API key management - Analytics and usage tracking - OAuth authentication flows - Full type hints and error handling
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from enum import Enum
|
||||
from typing import Any, Optional
|
||||
|
||||
|
||||
def get_discriminator(model: Any, fieldname: str, key: str) -> str:
|
||||
"""
|
||||
Recursively search for the discriminator attribute in a model.
|
||||
|
||||
Args:
|
||||
model (Any): The model to search within.
|
||||
fieldname (str): The name of the field to search for.
|
||||
key (str): The key to search for in dictionaries.
|
||||
|
||||
Returns:
|
||||
str: The name of the discriminator attribute.
|
||||
|
||||
Raises:
|
||||
ValueError: If the discriminator attribute is not found.
|
||||
"""
|
||||
upper_fieldname = fieldname.upper()
|
||||
|
||||
def get_field_discriminator(field: Any) -> Optional[str]:
|
||||
"""Search for the discriminator attribute in a given field."""
|
||||
|
||||
if isinstance(field, dict):
|
||||
if key in field:
|
||||
return f"{field[key]}"
|
||||
|
||||
if hasattr(field, fieldname):
|
||||
attr = getattr(field, fieldname)
|
||||
if isinstance(attr, Enum):
|
||||
return f"{attr.value}"
|
||||
return f"{attr}"
|
||||
|
||||
if hasattr(field, upper_fieldname):
|
||||
attr = getattr(field, upper_fieldname)
|
||||
if isinstance(attr, Enum):
|
||||
return f"{attr.value}"
|
||||
return f"{attr}"
|
||||
|
||||
return None
|
||||
|
||||
def search_nested_discriminator(obj: Any) -> Optional[str]:
|
||||
"""Recursively search for discriminator in nested structures."""
|
||||
# First try direct field lookup
|
||||
discriminator = get_field_discriminator(obj)
|
||||
if discriminator is not None:
|
||||
return discriminator
|
||||
|
||||
# If it's a dict, search in nested values
|
||||
if isinstance(obj, dict):
|
||||
for value in obj.values():
|
||||
if isinstance(value, list):
|
||||
# Search in list items
|
||||
for item in value:
|
||||
nested_discriminator = search_nested_discriminator(item)
|
||||
if nested_discriminator is not None:
|
||||
return nested_discriminator
|
||||
elif isinstance(value, dict):
|
||||
# Search in nested dict
|
||||
nested_discriminator = search_nested_discriminator(value)
|
||||
if nested_discriminator is not None:
|
||||
return nested_discriminator
|
||||
|
||||
return None
|
||||
|
||||
if isinstance(model, list):
|
||||
for field in model:
|
||||
discriminator = search_nested_discriminator(field)
|
||||
if discriminator is not None:
|
||||
return discriminator
|
||||
|
||||
discriminator = search_nested_discriminator(model)
|
||||
if discriminator is not None:
|
||||
return discriminator
|
||||
|
||||
raise ValueError(f"Could not find discriminator field {fieldname} in {model}")
|
||||
Reference in New Issue
Block a user