Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
03a7211
chore(tests): improve ci test names
jdreamerz May 22, 2025
c00212f
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz May 24, 2025
145d6aa
Move the files upload into files resource.
jdreamerz May 29, 2025
abd41e8
Format
jdreamerz May 29, 2025
67bef5b
Fix circular import
jdreamerz May 29, 2025
271e713
Add async upload support
jdreamerz May 29, 2025
65ee27b
Remove top level exports of UploadManager, DownloadManager
jdreamerz May 29, 2025
16d6546
Merge pull request #15 from stainless-sdks/justindriemeyer/eng-30156-…
jdreamerz May 29, 2025
80d5ae0
feat(api): move upload to be a method of existing files resource
jdreamerz May 29, 2025
b7c43be
feat(api): move upload to be a method of existing files resource
jdreamerz May 29, 2025
d2a4b38
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz May 29, 2025
b8bc101
fix(api): correct file reroute handling, error message
jdreamerz May 29, 2025
54839f2
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz May 31, 2025
1931f17
chore(docs): remove reference to rye shell
stainless-app[bot] Jun 2, 2025
6ed818e
chore(docs): remove unnecessary param examples
stainless-app[bot] Jun 2, 2025
b515197
feat(client): add follow_redirects request option
stainless-app[bot] Jun 2, 2025
9172d87
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz Jun 3, 2025
3cff5ae
feat(api): api update
stainless-app[bot] Jun 3, 2025
48986d2
feat(api): update spec / config to remove remaining codegen warnings
stainless-app[bot] Jun 3, 2025
a766a20
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz Jun 9, 2025
33f1198
codegen metadata
stainless-app[bot] Jun 11, 2025
fb53416
codegen metadata
stainless-app[bot] Jun 11, 2025
dd20ba6
Merge branch 'next' of github.com:stainless-sdks/togetherai-python in…
jdreamerz Jun 15, 2025
7efb923
chore(tests): run tests in parallel
stainless-app[bot] Jun 16, 2025
7b9486c
fix(client): correctly parse binary response | stream
stainless-app[bot] Jun 12, 2025
249669c
feat(api): api update
stainless-app[bot] Jun 16, 2025
30ba23e
chore(tests): add tests for httpx client instantiation & proxies
stainless-app[bot] Jun 16, 2025
2b13ac4
chore(internal): update conftest.py
stainless-app[bot] Jun 16, 2025
6e4d972
chore(ci): enable for pull requests
stainless-app[bot] Jun 17, 2025
acfabb5
chore(readme): update badges
stainless-app[bot] Jun 17, 2025
82b2dcb
fix(tests): fix: tests which call HTTP endpoints directly with the ex…
stainless-app[bot] Jun 17, 2025
bed4e88
docs(client): fix httpx.Timeout documentation reference
stainless-app[bot] Jun 18, 2025
8fac9f3
chore: change publish docs url
stainless-app[bot] Jun 20, 2025
8e4cedf
feat(client): add support for aiohttp
stainless-app[bot] Jun 20, 2025
07299cc
feat(api): add batch api to config
stainless-app[bot] Jun 20, 2025
f9586b2
Merge remote-tracking branch 'origin/main' into next
stainless-app[bot] Jun 20, 2025
49a71b3
chore(tests): skip some failing tests on the latest python versions
stainless-app[bot] Jun 23, 2025
02c8f9a
chore(api): re-enable audio unit tests
stainless-app[bot] Jun 23, 2025
452579b
release: 0.1.0-alpha.14
stainless-app[bot] Jun 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.1.0-alpha.13"
".": "0.1.0-alpha.14"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 33
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/togetherai%2Ftogetherai-9ca24c17ccf9b0b4c2d27c09881dc74bf4cb44efc7a5ccb7d54fa15caee095d1.yml
openapi_spec_hash: 306c08678a0677f1deb1d35def6f8713
config_hash: fa59b4c1ab0a2e74aa855e7227b10c7d
config_hash: ae07f8cefe84a8a01ae2d0c8ddc2ef32
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 0.1.0-alpha.14 (2025-06-23)

