magic_hour 0.9.4__py3-none-any.whl → 0.9.5__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.
Files changed (68) hide show
  1. magic_hour/__init__.py +1 -1
  2. magic_hour/client.py +9 -11
  3. magic_hour/environment.py +3 -1
  4. magic_hour/resources/v1/ai_clothes_changer/client.py +0 -2
  5. magic_hour/resources/v1/ai_headshot_generator/client.py +0 -2
  6. magic_hour/resources/v1/ai_image_generator/client.py +1 -3
  7. magic_hour/resources/v1/ai_image_upscaler/client.py +0 -2
  8. magic_hour/resources/v1/ai_photo_editor/client.py +0 -2
  9. magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -2
  10. magic_hour/resources/v1/animation/client.py +0 -2
  11. magic_hour/resources/v1/client.py +8 -42
  12. magic_hour/resources/v1/face_swap/client.py +0 -2
  13. magic_hour/resources/v1/face_swap_photo/client.py +0 -2
  14. magic_hour/resources/v1/files/client.py +0 -2
  15. magic_hour/resources/v1/files/upload_urls/client.py +0 -2
  16. magic_hour/resources/v1/image_background_remover/client.py +0 -2
  17. magic_hour/resources/v1/image_projects/README.md +1 -1
  18. magic_hour/resources/v1/image_projects/client.py +2 -6
  19. magic_hour/resources/v1/image_to_video/client.py +0 -2
  20. magic_hour/resources/v1/lip_sync/client.py +0 -2
  21. magic_hour/resources/v1/text_to_video/client.py +1 -3
  22. magic_hour/resources/v1/video_projects/README.md +1 -1
  23. magic_hour/resources/v1/video_projects/client.py +2 -6
  24. magic_hour/resources/v1/video_to_video/client.py +0 -2
  25. magic_hour/types/models/__init__.py +4 -4
  26. magic_hour/types/models/get_v1_image_projects_id_response.py +1 -1
  27. magic_hour/types/models/get_v1_video_projects_id_response.py +1 -1
  28. magic_hour/types/models/post_v1_files_upload_urls_response.py +1 -1
  29. magic_hour/types/params/__init__.py +51 -51
  30. magic_hour/types/params/post_v1_ai_clothes_changer_body.py +1 -1
  31. magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py +1 -1
  32. magic_hour/types/params/post_v1_ai_headshot_generator_body.py +1 -1
  33. magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py +1 -1
  34. magic_hour/types/params/post_v1_ai_image_generator_body.py +1 -1
  35. magic_hour/types/params/post_v1_ai_image_generator_body_style.py +1 -1
  36. magic_hour/types/params/post_v1_ai_image_upscaler_body.py +1 -1
  37. magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py +1 -1
  38. magic_hour/types/params/post_v1_ai_image_upscaler_body_style.py +1 -1
  39. magic_hour/types/params/post_v1_ai_photo_editor_body.py +1 -1
  40. magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py +1 -1
  41. magic_hour/types/params/post_v1_ai_photo_editor_body_style.py +1 -1
  42. magic_hour/types/params/post_v1_ai_qr_code_generator_body.py +1 -1
  43. magic_hour/types/params/post_v1_ai_qr_code_generator_body_style.py +1 -1
  44. magic_hour/types/params/post_v1_animation_body.py +1 -1
  45. magic_hour/types/params/post_v1_animation_body_assets.py +1 -1
  46. magic_hour/types/params/post_v1_animation_body_style.py +1 -1
  47. magic_hour/types/params/post_v1_face_swap_body.py +1 -1
  48. magic_hour/types/params/post_v1_face_swap_body_assets.py +1 -1
  49. magic_hour/types/params/post_v1_face_swap_photo_body.py +1 -1
  50. magic_hour/types/params/post_v1_face_swap_photo_body_assets.py +1 -1
  51. magic_hour/types/params/post_v1_files_upload_urls_body.py +1 -1
  52. magic_hour/types/params/post_v1_files_upload_urls_body_items_item.py +1 -1
  53. magic_hour/types/params/post_v1_image_background_remover_body.py +1 -1
  54. magic_hour/types/params/post_v1_image_background_remover_body_assets.py +1 -1
  55. magic_hour/types/params/post_v1_image_to_video_body.py +1 -1
  56. magic_hour/types/params/post_v1_image_to_video_body_assets.py +1 -1
  57. magic_hour/types/params/post_v1_image_to_video_body_style.py +1 -1
  58. magic_hour/types/params/post_v1_lip_sync_body.py +1 -1
  59. magic_hour/types/params/post_v1_lip_sync_body_assets.py +1 -1
  60. magic_hour/types/params/post_v1_text_to_video_body.py +1 -1
  61. magic_hour/types/params/post_v1_text_to_video_body_style.py +1 -1
  62. magic_hour/types/params/post_v1_video_to_video_body.py +1 -1
  63. magic_hour/types/params/post_v1_video_to_video_body_assets.py +1 -1
  64. magic_hour/types/params/post_v1_video_to_video_body_style.py +1 -1
  65. {magic_hour-0.9.4.dist-info → magic_hour-0.9.5.dist-info}/METADATA +1 -1
  66. {magic_hour-0.9.4.dist-info → magic_hour-0.9.5.dist-info}/RECORD +68 -68
  67. {magic_hour-0.9.4.dist-info → magic_hour-0.9.5.dist-info}/LICENSE +0 -0
  68. {magic_hour-0.9.4.dist-info → magic_hour-0.9.5.dist-info}/WHEEL +0 -0
