spitch 1.5.0__py3-none-any.whl → 1.7.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 spitch might be problematic. Click here for more details.

spitch/_base_client.py CHANGED
@@ -143,6 +143,12 @@ class PageInfo:
143
143
  self.url = url
144
144
  self.params = params
145
145
 
146
+ @override
147
+ def __repr__(self) -> str:
148
+ if self.url:
149
+ return f"{self.__class__.__name__}(url={self.url})"
150
+ return f"{self.__class__.__name__}(params={self.params})"
151
+
146
152
 
147
153
  class BasePage(GenericModel, Generic[_T]):
148
154
  """
@@ -689,7 +695,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
689
695
  if retry_after is not None and 0 < retry_after <= 60:
690
696
  return retry_after
691
697
 
692
- nb_retries = max_retries - remaining_retries
698
+ # Also cap retry count to 1000 to avoid any potential overflows with `pow`
699
+ nb_retries = min(max_retries - remaining_retries, 1000)
693
700
 
694
701
  # Apply exponential backoff, but not more than the max.
695
702
  sleep_seconds = min(INITIAL_RETRY_DELAY * pow(2.0, nb_retries), MAX_RETRY_DELAY)
spitch/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "spitch"
4
- __version__ = "1.5.0" # x-release-please-version
4
+ __version__ = "1.7.0" # x-release-please-version
@@ -7,7 +7,7 @@ from typing_extensions import Literal
7
7
 
8
8
  import httpx
9
9
 
10
- from ..types import speech_generate_params, speech_transcibe_params
10
+ from ..types import speech_generate_params, speech_transcribe_params
11
11
  from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven, FileTypes
12
12
  from .._utils import (
13
13
  extract_files,
@@ -61,7 +61,7 @@ class SpeechResource(SyncAPIResource):
61
61
  *,
62
62
  language: Literal["yo", "en", "ha", "ig"],
63
63
  text: str,
64
- voice: Literal["sade", "segun", "femi", "funmi"] | NotGiven = NOT_GIVEN,
64
+ voice: Literal["sade", "segun", "femi", "funmi"],
65
65
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
66
66
  # The extra values given here take precedence over values defined on the client or passed to this method.
67
67
  extra_headers: Headers | None = None,
@@ -98,7 +98,7 @@ class SpeechResource(SyncAPIResource):
98
98
  cast_to=BinaryAPIResponse,
99
99
  )
100
100
 
101
- def transcibe(
101
+ def transcribe(
102
102
  self,
103
103
  *,
104
104
  language: Literal["yo", "en", "ha", "ig"],
@@ -137,7 +137,7 @@ class SpeechResource(SyncAPIResource):
137
137
  extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
138
138
  return self._post(
139
139
  "/v1/transcriptions",
140
- body=maybe_transform(body, speech_transcibe_params.SpeechTranscibeParams),
140
+ body=maybe_transform(body, speech_transcribe_params.SpeechTranscribeParams),
141
141
  files=files,
142
142
  options=make_request_options(
143
143
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -171,7 +171,7 @@ class AsyncSpeechResource(AsyncAPIResource):
171
171
  *,
172
172
  language: Literal["yo", "en", "ha", "ig"],
173
173
  text: str,
174
- voice: Literal["sade", "segun", "femi", "funmi"] | NotGiven = NOT_GIVEN,
174
+ voice: Literal["sade", "segun", "femi", "funmi"],
175
175
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
176
176
  # The extra values given here take precedence over values defined on the client or passed to this method.
177
177
  extra_headers: Headers | None = None,
@@ -208,7 +208,7 @@ class AsyncSpeechResource(AsyncAPIResource):
208
208
  cast_to=AsyncBinaryAPIResponse,
209
209
  )
210
210
 
211
- async def transcibe(
211
+ async def transcribe(
212
212
  self,
213
213
  *,
214
214
  language: Literal["yo", "en", "ha", "ig"],
@@ -247,7 +247,7 @@ class AsyncSpeechResource(AsyncAPIResource):
247
247
  extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
248
248
  return await self._post(
249
249
  "/v1/transcriptions",
250
- body=await async_maybe_transform(body, speech_transcibe_params.SpeechTranscibeParams),
250
+ body=await async_maybe_transform(body, speech_transcribe_params.SpeechTranscribeParams),
251
251
  files=files,
252
252
  options=make_request_options(
253
253
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -264,8 +264,8 @@ class SpeechResourceWithRawResponse:
264
264
  speech.generate,
265
265
  BinaryAPIResponse,
266
266
  )
267
- self.transcibe = to_raw_response_wrapper(
268
- speech.transcibe,
267
+ self.transcribe = to_raw_response_wrapper(
268
+ speech.transcribe,
269
269
  )
270
270
 
271
271
 
@@ -277,8 +277,8 @@ class AsyncSpeechResourceWithRawResponse:
277
277
  speech.generate,
278
278
  AsyncBinaryAPIResponse,
279
279
  )
280
- self.transcibe = async_to_raw_response_wrapper(
281
- speech.transcibe,
280
+ self.transcribe = async_to_raw_response_wrapper(
281
+ speech.transcribe,
282
282
  )
283
283
 
284
284
 
@@ -290,8 +290,8 @@ class SpeechResourceWithStreamingResponse:
290
290
  speech.generate,
291
291
  StreamedBinaryAPIResponse
292
292
  )
293
- self.transcibe = to_streamed_response_wrapper(
294
- speech.transcibe,
293
+ self.transcribe = to_streamed_response_wrapper(
294
+ speech.transcribe,
295
295
  )
296
296
 
297
297
 
@@ -303,6 +303,6 @@ class AsyncSpeechResourceWithStreamingResponse:
303
303
  speech.generate,
304
304
  AsyncStreamedBinaryAPIResponse
305
305
  )
306
- self.transcibe = async_to_streamed_response_wrapper(
307
- speech.transcibe,
306
+ self.transcribe = async_to_streamed_response_wrapper(
307
+ speech.transcribe,
308
308
  )
spitch/types/__init__.py CHANGED
@@ -4,4 +4,4 @@ from __future__ import annotations
4
4
 
5
5
  from .text_tone_mark_params import TextToneMarkParams as TextToneMarkParams
6
6
  from .speech_generate_params import SpeechGenerateParams as SpeechGenerateParams
7
- from .speech_transcibe_params import SpeechTranscibeParams as SpeechTranscibeParams
7
+ from .speech_transcribe_params import SpeechTranscribeParams as SpeechTranscribeParams
@@ -12,4 +12,4 @@ class SpeechGenerateParams(TypedDict, total=False):
12
12
 
13
13
  text: Required[str]
14
14
 
15
- voice: Literal["sade", "segun", "femi", "funmi"]
15
+ voice: Required[Literal["sade", "segun", "femi", "funmi"]]
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Optional
6
+ from typing_extensions import Literal, Required, TypedDict
7
+
8
+ from .._types import FileTypes
9
+
10
+ __all__ = ["SpeechTranscribeParams"]
11
+
12
+
13
+ class SpeechTranscribeParams(TypedDict, total=False):
14
+ language: Required[Literal["yo", "en", "ha", "ig"]]
15
+
16
+ content: Optional[FileTypes]
17
+
18
+ url: Optional[str]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: spitch
3
- Version: 1.5.0
3
+ Version: 1.7.0
4
4
  Summary: The official Python library for the spitch API
5
5
  Project-URL: Homepage, https://github.com/spi-tch/spitch-python
6
6
  Project-URL: Repository, https://github.com/spi-tch/spitch-python
@@ -69,6 +69,7 @@ client = Spitch(
69
69
  response = client.speech.generate(
70
70
  language="yo",
71
71
  text="text",
72
+ voice="sade",
72
73
  )
73
74
  ```
74
75
 
@@ -96,6 +97,7 @@ async def main() -> None:
96
97
  response = await client.speech.generate(
97
98
  language="yo",
98
99
  text="text",
100
+ voice="sade",
99
101
  )
100
102
 
101
103
 
@@ -132,6 +134,7 @@ try:
132
134
  client.speech.generate(
133
135
  language="yo",
134
136
  text="text",
137
+ voice="sade",
135
138
  )
136
139
  except spitch.APIConnectionError as e:
137
140
  print("The server could not be reached")
@@ -178,6 +181,7 @@ client = Spitch(
178
181
  client.with_options(max_retries=5).speech.generate(
179
182
  language="yo",
180
183
  text="text",
184
+ voice="sade",
181
185
  )
182
186
  ```
183
187
 
@@ -204,6 +208,7 @@ client = Spitch(
204
208
  client.with_options(timeout=5.0).speech.generate(
205
209
  language="yo",
206
210
  text="text",
211
+ voice="sade",
207
212
  )
208
213
  ```
209
214
 
@@ -246,6 +251,7 @@ client = Spitch()
246
251
  response = client.speech.with_raw_response.generate(
247
252
  language="yo",
248
253
  text="text",
254
+ voice="sade",
249
255
  )
250
256
  print(response.headers.get('X-My-Header'))
251
257
 
@@ -267,6 +273,7 @@ To stream the response body, use `.with_streaming_response` instead, which requi
267
273
  with client.speech.with_streaming_response.generate(
268
274
  language="yo",
269
275
  text="text",
276
+ voice="sade",
270
277
  ) as response:
271
278
  print(response.headers.get("X-My-Header"))
272
279
 
@@ -1,5 +1,5 @@
1
1
  spitch/__init__.py,sha256=mBQhmNu88PeR66Zmw9atnzuU8f1mpSPcW7vn-EeSikE,2399
2
- spitch/_base_client.py,sha256=d3W2i2JM-7mgoKHlcCW3uKkXuouo3hNWldLEQTmOrW8,67549
2
+ spitch/_base_client.py,sha256=PLtLHoOh2kn4Bpm-5tYKIUrVqbuD0UWr1BKuhnGwUXU,67840
3
3
  spitch/_client.py,sha256=wnexAmnaiafFtJM7PC9LyThw3aIkI6eLn7ZReCL2iLY,15446
4
4
  spitch/_compat.py,sha256=9CWnEaYK0kot7aSNW-m2W9xZb5giIdvKN9sWxvBbbSA,6488
5
5
  spitch/_constants.py,sha256=JE8kyZa2Q4NK_i4fO--8siEYTzeHnT0fYbOFDgDP4uk,464
@@ -11,7 +11,7 @@ spitch/_resource.py,sha256=TLFPcOOmtxZOQLh3XCNPB_BdrQpp0MIYoKoH52aRAu8,1100
11
11
  spitch/_response.py,sha256=aN6swtguiZ7CC_hWFrwoUa53FgSbjRfZXxYHvfDNGeo,28609
12
12
  spitch/_streaming.py,sha256=5SpId2EIfF8Ee8UUYmJxqgHUGP1ZdHCUHhHCdNJREFA,10100
13
13
  spitch/_types.py,sha256=dsJyGWdBXaYJaRBqn2V3iRsfpWw71rFaSxdSM8sPQYY,6103
14
- spitch/_version.py,sha256=UhWuVIHyisnkvhD1Rhnd0BfNX7mhovssT4wjb8pFMBM,158
14
+ spitch/_version.py,sha256=L0Aps0N-5x9tukfOzO2wIPVTHcOjnBjKtV6Pjx2jzIo,158
15
15
  spitch/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  spitch/_utils/__init__.py,sha256=Uzq1-FIih_VUjzdNVWXks0sdC39KBKLMrZoz-_JOjJ4,1988
17
17
  spitch/_utils/_logs.py,sha256=ApRyYK_WgZfEr_ygBUBXWMlTgeMr2tdNOGlH8jE4oJc,774
@@ -24,13 +24,14 @@ spitch/_utils/_typing.py,sha256=tFbktdpdHCQliwzGsWysgn0P5H0JRdagkZdb_LegGkY,3838
24
24
  spitch/_utils/_utils.py,sha256=tYrr7IX-5NMwsVKbNggbzOM84uNw7XnAe06e2Ln8Or0,11472
25
25
  spitch/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
26
26
  spitch/resources/__init__.py,sha256=KT6rAvIlWHQk9QdM4Jp8ABziKILaBrrtiO7LCB5Wa5E,976
27
- spitch/resources/speech.py,sha256=VJxU4pP1DObPB9gP5IkMPLN4IP6jGT5fbUJXlWAT23w,11388
27
+ spitch/resources/speech.py,sha256=srpM1YYYJs0_TegHmnh0WSIoa1lIKBbOnZ18LKzZOD4,11357
28
28
  spitch/resources/text.py,sha256=xy7N1q5ioXVMtmcW6iOE8j8n9j4lvnpvO4jJ9FMZmsU,6071
29
- spitch/types/__init__.py,sha256=4aa9CgcCmGRqZb4k9F3005Q4Ok-zjiiqw5k3BXIQ3MY,364
30
- spitch/types/speech_generate_params.py,sha256=xJPVX2uBsrLBMX4gQF9ydHG2PcIgau5PbBTO1eFccZk,407
29
+ spitch/types/__init__.py,sha256=4ePk7asUYW79AqILx8fmOhFnMgUpWyMvkhZUbOpaaUA,367
30
+ spitch/types/speech_generate_params.py,sha256=cZjZhlP9CIuwRQEnsAiBCurPEIlLgVBTYxx98hQViHg,417
31
31
  spitch/types/speech_transcibe_params.py,sha256=WvwBsSctqJDXOFJNYyjfijwCnAdJCPkJobESfmLy3aI,448
32
+ spitch/types/speech_transcribe_params.py,sha256=FEG512EPDTm2WbDHefbn8tiSbnIqF8ZnFjc4rYekMRY,450
32
33
  spitch/types/text_tone_mark_params.py,sha256=63P5VElxanYkDP1ZLEuQt97JSgVpMCaAo4WRWLDvhlY,349
33
- spitch-1.5.0.dist-info/METADATA,sha256=KqwkbhgZgI49d50F-Mq4wzml_cBBKsqPw0uzNhRIePE,12511
34
- spitch-1.5.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
35
- spitch-1.5.0.dist-info/licenses/LICENSE,sha256=529F8Amq5MfoIm33JY544oweKES9vw9_xS1CNx-ztPI,11336
36
- spitch-1.5.0.dist-info/RECORD,,
34
+ spitch-1.7.0.dist-info/METADATA,sha256=VpNNdGB6_Uf7Revzl-lakCCojah4sKV4fkwBM4cGRHc,12645
35
+ spitch-1.7.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
36
+ spitch-1.7.0.dist-info/licenses/LICENSE,sha256=529F8Amq5MfoIm33JY544oweKES9vw9_xS1CNx-ztPI,11336
37
+ spitch-1.7.0.dist-info/RECORD,,
File without changes