Skip to content

Commit 2b1b702

Browse files
authored
Merge branch 'main' into mitali/add-avzone-de
2 parents af5d286 + 342b970 commit 2b1b702

File tree

14 files changed

+662
-90
lines changed

14 files changed

+662
-90
lines changed

poetry.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ build-backend = "poetry.masonry.api"
1212

1313
[tool.poetry]
1414
name = "together"
15-
version = "1.5.26"
15+
version = "1.5.30"
1616
authors = ["Together AI <[email protected]>"]
1717
description = "Python client for Together's Cloud Platform!"
1818
readme = "README.md"
@@ -43,6 +43,7 @@ numpy = [
4343
{ version = ">=1.26.0", python = ">=3.12" },
4444
]
4545
pillow = "^11.1.0"
46+
black = "^25.9.0"
4647

4748
[tool.poetry.extras]
4849
pyarrow = ["pyarrow"]

src/together/cli/api/endpoints.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,30 @@ def delete(client: Together, endpoint_id: str) -> None:
345345
type=click.Choice(["dedicated", "serverless"]),
346346
help="Filter by endpoint type",
347347
)
348+
@click.option(
349+
"--mine",
350+
type=click.BOOL,
351+
default=None,
352+
help="true (only mine), default=all",
353+
)
354+
@click.option(
355+
"--usage-type",
356+
type=click.Choice(["on-demand", "reserved"]),
357+
help="Filter by endpoint usage type",
358+
)
348359
@click.pass_obj
349360
@handle_api_errors
350361
def list(
351-
client: Together, json: bool, type: Literal["dedicated", "serverless"] | None
362+
client: Together,
363+
json: bool,
364+
type: Literal["dedicated", "serverless"] | None,
365+
usage_type: Literal["on-demand", "reserved"] | None,
366+
mine: bool | None,
352367
) -> None:
353368
"""List all inference endpoints (includes both dedicated and serverless endpoints)."""
354-
endpoints: List[ListEndpoint] = client.endpoints.list(type=type)
369+
endpoints: List[ListEndpoint] = client.endpoints.list(
370+
type=type, usage_type=usage_type, mine=mine
371+
)
355372

356373
if not endpoints:
357374
click.echo("No dedicated endpoints found", err=True)

src/together/client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Together:
2626
batches: resources.Batches
2727
code_interpreter: CodeInterpreter
2828
evaluation: resources.Evaluation
29+
videos: resources.Videos
2930