@@ -1,15 +1,31 @@
1
+ from .post_v1_ai_clothes_changer_body import (
2
+ PostV1AiClothesChangerBody,
3
+ _SerializerPostV1AiClothesChangerBody,
4
+ )
1
5
  from .post_v1_ai_clothes_changer_body_assets import (
2
6
  PostV1AiClothesChangerBodyAssets,
3
7
  _SerializerPostV1AiClothesChangerBodyAssets,
4
8
  )
9
+ from .post_v1_ai_headshot_generator_body import (
10
+ PostV1AiHeadshotGeneratorBody,
11
+ _SerializerPostV1AiHeadshotGeneratorBody,
12
+ )
5
13
  from .post_v1_ai_headshot_generator_body_assets import (
6
14
  PostV1AiHeadshotGeneratorBodyAssets,
7
15
  _SerializerPostV1AiHeadshotGeneratorBodyAssets,
8
16
  )
17
+ from .post_v1_ai_image_generator_body import (
18
+ PostV1AiImageGeneratorBody,
19
+ _SerializerPostV1AiImageGeneratorBody,
20
+ )
9
21
  from .post_v1_ai_image_generator_body_style import (
10
22
  PostV1AiImageGeneratorBodyStyle,
11
23
  _SerializerPostV1AiImageGeneratorBodyStyle,
12
24
  )
