murf 1.0.2__tar.gz → 1.2.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 murf might be problematic. Click here for more details.

Files changed (73) hide show
  1. {murf-1.0.2 → murf-1.2.0}/PKG-INFO +65 -15
  2. murf-1.2.0/README.md +194 -0
  3. {murf-1.0.2 → murf-1.2.0}/pyproject.toml +1 -1
  4. {murf-1.0.2 → murf-1.2.0}/src/murf/__init__.py +28 -1
  5. {murf-1.0.2 → murf-1.2.0}/src/murf/base_client.py +4 -0
  6. {murf-1.0.2 → murf-1.2.0}/src/murf/client.py +3 -1
  7. {murf-1.0.2 → murf-1.2.0}/src/murf/core/client_wrapper.py +1 -1
  8. murf-1.2.0/src/murf/dubbing/__init__.py +14 -0
  9. murf-1.2.0/src/murf/dubbing/client.py +26 -0
  10. murf-1.2.0/src/murf/dubbing/jobs/__init__.py +5 -0
  11. murf-1.2.0/src/murf/dubbing/jobs/client.py +726 -0
  12. murf-1.2.0/src/murf/dubbing/jobs/types/__init__.py +6 -0
  13. murf-1.2.0/src/murf/dubbing/jobs/types/jobs_create_request_priority.py +5 -0
  14. murf-1.2.0/src/murf/dubbing/jobs/types/jobs_create_with_project_id_request_priority.py +5 -0
  15. murf-1.2.0/src/murf/dubbing/languages/__init__.py +2 -0
  16. murf-1.2.0/src/murf/dubbing/languages/client.py +369 -0
  17. murf-1.2.0/src/murf/dubbing/projects/__init__.py +5 -0
  18. murf-1.2.0/src/murf/dubbing/projects/client.py +682 -0
  19. murf-1.2.0/src/murf/dubbing/projects/types/__init__.py +5 -0
  20. murf-1.2.0/src/murf/dubbing/projects/types/api_create_project_request_dubbing_type.py +5 -0
  21. murf-1.2.0/src/murf/dubbing_client.py +120 -0
  22. murf-1.2.0/src/murf/types/__init__.py +45 -0
  23. murf-1.2.0/src/murf/types/api_job_response.py +53 -0
  24. murf-1.2.0/src/murf/types/api_job_response_dubbing_type.py +5 -0
  25. murf-1.2.0/src/murf/types/api_job_response_priority.py +5 -0
  26. murf-1.2.0/src/murf/types/api_project_response.py +44 -0
  27. murf-1.2.0/src/murf/types/api_project_response_dubbing_type.py +5 -0
  28. murf-1.2.0/src/murf/types/dub_api_detail_response.py +23 -0
  29. murf-1.2.0/src/murf/types/dub_job_status_response.py +39 -0
  30. murf-1.2.0/src/murf/types/form_data_content_disposition.py +31 -0
  31. murf-1.2.0/src/murf/types/group_api_project_response.py +24 -0
  32. murf-1.2.0/src/murf/types/locale_response.py +25 -0
  33. murf-1.2.0/src/murf/types/locale_response_supports_item.py +5 -0
  34. murf-1.2.0/src/murf/types/source_locale_response.py +20 -0
  35. murf-1.2.0/src/murf/utils.py +31 -0
  36. murf-1.0.2/README.md +0 -144
  37. murf-1.0.2/src/murf/types/__init__.py +0 -21
  38. {murf-1.0.2 → murf-1.2.0}/LICENSE +0 -0
  39. {murf-1.0.2 → murf-1.2.0}/src/murf/auth/__init__.py +0 -0
  40. {murf-1.0.2 → murf-1.2.0}/src/murf/auth/client.py +0 -0
  41. {murf-1.0.2 → murf-1.2.0}/src/murf/core/__init__.py +0 -0
  42. {murf-1.0.2 → murf-1.2.0}/src/murf/core/api_error.py +0 -0
  43. {murf-1.0.2 → murf-1.2.0}/src/murf/core/datetime_utils.py +0 -0
  44. {murf-1.0.2 → murf-1.2.0}/src/murf/core/file.py +0 -0
  45. {murf-1.0.2 → murf-1.2.0}/src/murf/core/http_client.py +0 -0
  46. {murf-1.0.2 → murf-1.2.0}/src/murf/core/jsonable_encoder.py +0 -0
  47. {murf-1.0.2 → murf-1.2.0}/src/murf/core/pydantic_utilities.py +0 -0
  48. {murf-1.0.2 → murf-1.2.0}/src/murf/core/query_encoder.py +0 -0
  49. {murf-1.0.2 → murf-1.2.0}/src/murf/core/remove_none_from_dict.py +0 -0
  50. {murf-1.0.2 → murf-1.2.0}/src/murf/core/request_options.py +0 -0
  51. {murf-1.0.2 → murf-1.2.0}/src/murf/core/serialization.py +0 -0
  52. {murf-1.0.2 → murf-1.2.0}/src/murf/environment.py +0 -0
  53. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/__init__.py +0 -0
  54. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/bad_request_error.py +0 -0
  55. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/forbidden_error.py +0 -0
  56. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/internal_server_error.py +0 -0
  57. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/payment_required_error.py +0 -0
  58. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/service_unavailable_error.py +0 -0
  59. {murf-1.0.2 → murf-1.2.0}/src/murf/errors/unauthorized_error.py +0 -0
  60. {murf-1.0.2 → murf-1.2.0}/src/murf/py.typed +0 -0
  61. {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/__init__.py +0 -0
  62. {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/client.py +0 -0
  63. {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/types/__init__.py +0 -0
  64. {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/types/generate_speech_request_model_version.py +0 -0
  65. {murf-1.0.2 → murf-1.2.0}/src/murf/types/api_voice.py +0 -0
  66. {murf-1.0.2 → murf-1.2.0}/src/murf/types/api_voice_gender.py +0 -0
  67. {murf-1.0.2 → murf-1.2.0}/src/murf/types/auth_token_response.py +0 -0
  68. {murf-1.0.2 → murf-1.2.0}/src/murf/types/generate_speech_response.py +0 -0
  69. {murf-1.0.2 → murf-1.2.0}/src/murf/types/pronunciation_detail.py +0 -0
  70. {murf-1.0.2 → murf-1.2.0}/src/murf/types/pronunciation_detail_type.py +0 -0
  71. {murf-1.0.2 → murf-1.2.0}/src/murf/types/style_details.py +0 -0
  72. {murf-1.0.2 → murf-1.2.0}/src/murf/types/word_duration.py +0 -0
  73. {murf-1.0.2 → murf-1.2.0}/src/murf/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: murf
3
- Version: 1.0.2
3
+ Version: 1.2.0
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -24,26 +24,49 @@ Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
24
24
  Requires-Dist: typing_extensions (>=4.0.0)
25
25
  Description-Content-Type: text/markdown
26
26
 
27
- # Murf Python Library
27
+ # Murf Python SDK
28
+
29
+ ![Murf AI Logo](https://murf.ai/public-assets/home/Murf_Logo.png)
28
30
 
29
31
  [![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fmurf-ai%2Fmurf-python-sdk)
30
32
  [![pypi](https://img.shields.io/pypi/v/murf)](https://pypi.python.org/pypi/murf)
33
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/devgeetech-murf/bbe2c7eb01433f4a151f0fd2be23b1c8/murf-python-sdk.ipynb)
34
+
35
+ ## Table of Contents
36
+
37
+ - [Overview](#overview)
38
+ - [Installation](#installation)
39
+ - [Getting Started](#getting-started)
40
+ - [Features](#features)
41
+ - [Asynchronous Usage](#async-client)
42
+ - [Exception Handling](#exception-handling)
43
+ - [Advanced Configuration](#advanced)
44
+ - [Contributing](#contributing)
45
+ - [License](#license)
46
+
47
+ ---
48
+
49
+ ## Overview
50
+
51
+ The Murf Python SDK offers seamless integration with the [Murf AI](https://murf.ai/) [text-to-speech software](https://murf.ai/text-to-speech), enabling developers and creators to convert text into lifelike speech effortlessly. With over 130 natural-sounding voices across 13+ languages and 20+ speaking styles, Murf provides unparalleled speech customization for a wide range of applications. The SDK is designed for both synchronous and asynchronous workflows, featuring robust error handling, advanced configuration options, and support for real-time applications.
31
52
 
32
- The Murf Python library provides convenient access to the Murf API from Python.
53
+ ---
33
54
 
34
55
  ## Installation
35
56
 
36
- ```sh
57
+ Check out the [HTTP API documentation](https://murf.ai/api/docs/introduction/quickstart).
58
+
59
+ Install the SDK using pip:
60
+
61
+ ```bash
37
62
  pip install murf
38
63
  ```
39
64
 
40
- ## Reference
41
-
42
- A full reference for this library is available [here](./reference.md).
65
+ ---
43
66
 
44
- ## Usage
67
+ ## Getting Started
45
68
 
46
- Instantiate and use the client with the following:
69
+ Here's a quick example to get you started with the Murf SDK:
47
70
 
48
71
  ```python
49
72
  from murf import Murf
@@ -59,6 +82,25 @@ client.text_to_speech.generate(
59
82
  )
60
83
  ```
61
84
 
85
+ For more detailed information, refer to the [official documentation](https://murf.ai/api/docs/introduction/quickstart).
86
+
87
+ ---
88
+
89
+ ## Features
90
+
91
+ - **Text-to-Speech Conversion:** Transform text into natural-sounding speech.
92
+ - **Multilingual Support:** Access voices in over 13 languages, including English, French, German, Spanish, Italian, Hindi, Portuguese, Dutch, Korean, Chinese (Mandarin), Bengali, Tamil, and Polish.
93
+
94
+ ![Murf AI Languages](https://murf.ai/public-assets/home/Murf_Lang.png)
95
+
96
+ - **Multiple Voice Styles:** Choose from 20+ speaking styles to suit your application's needs.
97
+ - **Advanced Voice Customization:** Adjust parameters like pitch, speed, pauses, and pronunciation for optimal output. Fine-grained controls let you tailor the voice output to match your specific requirements.
98
+ - **Multiple Audio Formats:** Generate audio in various formats (e.g., MP3, WAV) with configurable sample rates for optimal quality.
99
+ - **Real-Time Processing:** Benefit from asynchronous API calls that support non-blocking, real-time audio generation and streaming scenarios.
100
+
101
+
102
+ ---
103
+
62
104
  ## Async Client
63
105
 
64
106
  The SDK also exports an `async` client so that you can make non-blocking calls to our API.
@@ -85,6 +127,8 @@ async def main() -> None:
85
127
  asyncio.run(main())
86
128
  ```
87
129
 
130
+ ---
131
+
88
132
  ## Exception Handling
89
133
 
90
134
  When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
@@ -100,6 +144,8 @@ except ApiError as e:
100
144
  print(e.body)
101
145
  ```
102
146
 
147
+ ---
148
+
103
149
  ## Advanced
104
150
 
105
151
  ### Retries
@@ -159,13 +205,17 @@ client = Murf(
159
205
  )
160
206
  ```
161
207
 
208
+ ---
209
+
162
210
  ## Contributing
163
211
 
164
- While we value open-source contributions to this SDK, this library is generated programmatically.
165
- Additions made directly to this library would have to be moved over to our generation code,
166
- otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
167
- a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
168
- an issue first to discuss with us!
212
+ We welcome contributions to enhance the Murf Python SDK. Please note that this library is generated programmatically, so direct modifications may be overwritten. We suggest opening an issue first to discuss your ideas or improvements. Contributions to the documentation are especially appreciated! For any support queries email to support@murf.ai
213
+
214
+ ---
215
+
216
+ ## License
217
+
218
+ Murf Python SDK is released under the [MIT License](LICENSE).
169
219
 
170
- On the other hand, contributions to the README are always very welcome!
220
+ ---
171
221
 
murf-1.2.0/README.md ADDED
@@ -0,0 +1,194 @@
1
+ # Murf Python SDK
2
+
3
+ ![Murf AI Logo](https://murf.ai/public-assets/home/Murf_Logo.png)
4
+
5
+ [![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fmurf-ai%2Fmurf-python-sdk)
6
+ [![pypi](https://img.shields.io/pypi/v/murf)](https://pypi.python.org/pypi/murf)
7
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/devgeetech-murf/bbe2c7eb01433f4a151f0fd2be23b1c8/murf-python-sdk.ipynb)
8
+
9
+ ## Table of Contents
10
+
11
+ - [Overview](#overview)
12
+ - [Installation](#installation)
13
+ - [Getting Started](#getting-started)
14
+ - [Features](#features)
15
+ - [Asynchronous Usage](#async-client)
16
+ - [Exception Handling](#exception-handling)
17
+ - [Advanced Configuration](#advanced)
18
+ - [Contributing](#contributing)
19
+ - [License](#license)
20
+
21
+ ---
22
+
23
+ ## Overview
24
+
25
+ The Murf Python SDK offers seamless integration with the [Murf AI](https://murf.ai/) [text-to-speech software](https://murf.ai/text-to-speech), enabling developers and creators to convert text into lifelike speech effortlessly. With over 130 natural-sounding voices across 13+ languages and 20+ speaking styles, Murf provides unparalleled speech customization for a wide range of applications. The SDK is designed for both synchronous and asynchronous workflows, featuring robust error handling, advanced configuration options, and support for real-time applications.
26
+
27
+ ---
28
+
29
+ ## Installation
30
+
31
+ Check out the [HTTP API documentation](https://murf.ai/api/docs/introduction/quickstart).
32
+
33
+ Install the SDK using pip:
34
+
35
+ ```bash
36
+ pip install murf
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Getting Started
42
+
43
+ Here's a quick example to get you started with the Murf SDK:
44
+
45
+ ```python
46
+ from murf import Murf
47
+
48
+ client = Murf(
49
+ api_key="YOUR_API_KEY",
50
+ )
51
+ client.text_to_speech.generate(
52
+ format="MP3",
53
+ sample_rate=44100.0,
54
+ text="Hello, world!",
55
+ voice_id="en-US-natalie",
56
+ )
57
+ ```
58
+
59
+ For more detailed information, refer to the [official documentation](https://murf.ai/api/docs/introduction/quickstart).
60
+
61
+ ---
62
+
63
+ ## Features
64
+
65
+ - **Text-to-Speech Conversion:** Transform text into natural-sounding speech.
66
+ - **Multilingual Support:** Access voices in over 13 languages, including English, French, German, Spanish, Italian, Hindi, Portuguese, Dutch, Korean, Chinese (Mandarin), Bengali, Tamil, and Polish.
67
+
68
+ ![Murf AI Languages](https://murf.ai/public-assets/home/Murf_Lang.png)
69
+
70
+ - **Multiple Voice Styles:** Choose from 20+ speaking styles to suit your application's needs.
71
+ - **Advanced Voice Customization:** Adjust parameters like pitch, speed, pauses, and pronunciation for optimal output. Fine-grained controls let you tailor the voice output to match your specific requirements.
72
+ - **Multiple Audio Formats:** Generate audio in various formats (e.g., MP3, WAV) with configurable sample rates for optimal quality.
73
+ - **Real-Time Processing:** Benefit from asynchronous API calls that support non-blocking, real-time audio generation and streaming scenarios.
74
+
75
+
76
+ ---
77
+
78
+ ## Async Client
79
+
80
+ The SDK also exports an `async` client so that you can make non-blocking calls to our API.
81
+
82
+ ```python
83
+ import asyncio
84
+
85
+ from murf import AsyncMurf
86
+
87
+ client = AsyncMurf(
88
+ api_key="YOUR_API_KEY",
89
+ )
90
+
91
+
92
+ async def main() -> None:
93
+ await client.text_to_speech.generate(
94
+ format="MP3",
95
+ sample_rate=44100.0,
96
+ text="Hello, world!",
97
+ voice_id="en-US-natalie",
98
+ )
99
+
100
+
101
+ asyncio.run(main())
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Exception Handling
107
+
108
+ When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
109
+ will be thrown.
110
+
111
+ ```python
112
+ from murf.core.api_error import ApiError
113
+
114
+ try:
115
+ client.text_to_speech.generate(...)
116
+ except ApiError as e:
117
+ print(e.status_code)
118
+ print(e.body)
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Advanced
124
+
125
+ ### Retries
126
+
127
+ The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long
128
+ as the request is deemed retriable and the number of retry attempts has not grown larger than the configured
129
+ retry limit (default: 2).
130
+
131
+ A request is deemed retriable when any of the following HTTP status codes is returned:
132
+
133
+ - [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
134
+ - [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
135
+ - [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) (Internal Server Errors)
136
+
137
+ Use the `max_retries` request option to configure this behavior.
138
+
139
+ ```python
140
+ client.text_to_speech.generate(..., request_options={
141
+ "max_retries": 1
142
+ })
143
+ ```
144
+
145
+ ### Timeouts
146
+
147
+ The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.
148
+
149
+ ```python
150
+
151
+ from murf import Murf
152
+
153
+ client = Murf(
154
+ ...,
155
+ timeout=20.0,
156
+ )
157
+
158
+
159
+ # Override timeout for a specific method
160
+ client.text_to_speech.generate(..., request_options={
161
+ "timeout_in_seconds": 1
162
+ })
163
+ ```
164
+
165
+ ### Custom Client
166
+
167
+ You can override the `httpx` client to customize it for your use-case. Some common use-cases include support for proxies
168
+ and transports.
169
+ ```python
170
+ import httpx
171
+ from murf import Murf
172
+
173
+ client = Murf(
174
+ ...,
175
+ httpx_client=httpx.Client(
176
+ proxies="http://my.test.proxy.example.com",
177
+ transport=httpx.HTTPTransport(local_address="0.0.0.0"),
178
+ ),
179
+ )
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Contributing
185
+
186
+ We welcome contributions to enhance the Murf Python SDK. Please note that this library is generated programmatically, so direct modifications may be overwritten. We suggest opening an issue first to discuss your ideas or improvements. Contributions to the documentation are especially appreciated! For any support queries email to support@murf.ai
187
+
188
+ ---
189
+
190
+ ## License
191
+
192
+ Murf Python SDK is released under the [MIT License](LICENSE).
193
+
194
+ ---
@@ -3,7 +3,7 @@ name = "murf"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "murf"
6
- version = "1.0.2"
6
+ version = "1.2.0"
7
7
  description = ""
8
8
  readme = "README.md"
9
9
  authors = []
@@ -1,12 +1,24 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  from .types import (
4
+ ApiJobResponse,
5
+ ApiJobResponseDubbingType,
6
+ ApiJobResponsePriority,
7
+ ApiProjectResponse,
8
+ ApiProjectResponseDubbingType,
4
9
  ApiVoice,
5
10
  ApiVoiceGender,
6
11
  AuthTokenResponse,
12
+ DubApiDetailResponse,
13
+ DubJobStatusResponse,
14
+ FormDataContentDisposition,
7
15
  GenerateSpeechResponse,
16
+ GroupApiProjectResponse,
17
+ LocaleResponse,
18
+ LocaleResponseSupportsItem,
8
19
  PronunciationDetail,
9
20
  PronunciationDetailType,
21
+ SourceLocaleResponse,
10
22
  StyleDetails,
11
23
  WordDuration,
12
24
  )
@@ -18,32 +30,47 @@ from .errors import (
18
30
  ServiceUnavailableError,
19
31
  UnauthorizedError,
20
32
  )
21
- from . import auth, text_to_speech
33
+ from . import auth, dubbing, text_to_speech
22
34
  from .client import AsyncMurf, Murf
35
+ from .dubbing_client import MurfDub
23
36
  from .environment import MurfEnvironment
24
37
  from .text_to_speech import GenerateSpeechRequestModelVersion
25
38
  from .version import __version__
26
39
 
27
40
  __all__ = [
41
+ "ApiJobResponse",
42
+ "ApiJobResponseDubbingType",
43
+ "ApiJobResponsePriority",
44
+ "ApiProjectResponse",
45
+ "ApiProjectResponseDubbingType",
28
46
  "ApiVoice",
29
47
  "ApiVoiceGender",
30
48
  "AsyncMurf",
31
49
  "AuthTokenResponse",
32
50
  "BadRequestError",
51
+ "DubApiDetailResponse",
52
+ "DubJobStatusResponse",
33
53
  "ForbiddenError",
54
+ "FormDataContentDisposition",
34
55
  "GenerateSpeechRequestModelVersion",
35
56
  "GenerateSpeechResponse",
57
+ "GroupApiProjectResponse",
36
58
  "InternalServerError",
59
+ "LocaleResponse",
60
+ "LocaleResponseSupportsItem",
37
61
  "Murf",
62
+ "MurfDub",
38
63
  "MurfEnvironment",
39
64
  "PaymentRequiredError",
40
65
  "PronunciationDetail",
41
66
  "PronunciationDetailType",
42
67
  "ServiceUnavailableError",
68
+ "SourceLocaleResponse",
43
69
  "StyleDetails",
44
70
  "UnauthorizedError",
45
71
  "WordDuration",
46
72
  "__version__",
47
73
  "auth",
74
+ "dubbing",
48
75
  "text_to_speech",
49
76
  ]
@@ -6,9 +6,11 @@ import httpx
6
6
  from .core.client_wrapper import SyncClientWrapper
7
7
  from .auth.client import AuthClient
8
8
  from .text_to_speech.client import TextToSpeechClient
9
+ from .dubbing.client import DubbingClient
9
10
  from .core.client_wrapper import AsyncClientWrapper
10
11
  from .auth.client import AsyncAuthClient
11
12
  from .text_to_speech.client import AsyncTextToSpeechClient
13
+ from .dubbing.client import AsyncDubbingClient
12
14
 
13
15
 
14
16
  class BaseClient:
@@ -71,6 +73,7 @@ class BaseClient:
71
73
  )
72
74
  self.auth = AuthClient(client_wrapper=self._client_wrapper)
73
75
  self.text_to_speech = TextToSpeechClient(client_wrapper=self._client_wrapper)
76
+ self.dubbing = DubbingClient(client_wrapper=self._client_wrapper)
74
77
 
75
78
 
76
79
  class AsyncBaseClient:
@@ -133,6 +136,7 @@ class AsyncBaseClient:
133
136
  )
134
137
  self.auth = AsyncAuthClient(client_wrapper=self._client_wrapper)
135
138
  self.text_to_speech = AsyncTextToSpeechClient(client_wrapper=self._client_wrapper)
139
+ self.dubbing = AsyncDubbingClient(client_wrapper=self._client_wrapper)
136
140
 
137
141
 
138
142
  def _get_base_url(*, base_url: typing.Optional[str] = None, environment: MurfEnvironment) -> str:
@@ -59,6 +59,7 @@ class Murf(BaseClient):
59
59
  follow_redirects=follow_redirects,
60
60
  httpx_client=httpx_client
61
61
  )
62
+ self.dubbing = None # type: ignore
62
63
 
63
64
 
64
65
  class AsyncMurf(AsyncBaseClient):
@@ -115,4 +116,5 @@ class AsyncMurf(AsyncBaseClient):
115
116
  timeout=timeout,
116
117
  follow_redirects=follow_redirects,
117
118
  httpx_client=httpx_client
118
- )
119
+ )
120
+ self.dubbing = None # type: ignore
@@ -16,7 +16,7 @@ class BaseClientWrapper:
16
16
  headers: typing.Dict[str, str] = {
17
17
  "X-Fern-Language": "Python",
18
18
  "X-Fern-SDK-Name": "murf",
19
- "X-Fern-SDK-Version": "1.0.2",
19
+ "X-Fern-SDK-Version": "1.2.0",
20
20
  }
21
21
  if self._api_key is not None:
22
22
  headers["api-key"] = self._api_key
@@ -0,0 +1,14 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from . import jobs, languages, projects
4
+ from .jobs import JobsCreateRequestPriority, JobsCreateWithProjectIdRequestPriority
5
+ from .projects import ApiCreateProjectRequestDubbingType
6
+
7
+ __all__ = [
8
+ "ApiCreateProjectRequestDubbingType",
9
+ "JobsCreateRequestPriority",
10
+ "JobsCreateWithProjectIdRequestPriority",
11
+ "jobs",
12
+ "languages",
13
+ "projects",
14
+ ]
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.client_wrapper import SyncClientWrapper
4
+ from .languages.client import LanguagesClient
5
+ from .jobs.client import JobsClient
6
+ from .projects.client import ProjectsClient
7
+ from ..core.client_wrapper import AsyncClientWrapper
8
+ from .languages.client import AsyncLanguagesClient
9
+ from .jobs.client import AsyncJobsClient
10
+ from .projects.client import AsyncProjectsClient
11
+
12
+
13
+ class DubbingClient:
14
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
15
+ self._client_wrapper = client_wrapper
16
+ self.languages = LanguagesClient(client_wrapper=self._client_wrapper)
17
+ self.jobs = JobsClient(client_wrapper=self._client_wrapper)
18
+ self.projects = ProjectsClient(client_wrapper=self._client_wrapper)
19
+
20
+
21
+ class AsyncDubbingClient:
22
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
23
+ self._client_wrapper = client_wrapper
24
+ self.languages = AsyncLanguagesClient(client_wrapper=self._client_wrapper)
25
+ self.jobs = AsyncJobsClient(client_wrapper=self._client_wrapper)
26
+ self.projects = AsyncProjectsClient(client_wrapper=self._client_wrapper)
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from .types import JobsCreateRequestPriority, JobsCreateWithProjectIdRequestPriority
4
+
5
+ __all__ = ["JobsCreateRequestPriority", "JobsCreateWithProjectIdRequestPriority"]