magic_hour 0.8.4__py3-none-any.whl → 0.9.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/client.py CHANGED
@@ -1,8 +1,8 @@
1
1
  import httpx
2
2
  import typing
3
3
 
4
- from magic_hour.environment import Environment
5
4
  from magic_hour.resources.v1 import AsyncV1Client, V1Client
5
+ from magic_hour.environment import Environment
6
6
  from magic_hour.core import AsyncBaseClient, AuthBearer, SyncBaseClient
7
7
 
8
8
 
magic_hour/environment.py CHANGED
@@ -3,4 +3,4 @@ import enum
3
3
 
4
4
  class Environment(enum.Enum):
5
5
  ENVIRONMENT = "https://api.magichour.ai"
6
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.8.4"
6
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.9.0"
@@ -19,7 +19,7 @@ client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.face_swap.create(
20
20
  assets={
21
21
  "image_file_path": "image/id/1234.png",
22
- "video_file_path": "video/id/1234.mp4",
22
+ "video_file_path": "api-assets/id/1234.mp4",
23
23
  "video_source": "file",
24
24
  },
25
25
  end_seconds=15.0,
@@ -40,7 +40,7 @@ client = AsyncClient(token=getenv("API_TOKEN"))
40
40
  res = await client.v1.face_swap.create(
41
41
  assets={
42
42
  "image_file_path": "image/id/1234.png",
43
- "video_file_path": "video/id/1234.mp4",
43
+ "video_file_path": "api-assets/id/1234.mp4",
44
44
  "video_source": "file",
45
45
  },
46
46
  end_seconds=15.0,
@@ -17,7 +17,7 @@ from os import getenv
17
17
 
18
18
  client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.image_to_video.create(
20
- assets={"image_file_path": "image/id/1234.png"},
20
+ assets={"image_file_path": "api-assets/id/1234.png"},
21
21
  end_seconds=5.0,
22
22
  height=960,
23
23
  style={"prompt": None},
@@ -34,7 +34,7 @@ from os import getenv
34
34
 
35
35
  client = AsyncClient(token=getenv("API_TOKEN"))
36
36
  res = await client.v1.image_to_video.create(
37
- assets={"image_file_path": "image/id/1234.png"},
37
+ assets={"image_file_path": "api-assets/id/1234.png"},
38
38
  end_seconds=5.0,
39
39
  height=960,
40
40
  style={"prompt": None},
@@ -57,7 +57,7 @@ class ImageToVideoClient:
57
57
  Examples:
58
58
  ```py
59
59
  client.v1.image_to_video.create(
60
- assets={"image_file_path": "image/id/1234.png"},
60
+ assets={"image_file_path": "api-assets/id/1234.png"},
61
61
  end_seconds=5.0,
62
62
  height=960,
63
63
  style={"prompt": "string"},
@@ -134,7 +134,7 @@ class AsyncImageToVideoClient:
134
134
  Examples:
135
135
  ```py
136
136
  await client.v1.image_to_video.create(
137
- assets={"image_file_path": "image/id/1234.png"},
137
+ assets={"image_file_path": "api-assets/id/1234.png"},
138
138
  end_seconds=5.0,
139
139
  height=960,
140
140
  style={"prompt": "string"},
@@ -18,8 +18,8 @@ from os import getenv
18
18
  client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.lip_sync.create(
20
20
  assets={
21
- "audio_file_path": "audio/id/1234.mp3",
22
- "video_file_path": "video/id/1234.mp4",
21
+ "audio_file_path": "api-assets/id/1234.mp3",
22
+ "video_file_path": "api-assets/id/1234.mp4",
23
23
  "video_source": "file",
24
24
  },
25
25
  end_seconds=15.0,
@@ -40,8 +40,8 @@ from os import getenv
40
40
  client = AsyncClient(token=getenv("API_TOKEN"))
41
41
  res = await client.v1.lip_sync.create(
42
42
  assets={
43
- "audio_file_path": "audio/id/1234.mp3",
44
- "video_file_path": "video/id/1234.mp4",
43
+ "audio_file_path": "api-assets/id/1234.mp3",
44
+ "video_file_path": "api-assets/id/1234.mp4",
45
45
  "video_source": "file",
46
46
  },
47
47
  end_seconds=15.0,
@@ -61,7 +61,10 @@ class LipSyncClient:
61
61
  Examples:
62
62
  ```py
63
63
  client.v1.lip_sync.create(
64
- assets={"audio_file_path": "audio/id/1234.mp3", "video_source": "file"},
64
+ assets={
65
+ "audio_file_path": "api-assets/id/1234.mp3",
66
+ "video_source": "file",
67
+ },
65
68
  end_seconds=15.0,
66
69
  height=960,
67
70
  start_seconds=0.0,
@@ -144,7 +147,10 @@ class AsyncLipSyncClient:
144
147
  Examples:
145
148
  ```py
146
149
  await client.v1.lip_sync.create(
147
- assets={"audio_file_path": "audio/id/1234.mp3", "video_source": "file"},
150
+ assets={
151
+ "audio_file_path": "api-assets/id/1234.mp3",
152
+ "video_source": "file",
153
+ },
148
154
  end_seconds=15.0,
149
155
  height=960,
150
156
  start_seconds=0.0,
@@ -17,7 +17,7 @@ from os import getenv
17
17
 
18
18
  client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.video_to_video.create(
20
- assets={"video_file_path": "video/id/1234.mp4", "video_source": "file"},
20
+ assets={"video_file_path": "api-assets/id/1234.mp4", "video_source": "file"},
21
21
  end_seconds=15.0,
22
22
  height=960,
23
23
  start_seconds=0.0,
@@ -42,7 +42,7 @@ from os import getenv
42
42
 
43
43
  client = AsyncClient(token=getenv("API_TOKEN"))
44
44
  res = await client.v1.video_to_video.create(
45
- assets={"video_file_path": "video/id/1234.mp4", "video_source": "file"},
45
+ assets={"video_file_path": "api-assets/id/1234.mp4", "video_source": "file"},
46
46
  end_seconds=15.0,
47
47
  height=960,
48
48
  start_seconds=0.0,
@@ -15,7 +15,7 @@ class PostV1FaceSwapBodyAssets(typing_extensions.TypedDict):
15
15
 
16
16
  video_file_path: typing_extensions.NotRequired[str]
17
17
  """
18
- The path of the input video. This is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls). This field is required if `video_source` is `file`
18
+ The path of the input video. This field is required if `video_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls), or the url of the file.
19
19
  """
20
20
 
21
21
  video_source: typing_extensions.Required[
@@ -9,7 +9,7 @@ class PostV1ImageToVideoBodyAssets(typing_extensions.TypedDict):
9
9
 
10
10
  image_file_path: typing_extensions.Required[str]
11
11
  """
12
- The path of the image file. This is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls)
12
+ The path of the image file. This value can be either the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls), or the url of the file.
13
13
  """
14
14
 
15
15
 
@@ -8,6 +8,11 @@ class PostV1ImageToVideoBodyStyle(typing_extensions.TypedDict):
8
8
  PostV1ImageToVideoBodyStyle
9
9
  """
10
10
 
11
+ high_quality: typing_extensions.NotRequired[bool]
12
+ """
13
+ High Quality mode enhances detail, sharpness, and realism, making it ideal for portraits, animals, and intricate landscapes.
14
+ """
15
+
11
16
  prompt: typing_extensions.Required[typing.Optional[str]]
12
17
  """
13
18
  The prompt used for the video.
@@ -24,6 +29,9 @@ class _SerializerPostV1ImageToVideoBodyStyle(pydantic.BaseModel):
24
29
  populate_by_name=True,
25
30
  )
26
31
 
32
+ high_quality: typing.Optional[bool] = pydantic.Field(
33
+ alias="high_quality", default=None
34
+ )
27
35
  prompt: typing.Optional[str] = pydantic.Field(
28
36
  alias="prompt",
29
37
  )
@@ -10,12 +10,12 @@ class PostV1LipSyncBodyAssets(typing_extensions.TypedDict):
10
10
 
11
11
  audio_file_path: typing_extensions.Required[str]
12
12
  """
13
- The path of the audio file. This is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls)
13
+ The path of the audio file. This value can be either the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls), or the url of the file.
14
14
  """
15
15
 
16
16
  video_file_path: typing_extensions.NotRequired[str]
17
17
  """
18
- The path of the input video. This is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls). This field is required if `video_source` is `file`
18
+ The path of the input video. This field is required if `video_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls), or the url of the file.
19
19
  """
20
20
 
21
21
  video_source: typing_extensions.Required[
@@ -10,7 +10,7 @@ class PostV1VideoToVideoBodyAssets(typing_extensions.TypedDict):
10
10
 
11
11
  video_file_path: typing_extensions.NotRequired[str]
12
12
  """
13
- The path of the input video. This is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls). This field is required if `video_source` is `file`
13
+ The path of the input video. This field is required if `video_source` is `file`. This value is the `file_path` field from the response of the [upload urls API](/docs/api/tag/files/post/v1/files/upload-urls).
14
14
  """
15
15
 
16
16
  video_source: typing_extensions.Required[
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.8.4
3
+ Version: 0.9.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
@@ -1,5 +1,5 @@
1
1
  magic_hour/__init__.py,sha256=9mcpfN52bfc0cw9wEz7dXOVpOsUuGmVdqFQ79NdnGYU,203
2
- magic_hour/client.py,sha256=Aa4NkxvM4-bGnEqDT9vIFSNZ2kgrrkq9T2UH9ooJ-wg,2014
2
+ magic_hour/client.py,sha256=2UhLa0mDgXsr5PQuPT5DUgwvXBVrwV1GskWUy5nKrr8,2014
3
3
  magic_hour/core/__init__.py,sha256=i6cIezufptVYpQS9F90nLCDIliQVXjUBsufIXmuI_9g,1145
4
4
  magic_hour/core/api_error.py,sha256=K1d47qRbhLBNEaUVbs0NPgxee24X3qGZ37gBhleUzEE,1760
5
5
  magic_hour/core/auth.py,sha256=NSjPcmTyHelRag9FqH1ufbchBWQgGDpH2P0akfppIPo,9130
@@ -9,7 +9,7 @@ magic_hour/core/request.py,sha256=zdw-rie5wCy9MxIQ5ilhnZaBVPRyF8WAiZ5pGTam7Oc,52
9
9
  magic_hour/core/response.py,sha256=Sl7nPL2axmz7em_6d9TkFSnQQKUpalWaVWbPPWoXJgM,10180
10
10
  magic_hour/core/type_utils.py,sha256=4bU9WXnMXJ6YTtuqOMiB8t6Xw0RlfVWJ-IDBONlqEtQ,461
11
11
  magic_hour/core/utils.py,sha256=Cp0SH9nBsdL53kCJSCsHgoJoo0HuXYmxShhQgeHw0KQ,1668
12
- magic_hour/environment.py,sha256=IkQFqdrW6aQJ67D8c-KSRGmaUVaOI8A7593ICCC2VX4,167
12
+ magic_hour/environment.py,sha256=_xdCKv0GDzVkNWjD9jo1IZldOe0sB9enstL5xrSwbuw,167
13
13
  magic_hour/resources/v1/__init__.py,sha256=Aj0sjVcoijjQyieNBxv2_uewPYC2vO2UG-ehoBgCz5E,86
14
14
  magic_hour/resources/v1/ai_clothes_changer/README.md,sha256=KQTvbttct5GcdOJW3NG5gCsWF6G2qlwIoBjBd92TjUs,977
15
15
  magic_hour/resources/v1/ai_clothes_changer/__init__.py,sha256=6W_Y2HxG2sDOBiJyzngK3Q2S3xfQgpK-j8xFRmBAhbQ,142
@@ -33,7 +33,7 @@ magic_hour/resources/v1/animation/README.md,sha256=uIVfUwD7iAOe2eJDgrxj4UyYmq9R3
33
33
  magic_hour/resources/v1/animation/__init__.py,sha256=M6KUe6TEZl_DAdyn1HFQ2kHYanZo6xy3mvUdCN264hQ,114
34
34
  magic_hour/resources/v1/animation/client.py,sha256=R5JaUbZKFkFgSVpa2sSwvtNF5HR91AKJ1PyDbTGTK3g,6077
35
35
  magic_hour/resources/v1/client.py,sha256=A2aXAjY8Y2yESfS1l2OjvvmkujCC1yj2d9xzmFcvPm8,5213
36
- magic_hour/resources/v1/face_swap/README.md,sha256=jJTKHBhevcAZ9IeeVwW6OGatMdrDNVZvtQOiyMGqxL8,1296
36
+ magic_hour/resources/v1/face_swap/README.md,sha256=7b6OeNBhMHJkxaQ7NFEuGUtgDUHOkpasXlU05KE5jkQ,1306
37
37
  magic_hour/resources/v1/face_swap/__init__.py,sha256=lyg5uAHyYHEUVAiAZtP3zwjGCEGqq8IWbQKexVdhr00,110
38
38
  magic_hour/resources/v1/face_swap/client.py,sha256=vNdhH4HQa_FSlk_18tNAVOqkqop9hX6Kb-uee-I_obQ,6153
39
39
  magic_hour/resources/v1/face_swap_photo/README.md,sha256=9iGINuGkWn60ZaZgZ4xz0Iho0lvfE-e_YVEA2vId6QU,964
@@ -50,19 +50,19 @@ magic_hour/resources/v1/image_background_remover/client.py,sha256=TeK6XdMzdWxN4K
50
50
  magic_hour/resources/v1/image_projects/README.md,sha256=S7r_5dtF4Ggfh_mIbEEtFLFa1CdOFSKoMr2JIS64hb4,1589
51
51
  magic_hour/resources/v1/image_projects/__init__.py,sha256=oBlV4e5IVYe8SclhoEy2VOYB53kKP2DORXwcztAwU3E,130
52
52
  magic_hour/resources/v1/image_projects/client.py,sha256=M6MwgQokexGimn9aZn4bQNKSMBtDia44BNVwIlw9VSE,5539
53
- magic_hour/resources/v1/image_to_video/README.md,sha256=oT5WB-JGAC4CnwMGrUwKzNCDXDwU350w7b6vtGtFDiE,1148
53
+ magic_hour/resources/v1/image_to_video/README.md,sha256=fX9SoSaUG-cO9krlzhiFsJi9qn6Nxs3EvasCNi8bUZg,1158
54
54
  magic_hour/resources/v1/image_to_video/__init__.py,sha256=tY_ABo6evwKQBRSq-M84lNX-pXqmxoozukmrO6NhCgA,126
55
- magic_hour/resources/v1/image_to_video/client.py,sha256=1hj-H1LgvMRs669Dcm1h1FSfxDESEo0SIrK3DSi0Qso,5955
56
- magic_hour/resources/v1/lip_sync/README.md,sha256=7n7vA4A92iGhs3n4EVAX1pQWXE4hO_gWq_DSH4n7nTY,1330
55
+ magic_hour/resources/v1/image_to_video/client.py,sha256=1k7DGW7jagSMWvonNFcJWabYvfCCpm_y3G6XDkNyhdc,5965
56
+ magic_hour/resources/v1/lip_sync/README.md,sha256=uNZzAXARbUTmq9CcM3uYFhtfpJbM6xICqxkE6woL0BU,1350
57
57
  magic_hour/resources/v1/lip_sync/__init__.py,sha256=MlKUAoHNSKcuNzVyqNfLnLtD_PsqEn3l1TtVpPC1JqQ,106
58
- magic_hour/resources/v1/lip_sync/client.py,sha256=IsqZ6xh9wy5olrXuY4TdqbqbTXj-6dA4vDfThMIbfQs,7099
58
+ magic_hour/resources/v1/lip_sync/client.py,sha256=e58H9Cg4DxC33nWRYt8qLZFme-LJg1k8R9EbSZIlMWM,7203
59
59
  magic_hour/resources/v1/text_to_video/README.md,sha256=Ug9HDXxOE0L_4sY6M4vmP041m8mPCxpabM4QbQoGMjY,1038
60
60
  magic_hour/resources/v1/text_to_video/__init__.py,sha256=F18iHSi9tuYSdgpatznBzb7lbSySNpK-82w96-Om_k4,122
61
61
  magic_hour/resources/v1/text_to_video/client.py,sha256=60cYTtIN8vTjsxVVxq42EJ8679XQj4jiC2kiPyqHMX0,4996
62
62
  magic_hour/resources/v1/video_projects/README.md,sha256=jrNLefS4AacIUPUSjUwOfcEWHCyKl1VnXHmluSg5B90,1589
63
63
  magic_hour/resources/v1/video_projects/__init__.py,sha256=1aj_tE-GAf8BuQ76RQvjGVn8Y39CjdAJDlcsCPucX0w,130
64
64
  magic_hour/resources/v1/video_projects/client.py,sha256=O8lA3LgpFDqYxE3R6BLfQIMse1KNBqy2Q5LacKySod4,5523
65
- magic_hour/resources/v1/video_to_video/README.md,sha256=WqR3PqpIHDQm0P-67pG6nD0M4mHM8qHXjrXjMCqUHOM,1612
65
+ magic_hour/resources/v1/video_to_video/README.md,sha256=yzTvpH-7hwXiuwNDykzVIfzrKpFgZPe3E0nNahjgOG0,1622
66
66
  magic_hour/resources/v1/video_to_video/__init__.py,sha256=1SHaRLlsrlBkdxxKBYgdbHrGATlRvqlXc22RpjjHaOA,126
67
67
  magic_hour/resources/v1/video_to_video/client.py,sha256=2ITdQuy2t8oxQCJ23YKqX_XSmQpoiJlivP6wo5qwDn8,8162
68
68
  magic_hour/types/models/__init__.py,sha256=fNhJtvVAFiSKzXt57UnvNozv6QYWZURU36pWTVoZQ-M,2790
@@ -108,7 +108,7 @@ magic_hour/types/params/post_v1_animation_body.py,sha256=AmO2QsJ09Q5MyjwdZTsasfl
108
108
  magic_hour/types/params/post_v1_animation_body_assets.py,sha256=kUsZTgwRo5a9y4_nyyyrrs9FN8EtWcVk6CkGObbxBhE,1821
109
109
  magic_hour/types/params/post_v1_animation_body_style.py,sha256=oBy3jEiP7ptqmoMxr9OUTaWyt_4MrBjRO46034FqAB4,8039
110
110
  magic_hour/types/params/post_v1_face_swap_body.py,sha256=Hlvv6OFy9UuhaUVX-887dJx3uIKwS3MLphZEhvgLFtU,1995
111
- magic_hour/types/params/post_v1_face_swap_body_assets.py,sha256=H3Hoo5v8BsJgtLOmFGSlUko1YdCoBozWgPPswm8m5_g,1786
111
+ magic_hour/types/params/post_v1_face_swap_body_assets.py,sha256=e8_1b8nE4HOas6DeZLxVHKPrlFKCDV2rjesqvfD-NUs,1828
112
112
  magic_hour/types/params/post_v1_face_swap_photo_body.py,sha256=EEvxhjVZdlKMlCbdhDo6DAXLIRnPR3VwdEioXBWXfYo,961
113
113
  magic_hour/types/params/post_v1_face_swap_photo_body_assets.py,sha256=HZtyTcPZWGShDa44SC_PRckMlIIIvgECFw2BWhSPo0U,1219
114
114
  magic_hour/types/params/post_v1_files_upload_urls_body.py,sha256=njjElsiBXMs_qVij4hx-YdguMFZQqaVqhtYGOr2hAlo,799
@@ -116,16 +116,16 @@ magic_hour/types/params/post_v1_files_upload_urls_body_items_item.py,sha256=bKZA
116
116
  magic_hour/types/params/post_v1_image_background_remover_body.py,sha256=NGJj0iwpm-zD7iAV5jkuroAHtD9PtcHKGsFykTzQ__Y,1045
117
117
  magic_hour/types/params/post_v1_image_background_remover_body_assets.py,sha256=ILA6p3oEM_kMwXXunnDI4bvECscS6Ugza2awenL3dMk,840
118
118
  magic_hour/types/params/post_v1_image_to_video_body.py,sha256=r7xgMOKA8mKS_btf0glgEH4bkfsUwhXLBhqhJ6tTafM,2014
119
- magic_hour/types/params/post_v1_image_to_video_body_assets.py,sha256=hE8_EyWCAG6Lcw3JoUbNVa48B6AbNmyTO5CMH96FhqQ,755
120
- magic_hour/types/params/post_v1_image_to_video_body_style.py,sha256=CnefpSz9teb3t_Ui3rf_B4Kq3ZtekVIkhpjL9a-nh6c,645
119
+ magic_hour/types/params/post_v1_image_to_video_body_assets.py,sha256=VwuT9RsSLbim46Vrq5EjpqPwFD0Gyip37_ndRjY6dpg,797
120
+ magic_hour/types/params/post_v1_image_to_video_body_style.py,sha256=V2gCgFwFVlDfM_mjYNVrBYDw2wuYf7FNqS80XOWDcfw,952
121
121
  magic_hour/types/params/post_v1_lip_sync_body.py,sha256=9X-gk-hLBx8eXXTE4Rgo1EPTDwSOC5FQzBdw-rIFFm8,2430
122
- magic_hour/types/params/post_v1_lip_sync_body_assets.py,sha256=5mFIGbTuk1CGVkbj92Zj0aMVOrpxl5zkpFmF3G2MYnI,1739
122
+ magic_hour/types/params/post_v1_lip_sync_body_assets.py,sha256=taDZlsw2R6IW3g6OQEZQyWq0azjYci859CKpPWxNd9w,1823
123
123
  magic_hour/types/params/post_v1_text_to_video_body.py,sha256=q9aFGvmh6xEu_1quAB1O5qqvn0Vt9dXt_7vxgxDqBkI,1418
124
124
  magic_hour/types/params/post_v1_text_to_video_body_style.py,sha256=8-zyz32Gz3qkeuL4y-ZWxdx-fktecKoOKtkqQRoLDMY,593
125
125
  magic_hour/types/params/post_v1_video_to_video_body.py,sha256=dbazkWaGco73sSirtD-Q6vnLzF4BZa4Od87UTih1_-o,2914
126
- magic_hour/types/params/post_v1_video_to_video_body_assets.py,sha256=INe1iMyS-xhj00xO7OymdqFrmgp1fWykDdLo_uoewVs,1456
126
+ magic_hour/types/params/post_v1_video_to_video_body_assets.py,sha256=Z8xgz9oZRjT_TuHF4XUifGuwkxPS4HrBUocHaf8Itfo,1463
127
127
  magic_hour/types/params/post_v1_video_to_video_body_style.py,sha256=RQWr8VJqipM4YmNwGCQXWf7XT7O8Y2hgqxRRH1Vh7Cs,5457
128
- magic_hour-0.8.4.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
129
- magic_hour-0.8.4.dist-info/METADATA,sha256=6LhLIRQeSk_PtA3fjVZHN1Eu2ijPZwIr4Fp4SwtPIks,4654
130
- magic_hour-0.8.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
131
- magic_hour-0.8.4.dist-info/RECORD,,
128
+ magic_hour-0.9.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
129
+ magic_hour-0.9.0.dist-info/METADATA,sha256=kihoXXm8ylyteG3-QwU51ptoduSO5AUKzlNIVEBTZeo,4654
130
+ magic_hour-0.9.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
131
+ magic_hour-0.9.0.dist-info/RECORD,,