ai_api_unified 2.5.1__tar.gz → 2.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/PKG-INFO +1 -1
  2. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/pyproject.toml +1 -1
  3. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/__version__.py +1 -1
  4. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/videos/ai_google_gemini_videos.py +5 -2
  5. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/LICENSE +0 -0
  6. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/README.md +0 -0
  7. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/__init__.py +0 -0
  8. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_base.py +0 -0
  9. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_bedrock_base.py +0 -0
  10. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_completions_exceptions.py +0 -0
  11. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_factory.py +0 -0
  12. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_google_base.py +0 -0
  13. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_openai_base.py +0 -0
  14. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_provider_exceptions.py +0 -0
  15. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_provider_loader.py +0 -0
  16. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/ai_provider_registry.py +0 -0
  17. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/completions/__init__.py +0 -0
  18. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/completions/ai_bedrock_completions.py +0 -0
  19. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/completions/ai_google_gemini_capabilities.py +0 -0
  20. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/completions/ai_google_gemini_completions.py +0 -0
  21. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/completions/ai_openai_completions.py +0 -0
  22. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/embeddings/__init__.py +0 -0
  23. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/embeddings/ai_google_gemini_embeddings.py +0 -0
  24. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/embeddings/ai_openai_embeddings.py +0 -0
  25. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/embeddings/ai_titan_embeddings.py +0 -0
  26. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/images/__init__.py +0 -0
  27. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/images/ai_bedrock_images.py +0 -0
  28. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/images/ai_google_gemini_images.py +0 -0
  29. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/images/ai_openai_images.py +0 -0
  30. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/__init__.py +0 -0
  31. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/__init__.py +0 -0
  32. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/_presidio_redactor.py +0 -0
  33. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/base_redactor.py +0 -0
  34. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/custom_recognizer_factory.py +0 -0
  35. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/middleware_extensibility_poc.py +0 -0
  36. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/noop_redactor.py +0 -0
  37. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/impl/presidio_log_control.py +0 -0
  38. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/middleware.py +0 -0
  39. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/middleware_config.py +0 -0
  40. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/observability.py +0 -0
  41. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/observability_runtime.py +0 -0
  42. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/pii_redactor.py +0 -0
  43. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/middleware/redaction_exceptions.py +0 -0
  44. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/util/__init__.py +0 -0
  45. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/util/_lazy_pydub.py +0 -0
  46. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/util/env_settings.py +0 -0
  47. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/util/package_metadata_validation.py +0 -0
  48. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/util/utils.py +0 -0
  49. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/videos/__init__.py +0 -0
  50. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/videos/ai_bedrock_videos.py +0 -0
  51. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/videos/ai_openai_videos.py +0 -0
  52. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/videos/frame_helpers.py +0 -0
  53. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/__init__.py +0 -0
  54. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_azure.py +0 -0
  55. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_base.py +0 -0
  56. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_elevenlabs.py +0 -0
  57. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_factory.py +0 -0
  58. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_google.py +0 -0
  59. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_google_gemini_voices.py +0 -0
  60. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/ai_voice_openai.py +0 -0
  61. {ai_api_unified-2.5.1 → ai_api_unified-2.5.2}/src/ai_api_unified/voice/audio_models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ai_api_unified
3
- Version: 2.5.1
3
+ Version: 2.5.2
4
4
  Summary: Unified access layer for AI completions (LLM), embedding (semantic), image, video, and voice services
5
5
  License: MIT
6
6
  Keywords: llm,openai,bedrock,gemini,vertex,embeddings,completion,video,voice,api
@@ -36,7 +36,7 @@
36
36
  [project]
37
37
  name = "ai_api_unified"
38
38
 
39
- version = "2.5.1" # keep in sync with src/ai_api_unified/__version__.py
39
+ version = "2.5.2" # keep in sync with src/ai_api_unified/__version__.py
40
40
  description = "Unified access layer for AI completions (LLM), embedding (semantic), image, video, and voice services"
41
41
  authors = [{ name = "Dave Thomas", email = "davidcthomas@gmail.com" }]
42
42
  license = "MIT"
@@ -9,4 +9,4 @@ from __future__ import annotations
9
9
 
10
10
  __all__: list[str] = ["__version__"]
11
11
 
12
- __version__: str = "2.5.1"
12
+ __version__: str = "2.5.2"
@@ -51,6 +51,11 @@ class AIGoogleGeminiVideoProperties(AIBaseVideoProperties):
51
51
 
52
52
  @model_validator(mode="after")
53
53
  def _validate_google_video_properties(self) -> "AIGoogleGeminiVideoProperties":
54
+ if self.fps is not None:
55
+ raise ValueError(
56
+ "Google Gemini (Veo) does not support the 'fps' parameter. "
57
+ "Remove fps from your video properties for this provider."
58
+ )
54
59
  if (
55
60
  self.aspect_ratio is not None
56
61
  and self.aspect_ratio not in self._ALLOWED_ASPECT_RATIOS
@@ -363,8 +368,6 @@ class AIGoogleGeminiVideos(AIGoogleBase, AIBaseVideos):
363
368
  config_kwargs["duration_seconds"] = google_properties.duration_seconds
364
369
  if google_properties.seed is not None:
365
370
  config_kwargs["seed"] = google_properties.seed
366
- if google_properties.fps is not None:
367
- config_kwargs["fps"] = google_properties.fps
368
371
  if google_properties.generate_audio is not None:
369
372
  config_kwargs["generate_audio"] = google_properties.generate_audio
370
373
  if google_properties.person_generation is not None:
File without changes
File without changes