Full Changelog: [v0.1.0-alpha.13...v0.1.0-alpha.14](https://github.com/togethercomputer/together-py/compare/v0.1.0-alpha.13...v0.1.0-alpha.14)

### Chores

* **api:** re-enable audio unit tests ([02c8f9a](https://github.com/togethercomputer/together-py/commit/02c8f9ad850aed5aae7110ab37d33377aead1c47))
* **tests:** skip some failing tests on the latest python versions ([49a71b3](https://github.com/togethercomputer/together-py/commit/49a71b3b35ffaef63bc8100faba69d87d517cedb))

## 0.1.0-alpha.13 (2025-06-20)

Full Changelog: [v0.1.0-alpha.12...v0.1.0-alpha.13](https://github.com/togethercomputer/together-py/compare/v0.1.0-alpha.12...v0.1.0-alpha.13)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "together"
version = "0.1.0-alpha.13"
version = "0.1.0-alpha.14"
description = "The official Python library for the together API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/together/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "together"
__version__ = "0.1.0-alpha.13" # x-release-please-version
__version__ = "0.1.0-alpha.14" # x-release-please-version
16 changes: 0 additions & 16 deletions tests/api_resources/test_audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
class TestAudio:
parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_method_create_overload_1(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -38,7 +37,6 @@ def test_method_create_overload_1(self, client: Together, respx_mock: MockRouter
assert cast(Any, audio.is_closed) is True
assert isinstance(audio, BinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_method_create_with_all_params_overload_1(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -58,7 +56,6 @@ def test_method_create_with_all_params_overload_1(self, client: Together, respx_
assert cast(Any, audio.is_closed) is True
assert isinstance(audio, BinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_raw_response_create_overload_1(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -75,7 +72,6 @@ def test_raw_response_create_overload_1(self, client: Together, respx_mock: Mock
assert audio.json() == {"foo": "bar"}
assert isinstance(audio, BinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_streaming_response_create_overload_1(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -94,7 +90,6 @@ def test_streaming_response_create_overload_1(self, client: Together, respx_mock

assert cast(Any, audio.is_closed) is True

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_method_create_overload_2(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -107,7 +102,6 @@ def test_method_create_overload_2(self, client: Together, respx_mock: MockRouter
)
audio_stream.response.close()

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_method_create_with_all_params_overload_2(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -124,7 +118,6 @@ def test_method_create_with_all_params_overload_2(self, client: Together, respx_
)
audio_stream.response.close()

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_raw_response_create_overload_2(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -141,7 +134,6 @@ def test_raw_response_create_overload_2(self, client: Together, respx_mock: Mock
assert audio_stream.json() == {"foo": "bar"}
assert isinstance(audio_stream, BinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
def test_streaming_response_create_overload_2(self, client: Together, respx_mock: MockRouter) -> None:
Expand All @@ -167,7 +159,6 @@ class TestAsyncAudio:
"async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_method_create_overload_1(self, async_client: AsyncTogether, respx_mock: MockRouter) -> None:
Expand All @@ -182,7 +173,6 @@ async def test_method_create_overload_1(self, async_client: AsyncTogether, respx
assert cast(Any, audio.is_closed) is True
assert isinstance(audio, AsyncBinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_method_create_with_all_params_overload_1(
Expand All @@ -204,7 +194,6 @@ async def test_method_create_with_all_params_overload_1(
assert cast(Any, audio.is_closed) is True
assert isinstance(audio, AsyncBinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_raw_response_create_overload_1(self, async_client: AsyncTogether, respx_mock: MockRouter) -> None:
Expand All @@ -221,7 +210,6 @@ async def test_raw_response_create_overload_1(self, async_client: AsyncTogether,
assert await audio.json() == {"foo": "bar"}
assert isinstance(audio, AsyncBinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_streaming_response_create_overload_1(
Expand All @@ -242,7 +230,6 @@ async def test_streaming_response_create_overload_1(

assert cast(Any, audio.is_closed) is True

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_method_create_overload_2(self, async_client: AsyncTogether, respx_mock: MockRouter) -> None:
Expand All @@ -255,7 +242,6 @@ async def test_method_create_overload_2(self, async_client: AsyncTogether, respx
)
await audio_stream.response.aclose()

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_method_create_with_all_params_overload_2(
Expand All @@ -274,7 +260,6 @@ async def test_method_create_with_all_params_overload_2(
)
await audio_stream.response.aclose()

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_raw_response_create_overload_2(self, async_client: AsyncTogether, respx_mock: MockRouter) -> None:
Expand All @@ -291,7 +276,6 @@ async def test_raw_response_create_overload_2(self, async_client: AsyncTogether,
assert await audio_stream.json() == {"foo": "bar"}
assert isinstance(audio_stream, AsyncBinaryAPIResponse)

@pytest.mark.skip(reason="AttributeError: BinaryAPIResponse object has no attribute response")
@parametrize
@pytest.mark.respx(base_url=base_url)
async def test_streaming_response_create_overload_2(
Expand Down
2 changes: 2 additions & 0 deletions tests/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ def test_copy_signature(self) -> None:
copy_param = copy_signature.parameters.get(name)
assert copy_param is not None, f"copy() signature is missing the {name} param"

@pytest.mark.skipif(sys.version_info >= (3, 10), reason="fails because of a memory leak that started from 3.12")
def test_copy_build_request(self) -> None:
options = FinalRequestOptions(method="get", url="/foo")

Expand Down Expand Up @@ -1045,6 +1046,7 @@ def test_copy_signature(self) -> None:
copy_param = copy_signature.parameters.get(name)
assert copy_param is not None, f"copy() signature is missing the {name} param"

@pytest.mark.skipif(sys.version_info >= (3, 10), reason="fails because of a memory leak that started from 3.12")
def test_copy_build_request(self) -> None:
options = FinalRequestOptions(method="get", url="/foo")

Expand Down
Loading