runwayml 1.0.0__py3-none-any.whl → 2.0.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.
- runwayml/_base_client.py +63 -48
- runwayml/_compat.py +2 -0
- runwayml/_version.py +1 -1
- runwayml/resources/image_to_video.py +16 -0
- runwayml/types/image_to_video_create_params.py +6 -0
- {runwayml-1.0.0.dist-info → runwayml-2.0.0.dist-info}/METADATA +5 -1
- {runwayml-1.0.0.dist-info → runwayml-2.0.0.dist-info}/RECORD +9 -9
- {runwayml-1.0.0.dist-info → runwayml-2.0.0.dist-info}/WHEEL +0 -0
- {runwayml-1.0.0.dist-info → runwayml-2.0.0.dist-info}/licenses/LICENSE +0 -0
runwayml/_base_client.py
CHANGED
@@ -400,14 +400,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
400
400
|
) -> _exceptions.APIStatusError:
|
401
401
|
raise NotImplementedError()
|
402
402
|
|
403
|
-
def
|
404
|
-
self,
|
405
|
-
remaining_retries: Optional[int],
|
406
|
-
options: FinalRequestOptions,
|
407
|
-
) -> int:
|
408
|
-
return remaining_retries if remaining_retries is not None else options.get_max_retries(self.max_retries)
|
409
|
-
|
410
|
-
def _build_headers(self, options: FinalRequestOptions) -> httpx.Headers:
|
403
|
+
def _build_headers(self, options: FinalRequestOptions, *, retries_taken: int = 0) -> httpx.Headers:
|
411
404
|
custom_headers = options.headers or {}
|
412
405
|
headers_dict = _merge_mappings(self.default_headers, custom_headers)
|
413
406
|
self._validate_headers(headers_dict, custom_headers)
|
@@ -419,6 +412,11 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
419
412
|
if idempotency_header and options.method.lower() != "get" and idempotency_header not in headers:
|
420
413
|
headers[idempotency_header] = options.idempotency_key or self._idempotency_key()
|
421
414
|
|
415
|
+
# Don't set the retry count header if it was already set or removed by the caller. We check
|
416
|
+
# `custom_headers`, which can contain `Omit()`, instead of `headers` to account for the removal case.
|
417
|
+
if "x-stainless-retry-count" not in (header.lower() for header in custom_headers):
|
418
|
+
headers["x-stainless-retry-count"] = str(retries_taken)
|
419
|
+
|
422
420
|
return headers
|
423
421
|
|
424
422
|
def _prepare_url(self, url: str) -> URL:
|
@@ -440,6 +438,8 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
440
438
|
def _build_request(
|
441
439
|
self,
|
442
440
|
options: FinalRequestOptions,
|
441
|
+
*,
|
442
|
+
retries_taken: int = 0,
|
443
443
|
) -> httpx.Request:
|
444
444
|
if log.isEnabledFor(logging.DEBUG):
|
445
445
|
log.debug("Request options: %s", model_dump(options, exclude_unset=True))
|
@@ -455,7 +455,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
455
455
|
else:
|
456
456
|
raise RuntimeError(f"Unexpected JSON data type, {type(json_data)}, cannot merge with `extra_body`")
|
457
457
|
|
458
|
-
headers = self._build_headers(options)
|
458
|
+
headers = self._build_headers(options, retries_taken=retries_taken)
|
459
459
|
params = _merge_mappings(self.default_query, options.params)
|
460
460
|
content_type = headers.get("Content-Type")
|
461
461
|
files = options.files
|
@@ -489,12 +489,17 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
489
489
|
if not files:
|
490
490
|
files = cast(HttpxRequestFiles, ForceMultipartDict())
|
491
491
|
|
492
|
+
prepared_url = self._prepare_url(options.url)
|
493
|
+
if "_" in prepared_url.host:
|
494
|
+
# work around https://github.com/encode/httpx/discussions/2880
|
495
|
+
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
|
496
|
+
|
492
497
|
# TODO: report this error to httpx
|
493
498
|
return self._client.build_request( # pyright: ignore[reportUnknownMemberType]
|
494
499
|
headers=headers,
|
495
500
|
timeout=self.timeout if isinstance(options.timeout, NotGiven) else options.timeout,
|
496
501
|
method=options.method,
|
497
|
-
url=
|
502
|
+
url=prepared_url,
|
498
503
|
# the `Query` type that we use is incompatible with qs'
|
499
504
|
# `Params` type as it needs to be typed as `Mapping[str, object]`
|
500
505
|
# so that passing a `TypedDict` doesn't cause an error.
|
@@ -933,12 +938,17 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
933
938
|
stream: bool = False,
|
934
939
|
stream_cls: type[_StreamT] | None = None,
|
935
940
|
) -> ResponseT | _StreamT:
|
941
|
+
if remaining_retries is not None:
|
942
|
+
retries_taken = options.get_max_retries(self.max_retries) - remaining_retries
|
943
|
+
else:
|
944
|
+
retries_taken = 0
|
945
|
+
|
936
946
|
return self._request(
|
937
947
|
cast_to=cast_to,
|
938
948
|
options=options,
|
939
949
|
stream=stream,
|
940
950
|
stream_cls=stream_cls,
|
941
|
-
|
951
|
+
retries_taken=retries_taken,
|
942
952
|
)
|
943
953
|
|
944
954
|
def _request(
|
@@ -946,7 +956,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
946
956
|
*,
|
947
957
|
cast_to: Type[ResponseT],
|
948
958
|
options: FinalRequestOptions,
|
949
|
-
|
959
|
+
retries_taken: int,
|
950
960
|
stream: bool,
|
951
961
|
stream_cls: type[_StreamT] | None,
|
952
962
|
) -> ResponseT | _StreamT:
|
@@ -958,8 +968,8 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
958
968
|
cast_to = self._maybe_override_cast_to(cast_to, options)
|
959
969
|
options = self._prepare_options(options)
|
960
970
|
|
961
|
-
|
962
|
-
request = self._build_request(options)
|
971
|
+
remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
|
972
|
+
request = self._build_request(options, retries_taken=retries_taken)
|
963
973
|
self._prepare_request(request)
|
964
974
|
|
965
975
|
kwargs: HttpxSendArgs = {}
|
@@ -977,11 +987,11 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
977
987
|
except httpx.TimeoutException as err:
|
978
988
|
log.debug("Encountered httpx.TimeoutException", exc_info=True)
|
979
989
|
|
980
|
-
if
|
990
|
+
if remaining_retries > 0:
|
981
991
|
return self._retry_request(
|
982
992
|
input_options,
|
983
993
|
cast_to,
|
984
|
-
|
994
|
+
retries_taken=retries_taken,
|
985
995
|
stream=stream,
|
986
996
|
stream_cls=stream_cls,
|
987
997
|
response_headers=None,
|
@@ -992,11 +1002,11 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
992
1002
|
except Exception as err:
|
993
1003
|
log.debug("Encountered Exception", exc_info=True)
|
994
1004
|
|
995
|
-
if
|
1005
|
+
if remaining_retries > 0:
|
996
1006
|
return self._retry_request(
|
997
1007
|
input_options,
|
998
1008
|
cast_to,
|
999
|
-
|
1009
|
+
retries_taken=retries_taken,
|
1000
1010
|
stream=stream,
|
1001
1011
|
stream_cls=stream_cls,
|
1002
1012
|
response_headers=None,
|
@@ -1019,13 +1029,13 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
1019
1029
|
except httpx.HTTPStatusError as err: # thrown on 4xx and 5xx status code
|
1020
1030
|
log.debug("Encountered httpx.HTTPStatusError", exc_info=True)
|
1021
1031
|
|
1022
|
-
if
|
1032
|
+
if remaining_retries > 0 and self._should_retry(err.response):
|
1023
1033
|
err.response.close()
|
1024
1034
|
return self._retry_request(
|
1025
1035
|
input_options,
|
1026
1036
|
cast_to,
|
1027
|
-
|
1028
|
-
err.response.headers,
|
1037
|
+
retries_taken=retries_taken,
|
1038
|
+
response_headers=err.response.headers,
|
1029
1039
|
stream=stream,
|
1030
1040
|
stream_cls=stream_cls,
|
1031
1041
|
)
|
@@ -1044,26 +1054,26 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
1044
1054
|
response=response,
|
1045
1055
|
stream=stream,
|
1046
1056
|
stream_cls=stream_cls,
|
1047
|
-
retries_taken=
|
1057
|
+
retries_taken=retries_taken,
|
1048
1058
|
)
|
1049
1059
|
|
1050
1060
|
def _retry_request(
|
1051
1061
|
self,
|
1052
1062
|
options: FinalRequestOptions,
|
1053
1063
|
cast_to: Type[ResponseT],
|
1054
|
-
remaining_retries: int,
|
1055
|
-
response_headers: httpx.Headers | None,
|
1056
1064
|
*,
|
1065
|
+
retries_taken: int,
|
1066
|
+
response_headers: httpx.Headers | None,
|
1057
1067
|
stream: bool,
|
1058
1068
|
stream_cls: type[_StreamT] | None,
|
1059
1069
|
) -> ResponseT | _StreamT:
|
1060
|
-
|
1061
|
-
if
|
1070
|
+
remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
|
1071
|
+
if remaining_retries == 1:
|
1062
1072
|
log.debug("1 retry left")
|
1063
1073
|
else:
|
1064
|
-
log.debug("%i retries left",
|
1074
|
+
log.debug("%i retries left", remaining_retries)
|
1065
1075
|
|
1066
|
-
timeout = self._calculate_retry_timeout(
|
1076
|
+
timeout = self._calculate_retry_timeout(remaining_retries, options, response_headers)
|
1067
1077
|
log.info("Retrying request to %s in %f seconds", options.url, timeout)
|
1068
1078
|
|
1069
1079
|
# In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a
|
@@ -1073,7 +1083,7 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
1073
1083
|
return self._request(
|
1074
1084
|
options=options,
|
1075
1085
|
cast_to=cast_to,
|
1076
|
-
|
1086
|
+
retries_taken=retries_taken + 1,
|
1077
1087
|
stream=stream,
|
1078
1088
|
stream_cls=stream_cls,
|
1079
1089
|
)
|
@@ -1491,12 +1501,17 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1491
1501
|
stream_cls: type[_AsyncStreamT] | None = None,
|
1492
1502
|
remaining_retries: Optional[int] = None,
|
1493
1503
|
) -> ResponseT | _AsyncStreamT:
|
1504
|
+
if remaining_retries is not None:
|
1505
|
+
retries_taken = options.get_max_retries(self.max_retries) - remaining_retries
|
1506
|
+
else:
|
1507
|
+
retries_taken = 0
|
1508
|
+
|
1494
1509
|
return await self._request(
|
1495
1510
|
cast_to=cast_to,
|
1496
1511
|
options=options,
|
1497
1512
|
stream=stream,
|
1498
1513
|
stream_cls=stream_cls,
|
1499
|
-
|
1514
|
+
retries_taken=retries_taken,
|
1500
1515
|
)
|
1501
1516
|
|
1502
1517
|
async def _request(
|
@@ -1506,7 +1521,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1506
1521
|
*,
|
1507
1522
|
stream: bool,
|
1508
1523
|
stream_cls: type[_AsyncStreamT] | None,
|
1509
|
-
|
1524
|
+
retries_taken: int,
|
1510
1525
|
) -> ResponseT | _AsyncStreamT:
|
1511
1526
|
if self._platform is None:
|
1512
1527
|
# `get_platform` can make blocking IO calls so we
|
@@ -1521,8 +1536,8 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1521
1536
|
cast_to = self._maybe_override_cast_to(cast_to, options)
|
1522
1537
|
options = await self._prepare_options(options)
|
1523
1538
|
|
1524
|
-
|
1525
|
-
request = self._build_request(options)
|
1539
|
+
remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
|
1540
|
+
request = self._build_request(options, retries_taken=retries_taken)
|
1526
1541
|
await self._prepare_request(request)
|
1527
1542
|
|
1528
1543
|
kwargs: HttpxSendArgs = {}
|
@@ -1538,11 +1553,11 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1538
1553
|
except httpx.TimeoutException as err:
|
1539
1554
|
log.debug("Encountered httpx.TimeoutException", exc_info=True)
|
1540
1555
|
|
1541
|
-
if
|
1556
|
+
if remaining_retries > 0:
|
1542
1557
|
return await self._retry_request(
|
1543
1558
|
input_options,
|
1544
1559
|
cast_to,
|
1545
|
-
|
1560
|
+
retries_taken=retries_taken,
|
1546
1561
|
stream=stream,
|
1547
1562
|
stream_cls=stream_cls,
|
1548
1563
|
response_headers=None,
|
@@ -1553,11 +1568,11 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1553
1568
|
except Exception as err:
|
1554
1569
|
log.debug("Encountered Exception", exc_info=True)
|
1555
1570
|
|
1556
|
-
if
|
1571
|
+
if retries_taken > 0:
|
1557
1572
|
return await self._retry_request(
|
1558
1573
|
input_options,
|
1559
1574
|
cast_to,
|
1560
|
-
|
1575
|
+
retries_taken=retries_taken,
|
1561
1576
|
stream=stream,
|
1562
1577
|
stream_cls=stream_cls,
|
1563
1578
|
response_headers=None,
|
@@ -1575,13 +1590,13 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1575
1590
|
except httpx.HTTPStatusError as err: # thrown on 4xx and 5xx status code
|
1576
1591
|
log.debug("Encountered httpx.HTTPStatusError", exc_info=True)
|
1577
1592
|
|
1578
|
-
if
|
1593
|
+
if remaining_retries > 0 and self._should_retry(err.response):
|
1579
1594
|
await err.response.aclose()
|
1580
1595
|
return await self._retry_request(
|
1581
1596
|
input_options,
|
1582
1597
|
cast_to,
|
1583
|
-
|
1584
|
-
err.response.headers,
|
1598
|
+
retries_taken=retries_taken,
|
1599
|
+
response_headers=err.response.headers,
|
1585
1600
|
stream=stream,
|
1586
1601
|
stream_cls=stream_cls,
|
1587
1602
|
)
|
@@ -1600,26 +1615,26 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1600
1615
|
response=response,
|
1601
1616
|
stream=stream,
|
1602
1617
|
stream_cls=stream_cls,
|
1603
|
-
retries_taken=
|
1618
|
+
retries_taken=retries_taken,
|
1604
1619
|
)
|
1605
1620
|
|
1606
1621
|
async def _retry_request(
|
1607
1622
|
self,
|
1608
1623
|
options: FinalRequestOptions,
|
1609
1624
|
cast_to: Type[ResponseT],
|
1610
|
-
remaining_retries: int,
|
1611
|
-
response_headers: httpx.Headers | None,
|
1612
1625
|
*,
|
1626
|
+
retries_taken: int,
|
1627
|
+
response_headers: httpx.Headers | None,
|
1613
1628
|
stream: bool,
|
1614
1629
|
stream_cls: type[_AsyncStreamT] | None,
|
1615
1630
|
) -> ResponseT | _AsyncStreamT:
|
1616
|
-
|
1617
|
-
if
|
1631
|
+
remaining_retries = options.get_max_retries(self.max_retries) - retries_taken
|
1632
|
+
if remaining_retries == 1:
|
1618
1633
|
log.debug("1 retry left")
|
1619
1634
|
else:
|
1620
|
-
log.debug("%i retries left",
|
1635
|
+
log.debug("%i retries left", remaining_retries)
|
1621
1636
|
|
1622
|
-
timeout = self._calculate_retry_timeout(
|
1637
|
+
timeout = self._calculate_retry_timeout(remaining_retries, options, response_headers)
|
1623
1638
|
log.info("Retrying request to %s in %f seconds", options.url, timeout)
|
1624
1639
|
|
1625
1640
|
await anyio.sleep(timeout)
|
@@ -1627,7 +1642,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
1627
1642
|
return await self._request(
|
1628
1643
|
options=options,
|
1629
1644
|
cast_to=cast_to,
|
1630
|
-
|
1645
|
+
retries_taken=retries_taken + 1,
|
1631
1646
|
stream=stream,
|
1632
1647
|
stream_cls=stream_cls,
|
1633
1648
|
)
|
runwayml/_compat.py
CHANGED
@@ -136,12 +136,14 @@ def model_dump(
|
|
136
136
|
exclude: IncEx = None,
|
137
137
|
exclude_unset: bool = False,
|
138
138
|
exclude_defaults: bool = False,
|
139
|
+
warnings: bool = True,
|
139
140
|
) -> dict[str, Any]:
|
140
141
|
if PYDANTIC_V2:
|
141
142
|
return model.model_dump(
|
142
143
|
exclude=exclude,
|
143
144
|
exclude_unset=exclude_unset,
|
144
145
|
exclude_defaults=exclude_defaults,
|
146
|
+
warnings=warnings,
|
145
147
|
)
|
146
148
|
return cast(
|
147
149
|
"dict[str, Any]",
|
runwayml/_version.py
CHANGED
@@ -51,7 +51,9 @@ class ImageToVideoResource(SyncAPIResource):
|
|
51
51
|
*,
|
52
52
|
model: Literal["gen3a_turbo"],
|
53
53
|
prompt_image: str,
|
54
|
+
duration: Literal[5, 10] | NotGiven = NOT_GIVEN,
|
54
55
|
prompt_text: str | NotGiven = NOT_GIVEN,
|
56
|
+
ratio: Literal["16:9", "9:16"] | NotGiven = NOT_GIVEN,
|
55
57
|
seed: int | NotGiven = NOT_GIVEN,
|
56
58
|
watermark: bool | NotGiven = NOT_GIVEN,
|
57
59
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -70,8 +72,12 @@ class ImageToVideoResource(SyncAPIResource):
|
|
70
72
|
prompt_image: A HTTPS URL pointing to an image. Images must be JPEG, PNG, or WebP and are
|
71
73
|
limited to 16MB. Responses must include a valid `Content-Length` header.
|
72
74
|
|
75
|
+
duration: The number of seconds of duration for the output video.
|
76
|
+
|
73
77
|
prompt_text
|
74
78
|
|
79
|
+
ratio: The aspect ratio of the output video.
|
80
|
+
|
75
81
|
seed: If unspecified, a random number is chosen. Varying the seed integer is a way to
|
76
82
|
get different results for the same other request parameters. Using the same seed
|
77
83
|
integer for an identical request will produce similar results.
|
@@ -93,7 +99,9 @@ class ImageToVideoResource(SyncAPIResource):
|
|
93
99
|
{
|
94
100
|
"model": model,
|
95
101
|
"prompt_image": prompt_image,
|
102
|
+
"duration": duration,
|
96
103
|
"prompt_text": prompt_text,
|
104
|
+
"ratio": ratio,
|
97
105
|
"seed": seed,
|
98
106
|
"watermark": watermark,
|
99
107
|
},
|
@@ -131,7 +139,9 @@ class AsyncImageToVideoResource(AsyncAPIResource):
|
|
131
139
|
*,
|
132
140
|
model: Literal["gen3a_turbo"],
|
133
141
|
prompt_image: str,
|
142
|
+
duration: Literal[5, 10] | NotGiven = NOT_GIVEN,
|
134
143
|
prompt_text: str | NotGiven = NOT_GIVEN,
|
144
|
+
ratio: Literal["16:9", "9:16"] | NotGiven = NOT_GIVEN,
|
135
145
|
seed: int | NotGiven = NOT_GIVEN,
|
136
146
|
watermark: bool | NotGiven = NOT_GIVEN,
|
137
147
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -150,8 +160,12 @@ class AsyncImageToVideoResource(AsyncAPIResource):
|
|
150
160
|
prompt_image: A HTTPS URL pointing to an image. Images must be JPEG, PNG, or WebP and are
|
151
161
|
limited to 16MB. Responses must include a valid `Content-Length` header.
|
152
162
|
|
163
|
+
duration: The number of seconds of duration for the output video.
|
164
|
+
|
153
165
|
prompt_text
|
154
166
|
|
167
|
+
ratio: The aspect ratio of the output video.
|
168
|
+
|
155
169
|
seed: If unspecified, a random number is chosen. Varying the seed integer is a way to
|
156
170
|
get different results for the same other request parameters. Using the same seed
|
157
171
|
integer for an identical request will produce similar results.
|
@@ -173,7 +187,9 @@ class AsyncImageToVideoResource(AsyncAPIResource):
|
|
173
187
|
{
|
174
188
|
"model": model,
|
175
189
|
"prompt_image": prompt_image,
|
190
|
+
"duration": duration,
|
176
191
|
"prompt_text": prompt_text,
|
192
|
+
"ratio": ratio,
|
177
193
|
"seed": seed,
|
178
194
|
"watermark": watermark,
|
179
195
|
},
|
@@ -20,8 +20,14 @@ class ImageToVideoCreateParams(TypedDict, total=False):
|
|
20
20
|
include a valid `Content-Length` header.
|
21
21
|
"""
|
22
22
|
|
23
|
+
duration: Literal[5, 10]
|
24
|
+
"""The number of seconds of duration for the output video."""
|
25
|
+
|
23
26
|
prompt_text: Annotated[str, PropertyInfo(alias="promptText")]
|
24
27
|
|
28
|
+
ratio: Literal["16:9", "9:16"]
|
29
|
+
"""The aspect ratio of the output video."""
|
30
|
+
|
25
31
|
seed: int
|
26
32
|
"""If unspecified, a random number is chosen.
|
27
33
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: runwayml
|
3
|
-
Version:
|
3
|
+
Version: 2.0.0
|
4
4
|
Summary: The official Python library for the runwayml API
|
5
5
|
Project-URL: Homepage, https://github.com/runwayml/sdk-python
|
6
6
|
Project-URL: Repository, https://github.com/runwayml/sdk-python
|
@@ -377,3 +377,7 @@ print(runwayml.__version__)
|
|
377
377
|
## Requirements
|
378
378
|
|
379
379
|
Python 3.7 or higher.
|
380
|
+
|
381
|
+
## Contributing
|
382
|
+
|
383
|
+
See [the contributing documentation](https://github.com/runwayml/sdk-python/tree/main/./CONTRIBUTING.md).
|
@@ -1,7 +1,7 @@
|
|
1
1
|
runwayml/__init__.py,sha256=LsywCoz3efgd9DJAXxam_dZp4-0CuDCfyY658Isqy8k,2458
|
2
|
-
runwayml/_base_client.py,sha256=
|
2
|
+
runwayml/_base_client.py,sha256=VXZ-FzF2qniEobkIlTWQ_Ld0ZMofwnKNu638T4RsuSE,67551
|
3
3
|
runwayml/_client.py,sha256=bXqlcEWa3xtVB70cQ3UN9eSBKV45WfEdSflQbeJpK0U,16428
|
4
|
-
runwayml/_compat.py,sha256=
|
4
|
+
runwayml/_compat.py,sha256=9CWnEaYK0kot7aSNW-m2W9xZb5giIdvKN9sWxvBbbSA,6488
|
5
5
|
runwayml/_constants.py,sha256=JE8kyZa2Q4NK_i4fO--8siEYTzeHnT0fYbOFDgDP4uk,464
|
6
6
|
runwayml/_exceptions.py,sha256=p2Q8kywHCVQzArLQL4Ht-HetTBhAvevU6yDvEq7PpIE,3224
|
7
7
|
runwayml/_files.py,sha256=mf4dOgL4b0ryyZlbqLhggD3GVgDf6XxdGFAgce01ugE,3549
|
@@ -11,7 +11,7 @@ runwayml/_resource.py,sha256=BF-j3xY5eRTKmuTxg8eDhLtLP4MLB1phDh_B6BKipKA,1112
|
|
11
11
|
runwayml/_response.py,sha256=sKuVjGpyu3n8kUojbOPqPUtxKMKYWQOBEaPM9Y-I9J4,28532
|
12
12
|
runwayml/_streaming.py,sha256=NSVuAgknVQWU1cgZEjQn01IdZKKynb5rOeYp5Lo-OEQ,10108
|
13
13
|
runwayml/_types.py,sha256=8a6x8uZ5xoBLrmu6rK3X9NKZhcMYcaE2tUeh3wgKHNk,6105
|
14
|
-
runwayml/_version.py,sha256=
|
14
|
+
runwayml/_version.py,sha256=4m1aRIUMyDTo1gDj3xtglqgDkjnJ-ozbHt8QFxYy3SE,160
|
15
15
|
runwayml/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
runwayml/_utils/__init__.py,sha256=Uzq1-FIih_VUjzdNVWXks0sdC39KBKLMrZoz-_JOjJ4,1988
|
17
17
|
runwayml/_utils/_logs.py,sha256=ZfS5W59hdqEBVV86lNrk28PhvUxtHOzs9JqiLhSu0pI,780
|
@@ -24,13 +24,13 @@ runwayml/_utils/_typing.py,sha256=tFbktdpdHCQliwzGsWysgn0P5H0JRdagkZdb_LegGkY,38
|
|
24
24
|
runwayml/_utils/_utils.py,sha256=tYrr7IX-5NMwsVKbNggbzOM84uNw7XnAe06e2Ln8Or0,11472
|
25
25
|
runwayml/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
26
26
|
runwayml/resources/__init__.py,sha256=O-ZVFaODsGXK0pKVlV4HKoeJyq3p9sK_9COJTv7P1WM,1069
|
27
|
-
runwayml/resources/image_to_video.py,sha256=
|
27
|
+
runwayml/resources/image_to_video.py,sha256=B91VHPH5XdJbrbaXrTzBkLc4ed81-MkXOOFwIyc2eAc,9184
|
28
28
|
runwayml/resources/tasks.py,sha256=j80KvE6QkVAJvfIUx37tJEizcBB1u5vhd9zkSiv6Tuk,9681
|
29
29
|
runwayml/types/__init__.py,sha256=R3cLEXzpcEpEOuxaFBo3R72ewH1LtjpkZ0aYOIt1CAo,400
|
30
|
-
runwayml/types/image_to_video_create_params.py,sha256=
|
30
|
+
runwayml/types/image_to_video_create_params.py,sha256=EkB8zKmqeupVfDANnrLdHvY5LgdOW1kf7oN4JPlbruY,1303
|
31
31
|
runwayml/types/image_to_video_create_response.py,sha256=Qc5C86xJ_i1JkRLCCkEh6lMnPoO3-iB92gcR7mXooUw,266
|
32
32
|
runwayml/types/task_retrieve_response.py,sha256=2BsxvP95VgKkn3rdv1vXotMV1zw8RwDSsO27AHjlpyc,2094
|
33
|
-
runwayml-
|
34
|
-
runwayml-
|
35
|
-
runwayml-
|
36
|
-
runwayml-
|
33
|
+
runwayml-2.0.0.dist-info/METADATA,sha256=GYCmARjDBFcQSD0134xLlyIg5a34GvjLRrQcqs_bwI8,13408
|
34
|
+
runwayml-2.0.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
35
|
+
runwayml-2.0.0.dist-info/licenses/LICENSE,sha256=p4nykVRdA5nXTd8-slKCIfrlJZMB3wn8QBVasNQ_G_Q,11338
|
36
|
+
runwayml-2.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|