magic_hour 0.27.0__py3-none-any.whl → 0.29.0__py3-none-any.whl

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.

magic_hour/environment.py CHANGED
@@ -6,7 +6,7 @@ class Environment(enum.Enum):
6
6
  """Pre-defined base URLs for the API"""
7
7
 
8
8
  ENVIRONMENT = "https://api.magichour.ai"
9
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.27.0"
9
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.29.0"
10
10
 
11
11
 
12
12
  def _get_base_url(
@@ -10,8 +10,8 @@ Create a talking photo from an image and audio or text input.
10
10
  | Parameter | Required | Description | Example |
11
11
  |-----------|:--------:|-------------|--------|
12
12
  | `assets` | ✓ | Provide the assets for creating a talking photo | `{"audio_file_path": "api-assets/id/1234.mp3", "image_file_path": "api-assets/id/1234.png"}` |
13
- | `end_seconds` | ✓ | The end time of the input audio in seconds. The maximum duration allowed is 30 seconds. | `15.0` |
14
- | `start_seconds` | ✓ | The start time of the input audio in seconds. The maximum duration allowed is 30 seconds. | `0.0` |
13
+ | `end_seconds` | ✓ | The end time of the input audio in seconds. The maximum duration allowed is 60 seconds. | `15.0` |
14
+ | `start_seconds` | ✓ | The start time of the input audio in seconds. The maximum duration allowed is 60 seconds. | `0.0` |
15
15
  | `name` | ✗ | The name of image | `"Talking Photo image"` |
16
16
  | `style` | ✗ | Attributes used to dictate the style of the output | `{"generation_mode": "expressive", "intensity": 1.5}` |
17
17
 
@@ -40,8 +40,8 @@ class AiTalkingPhotoClient:
40
40
  name: The name of image
41
41
  style: Attributes used to dictate the style of the output
42
42
  assets: Provide the assets for creating a talking photo
43
- end_seconds: The end time of the input audio in seconds. The maximum duration allowed is 30 seconds.
44
- start_seconds: The start time of the input audio in seconds. The maximum duration allowed is 30 seconds.
43
+ end_seconds: The end time of the input audio in seconds. The maximum duration allowed is 60 seconds.
44
+ start_seconds: The start time of the input audio in seconds. The maximum duration allowed is 60 seconds.
45
45
  request_options: Additional options to customize the HTTP request
46
46
 
47
47
  Returns:
@@ -113,8 +113,8 @@ class AsyncAiTalkingPhotoClient:
113
113
  name: The name of image
114
114
  style: Attributes used to dictate the style of the output
115
115
  assets: Provide the assets for creating a talking photo
116
- end_seconds: The end time of the input audio in seconds. The maximum duration allowed is 30 seconds.
117
- start_seconds: The start time of the input audio in seconds. The maximum duration allowed is 30 seconds.
116
+ end_seconds: The end time of the input audio in seconds. The maximum duration allowed is 60 seconds.
117
+ start_seconds: The start time of the input audio in seconds. The maximum duration allowed is 60 seconds.
118
118
  request_options: Additional options to customize the HTTP request
119
119
 
120
120
  Returns:
@@ -9,7 +9,7 @@ Create a face swap photo. Each photo costs 5 credits. The height/width of the ou
9
9
 
10
10
  | Parameter | Required | Description | Example |
11
11
  |-----------|:--------:|-------------|--------|
12
- | `assets` | ✓ | Provide the assets for face swap photo | `{"source_file_path": "api-assets/id/1234.png", "target_file_path": "api-assets/id/1234.png"}` |
12
+ | `assets` | ✓ | Provide the assets for face swap photo | `{"face_mappings": [{"new_face": "api-assets/id/1234.png", "original_face": "api-assets/id/0-0.png"}], "face_swap_mode": "all-faces", "source_file_path": "api-assets/id/1234.png", "target_file_path": "api-assets/id/1234.png"}` |
13
13
  | `name` | ✗ | The name of image | `"Face Swap image"` |
14
14
 
15
15
  #### Synchronous Client
@@ -21,6 +21,13 @@ from os import getenv
21
21
  client = Client(token=getenv("API_TOKEN"))
22
22
  res = client.v1.face_swap_photo.create(
23
23
  assets={
24
+ "face_mappings": [
25
+ {
26
+ "new_face": "api-assets/id/1234.png",
27
+ "original_face": "api-assets/id/0-0.png",
28
+ }
29
+ ],
30
+ "face_swap_mode": "all-faces",
24
31
  "source_file_path": "api-assets/id/1234.png",
25
32
  "target_file_path": "api-assets/id/1234.png",
26
33
  },
@@ -38,6 +45,13 @@ from os import getenv
38
45
  client = AsyncClient(token=getenv("API_TOKEN"))
39
46
  res = await client.v1.face_swap_photo.create(
40
47
  assets={
48
+ "face_mappings": [
49
+ {
50
+ "new_face": "api-assets/id/1234.png",
51
+ "original_face": "api-assets/id/0-0.png",
52
+ }
53
+ ],
54
+ "face_swap_mode": "all-faces",
41
55
  "source_file_path": "api-assets/id/1234.png",
42
56
  "target_file_path": "api-assets/id/1234.png",
43
57
  },
@@ -47,6 +47,13 @@ class FaceSwapPhotoClient:
47
47
  ```py
48
48
  client.v1.face_swap_photo.create(
49
49
  assets={
50
+ "face_mappings": [
51
+ {
52
+ "new_face": "api-assets/id/1234.png",
53
+ "original_face": "api-assets/id/0-0.png",
54
+ }
55
+ ],
56
+ "face_swap_mode": "all-faces",
50
57
  "source_file_path": "api-assets/id/1234.png",
51
58
  "target_file_path": "api-assets/id/1234.png",
52
59
  },
@@ -104,6 +111,13 @@ class AsyncFaceSwapPhotoClient:
104
111
  ```py
105
112
  await client.v1.face_swap_photo.create(
106
113
  assets={
114
+ "face_mappings": [
115
+ {
116
+ "new_face": "api-assets/id/1234.png",
117
+ "original_face": "api-assets/id/0-0.png",
118
+ }
119
+ ],
120
+ "face_swap_mode": "all-faces",
107
121
  "source_file_path": "api-assets/id/1234.png",
108
122
  "target_file_path": "api-assets/id/1234.png",
109
123
  },
@@ -154,6 +154,10 @@ from .v1_face_swap_photo_create_body_assets import (
154
154
  V1FaceSwapPhotoCreateBodyAssets,
155
155
  _SerializerV1FaceSwapPhotoCreateBodyAssets,
156
156
  )
157
+ from .v1_face_swap_photo_create_body_assets_face_mappings_item import (
158
+ V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem,
159
+ _SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem,
160
+ )
157
161
  from .v1_files_upload_urls_create_body import (
158
162
  V1FilesUploadUrlsCreateBody,
159
163
  _SerializerV1FilesUploadUrlsCreateBody,
@@ -257,6 +261,7 @@ __all__ = [
257
261
  "V1FaceSwapCreateBodyAssets",
258
262
  "V1FaceSwapPhotoCreateBody",
259
263
  "V1FaceSwapPhotoCreateBodyAssets",
264
+ "V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
260
265
  "V1FilesUploadUrlsCreateBody",
261
266
  "V1FilesUploadUrlsCreateBodyItemsItem",
262
267
  "V1ImageBackgroundRemoverCreateBody",
@@ -312,6 +317,7 @@ __all__ = [
312
317
  "_SerializerV1FaceSwapCreateBodyAssets",
313
318
  "_SerializerV1FaceSwapPhotoCreateBody",
314
319
  "_SerializerV1FaceSwapPhotoCreateBodyAssets",
320
+ "_SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
315
321
  "_SerializerV1FilesUploadUrlsCreateBody",
316
322
  "_SerializerV1FilesUploadUrlsCreateBodyItemsItem",
317
323
  "_SerializerV1ImageBackgroundRemoverCreateBody",
@@ -24,7 +24,7 @@ class V1AiTalkingPhotoCreateBody(typing_extensions.TypedDict):
24
24
 
25
25
  end_seconds: typing_extensions.Required[float]
26
26
  """
27
- The end time of the input audio in seconds. The maximum duration allowed is 30 seconds.
27
+ The end time of the input audio in seconds. The maximum duration allowed is 60 seconds.
28
28
  """
29
29
 
30
30
  name: typing_extensions.NotRequired[str]
@@ -34,7 +34,7 @@ class V1AiTalkingPhotoCreateBody(typing_extensions.TypedDict):
34
34
 
35
35
  start_seconds: typing_extensions.Required[float]
36
36
  """
37
- The start time of the input audio in seconds. The maximum duration allowed is 30 seconds.
37
+ The start time of the input audio in seconds. The maximum duration allowed is 60 seconds.
38
38
  """
39
39
 
40
40
  style: typing_extensions.NotRequired[V1AiTalkingPhotoCreateBodyStyle]
@@ -1,15 +1,39 @@
1
1
  import pydantic
2
+ import typing
2
3
  import typing_extensions
3
4
 
5
+ from .v1_face_swap_photo_create_body_assets_face_mappings_item import (
6
+ V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem,
7
+ _SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem,
8
+ )
9
+
4
10
 
5
11
  class V1FaceSwapPhotoCreateBodyAssets(typing_extensions.TypedDict):
6
12
  """
7
13
  Provide the assets for face swap photo
8
14
  """
9
15
 
10
- source_file_path: typing_extensions.Required[str]
16
+ face_mappings: typing_extensions.NotRequired[
17
+ typing.List[V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem]
18
+ ]
19
+ """
20
+ This is the array of face mappings used for multiple face swap. The value is required if `face_swap_mode` is `individual-faces`.
21
+ """
22
+
23
+ face_swap_mode: typing_extensions.NotRequired[
24
+ typing_extensions.Literal["all-faces", "individual-faces"]
25
+ ]
26
+ """
27
+ The mode of face swap.
28
+ * `all-faces` - Swap all faces in the target image. `source_file_path` is required.
29
+ * `individual-faces` - Swap individual faces in the target image. `source_faces` is required.
30
+ """
31
+
32
+ source_file_path: typing_extensions.NotRequired[str]
11
33
  """
12
- This is the image from which the face is extracted. 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.
34
+ This is the image from which the face is extracted. The value is required if `face_swap_mode` is `all-faces`.
35
+
36
+ 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
37
  """
14
38
 
15
39
  target_file_path: typing_extensions.Required[str]
@@ -28,8 +52,14 @@ class _SerializerV1FaceSwapPhotoCreateBodyAssets(pydantic.BaseModel):
28
52
  populate_by_name=True,
29
53
  )
30
54
 
31
- source_file_path: str = pydantic.Field(
32
- alias="source_file_path",
55
+ face_mappings: typing.Optional[
56
+ typing.List[_SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem]
57
+ ] = pydantic.Field(alias="face_mappings", default=None)
58
+ face_swap_mode: typing.Optional[
59
+ typing_extensions.Literal["all-faces", "individual-faces"]
60
+ ] = pydantic.Field(alias="face_swap_mode", default=None)
61
+ source_file_path: typing.Optional[str] = pydantic.Field(
62
+ alias="source_file_path", default=None
33
63
  )
34
64
  target_file_path: str = pydantic.Field(
35
65
  alias="target_file_path",
@@ -0,0 +1,39 @@
1
+ import pydantic
2
+ import typing_extensions
3
+
4
+
5
+ class V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem(typing_extensions.TypedDict):
6
+ """
7
+ V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem
8
+ """
9
+
10
+ new_face: typing_extensions.Required[str]
11
+ """
12
+ The face image that will be used to replace the face in the `original_face`. 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
+ original_face: typing_extensions.Required[str]
16
+ """
17
+ The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the face detection API [COMING SOON].
18
+
19
+ * The face_frame is the frame number of the face in the target image. For images, the frame number is always 0.
20
+ * The face_index is the index of the face in the target image, starting from 0 going left to right.
21
+ """
22
+
23
+
24
+ class _SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem(pydantic.BaseModel):
25
+ """
26
+ Serializer for V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem handling case conversions
27
+ and file omissions as dictated by the API
28
+ """
29
+
30
+ model_config = pydantic.ConfigDict(
31
+ populate_by_name=True,
32
+ )
33
+
34
+ new_face: str = pydantic.Field(
35
+ alias="new_face",
36
+ )
37
+ original_face: str = pydantic.Field(
38
+ alias="original_face",
39
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.27.0
3
+ Version: 0.29.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
@@ -10,7 +10,7 @@ magic_hour/core/request.py,sha256=_ikn8iZ2fU9Ubqnt7M9hdEnXGV6AAFHJYmDKBtxEY4I,52
10
10
  magic_hour/core/response.py,sha256=Sl7nPL2axmz7em_6d9TkFSnQQKUpalWaVWbPPWoXJgM,10180
11
11
  magic_hour/core/type_utils.py,sha256=4bU9WXnMXJ6YTtuqOMiB8t6Xw0RlfVWJ-IDBONlqEtQ,461
12
12
  magic_hour/core/utils.py,sha256=34SiC1vw2A0TkYHONgMA_d09soIIYiiBWRXCZGdwGIk,1669
13
- magic_hour/environment.py,sha256=nDuJaqUs8aPAtnp7_Ybc_0rk7mKYOshyh2L1GIDolpY,535
13
+ magic_hour/environment.py,sha256=mxZ7QLQF8sbaorhkKKGLAx1spIr-FZckYu_7axRgU9s,535
14
14
  magic_hour/resources/v1/__init__.py,sha256=Aj0sjVcoijjQyieNBxv2_uewPYC2vO2UG-ehoBgCz5E,86
15
15
  magic_hour/resources/v1/ai_clothes_changer/README.md,sha256=x9cVTx9nHsyIutYjoUk1DeJg55cti6DAN_C-kBI_47Q,1564
16
16
  magic_hour/resources/v1/ai_clothes_changer/__init__.py,sha256=6W_Y2HxG2sDOBiJyzngK3Q2S3xfQgpK-j8xFRmBAhbQ,142
@@ -42,9 +42,9 @@ magic_hour/resources/v1/ai_photo_editor/client.py,sha256=EAh-urQN2XWHTO1WLLYhXgo
42
42
  magic_hour/resources/v1/ai_qr_code_generator/README.md,sha256=_CtKUro8XEdH_pALqG_F8UOXQ31EiVZ-_1iHQ04om64,1258
43
43
  magic_hour/resources/v1/ai_qr_code_generator/__init__.py,sha256=HnSTg7tB8M5LibZoCDRdE5Q71efmiqZIkNEve5SO1Mg,146
44
44
  magic_hour/resources/v1/ai_qr_code_generator/client.py,sha256=mmdGgUSVoMTazmGiB24mc2sXsfaAtx-Fbgcu_SncW-Q,3851
45
- magic_hour/resources/v1/ai_talking_photo/README.md,sha256=knbnvza-eKY5HdruLTs1FOXYOMpsnpkchySez0bJF_o,1886
45
+ magic_hour/resources/v1/ai_talking_photo/README.md,sha256=82qVtvtda_w_HhWWrYnkzzXgfe-IqUzaAYgujkpCEYg,1886
46
46
  magic_hour/resources/v1/ai_talking_photo/__init__.py,sha256=ZTDD_IRBoR7GSdGWCVEK2-LOEsKUdGEHZZvDHa9MOnA,134
47
- magic_hour/resources/v1/ai_talking_photo/client.py,sha256=Y4p5HAlbCAe2NNqekdllSZ0jRhzwCcjAIHO0zlqxi3Q,5311
47
+ magic_hour/resources/v1/ai_talking_photo/client.py,sha256=RXFOYza_YoymqiQ2BBmCQiF_JqD1dxO2OyA8BYyue_Q,5311
48
48
  magic_hour/resources/v1/animation/README.md,sha256=mCsyVlyEbffbtClSETSEMvdYksORQF_-_J5-VpoQvCI,2784
49
49
  magic_hour/resources/v1/animation/__init__.py,sha256=M6KUe6TEZl_DAdyn1HFQ2kHYanZo6xy3mvUdCN264hQ,114
50
50
  magic_hour/resources/v1/animation/client.py,sha256=YYjggl_hszTW-Sn9SFs3m7bz7PvtRTruhHSSnrkkD9c,6401
@@ -55,9 +55,9 @@ magic_hour/resources/v1/client.py,sha256=FCY0SI1tYEK8hs3JbSdQuMODC5n0uLoteFh4oLa
55
55
  magic_hour/resources/v1/face_swap/README.md,sha256=-bENF57lpZQu55C1psxKc45Ev1kMcD8GYWXGxa9hbzU,3334
56
56
  magic_hour/resources/v1/face_swap/__init__.py,sha256=lyg5uAHyYHEUVAiAZtP3zwjGCEGqq8IWbQKexVdhr00,110
57
57
  magic_hour/resources/v1/face_swap/client.py,sha256=-BpJae7J4PZPUG45BMA3HBB2XhrbHpgWqwwyaDFH88A,8519
58
- magic_hour/resources/v1/face_swap_photo/README.md,sha256=FQhlyJoVRrUOQvpcpdibvOKEcxAWCOa92ONOVy6DcPU,1506
58
+ magic_hour/resources/v1/face_swap_photo/README.md,sha256=bjPkF7J9ThR5nrOrl6jPD1ZvMDgCtjFoeKUvXXvg_-Y,2072
59
59
  magic_hour/resources/v1/face_swap_photo/__init__.py,sha256=NZEplYX5kDPL_0qY0Q5tuxhDevipN0otByTYKMmF_1k,130
60
- magic_hour/resources/v1/face_swap_photo/client.py,sha256=edftw7OkiGoF8Lyamn4XXgooJJnLEvGnzhk7TUxZbP4,4029
60
+ magic_hour/resources/v1/face_swap_photo/client.py,sha256=NfAG4YbOHP4k88p6WndEMw_pO4XHNI3tDEBJgb7Csdo,4575
61
61
  magic_hour/resources/v1/files/__init__.py,sha256=ucXmaXDdZqXfRhnnioJeQAXeRLzBDb44gTfWijrub28,98
62
62
  magic_hour/resources/v1/files/client.py,sha256=kJ636UbY_XZENwpqIKdz_2bxnr1P7TK9SDj_epNnItw,562
63
63
  magic_hour/resources/v1/files/upload_urls/README.md,sha256=iTF6QEbODlTPzszTZeQv681xG4XEJOIGPsgZSUlQLNg,2215
@@ -118,7 +118,7 @@ magic_hour/types/models/v1_video_projects_get_response_download.py,sha256=nudDCN
118
118
  magic_hour/types/models/v1_video_projects_get_response_downloads_item.py,sha256=DlUuLBSGa7jWoozxferkaOsGc4jASItcjjWbBXGu620,410
119
119
  magic_hour/types/models/v1_video_projects_get_response_error.py,sha256=49QxnXAmYHcvSWuuhbQZeGlUfqVcO4YwZ414GczQnvA,568
120
120
  magic_hour/types/models/v1_video_to_video_create_response.py,sha256=HCquU2Dciu6jCvhlpce8sGg1CypZngvtrvkwyCWOkSY,1346
121
- magic_hour/types/params/__init__.py,sha256=cwbeO89Vtr-Sl5e0g3H63AAynR4g8f_XwgY5oeg2CCk,12214
121
+ magic_hour/types/params/__init__.py,sha256=TJKYYVhnhDCTzxv1G6bPtLeH0HTpIniCpIRBxATf1CM,12526
122
122
  magic_hour/types/params/v1_ai_clothes_changer_create_body.py,sha256=X5koqrTxYLiKcRMqPF7r-VwQzy4r_7k81o1289zHJvo,1006
123
123
  magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py,sha256=GGnXOExxXtnHT9wQpDCEkLHQlQB5MbAbYuU47iHGf70,1509
124
124
  magic_hour/types/params/v1_ai_face_editor_create_body.py,sha256=sF7mJbqratllYwQ3slqUTctOndAYnH9BDMJu-49Db-4,1313
@@ -144,7 +144,7 @@ magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py,sha256=xoDh4VwV
144
144
  magic_hour/types/params/v1_ai_photo_editor_create_body_style.py,sha256=EGPcoSjCDffoTbY3QB-85HVJ97p9swcZkMsYdW_O2JE,2752
145
145
  magic_hour/types/params/v1_ai_qr_code_generator_create_body.py,sha256=_O1654Mbl77SGi9lH4FmKkTwtCXCArH9BeSlgTuLyT0,1109
146
146
  magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py,sha256=i3ldwmoQPEnrw654PNIARmpsX-kUHZqaT8wjcc22JoA,839
147
- magic_hour/types/params/v1_ai_talking_photo_create_body.py,sha256=D8zvwqOoNf8DlWa7EOkDNXHt2PqrGzup0uxXDYP5RCI,1915
147
+ magic_hour/types/params/v1_ai_talking_photo_create_body.py,sha256=ZJzXPVd_ymnqpG14BOrtVLHag7F-lPo-DMSoqVNvt0g,1915
148
148
  magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py,sha256=_xNq6uVb6h7TYsNGesEbpAvrGKmVgqXwVV7Hq7jyEO4,1230
149
149
  magic_hour/types/params/v1_ai_talking_photo_create_body_style.py,sha256=iXKnUrYrKC-9sRxZlthUpiqHgSSyQe0UjYNhhKRKI1Q,1434
150
150
  magic_hour/types/params/v1_animation_create_body.py,sha256=QB0zxAhNDV8BEd6vuTAUoZaF2E0PNKwfzV7OrsdueGk,2221
@@ -157,7 +157,8 @@ magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_conf
157
157
  magic_hour/types/params/v1_face_swap_create_body.py,sha256=ZLxWHSs5NHHeBxBAE-8AEgUwEpEhpYQC4fW9dkmDXxQ,2923
158
158
  magic_hour/types/params/v1_face_swap_create_body_assets.py,sha256=CYcleQ4o_YLxRjRiVRwB-L_Cr0WTjsb6417uwdT0fas,1888
159
159
  magic_hour/types/params/v1_face_swap_photo_create_body.py,sha256=OYsrz7d7i7eg28bR_YS5ucl6k_bMhmNrOt2dF7MYdM4,979
160
- magic_hour/types/params/v1_face_swap_photo_create_body_assets.py,sha256=6UV78qJPwT9fgZ-26Zfko8alO4QlN88l5u7gm82Rz60,1279
160
+ magic_hour/types/params/v1_face_swap_photo_create_body_assets.py,sha256=zf4WQtVPxAsy0kQZ1HynW19cmI8MiCLiG2D6AzuTRe4,2555
161
+ magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py,sha256=zdvKjguVS0puNA1CFUSvJwrCGPlLdfmX-FJFxnoEL4w,1499
161
162
  magic_hour/types/params/v1_files_upload_urls_create_body.py,sha256=X6-ZcUqVVTM3w_y1HjU1zvicle5h0RvTK59yK3opZ-s,841
162
163
  magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py,sha256=I26O2Jx5_uhsCOrQCL_-wPeenu0rzhNwCDy0AEI6YuQ,962
163
164
  magic_hour/types/params/v1_image_background_remover_create_body.py,sha256=l3sb8UTXjie3gMd4ZJhHik-N1o3zaVzsZ7xDaS_uTG4,1063
@@ -174,7 +175,7 @@ magic_hour/types/params/v1_text_to_video_create_body_style.py,sha256=cEZO917hipE
174
175
  magic_hour/types/params/v1_video_to_video_create_body.py,sha256=Pgok6GUVHrpW6H3rwdVFA3O5YJvjgviCZkmmHddOSWo,3802
175
176
  magic_hour/types/params/v1_video_to_video_create_body_assets.py,sha256=_-6iA5d8ndka6iJWyWvlJwzRkQcmurJE6hkg-fDwBmQ,1531
176
177
  magic_hour/types/params/v1_video_to_video_create_body_style.py,sha256=RrDBhN2KQnCf9hGsnl3sAYvuFRsxth2JXfe5la0IYJg,5749
177
- magic_hour-0.27.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
178
- magic_hour-0.27.0.dist-info/METADATA,sha256=a2PceNMJLIxt33oYo1yohkDbm4qB5smvup6KVjmDuTY,5840
179
- magic_hour-0.27.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
180
- magic_hour-0.27.0.dist-info/RECORD,,
178
+ magic_hour-0.29.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
179
+ magic_hour-0.29.0.dist-info/METADATA,sha256=jE9pI1si6PdWWx_0e-pbgf6uOVCnCLo6Gzsgk6ehuL8,5840
180
+ magic_hour-0.29.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
181
+ magic_hour-0.29.0.dist-info/RECORD,,