magic_hour 0.16.1__tar.gz → 0.18.0__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.

Potentially problematic release.


This version of magic_hour might be problematic. Click here for more details.

Files changed (158) hide show
  1. {magic_hour-0.16.1 → magic_hour-0.18.0}/PKG-INFO +5 -1
  2. {magic_hour-0.16.1 → magic_hour-0.18.0}/README.md +4 -0
  3. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/environment.py +1 -1
  4. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/client.py +6 -0
  5. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_to_video/client.py +32 -16
  6. magic_hour-0.18.0/magic_hour/resources/v1/photo_colorizer/README.md +31 -0
  7. magic_hour-0.18.0/magic_hour/resources/v1/photo_colorizer/__init__.py +4 -0
  8. magic_hour-0.18.0/magic_hour/resources/v1/photo_colorizer/client.py +119 -0
  9. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/__init__.py +2 -0
  10. magic_hour-0.18.0/magic_hour/types/models/v1_photo_colorizer_create_response.py +25 -0
  11. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/__init__.py +12 -0
  12. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_image_to_video_create_body.py +10 -10
  13. magic_hour-0.18.0/magic_hour/types/params/v1_photo_colorizer_create_body.py +40 -0
  14. magic_hour-0.18.0/magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +28 -0
  15. {magic_hour-0.16.1 → magic_hour-0.18.0}/pyproject.toml +1 -1
  16. {magic_hour-0.16.1 → magic_hour-0.18.0}/LICENSE +0 -0
  17. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/__init__.py +0 -0
  18. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/client.py +0 -0
  19. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/__init__.py +0 -0
  20. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/api_error.py +0 -0
  21. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/auth.py +0 -0
  22. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/base_client.py +0 -0
  23. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/binary_response.py +0 -0
  24. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/query.py +0 -0
  25. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/request.py +0 -0
  26. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/response.py +0 -0
  27. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/type_utils.py +0 -0
  28. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/core/utils.py +0 -0
  29. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/__init__.py +0 -0
  30. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -0
  31. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
  32. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -0
  33. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_face_editor/README.md +0 -0
  34. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_face_editor/__init__.py +0 -0
  35. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_face_editor/client.py +0 -0
  36. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -0
  37. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
  38. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -0
  39. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_generator/README.md +0 -0
  40. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
  41. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_generator/client.py +0 -0
  42. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -0
  43. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
  44. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -0
  45. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_meme_generator/README.md +0 -0
  46. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
  47. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_meme_generator/client.py +0 -0
  48. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_photo_editor/README.md +0 -0
  49. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
  50. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_photo_editor/client.py +0 -0
  51. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -0
  52. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
  53. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -0
  54. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_talking_photo/README.md +0 -0
  55. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
  56. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/ai_talking_photo/client.py +0 -0
  57. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/animation/README.md +0 -0
  58. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/animation/__init__.py +0 -0
  59. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/animation/client.py +0 -0
  60. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap/README.md +0 -0
  61. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
  62. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap/client.py +0 -0
  63. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap_photo/README.md +0 -0
  64. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
  65. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/face_swap_photo/client.py +0 -0
  66. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/files/__init__.py +0 -0
  67. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/files/client.py +0 -0
  68. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/files/upload_urls/README.md +0 -0
  69. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
  70. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
  71. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_background_remover/README.md +0 -0
  72. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
  73. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_background_remover/client.py +0 -0
  74. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_projects/README.md +0 -0
  75. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_projects/__init__.py +0 -0
  76. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_projects/client.py +0 -0
  77. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_to_video/README.md +4 -4
  78. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
  79. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/lip_sync/README.md +0 -0
  80. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
  81. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/lip_sync/client.py +0 -0
  82. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/text_to_video/README.md +0 -0
  83. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
  84. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/text_to_video/client.py +0 -0
  85. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_projects/README.md +0 -0
  86. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_projects/__init__.py +0 -0
  87. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_projects/client.py +0 -0
  88. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_to_video/README.md +0 -0
  89. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
  90. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/resources/v1/video_to_video/client.py +0 -0
  91. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
  92. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_face_editor_create_response.py +0 -0
  93. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
  94. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
  95. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
  96. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
  97. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
  98. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
  99. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
  100. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_animation_create_response.py +0 -0
  101. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
  102. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
  103. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
  104. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
  105. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
  106. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
  107. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
  108. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
  109. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
  110. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
  111. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
  112. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
  113. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
  114. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
  115. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
  116. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
  117. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
  118. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
  119. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_face_editor_create_body.py +0 -0
  120. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +0 -0
  121. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_face_editor_create_body_style.py +0 -0
  122. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
  123. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
  124. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
  125. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
  126. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
  127. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
  128. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
  129. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
  130. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
  131. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
  132. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
  133. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
  134. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +0 -0
  135. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
  136. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
  137. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
  138. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
  139. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_animation_create_body.py +0 -0
  140. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
  141. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
  142. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_face_swap_create_body.py +0 -0
  143. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_face_swap_create_body_assets.py +0 -0
  144. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
  145. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +0 -0
  146. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
  147. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
  148. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
  149. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
  150. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
  151. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
  152. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
  153. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
  154. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
  155. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
  156. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_video_to_video_create_body.py +0 -0
  157. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
  158. {magic_hour-0.16.1 → magic_hour-0.18.0}/magic_hour/types/params/v1_video_to_video_create_body_style.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.16.1
