Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
3233b72
feat(api): api update
stainless-app[bot] Jan 8, 2026
237ee65
feat(api): api update
stainless-app[bot] Jan 9, 2026
5a09c7a
feat(api): api update
stainless-app[bot] Jan 9, 2026
e589627
feat(api): api update
stainless-app[bot] Jan 9, 2026
4e7bcde
codegen metadata
stainless-app[bot] Jan 10, 2026
7557694
codegen metadata
stainless-app[bot] Jan 13, 2026
a6ba082
feat(client): add support for binary request streaming
stainless-app[bot] Jan 14, 2026
6759351
feat(api): api update
stainless-app[bot] Jan 14, 2026
269c7e3
codegen metadata
stainless-app[bot] Jan 14, 2026
356433d
chore(internal): update `actions/checkout` version
stainless-app[bot] Jan 17, 2026
417d376
codegen metadata
stainless-app[bot] Jan 19, 2026
9f553d1
codegen metadata
stainless-app[bot] Jan 20, 2026
618852e
codegen metadata
stainless-app[bot] Jan 20, 2026
8498b98
codegen metadata
stainless-app[bot] Jan 20, 2026
5cee03c
codegen metadata
stainless-app[bot] Jan 21, 2026
7b56b3e
feat(api): api update
stainless-app[bot] Jan 21, 2026
e3a868a
codegen metadata
stainless-app[bot] Jan 21, 2026
61c7683
codegen metadata
stainless-app[bot] Jan 22, 2026
d6b9304
codegen metadata
stainless-app[bot] Jan 22, 2026
aa7e9ca
feat(api): api update
stainless-app[bot] Jan 24, 2026
a0ef8aa
chore(ci): upgrade `actions/github-script`
stainless-app[bot] Jan 24, 2026
9b4605d
codegen metadata
stainless-app[bot] Jan 27, 2026
4b6894f
codegen metadata
stainless-app[bot] Jan 29, 2026
0080ce8
codegen metadata
stainless-app[bot] Jan 29, 2026
1638d63
feat(client): add custom JSON encoder for extended type support
stainless-app[bot] Jan 30, 2026
c85df78
codegen metadata
stainless-app[bot] Jan 30, 2026
106c755
codegen metadata
stainless-app[bot] Jan 30, 2026
a4c1934
codegen metadata
stainless-app[bot] Jan 31, 2026
9abbcc8
feat(api): api update
stainless-app[bot] Feb 3, 2026
99a4d13
feat(api): api update
stainless-app[bot] Feb 5, 2026
0598295
codegen metadata
stainless-app[bot] Feb 6, 2026
f55689c
feat(api): api update
stainless-app[bot] Feb 9, 2026
b559730
codegen metadata
stainless-app[bot] Feb 10, 2026
8137211
codegen metadata
stainless-app[bot] Feb 10, 2026
60979b5
chore(internal): bump dependencies
stainless-app[bot] Feb 10, 2026
f3d182e
codegen metadata
stainless-app[bot] Feb 11, 2026
dac3fa4
codegen metadata
stainless-app[bot] Feb 11, 2026
5be7a43
chore(internal): fix lint error on Python 3.14
stainless-app[bot] Feb 12, 2026
4d43cf3
codegen metadata
stainless-app[bot] Feb 12, 2026
2f330a5
codegen metadata
stainless-app[bot] Feb 13, 2026
e6fec57
codegen metadata
stainless-app[bot] Feb 13, 2026
bda2dd2
chore: format all `api.md` files
stainless-app[bot] Feb 13, 2026
5e66a35
codegen metadata
stainless-app[bot] Feb 13, 2026
2463c56
codegen metadata
stainless-app[bot] Feb 13, 2026
6204ba2
codegen metadata
stainless-app[bot] Feb 13, 2026
0beec74
codegen metadata
stainless-app[bot] Feb 17, 2026
54eda90
codegen metadata
stainless-app[bot] Feb 18, 2026
8a16e78
codegen metadata
stainless-app[bot] Feb 19, 2026
8fda271
codegen metadata
stainless-app[bot] Feb 19, 2026
a0cd0a0
chore(internal): remove mock server code
stainless-app[bot] Feb 20, 2026
63aef54
chore: update mock server docs
stainless-app[bot] Feb 20, 2026
3c8e39f
codegen metadata
stainless-app[bot] Feb 21, 2026
8d8e23a
feat(api): api update
stainless-app[bot] Feb 23, 2026
3e14c9a
codegen metadata
stainless-app[bot] Feb 24, 2026
d1a1143
chore(internal): add request options to SSE classes
stainless-app[bot] Feb 24, 2026
f8c15f3
chore(internal): make `test_proxy_environment_variables` more resilient
stainless-app[bot] Feb 24, 2026
08de79c
feat(api): api update
stainless-app[bot] Feb 24, 2026
75914f0
chore(internal): make `test_proxy_environment_variables` more resilie…
stainless-app[bot] Feb 25, 2026
8859556
codegen metadata
stainless-app[bot] Feb 26, 2026
8a7bfc1
feat(api): api update
stainless-app[bot] Feb 26, 2026
ebf9b99
codegen metadata
stainless-app[bot] Feb 28, 2026
5567990
feat(api): api update
stainless-app[bot] Mar 2, 2026
b50f09f
codegen metadata
stainless-app[bot] Mar 2, 2026
cf45455
codegen metadata
stainless-app[bot] Mar 2, 2026
f5fe84b
release: 0.17.0
stainless-app[bot] Mar 2, 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/reductoai-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/reductoai-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/reductoai-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/reductoai-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 == 'reductoai/reducto-python-sdk' && (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 @@
{
".": "0.16.0"
".": "0.17.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: 16
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/reducto%2Freductoai-f27dc0ffe1a494f38e2542dc7e2c56090aab4192876534765c1740670e4c4084.yml
openapi_spec_hash: 0d0fb546942f7f9fa52de7ecd53cf0ea
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/reducto%2Freductoai-dc64d7db65a659c9e2f149d97c6422d64050ef9b5d24a042e84cc8748e6d67b7.yml
openapi_spec_hash: f89983d4bf3498a5f160dc5bca401cde
config_hash: 12c16025a3b7554fa6377191d68b1903
37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,42 @@
# Changelog

## 0.17.0 (2026-03-02)

Full Changelog: [v0.16.0...v0.17.0](https://github.com/reductoai/reducto-python-sdk/compare/v0.16.0...v0.17.0)

### Features

* **api:** api update ([5567990](https://github.com/reductoai/reducto-python-sdk/commit/556799061384a308984304555b864243cf672041))
* **api:** api update ([8a7bfc1](https://github.com/reductoai/reducto-python-sdk/commit/8a7bfc129867ce49dfd58afe32e8ab721fc8ea32))
* **api:** api update ([08de79c](https://github.com/reductoai/reducto-python-sdk/commit/08de79c93c0ff17a41a47ba27be7f1616e431f36))
* **api:** api update ([8d8e23a](https://github.com/reductoai/reducto-python-sdk/commit/8d8e23a7cd027817edd8e25334f6346626a8d20c))
* **api:** api update ([f55689c](https://github.com/reductoai/reducto-python-sdk/commit/f55689cd19c699d2aabbf0154bfea4e02a2ce389))
* **api:** api update ([99a4d13](https://github.com/reductoai/reducto-python-sdk/commit/99a4d13c0f5adb600acee1fe97fc1c183d78cfab))
* **api:** api update ([9abbcc8](https://github.com/reductoai/reducto-python-sdk/commit/9abbcc80e876b1e45140a3126e2a772806b61cd9))
* **api:** api update ([aa7e9ca](https://github.com/reductoai/reducto-python-sdk/commit/aa7e9ca54a1f3892366a0582a31379738e74d132))
* **api:** api update ([7b56b3e](https://github.com/reductoai/reducto-python-sdk/commit/7b56b3e5c38c80d344dd8cdff67800062523ba08))
* **api:** api update ([6759351](https://github.com/reductoai/reducto-python-sdk/commit/67593515da9b22521874a8166126e5fbe2d97c9b))
* **api:** api update ([e589627](https://github.com/reductoai/reducto-python-sdk/commit/e58962711b6f219f48d6481228337244eb3fd020))
* **api:** api update ([5a09c7a](https://github.com/reductoai/reducto-python-sdk/commit/5a09c7a046f0452cfa01cbdc3681c8ff04db7c76))
* **api:** api update ([237ee65](https://github.com/reductoai/reducto-python-sdk/commit/237ee65be58ef28aa3dd1f79942b6670811cedca))
* **api:** api update ([3233b72](https://github.com/reductoai/reducto-python-sdk/commit/3233b72f57774b02f3793f9b8c4f43508eae442a))
* **client:** add custom JSON encoder for extended type support ([1638d63](https://github.com/reductoai/reducto-python-sdk/commit/1638d632d573ee982c16ba74591dcc693fdbac35))
* **client:** add support for binary request streaming ([a6ba082](https://github.com/reductoai/reducto-python-sdk/commit/a6ba082caa1be83e09f7ff58adea2c1420d90568))


### Chores

* **ci:** upgrade `actions/github-script` ([a0ef8aa](https://github.com/reductoai/reducto-python-sdk/commit/a0ef8aabd0d360a684c45f61b2badf7f44ab4399))
* format all `api.md` files ([bda2dd2](https://github.com/reductoai/reducto-python-sdk/commit/bda2dd2b86d7ad2af19a5ccf84a40e473159f01a))
* **internal:** add request options to SSE classes ([d1a1143](https://github.com/reductoai/reducto-python-sdk/commit/d1a1143e6da73b3756f690e7f0104f1c636721cf))
* **internal:** bump dependencies ([60979b5](https://github.com/reductoai/reducto-python-sdk/commit/60979b5e75abc9b5632ac6d105251d3be7b7f15e))
* **internal:** fix lint error on Python 3.14 ([5be7a43](https://github.com/reductoai/reducto-python-sdk/commit/5be7a434eb1b7d1917d8b6ca53122bcfb4a0c947))
* **internal:** make `test_proxy_environment_variables` more resilient ([f8c15f3](https://github.com/reductoai/reducto-python-sdk/commit/f8c15f3f3d20775615faf971680146fcaffe9ce1))
* **internal:** make `test_proxy_environment_variables` more resilient to env ([75914f0](https://github.com/reductoai/reducto-python-sdk/commit/75914f0f368e5ac11f31b0de3850440e5101d544))
* **internal:** remove mock server code ([a0cd0a0](https://github.com/reductoai/reducto-python-sdk/commit/a0cd0a04d81d7500fb74862878aed6dc677b8fa8))
* **internal:** update `actions/checkout` version ([356433d](https://github.com/reductoai/reducto-python-sdk/commit/356433dcf618021381aec84229ffe5547b84f40e))
* update mock server docs ([63aef54](https://github.com/reductoai/reducto-python-sdk/commit/63aef54bd216cb1f6d600cdae28082abe7cd5b31))

## 0.16.0 (2026-01-02)

Full Changelog: [v0.15.0...v0.16.0](https://github.com/reductoai/reducto-python-sdk/compare/v0.15.0...v0.16.0)
Expand Down
7 changes: 0 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,6 @@ $ pip install ./path-to-wheel-file.whl

## Running tests

Most tests require you to [set up a mock server](https://github.com/stoplightio/prism) against the OpenAPI spec to run the tests.

```sh
# you will need npm installed
$ npx prism mock path/to/your/openapi.yml
```

```sh
$ ./scripts/test
```
Expand Down
8 changes: 7 additions & 1 deletion api.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,15 @@ from reducto.types import (

# Reducto

Types:

```python
from reducto.types import APIVersionResponse
```

Methods:

- <code title="get /version">client.<a href="./src/reducto/_client.py">api_version</a>() -> object</code>
- <code title="get /version">client.<a href="./src/reducto/_client.py">api_version</a>() -> str</code>
- <code title="post /upload">client.<a href="./src/reducto/_client.py">upload</a>(\*\*<a href="src/reducto/types/client_upload_params.py">params</a>) -> <a href="./src/reducto/types/shared/upload.py">Upload</a></code>

# Job
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "reductoai"
version = "0.16.0"
version = "0.17.0"
description = "The official Python library for the reducto API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down Expand Up @@ -70,7 +70,7 @@ format = { chain = [
# run formatting again to fix any inconsistencies when imports are stripped
"format:ruff",
]}
"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
"format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'"
"format:ruff" = "ruff format"

"lint" = { chain = [
Expand Down
20 changes: 10 additions & 10 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.13.2
aiohttp==3.13.3
# via httpx-aiohttp
# via reductoai
aiosignal==1.4.0
# via aiohttp
annotated-types==0.7.0
# via pydantic
anyio==4.12.0
anyio==4.12.1
# via httpx
# via reductoai
argcomplete==3.6.3
Expand All @@ -31,7 +31,7 @@ attrs==25.4.0
# via nox
backports-asyncio-runner==1.2.0
# via pytest-asyncio
certifi==2025.11.12
certifi==2026.1.4
# via httpcore
# via httpx
colorlog==6.10.1
Expand Down Expand Up @@ -61,15 +61,15 @@ httpx==0.28.1
# via httpx-aiohttp
# via reductoai
# via respx
httpx-aiohttp==0.1.9
httpx-aiohttp==0.1.12
# via reductoai
humanize==4.13.0
# via nox
idna==3.11
# via anyio
# via httpx
# via yarl
importlib-metadata==8.7.0
importlib-metadata==8.7.1
iniconfig==2.1.0
# via pytest
markdown-it-py==3.0.0
Expand All @@ -82,14 +82,14 @@ multidict==6.7.0
mypy==1.17.0
mypy-extensions==1.1.0
# via mypy
nodeenv==1.9.1
nodeenv==1.10.0
# via pyright
nox==2025.11.12
packaging==25.0
# via dependency-groups
# via nox
# via pytest
pathspec==0.12.1
pathspec==1.0.3
# via mypy
platformdirs==4.4.0
# via virtualenv
Expand All @@ -115,13 +115,13 @@ python-dateutil==2.9.0.post0
# via time-machine
respx==0.22.0
rich==14.2.0
ruff==0.14.7
ruff==0.14.13
six==1.17.0
# via python-dateutil
sniffio==1.3.1
# via reductoai
time-machine==2.19.0
tomli==2.3.0
tomli==2.4.0
# via dependency-groups
# via mypy
# via nox
Expand All @@ -141,7 +141,7 @@ typing-extensions==4.15.0
# via virtualenv
typing-inspection==0.4.2
# via pydantic
virtualenv==20.35.4
virtualenv==20.36.1
# via nox
yarl==1.22.0
# via aiohttp
Expand Down
8 changes: 4 additions & 4 deletions requirements.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@
-e file:.
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.13.2
aiohttp==3.13.3
# via httpx-aiohttp
# via reductoai
aiosignal==1.4.0
# via aiohttp
annotated-types==0.7.0
# via pydantic
anyio==4.12.0
anyio==4.12.1
# via httpx
# via reductoai
async-timeout==5.0.1
# via aiohttp
attrs==25.4.0
# via aiohttp
certifi==2025.11.12
certifi==2026.1.4
# via httpcore
# via httpx
distro==1.9.0
Expand All @@ -43,7 +43,7 @@ httpcore==1.0.9
httpx==0.28.1
# via httpx-aiohttp
# via reductoai
httpx-aiohttp==0.1.9
httpx-aiohttp==0.1.12
# via reductoai
idna==3.11
# via anyio
Expand Down
41 changes: 0 additions & 41 deletions scripts/mock

This file was deleted.

46 changes: 0 additions & 46 deletions scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -4,53 +4,7 @@ set -e

cd "$(dirname "$0")/.."

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

function prism_is_running() {
curl --silent "http://localhost:4010" >/dev/null 2>&1
}

kill_server_on_port() {
pids=$(lsof -t -i tcp:"$1" || echo "")
if [ "$pids" != "" ]; then
kill "$pids"
echo "Stopped $pids."
fi
}

function is_overriding_api_base_url() {
[ -n "$TEST_API_BASE_URL" ]
}

if ! is_overriding_api_base_url && ! prism_is_running ; then
# When we exit this script, make sure to kill the background mock server process
trap 'kill_server_on_port 4010' EXIT

# Start the dev server
./scripts/mock --daemon
fi

if is_overriding_api_base_url ; then
echo -e "${GREEN}✔ Running tests against ${TEST_API_BASE_URL}${NC}"
echo
elif ! prism_is_running ; then
echo -e "${RED}ERROR:${NC} The test suite will not run without a mock Prism server"
echo -e "running against your OpenAPI spec."
echo
echo -e "To run the server, pass in the path or url of your OpenAPI"
echo -e "spec to the prism command:"
echo
echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}"
echo

exit 1
else
echo -e "${GREEN}✔ Mock prism server is running with your OpenAPI spec${NC}"
echo
fi

export DEFER_PYDANTIC_BUILD=false

Expand Down
Loading
Loading