Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
e619e7d
chore(package): drop Python 3.8 support
stainless-app[bot] Nov 10, 2025
f8d0a17
fix: compat with Python 3.14
stainless-app[bot] Nov 10, 2025
ae58237
codegen metadata
stainless-app[bot] Nov 11, 2025
80b2f0e
fix(compat): update signatures of `model_dump` and `model_dump_json` …
stainless-app[bot] Nov 11, 2025
ba4cbb9
chore(internal): codegen related update
stainless-app[bot] Nov 21, 2025
b057502
fix: ensure streams are always closed
stainless-app[bot] Nov 27, 2025
fce9064
chore(deps): mypy 1.18.1 has a regression, pin to 1.17
stainless-app[bot] Nov 27, 2025
0b2e4c4
chore: update lockfile
stainless-app[bot] Dec 2, 2025
83ff043
chore(docs): use environment variables for authentication in code sni…
stainless-app[bot] Dec 2, 2025
7f5d893
fix(types): allow pyright to infer TypedDict types within SequenceNotStr
stainless-app[bot] Dec 8, 2025
019eba0
chore: add missing docstrings
stainless-app[bot] Dec 8, 2025
c4d570a
chore(internal): add missing files argument to base client
stainless-app[bot] Dec 15, 2025
4de61f3
chore: speedup initial import
stainless-app[bot] Dec 16, 2025
d33246e
fix: use async_to_httpx_files in patch method
stainless-app[bot] Dec 17, 2025
a8f92ca
chore(internal): add `--fix` argument to lint script
stainless-app[bot] Dec 18, 2025
89dd766
chore(internal): codegen related update
stainless-app[bot] Jan 5, 2026
fd6244a
feat(client): add support for binary request streaming
stainless-app[bot] Jan 13, 2026
5e39cbb
fix(api): minor openAPI spec fixes
stainless-app[bot] Jan 14, 2026
ec75715
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 16, 2026
77ed781
chore(ci): upgrade `actions/github-script`
stainless-app[bot] Jan 23, 2026
7341d92
release: 1.3.0
stainless-app[bot] Jan 23, 2026
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
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/sambanova-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand All @@ -44,7 +44,7 @@ jobs:
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/sambanova-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand All @@ -63,7 +63,7 @@ jobs:
- name: Get GitHub OIDC Token
if: github.repository == 'stainless-sdks/sambanova-python'
id: github-oidc
uses: actions/github-script@v6
uses: actions/github-script@v8
with:
script: core.setOutput('github_token', await core.getIDToken());