3
+ Version: 0.18.0
4
4
  Summary: Python SDK for Magic Hour API
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Programming Language :: Python :: 3
@@ -128,6 +128,10 @@ client = AsyncClient(token="my api key")
128
128
 
129
129
  * [create](magic_hour/resources/v1/lip_sync/README.md#create) - Lip Sync
130
130
 
131
+ ### [v1.photo_colorizer](magic_hour/resources/v1/photo_colorizer/README.md)
132
+
133
+ * [create](magic_hour/resources/v1/photo_colorizer/README.md#create) - Photo Colorizer
134
+
131
135
  ### [v1.text_to_video](magic_hour/resources/v1/text_to_video/README.md)
132
136
 
133
137
  * [create](magic_hour/resources/v1/text_to_video/README.md#create) - Text-to-Video
@@ -110,6 +110,10 @@ client = AsyncClient(token="my api key")
110
110
 
111
111
  * [create](magic_hour/resources/v1/lip_sync/README.md#create) - Lip Sync
112
112
 
113
+ ### [v1.photo_colorizer](magic_hour/resources/v1/photo_colorizer/README.md)
114
+
115
+ * [create](magic_hour/resources/v1/photo_colorizer/README.md#create) - Photo Colorizer
116
+
113
117
  ### [v1.text_to_video](magic_hour/resources/v1/text_to_video/README.md)
114
118
 
115
119
  * [create](magic_hour/resources/v1/text_to_video/README.md#create) - Text-to-Video
@@ -5,4 +5,4 @@ class Environment(enum.Enum):
5
5
  """Pre-defined base URLs for the API"""
6
6
 
7
7
  ENVIRONMENT = "https://api.magichour.ai"
8
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.16.1"
8
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.18.0"
@@ -55,6 +55,10 @@ from magic_hour.resources.v1.image_to_video import (
55
55
  ImageToVideoClient,
56
56
  )
57
57
  from magic_hour.resources.v1.lip_sync import AsyncLipSyncClient, LipSyncClient
58
+ from magic_hour.resources.v1.photo_colorizer import (
59
+ AsyncPhotoColorizerClient,
60
+ PhotoColorizerClient,
61
+ )
58
62
  from magic_hour.resources.v1.text_to_video import (
59
63
  AsyncTextToVideoClient,
60
64
  TextToVideoClient,
@@ -96,6 +100,7 @@ class V1Client:
96
100
  )
97
101
  self.image_to_video = ImageToVideoClient(base_client=self._base_client)
98
102
  self.lip_sync = LipSyncClient(base_client=self._base_client)
103
+ self.photo_colorizer = PhotoColorizerClient(base_client=self._base_client)
99
104
  self.text_to_video = TextToVideoClient(base_client=self._base_client)
100
105
  self.video_to_video = VideoToVideoClient(base_client=self._base_client)
101
106
 
@@ -135,5 +140,6 @@ class AsyncV1Client:
135
140
  )
136
141
  self.image_to_video = AsyncImageToVideoClient(base_client=self._base_client)
137
142
  self.lip_sync = AsyncLipSyncClient(base_client=self._base_client)
143
+ self.photo_colorizer = AsyncPhotoColorizerClient(base_client=self._base_client)
138
144
  self.text_to_video = AsyncTextToVideoClient(base_client=self._base_client)
139
145
  self.video_to_video = AsyncVideoToVideoClient(base_client=self._base_client)
@@ -20,12 +20,16 @@ class ImageToVideoClient:
20
20
  *,
21
21
  assets: params.V1ImageToVideoCreateBodyAssets,
22
22
  end_seconds: float,
23
- height: int,
24
23
  style: params.V1ImageToVideoCreateBodyStyle,
25
- width: int,
24
+ height: typing.Union[
25
+ typing.Optional[int], type_utils.NotGiven
26
+ ] = type_utils.NOT_GIVEN,
26
27
  name: typing.Union[
27
28
  typing.Optional[str], type_utils.NotGiven
28
29
  ] = type_utils.NOT_GIVEN,
30
+ width: typing.Union[
31
+ typing.Optional[int], type_utils.NotGiven
32
+ ] = type_utils.NOT_GIVEN,
29
33
  request_options: typing.Optional[RequestOptions] = None,
30
34
  ) -> models.V1ImageToVideoCreateResponse:
31
35
  """
@@ -39,12 +43,16 @@ class ImageToVideoClient:
39
43
  POST /v1/image-to-video
40
44
 
41
45
  Args:
46
+ height: This field does not affect the output video's resolution. The video's orientation will match that of the input image.
47
+
48
+ It is retained solely for backward compatibility and will be deprecated in the future.
42
49
  name: The name of video
50
+ width: This field does not affect the output video's resolution. The video's orientation will match that of the input image.
51
+
52
+ It is retained solely for backward compatibility and will be deprecated in the future.
43
53
  assets: Provide the assets for image-to-video.
44
54
  end_seconds: The total duration of the output video in seconds.
45
- height: The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
46
55
  style: Attributed used to dictate the style of the output
47
- width: The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
48
56
  request_options: Additional options to customize the HTTP request
49
57
 
50
58
  Returns:
@@ -59,21 +67,21 @@ class ImageToVideoClient:
59
67
  client.v1.image_to_video.create(
60
68
  assets={"image_file_path": "api-assets/id/1234.png"},
61
69
  end_seconds=5.0,
62
- height=960,
63
70
  style={"prompt": "a dog running"},
64
- width=512,
71
+ height=960,
65
72
  name="Image To Video video",
73
+ width=512,
66
74
  )
67
75
  ```
68
76
  """
69
77
  _json = to_encodable(
70
78
  item={
79
+ "height": height,
71
80
  "name": name,
81
+ "width": width,
72
82
  "assets": assets,
73
83
  "end_seconds": end_seconds,
74
- "height": height,
75
84
  "style": style,
76
- "width": width,
77
85
  },
78
86
  dump_with=params._SerializerV1ImageToVideoCreateBody,
79
87
  )
@@ -96,12 +104,16 @@ class AsyncImageToVideoClient:
96
104
  *,
97
105
  assets: params.V1ImageToVideoCreateBodyAssets,
98
106
  end_seconds: float,
99
- height: int,
100
107
  style: params.V1ImageToVideoCreateBodyStyle,
101
- width: int,
108
+ height: typing.Union[
109
+ typing.Optional[int], type_utils.NotGiven
110
+ ] = type_utils.NOT_GIVEN,
102
111
  name: typing.Union[
103
112
  typing.Optional[str], type_utils.NotGiven
104
113
  ] = type_utils.NOT_GIVEN,
114
+ width: typing.Union[
115
+ typing.Optional[int], type_utils.NotGiven
116
+ ] = type_utils.NOT_GIVEN,
105
117
  request_options: typing.Optional[RequestOptions] = None,
106
118
  ) -> models.V1ImageToVideoCreateResponse:
107
119
  """
@@ -115,12 +127,16 @@ class AsyncImageToVideoClient:
115
127
  POST /v1/image-to-video
116
128
 
117
129
  Args:
130
+ height: This field does not affect the output video's resolution. The video's orientation will match that of the input image.
131
+
132
+ It is retained solely for backward compatibility and will be deprecated in the future.
118
133
  name: The name of video
134
+ width: This field does not affect the output video's resolution. The video's orientation will match that of the input image.
135
+
136
+ It is retained solely for backward compatibility and will be deprecated in the future.
119
137
  assets: Provide the assets for image-to-video.
120
138
  end_seconds: The total duration of the output video in seconds.
121
- height: The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
122
139
  style: Attributed used to dictate the style of the output
123
- width: The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
124
140
  request_options: Additional options to customize the HTTP request
125
141
 
126
142
  Returns:
@@ -135,21 +151,21 @@ class AsyncImageToVideoClient:
135
151
  await client.v1.image_to_video.create(
136
152
  assets={"image_file_path": "api-assets/id/1234.png"},
137
153
  end_seconds=5.0,
138
- height=960,
139
154
  style={"prompt": "a dog running"},
140
- width=512,
155
+ height=960,
141
156
  name="Image To Video video",
157
+ width=512,
142
158
  )
143
159
  ```
144
160
  """
145
161
  _json = to_encodable(
146
162
  item={
163
+ "height": height,
147
164
  "name": name,
165
+ "width": width,
148
166
  "assets": assets,
149
167
  "end_seconds": end_seconds,
150
- "height": height,
151
168
  "style": style,
152
- "width": width,
153
169
  },
154
170
  dump_with=params._SerializerV1ImageToVideoCreateBody,
155
171
  )
@@ -0,0 +1,31 @@
1
+
2
+ ### create <a name="create"></a>
3
+ Photo Colorizer
4
+
5
+ Colorize image. Each image costs 5 frames.
6
+
7
+ **API Endpoint**: `POST /v1/photo-colorizer`
8
+
9
+ #### Synchronous Client
10
+
11
+ ```python
12
+ from magic_hour import Client
13
+ from os import getenv
14
+
15
+ client = Client(token=getenv("API_TOKEN"))
16
+ res = client.v1.photo_colorizer.create(
17
+ assets={"image_file_path": "api-assets/id/1234.png"}, name="Photo Colorizer image"
18
+ )
19
+ ```
20
+
21
+ #### Asynchronous Client
22
+
23
+ ```python
24
+ from magic_hour import AsyncClient
25
+ from os import getenv
26
+
27
+ client = AsyncClient(token=getenv("API_TOKEN"))
28
+ res = await client.v1.photo_colorizer.create(
29
+ assets={"image_file_path": "api-assets/id/1234.png"}, name="Photo Colorizer image"
30
+ )
31
+ ```
@@ -0,0 +1,4 @@
1
+ from .client import AsyncPhotoColorizerClient, PhotoColorizerClient
2
+
3
+
4
+ __all__ = ["AsyncPhotoColorizerClient", "PhotoColorizerClient"]
@@ -0,0 +1,119 @@
1
+ import typing
2
+
3
+ from magic_hour.core import (
4
+ AsyncBaseClient,
5
+ RequestOptions,
6
+ SyncBaseClient,
7
+ default_request_options,
8
+ to_encodable,
9
+ type_utils,
10
+ )
11
+ from magic_hour.types import models, params
12
+
13
+
14
+ class PhotoColorizerClient:
15
+ def __init__(self, *, base_client: SyncBaseClient):
16
+ self._base_client = base_client
17
+
18
+ def create(
19
+ self,
20
+ *,
21
+ assets: params.V1PhotoColorizerCreateBodyAssets,
22
+ name: typing.Union[
23
+ typing.Optional[str], type_utils.NotGiven
24
+ ] = type_utils.NOT_GIVEN,
25
+ request_options: typing.Optional[RequestOptions] = None,
26
+ ) -> models.V1PhotoColorizerCreateResponse:
27
+ """
28
+ Photo Colorizer
29
+
30
+ Colorize image. Each image costs 5 frames.
31
+
32
+ POST /v1/photo-colorizer
33
+
34
+ Args:
35
+ name: The name of image
36
+ assets: Provide the assets for photo colorization
37
+ request_options: Additional options to customize the HTTP request
38
+
39
+ Returns:
40
+ Success
41
+
42
+ Raises:
43
+ ApiError: A custom exception class that provides additional context
44
+ for API errors, including the HTTP status code and response body.
45
+
46
+ Examples:
47
+ ```py
48
+ client.v1.photo_colorizer.create(
49
+ assets={"image_file_path": "api-assets/id/1234.png"},
50
+ name="Photo Colorizer image",
51
+ )
52
+ ```
53
+ """
54
+ _json = to_encodable(
55
+ item={"name": name, "assets": assets},
56
+ dump_with=params._SerializerV1PhotoColorizerCreateBody,
57
+ )
58
+ return self._base_client.request(
59
+ method="POST",
60
+ path="/v1/photo-colorizer",
61
+ auth_names=["bearerAuth"],
62
+ json=_json,
63
+ cast_to=models.V1PhotoColorizerCreateResponse,
64
+ request_options=request_options or default_request_options(),
65
+ )
66
+
67
+
68
+ class AsyncPhotoColorizerClient:
69
+ def __init__(self, *, base_client: AsyncBaseClient):
70
+ self._base_client = base_client
71
+
72
+ async def create(
73
+ self,
74
+ *,
75
+ assets: params.V1PhotoColorizerCreateBodyAssets,
76
+ name: typing.Union[
77
+ typing.Optional[str], type_utils.NotGiven
78
+ ] = type_utils.NOT_GIVEN,
79
+ request_options: typing.Optional[RequestOptions] = None,
80
+ ) -> models.V1PhotoColorizerCreateResponse:
81
+ """
82
+ Photo Colorizer
83
+
84
+ Colorize image. Each image costs 5 frames.
85
+
86
+ POST /v1/photo-colorizer
87
+
88
+ Args:
89
+ name: The name of image
90
+ assets: Provide the assets for photo colorization
91
+ request_options: Additional options to customize the HTTP request
92
+
93
+ Returns:
94
+ Success
95
+
96
+ Raises:
97
+ ApiError: A custom exception class that provides additional context
98
+ for API errors, including the HTTP status code and response body.
99
+
100
+ Examples:
101
+ ```py
102
+ await client.v1.photo_colorizer.create(
103
+ assets={"image_file_path": "api-assets/id/1234.png"},
104
+ name="Photo Colorizer image",
105
+ )
106
+ ```
107
+ """
108
+ _json = to_encodable(
109
+ item={"name": name, "assets": assets},
110
+ dump_with=params._SerializerV1PhotoColorizerCreateBody,
111
+ )
112
+ return await self._base_client.request(
113
+ method="POST",
114
+ path="/v1/photo-colorizer",
115
+ auth_names=["bearerAuth"],
116
+ json=_json,
117
+ cast_to=models.V1PhotoColorizerCreateResponse,
118
+ request_options=request_options or default_request_options(),
119
+ )
@@ -26,6 +26,7 @@ from .v1_image_projects_get_response_downloads_item import (
26
26
  from .v1_image_projects_get_response_error import V1ImageProjectsGetResponseError
27
27
  from .v1_image_to_video_create_response import V1ImageToVideoCreateResponse
28
28
  from .v1_lip_sync_create_response import V1LipSyncCreateResponse
29
+ from .v1_photo_colorizer_create_response import V1PhotoColorizerCreateResponse
29
30
  from .v1_text_to_video_create_response import V1TextToVideoCreateResponse
30
31
  from .v1_video_projects_get_response import V1VideoProjectsGetResponse
31
32
  from .v1_video_projects_get_response_download import V1VideoProjectsGetResponseDownload
@@ -57,6 +58,7 @@ __all__ = [
57
58
  "V1ImageProjectsGetResponseError",
58
59
  "V1ImageToVideoCreateResponse",
59
60
  "V1LipSyncCreateResponse",
61
+ "V1PhotoColorizerCreateResponse",
60
62
  "V1TextToVideoCreateResponse",
61
63
  "V1VideoProjectsGetResponse",
62
64
  "V1VideoProjectsGetResponseDownload",
@@ -0,0 +1,25 @@
1
+ import pydantic
2
+
3
+
4
+ class V1PhotoColorizerCreateResponse(pydantic.BaseModel):
5
+ """
6
+ Success
7
+ """
8
+
9
+ model_config = pydantic.ConfigDict(
10
+ arbitrary_types_allowed=True,
11
+ populate_by_name=True,
12
+ )
13
+
14
+ frame_cost: int = pydantic.Field(
15
+ alias="frame_cost",
16
+ )
17
+ """
18
+ The frame cost of the image generation
19
+ """
20
+ id: str = pydantic.Field(
21
+ alias="id",
22
+ )
23
+ """
24
+ Unique ID of the image. This value can be used in the [get image project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch additional details such as status
25
+ """
@@ -147,6 +147,14 @@ from .v1_lip_sync_create_body_assets import (
147
147
  V1LipSyncCreateBodyAssets,
148
148
  _SerializerV1LipSyncCreateBodyAssets,
149
149
  )
150
+ from .v1_photo_colorizer_create_body import (
151
+ V1PhotoColorizerCreateBody,
152
+ _SerializerV1PhotoColorizerCreateBody,
153
+ )
154
+ from .v1_photo_colorizer_create_body_assets import (
155
+ V1PhotoColorizerCreateBodyAssets,
156
+ _SerializerV1PhotoColorizerCreateBodyAssets,
157
+ )
150
158
  from .v1_text_to_video_create_body import (
151
159
  V1TextToVideoCreateBody,
152
160
  _SerializerV1TextToVideoCreateBody,
@@ -208,6 +216,8 @@ __all__ = [
208
216
  "V1ImageToVideoCreateBodyStyle",
209
217
  "V1LipSyncCreateBody",
210
218
  "V1LipSyncCreateBodyAssets",
219
+ "V1PhotoColorizerCreateBody",
220
+ "V1PhotoColorizerCreateBodyAssets",
211
221
  "V1TextToVideoCreateBody",
212
222
  "V1TextToVideoCreateBodyStyle",
213
223
  "V1VideoToVideoCreateBody",
@@ -251,6 +261,8 @@ __all__ = [
251
261
  "_SerializerV1ImageToVideoCreateBodyStyle",
252
262
  "_SerializerV1LipSyncCreateBody",
253
263
  "_SerializerV1LipSyncCreateBodyAssets",
264
+ "_SerializerV1PhotoColorizerCreateBody",
265
+ "_SerializerV1PhotoColorizerCreateBodyAssets",
254
266
  "_SerializerV1TextToVideoCreateBody",
255
267
  "_SerializerV1TextToVideoCreateBodyStyle",
256
268
  "_SerializerV1VideoToVideoCreateBody",
@@ -27,9 +27,11 @@ class V1ImageToVideoCreateBody(typing_extensions.TypedDict):
27
27
  The total duration of the output video in seconds.
28
28
  """
29
29
 
30
- height: typing_extensions.Required[int]
30
+ height: typing_extensions.NotRequired[int]
31
31
  """
32
- The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
32
+ This field does not affect the output video's resolution. The video's orientation will match that of the input image.
33
+
34
+ It is retained solely for backward compatibility and will be deprecated in the future.
33
35
  """
34
36
 
35
37
  name: typing_extensions.NotRequired[str]
@@ -42,9 +44,11 @@ class V1ImageToVideoCreateBody(typing_extensions.TypedDict):
42
44
  Attributed used to dictate the style of the output
43
45
  """
44
46
 
45
- width: typing_extensions.Required[int]
47
+ width: typing_extensions.NotRequired[int]
46
48
  """
47
- The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
49
+ This field does not affect the output video's resolution. The video's orientation will match that of the input image.
50
+
51
+ It is retained solely for backward compatibility and will be deprecated in the future.
48
52
  """
49
53
 
50
54
 
@@ -64,13 +68,9 @@ class _SerializerV1ImageToVideoCreateBody(pydantic.BaseModel):
64
68
  end_seconds: float = pydantic.Field(
65
69
  alias="end_seconds",
66
70
  )
67
- height: int = pydantic.Field(
68
- alias="height",
69
- )
71
+ height: typing.Optional[int] = pydantic.Field(alias="height", default=None)
70
72
  name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
71
73
  style: _SerializerV1ImageToVideoCreateBodyStyle = pydantic.Field(
72
74
  alias="style",
73
75
  )
74
- width: int = pydantic.Field(
75
- alias="width",
76
- )
76
+ width: typing.Optional[int] = pydantic.Field(alias="width", default=None)
@@ -0,0 +1,40 @@
1
+ import pydantic
2
+ import typing
3
+ import typing_extensions
4
+
5
+ from .v1_photo_colorizer_create_body_assets import (
6
+ V1PhotoColorizerCreateBodyAssets,
7
+ _SerializerV1PhotoColorizerCreateBodyAssets,
8
+ )
9
+
10
+
11
+ class V1PhotoColorizerCreateBody(typing_extensions.TypedDict):
12
+ """
13
+ V1PhotoColorizerCreateBody
14
+ """
15
+
16
+ assets: typing_extensions.Required[V1PhotoColorizerCreateBodyAssets]
17
+ """
18
+ Provide the assets for photo colorization
19
+ """
20
+
21
+ name: typing_extensions.NotRequired[str]
22
+ """
23
+ The name of image
24
+ """
25
+
26
+
27
+ class _SerializerV1PhotoColorizerCreateBody(pydantic.BaseModel):
28
+ """
29
+ Serializer for V1PhotoColorizerCreateBody handling case conversions
30
+ and file omissions as dictated by the API
31
+ """
32
+
33
+ model_config = pydantic.ConfigDict(
34
+ populate_by_name=True,
35
+ )
36
+
37
+ assets: _SerializerV1PhotoColorizerCreateBodyAssets = pydantic.Field(
38
+ alias="assets",
39
+ )
40
+ name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
@@ -0,0 +1,28 @@
1
+ import pydantic
2
+ import typing_extensions
3
+
4
+
5
+ class V1PhotoColorizerCreateBodyAssets(typing_extensions.TypedDict):
6
+ """
7
+ Provide the assets for photo colorization
8
+ """
9
+
10
+ image_file_path: typing_extensions.Required[str]
11
+ """
12
+ The image used to generate the colorized image. This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
+ """
14
+
15
+
16
+ class _SerializerV1PhotoColorizerCreateBodyAssets(pydantic.BaseModel):
17
+ """
18
+ Serializer for V1PhotoColorizerCreateBodyAssets handling case conversions
19
+ and file omissions as dictated by the API
20
+ """
21
+
22
+ model_config = pydantic.ConfigDict(
23
+ populate_by_name=True,
24
+ )
25
+
26
+ image_file_path: str = pydantic.Field(
27
+ alias="image_file_path",
28
+ )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "magic_hour"
3
- version = "0.16.1"
3
+ version = "0.18.0"
4
4
  description = "Python SDK for Magic Hour API"
5
5
  readme = "README.md"
6
6
  authors = []
File without changes
@@ -19,10 +19,10 @@ client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.image_to_video.create(
20
20
  assets={"image_file_path": "api-assets/id/1234.png"},
21
21
  end_seconds=5.0,
22
- height=960,
23
22
  style={"prompt": "a dog running"},
24
- width=512,
23
+ height=960,
25
24
  name="Image To Video video",
25
+ width=512,
26
26
  )
27
27
  ```
28
28
 
@@ -36,9 +36,9 @@ client = AsyncClient(token=getenv("API_TOKEN"))
36
36
  res = await client.v1.image_to_video.create(
37
37
  assets={"image_file_path": "api-assets/id/1234.png"},
38
38
  end_seconds=5.0,
39
- height=960,
40
39
  style={"prompt": "a dog running"},
41
- width=512,
40
+ height=960,
42
41
  name="Image To Video video",
42
+ width=512,
43
43
  )
44
44
  ```