25
+ from .post_v1_ai_image_upscaler_body import (
26
+ PostV1AiImageUpscalerBody,
27
+ _SerializerPostV1AiImageUpscalerBody,
28
+ )
13
29
  from .post_v1_ai_image_upscaler_body_assets import (
14
30
  PostV1AiImageUpscalerBodyAssets,
15
31
  _SerializerPostV1AiImageUpscalerBodyAssets,
@@ -18,6 +34,10 @@ from .post_v1_ai_image_upscaler_body_style import (
18
34
  PostV1AiImageUpscalerBodyStyle,
19
35
  _SerializerPostV1AiImageUpscalerBodyStyle,
20
36
  )
37
+ from .post_v1_ai_photo_editor_body import (
38
+ PostV1AiPhotoEditorBody,
39
+ _SerializerPostV1AiPhotoEditorBody,
40
+ )
21
41
  from .post_v1_ai_photo_editor_body_assets import (
22
42
  PostV1AiPhotoEditorBodyAssets,
23
43
  _SerializerPostV1AiPhotoEditorBodyAssets,
@@ -26,10 +46,15 @@ from .post_v1_ai_photo_editor_body_style import (
26
46
  PostV1AiPhotoEditorBodyStyle,
27
47
  _SerializerPostV1AiPhotoEditorBodyStyle,
28
48
  )
49
+ from .post_v1_ai_qr_code_generator_body import (
50
+ PostV1AiQrCodeGeneratorBody,
51
+ _SerializerPostV1AiQrCodeGeneratorBody,
52
+ )
29
53
  from .post_v1_ai_qr_code_generator_body_style import (
30
54
  PostV1AiQrCodeGeneratorBodyStyle,
31
55
  _SerializerPostV1AiQrCodeGeneratorBodyStyle,
32
56
  )
57
+ from .post_v1_animation_body import PostV1AnimationBody, _SerializerPostV1AnimationBody
33
58
  from .post_v1_animation_body_assets import (
34
59
  PostV1AnimationBodyAssets,
35
60
  _SerializerPostV1AnimationBodyAssets,
@@ -38,22 +63,39 @@ from .post_v1_animation_body_style import (
38
63
  PostV1AnimationBodyStyle,
39
64
  _SerializerPostV1AnimationBodyStyle,
40
65
  )
66
+ from .post_v1_face_swap_body import PostV1FaceSwapBody, _SerializerPostV1FaceSwapBody
41
67
  from .post_v1_face_swap_body_assets import (
42
68
  PostV1FaceSwapBodyAssets,
43
69
  _SerializerPostV1FaceSwapBodyAssets,
44
70
  )
71
+ from .post_v1_face_swap_photo_body import (
72
+ PostV1FaceSwapPhotoBody,
73
+ _SerializerPostV1FaceSwapPhotoBody,
74
+ )
45
75
  from .post_v1_face_swap_photo_body_assets import (
46
76
  PostV1FaceSwapPhotoBodyAssets,
47
77
  _SerializerPostV1FaceSwapPhotoBodyAssets,
48
78
  )
79
+ from .post_v1_files_upload_urls_body import (
80
+ PostV1FilesUploadUrlsBody,
81
+ _SerializerPostV1FilesUploadUrlsBody,
82
+ )
49
83
  from .post_v1_files_upload_urls_body_items_item import (
50
84
  PostV1FilesUploadUrlsBodyItemsItem,
51
85
  _SerializerPostV1FilesUploadUrlsBodyItemsItem,
52
86
  )
87
+ from .post_v1_image_background_remover_body import (
88
+ PostV1ImageBackgroundRemoverBody,
89
+ _SerializerPostV1ImageBackgroundRemoverBody,
90
+ )
53
91
  from .post_v1_image_background_remover_body_assets import (
54
92
  PostV1ImageBackgroundRemoverBodyAssets,
55
93
  _SerializerPostV1ImageBackgroundRemoverBodyAssets,
56
94
  )
95
+ from .post_v1_image_to_video_body import (
96
+ PostV1ImageToVideoBody,
97
+ _SerializerPostV1ImageToVideoBody,
98
+ )
57
99
  from .post_v1_image_to_video_body_assets import (
58
100
  PostV1ImageToVideoBodyAssets,
59
101
  _SerializerPostV1ImageToVideoBodyAssets,
@@ -62,14 +104,23 @@ from .post_v1_image_to_video_body_style import (
62
104
  PostV1ImageToVideoBodyStyle,
63
105
  _SerializerPostV1ImageToVideoBodyStyle,
64
106
  )
107
+ from .post_v1_lip_sync_body import PostV1LipSyncBody, _SerializerPostV1LipSyncBody
65
108
  from .post_v1_lip_sync_body_assets import (
66
109
  PostV1LipSyncBodyAssets,
67
110
  _SerializerPostV1LipSyncBodyAssets,
68
111
  )
112
+ from .post_v1_text_to_video_body import (
113
+ PostV1TextToVideoBody,
114
+ _SerializerPostV1TextToVideoBody,
115
+ )
69
116
  from .post_v1_text_to_video_body_style import (
70
117
  PostV1TextToVideoBodyStyle,
71
118
  _SerializerPostV1TextToVideoBodyStyle,
72
119
  )
120
+ from .post_v1_video_to_video_body import (
121
+ PostV1VideoToVideoBody,
122
+ _SerializerPostV1VideoToVideoBody,
123
+ )
73
124
  from .post_v1_video_to_video_body_assets import (
74
125
  PostV1VideoToVideoBodyAssets,
75
126
  _SerializerPostV1VideoToVideoBodyAssets,
@@ -78,57 +129,6 @@ from .post_v1_video_to_video_body_style import (
78
129
  PostV1VideoToVideoBodyStyle,
79
130
  _SerializerPostV1VideoToVideoBodyStyle,
80
131
  )
81
- from .post_v1_ai_clothes_changer_body import (
82
- PostV1AiClothesChangerBody,
83
- _SerializerPostV1AiClothesChangerBody,
84
- )
85
- from .post_v1_ai_headshot_generator_body import (
86
- PostV1AiHeadshotGeneratorBody,
87
- _SerializerPostV1AiHeadshotGeneratorBody,
88
- )
89
- from .post_v1_ai_image_generator_body import (
90
- PostV1AiImageGeneratorBody,
91
- _SerializerPostV1AiImageGeneratorBody,
92
- )
93
- from .post_v1_ai_image_upscaler_body import (
94
- PostV1AiImageUpscalerBody,
95
- _SerializerPostV1AiImageUpscalerBody,
96
- )
97
- from .post_v1_ai_photo_editor_body import (
98
- PostV1AiPhotoEditorBody,
99
- _SerializerPostV1AiPhotoEditorBody,
100
- )
101
- from .post_v1_ai_qr_code_generator_body import (
102
- PostV1AiQrCodeGeneratorBody,
103
- _SerializerPostV1AiQrCodeGeneratorBody,
104
- )
105
- from .post_v1_animation_body import PostV1AnimationBody, _SerializerPostV1AnimationBody
106
- from .post_v1_face_swap_body import PostV1FaceSwapBody, _SerializerPostV1FaceSwapBody
107
- from .post_v1_face_swap_photo_body import (
108
- PostV1FaceSwapPhotoBody,
109
- _SerializerPostV1FaceSwapPhotoBody,
110
- )
111
- from .post_v1_files_upload_urls_body import (
112
- PostV1FilesUploadUrlsBody,
113
- _SerializerPostV1FilesUploadUrlsBody,
114
- )
115
- from .post_v1_image_background_remover_body import (
116
- PostV1ImageBackgroundRemoverBody,
117
- _SerializerPostV1ImageBackgroundRemoverBody,
118
- )
119
- from .post_v1_image_to_video_body import (
120
- PostV1ImageToVideoBody,
121
- _SerializerPostV1ImageToVideoBody,
122
- )
123
- from .post_v1_lip_sync_body import PostV1LipSyncBody, _SerializerPostV1LipSyncBody
124
- from .post_v1_text_to_video_body import (
125
- PostV1TextToVideoBody,
126
- _SerializerPostV1TextToVideoBody,
127
- )
128
- from .post_v1_video_to_video_body import (
129
- PostV1VideoToVideoBody,
130
- _SerializerPostV1VideoToVideoBody,
131
- )
132
132
 
133
133
 
134
134
  __all__ = [
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_clothes_changer_body_assets import (
6
6
  PostV1AiClothesChangerBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiClothesChangerBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_headshot_generator_body_assets import (
6
6
  PostV1AiHeadshotGeneratorBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiHeadshotGeneratorBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_image_generator_body_style import (
6
6
  PostV1AiImageGeneratorBodyStyle,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiImageGeneratorBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_image_upscaler_body_assets import (
6
6
  PostV1AiImageUpscalerBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiImageUpscalerBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1AiImageUpscalerBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_photo_editor_body_assets import (
6
6
  PostV1AiPhotoEditorBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiPhotoEditorBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1AiPhotoEditorBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_ai_qr_code_generator_body_style import (
6
6
  PostV1AiQrCodeGeneratorBodyStyle,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1AiQrCodeGeneratorBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_animation_body_assets import (
6
6
  PostV1AnimationBodyAssets,
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1AnimationBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1AnimationBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_face_swap_body_assets import (
6
6
  PostV1FaceSwapBodyAssets,
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1FaceSwapBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_face_swap_photo_body_assets import (
6
6
  PostV1FaceSwapPhotoBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1FaceSwapPhotoBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_files_upload_urls_body_items_item import (
6
6
  PostV1FilesUploadUrlsBodyItemsItem,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1FilesUploadUrlsBodyItemsItem(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_image_background_remover_body_assets import (
6
6
  PostV1ImageBackgroundRemoverBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1ImageBackgroundRemoverBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_image_to_video_body_assets import (
6
6
  PostV1ImageToVideoBodyAssets,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1ImageToVideoBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1ImageToVideoBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_lip_sync_body_assets import (
6
6
  PostV1LipSyncBodyAssets,
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1LipSyncBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_text_to_video_body_style import (
6
6
  PostV1TextToVideoBodyStyle,
@@ -1,5 +1,5 @@
1
- import typing_extensions
2
1
  import pydantic
2
+ import typing_extensions
3
3
 
4
4
 
5
5
  class PostV1TextToVideoBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
  from .post_v1_video_to_video_body_assets import (
6
6
  PostV1VideoToVideoBodyAssets,
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1VideoToVideoBodyAssets(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
+ import pydantic
1
2
  import typing
2
3
  import typing_extensions
3
- import pydantic
4
4
 
5
5
 
6
6
  class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.9.4
3
+ Version: 0.9.5
4
4
  Summary: Python SDK for Magic Hour API
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Programming Language :: Python :: 3