選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

schema_manager.py 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from collections.abc import Mapping
  2. from typing import Any, Optional
  3. from core.schemas.registry import SchemaRegistry
  4. class SchemaManager:
  5. """Schema manager provides high-level schema operations"""
  6. def __init__(self, registry: Optional[SchemaRegistry] = None):
  7. self.registry = registry or SchemaRegistry.default_registry()
  8. def get_all_schema_definitions(self, version: str = "v1") -> list[Mapping[str, Any]]:
  9. """
  10. Get all JSON Schema definitions for a specific version
  11. Args:
  12. version: Schema version, defaults to v1
  13. Returns:
  14. Array containing schema definitions, each element contains name and schema fields
  15. """
  16. return self.registry.get_all_schemas_for_version(version)
  17. def get_schema_by_name(self, schema_name: str, version: str = "v1") -> Optional[Mapping[str, Any]]:
  18. """
  19. Get a specific schema by name
  20. Args:
  21. schema_name: Schema name
  22. version: Schema version, defaults to v1
  23. Returns:
  24. Dictionary containing name and schema, returns None if not found
  25. """
  26. uri = f"https://dify.ai/schemas/{version}/{schema_name}.json"
  27. schema = self.registry.get_schema(uri)
  28. if schema:
  29. return {"name": schema_name, "schema": schema}
  30. return None
  31. def list_available_schemas(self, version: str = "v1") -> list[str]:
  32. """
  33. List all available schema names for a specific version
  34. Args:
  35. version: Schema version, defaults to v1
  36. Returns:
  37. List of schema names
  38. """
  39. return self.registry.list_schemas(version)
  40. def list_available_versions(self) -> list[str]:
  41. """
  42. List all available schema versions
  43. Returns:
  44. List of versions
  45. """
  46. return self.registry.list_versions()