3031
# client options
3132
client: TogetherClient
@@ -94,6 +95,7 @@ def __init__(
9495
self.code_interpreter = CodeInterpreter(self.client)
9596
self.batches = resources.Batches(self.client)
9697
self.evaluation = resources.Evaluation(self.client)
98+
self.videos = resources.Videos(self.client)
9799

98100

99101
class AsyncTogether:
@@ -109,6 +111,7 @@ class AsyncTogether:
109111
code_interpreter: CodeInterpreter
110112
batches: resources.AsyncBatches
111113
evaluation: resources.AsyncEvaluation
114+
videos: resources.AsyncVideos
112115
# client options
113116
client: TogetherClient
114117

@@ -175,6 +178,7 @@ def __init__(
175178
self.code_interpreter = CodeInterpreter(self.client)
176179
self.batches = resources.AsyncBatches(self.client)
177180
self.evaluation = resources.AsyncEvaluation(self.client)
181+
self.videos = resources.AsyncVideos(self.client)
178182

179183

180184
Client = Together

src/together/resources/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from together.resources.rerank import AsyncRerank, Rerank
1111
from together.resources.batch import Batches, AsyncBatches
1212
from together.resources.evaluation import Evaluation, AsyncEvaluation
13+
from together.resources.videos import AsyncVideos, Videos
1314

1415

1516
__all__ = [
@@ -37,4 +38,6 @@
3738
"AsyncBatches",
3839
"Evaluation",
3940
"AsyncEvaluation",
41+
"AsyncVideos",
42+
"Videos",
4043
]

src/together/resources/endpoints.py

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,18 @@ def __init__(self, client: TogetherClient) -> None:
1313
self._client = client
1414

1515
def list(
16-
self, type: Optional[Literal["dedicated", "serverless"]] = None
16+
self,
17+
type: Optional[Literal["dedicated", "serverless"]] = None,
18+
usage_type: Optional[Literal["on-demand", "reserved"]] = None,
19+
mine: Optional[bool] = None,
1720
) -> List[ListEndpoint]:
1821
"""
19-
List all endpoints, can be filtered by type.
22+
List all endpoints, can be filtered by endpoint type and ownership.
2023
2124
Args:
22-
type (str, optional): Filter endpoints by type ("dedicated" or "serverless"). Defaults to None.
25+
type (str, optional): Filter endpoints by endpoint type ("dedicated" or "serverless"). Defaults to None.
26+
usage_type (str, optional): Filter endpoints by usage type ("on-demand" or "reserved"). Defaults to None.
27+
mine (bool, optional): If True, return only endpoints owned by the caller. Defaults to None.
2328
2429
Returns:
2530
List[ListEndpoint]: List of endpoint objects
@@ -28,9 +33,20 @@ def list(
2833
client=self._client,
2934
)
3035

31-
params = {}
36+
params: Dict[
37+
str,
38+
Union[
39+
Literal["dedicated", "serverless"],
40+
Literal["on-demand", "reserved"],
41+
bool,
42+
],
43+
] = {}
3244
if type is not None:
3345
params["type"] = type
46+
if usage_type is not None:
47+
params["usage_type"] = usage_type
48+
if mine is not None:
49+
params["mine"] = mine
3450

3551
response, _, _ = requestor.request(
3652
options=TogetherRequest(
@@ -293,13 +309,18 @@ def __init__(self, client: TogetherClient) -> None:
293309
self._client = client
294310

295311
async def list(
296-
self, type: Optional[Literal["dedicated", "serverless"]] = None
312+
self,
313+
type: Optional[Literal["dedicated", "serverless"]] = None,
314+
usage_type: Optional[Literal["on-demand", "reserved"]] = None,
315+
mine: Optional[bool] = None,
297316
) -> List[ListEndpoint]:
298317
"""
299-
List all endpoints, can be filtered by type.
318+
List all endpoints, can be filtered by type and ownership.
300319
301320
Args:
302321
type (str, optional): Filter endpoints by type ("dedicated" or "serverless"). Defaults to None.
322+
usage_type (str, optional): Filter endpoints by usage type ("on-demand" or "reserved"). Defaults to None.
323+
mine (bool, optional): If True, return only endpoints owned by the caller. Defaults to None.
303324
304325
Returns:
305326
List[ListEndpoint]: List of endpoint objects
@@ -308,9 +329,20 @@ async def list(
308329
client=self._client,
309330
)
310331

311-
params = {}
332+
params: Dict[
333+
str,
334+
Union[
335+
Literal["dedicated", "serverless"],
336+
Literal["on-demand", "reserved"],
337+
bool,
338+
],
339+
] = {}
312340
if type is not None:
313341
params["type"] = type
342+
if usage_type is not None:
343+
params["usage_type"] = usage_type
344+
if mine is not None:
345+
params["mine"] = mine
314346

315347
response, _, _ = await requestor.arequest(
316348
options=TogetherRequest(

src/together/resources/images.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ def generate(
2121
*,
2222
prompt: str,
2323
model: str,
24-
steps: int | None = 20,
2524
seed: int | None = None,
2625
n: int | None = 1,
2726
height: int | None = 1024,
@@ -37,8 +36,6 @@ def generate(
3736
3837
model (str, optional): The model to use for image generation.
3938
40-
steps (int, optional): Number of generation steps. Defaults to 20
41-
4239
seed (int, optional): Seed used for generation. Can be used to reproduce image generations.
4340
Defaults to None.
4441
@@ -51,7 +48,8 @@ def generate(
5148
negative_prompt (str, optional): The prompt or prompts not to guide the image generation.
5249
Defaults to None
5350
54-
image_base64: (str, optional): Reference image used for generation. Defaults to None.
51+
**kwargs: Additional parameters like steps (int, optional): Number of generation steps,
52+
image_base64 (str, optional): Reference image used for generation, etc.
5553
5654
Returns:
5755
ImageResponse: Object containing image data
@@ -64,7 +62,6 @@ def generate(
6462
parameter_payload = ImageRequest(
6563
prompt=prompt,
6664
model=model,
67-
steps=steps,
6865
seed=seed,
6966
n=n,
7067
height=height,
@@ -96,7 +93,6 @@ async def generate(
9693
*,
9794
prompt: str,
9895
model: str,
99-
steps: int | None = 20,
10096
seed: int | None = None,
10197
n: int | None = 1,
10298
height: int | None = 1024,
@@ -112,8 +108,6 @@ async def generate(
112108
113109
model (str, optional): The model to use for image generation.
114110
115-
steps (int, optional): Number of generation steps. Defaults to 20
116-
117111
seed (int, optional): Seed used for generation. Can be used to reproduce image generations.
118112
Defaults to None.
119113
@@ -126,7 +120,8 @@ async def generate(
126120
negative_prompt (str, optional): The prompt or prompts not to guide the image generation.
127121
Defaults to None
128122
129-
image_base64: (str, optional): Reference image used for generation. Defaults to None.
123+
**kwargs: Additional parameters like steps (int, optional): Number of generation steps,
124+
image_base64 (str, optional): Reference image used for generation, etc.
130125
131126
Returns:
132127
ImageResponse: Object containing image data
@@ -139,7 +134,6 @@ async def generate(
139134
parameter_payload = ImageRequest(
140135
prompt=prompt,
141136
model=model,
142-
steps=steps,
143137
seed=seed,
144138
n=n,
145139
height=height,

0 commit comments

Comments
 (0)