Expand All @@ -81,7 +81,7 @@ jobs:
runs-on: ${{ github.repository == 'stainless-sdks/sambanova-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Install Rye
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-doctor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
if: github.repository == 'sambanova/sambanova-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Check release environment
run: |
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.2.0"
".": "1.3.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 7
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sambanova%2Fsambanova-9c679c857c1beb7f46190458954d877fae7609d97c75ce6cef3535d996ab5100.yml
openapi_spec_hash: 4721dc38b36b424239a22f88376ef2ab
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sambanova%2Fsambanova-cdbd9deeca1f7f8371d28b4924a9ebc3c40c835f23baf56484db74df4d169438.yml
openapi_spec_hash: 102cac21393e558553834f38ed92ea76
config_hash: 94afac70f4c1c1de589f69996bb63262
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# Changelog

## 1.3.0 (2026-01-23)

Full Changelog: [v1.2.0...v1.3.0](https://github.com/sambanova/sambanova-python/compare/v1.2.0...v1.3.0)

### Features

* **client:** add support for binary request streaming ([fd6244a](https://github.com/sambanova/sambanova-python/commit/fd6244ae60fe2df91a2b465cc06b2256407bc38c))


### Bug Fixes

* **api:** minor openAPI spec fixes ([5e39cbb](https://github.com/sambanova/sambanova-python/commit/5e39cbb4c4ca8fbc35133a9b6553ad7ca55dfae9))
* compat with Python 3.14 ([f8d0a17](https://github.com/sambanova/sambanova-python/commit/f8d0a17b8d285ffb31c1241ff4c0ed966115d237))
* **compat:** update signatures of `model_dump` and `model_dump_json` for Pydantic v1 ([80b2f0e](https://github.com/sambanova/sambanova-python/commit/80b2f0ebd03e43a4e5d97392c474a7a57179cb94))
* ensure streams are always closed ([b057502](https://github.com/sambanova/sambanova-python/commit/b057502367a9313b396068b33cdcf42925bdec9a))
* **types:** allow pyright to infer TypedDict types within SequenceNotStr ([7f5d893](https://github.com/sambanova/sambanova-python/commit/7f5d8930d54299226a83ebaeff192739da87c98a))
* use async_to_httpx_files in patch method ([d33246e](https://github.com/sambanova/sambanova-python/commit/d33246edf84f1ec15a52bea24725f0f84a148d16))


### Chores

* add missing docstrings ([019eba0](https://github.com/sambanova/sambanova-python/commit/019eba07481acc8717f40a10c3109e494d2e4eac))
* **ci:** upgrade `actions/github-script` ([77ed781](https://github.com/sambanova/sambanova-python/commit/77ed7817c1f0a6179e63d141fcc97b79f971af5d))
* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([fce9064](https://github.com/sambanova/sambanova-python/commit/fce906481b815306c766baf5cb326a01d5ddb5b8))
* **docs:** use environment variables for authentication in code snippets ([83ff043](https://github.com/sambanova/sambanova-python/commit/83ff0430dac4e91173d28bedfb3af1daa13106bb))
* **internal:** add `--fix` argument to lint script ([a8f92ca](https://github.com/sambanova/sambanova-python/commit/a8f92ca4dade631b727d2e8111291080e632b7f3))
* **internal:** add missing files argument to base client ([c4d570a](https://github.com/sambanova/sambanova-python/commit/c4d570afae505d0e06b3f946dd5f3360fd208fb2))
* **internal:** codegen related update ([89dd766](https://github.com/sambanova/sambanova-python/commit/89dd7669d6a52745dbed8bb926ac30aa016480b3))
* **internal:** codegen related update ([ba4cbb9](https://github.com/sambanova/sambanova-python/commit/ba4cbb9f303518c0c7d7349830da344be9d38e01))
* **internal:** update `actions/checkout` version ([ec75715](https://github.com/sambanova/sambanova-python/commit/ec757150c5f6a458a6c35445cf0c5767439a1b17))
* **package:** drop Python 3.8 support ([e619e7d](https://github.com/sambanova/sambanova-python/commit/e619e7d79ca78487c85d0f22708590582821e547))
* speedup initial import ([4de61f3](https://github.com/sambanova/sambanova-python/commit/4de61f39aef0af76cc79c03622b8fad19c14a439))
* update lockfile ([0b2e4c4](https://github.com/sambanova/sambanova-python/commit/0b2e4c493d6aecd212fbb3d504cd4f5301a829cb))

## 1.2.0 (2025-11-07)

Full Changelog: [v1.1.6...v1.2.0](https://github.com/sambanova/sambanova-python/compare/v1.1.6...v1.2.0)
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2025 Samba Nova
Copyright 2026 Samba Nova

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- prettier-ignore -->
[![PyPI version](https://img.shields.io/pypi/v/sambanova.svg?label=pypi%20(stable))](https://pypi.org/project/sambanova/)

The Samba Nova Python library provides convenient access to the Samba Nova REST API from any Python 3.8+
The Samba Nova Python library provides convenient access to the Samba Nova REST API from any Python 3.9+
application. The library includes type definitions for all request params and response fields,
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).

Expand Down Expand Up @@ -93,14 +93,15 @@ pip install sambanova[aiohttp]
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:

```python
import os
import asyncio
from sambanova import DefaultAioHttpClient
from sambanova import AsyncSambaNova


async def main() -> None:
async with AsyncSambaNova(
api_key="My API Key",
api_key=os.environ.get("SAMBANOVA_API_KEY"), # This is the default and can be omitted
http_client=DefaultAioHttpClient(),
) as client:
completion = await client.chat.completions.create(
Expand Down Expand Up @@ -499,7 +500,7 @@ print(sambanova.__version__)

## Requirements

Python 3.8 or higher.
Python 3.9 or higher.

## Contributing

Expand Down
24 changes: 13 additions & 11 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
[project]
name = "sambanova"
version = "1.2.0"
version = "1.3.0"
description = "The official Python library for the SambaNova API"
dynamic = ["readme"]
license = "Apache-2.0"
authors = [
{ name = "Samba Nova", email = "info@sambanova.ai" },
]

dependencies = [
"httpx>=0.23.0, <1",
"pydantic>=1.9.0, <3",
"typing-extensions>=4.10, <5",
"anyio>=3.5.0, <5",
"distro>=1.7.0, <2",
"sniffio",
"httpx>=0.23.0, <1",
"pydantic>=1.9.0, <3",
"typing-extensions>=4.10, <5",
"anyio>=3.5.0, <5",
"distro>=1.7.0, <2",
"sniffio",
]
requires-python = ">= 3.8"

requires-python = ">= 3.9"
classifiers = [
"Typing :: Typed",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Operating System :: OS Independent",
"Operating System :: POSIX",
"Operating System :: MacOS",
Expand All @@ -46,7 +48,7 @@ managed = true
# version pins are in requirements-dev.lock
dev-dependencies = [
"pyright==1.1.399",
"mypy",
"mypy==1.17",
"respx",
"pytest",
"pytest-asyncio",
Expand Down Expand Up @@ -141,7 +143,7 @@ filterwarnings = [
# there are a couple of flags that are still disabled by
# default in strict mode as they are experimental and niche.
typeCheckingMode = "strict"
pythonVersion = "3.8"
pythonVersion = "3.9"

exclude = [
"_dev",
Expand Down
112 changes: 62 additions & 50 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,40 +12,45 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.12.8
aiohttp==3.13.2
# via httpx-aiohttp
# via sambanova
aiosignal==1.3.2
aiosignal==1.4.0
# via aiohttp
annotated-types==0.6.0
annotated-types==0.7.0
# via pydantic
anyio==4.4.0
anyio==4.12.0
# via httpx
# via sambanova
argcomplete==3.1.2
argcomplete==3.6.3
# via nox
async-timeout==5.0.1
# via aiohttp
attrs==25.3.0
attrs==25.4.0
# via aiohttp
certifi==2023.7.22
# via nox
backports-asyncio-runner==1.2.0
# via pytest-asyncio
certifi==2025.11.12
# via httpcore
# via httpx
colorlog==6.7.0
colorlog==6.10.1
# via nox
dependency-groups==1.3.1
# via nox
dirty-equals==0.6.0
distlib==0.3.7
dirty-equals==0.11
distlib==0.4.0
# via virtualenv
distro==1.8.0
distro==1.9.0
# via sambanova
exceptiongroup==1.2.2
exceptiongroup==1.3.1
# via anyio
# via pytest
execnet==2.1.1
execnet==2.1.2
# via pytest-xdist
filelock==3.12.4
filelock==3.19.1
# via virtualenv
frozenlist==1.6.2
frozenlist==1.8.0
# via aiohttp
# via aiosignal
h11==0.16.0
Expand All @@ -58,80 +63,87 @@ httpx==0.28.1
# via sambanova
httpx-aiohttp==0.1.9
# via sambanova
idna==3.4
humanize==4.13.0
# via nox
idna==3.11
# via anyio
# via httpx
# via yarl
importlib-metadata==7.0.0
iniconfig==2.0.0
importlib-metadata==8.7.0
iniconfig==2.1.0
# via pytest
markdown-it-py==3.0.0
# via rich
mdurl==0.1.2
# via markdown-it-py
multidict==6.4.4
multidict==6.7.0
# via aiohttp
# via yarl
mypy==1.14.1
mypy-extensions==1.0.0
mypy==1.17.0
mypy-extensions==1.1.0
# via mypy
nodeenv==1.8.0
nodeenv==1.9.1
# via pyright
nox==2023.4.22
packaging==23.2
nox==2025.11.12
packaging==25.0
# via dependency-groups
# via nox
# via pytest
platformdirs==3.11.0
pathspec==0.12.1
# via mypy
platformdirs==4.4.0
# via virtualenv
pluggy==1.5.0
pluggy==1.6.0
# via pytest
propcache==0.3.1
propcache==0.4.1
# via aiohttp
# via yarl
pydantic==2.11.9
pydantic==2.12.5
# via sambanova
pydantic-core==2.33.2
pydantic-core==2.41.5
# via pydantic
pygments==2.18.0
pygments==2.19.2
# via pytest
# via rich
pyright==1.1.399
pytest==8.3.3
pytest==8.4.2
# via pytest-asyncio
# via pytest-xdist
pytest-asyncio==0.24.0
pytest-xdist==3.7.0
python-dateutil==2.8.2
pytest-asyncio==1.2.0
pytest-xdist==3.8.0
python-dateutil==2.9.0.post0
# via time-machine
pytz==2023.3.post1
# via dirty-equals
respx==0.22.0
rich==13.7.1
ruff==0.9.4
setuptools==68.2.2
# via nodeenv
six==1.16.0
rich==14.2.0
ruff==0.14.7
six==1.17.0
# via python-dateutil
sniffio==1.3.0
# via anyio
sniffio==1.3.1
# via sambanova
time-machine==2.9.0
tomli==2.0.2
time-machine==2.19.0
tomli==2.3.0
# via dependency-groups
# via mypy
# via nox
# via pytest
typing-extensions==4.12.2
typing-extensions==4.15.0
# via aiosignal
# via anyio
# via exceptiongroup
# via multidict
# via mypy
# via pydantic
# via pydantic-core
# via pyright
# via pytest-asyncio
# via sambanova
# via typing-inspection
typing-inspection==0.4.1
# via virtualenv
typing-inspection==0.4.2
# via pydantic
virtualenv==20.24.5
virtualenv==20.35.4
# via nox
yarl==1.20.0
yarl==1.22.0
# via aiohttp
zipp==3.17.0
zipp==3.23.0
# via importlib-metadata
Loading