From 269266e5853b734ce774bd8660151d61bcb5337a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 23 Apr 2025 23:09:13 +0000
Subject: [PATCH 1/9] chore: go live
---
.github/workflows/publish-pypi.yml | 31 +++++++++
.github/workflows/release-doctor.yml | 21 ++++++
.release-please-manifest.json | 3 +
.stats.yml | 2 +-
CONTRIBUTING.md | 4 +-
README.md | 10 +--
bin/check-release-environment | 21 ++++++
pyproject.toml | 6 +-
release-please-config.json | 66 +++++++++++++++++++
src/solver_api/_version.py | 2 +-
src/solver_api/resources/repos/repos.py | 8 +--
.../resources/repos/sessions/events.py | 8 +--
.../resources/repos/sessions/sessions.py | 8 +--
.../resources/repos/sessions/status.py | 8 +--
.../resources/repos/sessions/turns/events.py | 8 +--
.../resources/repos/sessions/turns/turns.py | 8 +--
16 files changed, 178 insertions(+), 36 deletions(-)
create mode 100644 .github/workflows/publish-pypi.yml
create mode 100644 .github/workflows/release-doctor.yml
create mode 100644 .release-please-manifest.json
create mode 100644 bin/check-release-environment
create mode 100644 release-please-config.json
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
new file mode 100644
index 0000000..09b11b5
--- /dev/null
+++ b/.github/workflows/publish-pypi.yml
@@ -0,0 +1,31 @@
+# This workflow is triggered when a GitHub release is created.
+# It can also be run manually to re-publish to PyPI in case it failed for some reason.
+# You can run this workflow by navigating to https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml
+name: Publish PyPI
+on:
+ workflow_dispatch:
+
+ release:
+ types: [published]
+
+jobs:
+ publish:
+ name: publish
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Rye
+ run: |
+ curl -sSf https://rye.astral.sh/get | bash
+ echo "$HOME/.rye/shims" >> $GITHUB_PATH
+ env:
+ RYE_VERSION: '0.44.0'
+ RYE_INSTALL_OPTION: '--yes'
+
+ - name: Publish to PyPI
+ run: |
+ bash ./bin/publish-pypi
+ env:
+ PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
new file mode 100644
index 0000000..de3fa13
--- /dev/null
+++ b/.github/workflows/release-doctor.yml
@@ -0,0 +1,21 @@
+name: Release Doctor
+on:
+ pull_request:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ release_doctor:
+ name: release doctor
+ runs-on: ubuntu-latest
+ if: github.repository == 'Laredo-Labs/solverai-sdk-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
+
+ - name: Check release environment
+ run: |
+ bash ./bin/check-release-environment
+ env:
+ PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
new file mode 100644
index 0000000..c476280
--- /dev/null
+++ b/.release-please-manifest.json
@@ -0,0 +1,3 @@
+{
+ ".": "0.0.1-alpha.0"
+}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 7a2b55e..ce9cca9 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-30a94cd12d5edc9db3d0fb471d522d687c4949b4c9cc1bdf1b1f062d6a329969.yml
openapi_spec_hash: d884b89ee925c4112c75e88e65acc65a
-config_hash: ee8abb60a6d388a2faf9850fe05e2c4b
+config_hash: 493345ae4f85f393fa5d9a79bd6487d2
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e6dff96..a6dc9bb 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -63,7 +63,7 @@ If you’d like to use the repository from source, you can either install from g
To install via git:
```sh
-$ pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
+$ pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
```
Alternatively, you can build from source and install the wheel file:
@@ -121,7 +121,7 @@ the changes aren't made through the automated pipeline, you may want to make rel
### Publish with a GitHub workflow
-You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/solver-api-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
+You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
### Publish manually
diff --git a/README.md b/README.md
index e9a44e5..5fa3b94 100644
--- a/README.md
+++ b/README.md
@@ -15,8 +15,8 @@ The REST API documentation can be found on [solverai.com](https://solverai.com).
## Installation
```sh
-# install from this staging repo
-pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
+# install from the production repo
+pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
```
> [!NOTE]
@@ -216,9 +216,9 @@ repo = response.parse() # get the object that `repos.list()` would have returne
print(repo)
```
-These methods return an [`APIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solver_api/_response.py) object.
+These methods return an [`APIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solver_api/_response.py) object.
-The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solver_api/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
+The async client returns an [`AsyncAPIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solver_api/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
#### `.with_streaming_response`
@@ -324,7 +324,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/solver-api-python/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/Laredo-Labs/solverai-sdk-python/issues) with questions, bugs, or suggestions.
### Determining the installed version
diff --git a/bin/check-release-environment b/bin/check-release-environment
new file mode 100644
index 0000000..fcc6e4b
--- /dev/null
+++ b/bin/check-release-environment
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+errors=()
+
+if [ -z "${PYPI_TOKEN}" ]; then
+ errors+=("The SOLVER_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
+fi
+
+lenErrors=${#errors[@]}
+
+if [[ lenErrors -gt 0 ]]; then
+ echo -e "Found the following errors in the release environment:\n"
+
+ for error in "${errors[@]}"; do
+ echo -e "- $error\n"
+ done
+
+ exit 1
+fi
+
+echo "The environment is ready to push releases!"
diff --git a/pyproject.toml b/pyproject.toml
index e3beaf7..36f3d71 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -34,8 +34,8 @@ classifiers = [
]
[project.urls]
-Homepage = "https://github.com/stainless-sdks/solver-api-python"
-Repository = "https://github.com/stainless-sdks/solver-api-python"
+Homepage = "https://github.com/Laredo-Labs/solverai-sdk-python"
+Repository = "https://github.com/Laredo-Labs/solverai-sdk-python"
[tool.rye]
@@ -121,7 +121,7 @@ path = "README.md"
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# replace relative links with absolute links
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
-replacement = '[\1](https://github.com/stainless-sdks/solver-api-python/tree/main/\g<2>)'
+replacement = '[\1](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/\g<2>)'
[tool.pytest.ini_options]
testpaths = ["tests"]
diff --git a/release-please-config.json b/release-please-config.json
new file mode 100644
index 0000000..a33051f
--- /dev/null
+++ b/release-please-config.json
@@ -0,0 +1,66 @@
+{
+ "packages": {
+ ".": {}
+ },
+ "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
+ "include-v-in-tag": true,
+ "include-component-in-tag": false,
+ "versioning": "prerelease",
+ "prerelease": true,
+ "bump-minor-pre-major": true,
+ "bump-patch-for-minor-pre-major": false,
+ "pull-request-header": "Automated Release PR",
+ "pull-request-title-pattern": "release: ${version}",
+ "changelog-sections": [
+ {
+ "type": "feat",
+ "section": "Features"
+ },
+ {
+ "type": "fix",
+ "section": "Bug Fixes"
+ },
+ {
+ "type": "perf",
+ "section": "Performance Improvements"
+ },
+ {
+ "type": "revert",
+ "section": "Reverts"
+ },
+ {
+ "type": "chore",
+ "section": "Chores"
+ },
+ {
+ "type": "docs",
+ "section": "Documentation"
+ },
+ {
+ "type": "style",
+ "section": "Styles"
+ },
+ {
+ "type": "refactor",
+ "section": "Refactors"
+ },
+ {
+ "type": "test",
+ "section": "Tests",
+ "hidden": true
+ },
+ {
+ "type": "build",
+ "section": "Build System"
+ },
+ {
+ "type": "ci",
+ "section": "Continuous Integration",
+ "hidden": true
+ }
+ ],
+ "release-type": "python",
+ "extra-files": [
+ "src/solver_api/_version.py"
+ ]
+}
\ No newline at end of file
diff --git a/src/solver_api/_version.py b/src/solver_api/_version.py
index 7ac8377..6300129 100644
--- a/src/solver_api/_version.py
+++ b/src/solver_api/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "solver_api"
-__version__ = "0.0.1-alpha.0"
+__version__ = "0.0.1-alpha.0" # x-release-please-version
diff --git a/src/solver_api/resources/repos/repos.py b/src/solver_api/resources/repos/repos.py
index 491263f..3ca701b 100644
--- a/src/solver_api/resources/repos/repos.py
+++ b/src/solver_api/resources/repos/repos.py
@@ -40,7 +40,7 @@ def with_raw_response(self) -> ReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return ReposResourceWithRawResponse(self)
@@ -49,7 +49,7 @@ def with_streaming_response(self) -> ReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return ReposResourceWithStreamingResponse(self)
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncReposResourceWithRawResponse(self)
@@ -105,7 +105,7 @@ def with_streaming_response(self) -> AsyncReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncReposResourceWithStreamingResponse(self)
diff --git a/src/solver_api/resources/repos/sessions/events.py b/src/solver_api/resources/repos/sessions/events.py
index 73b1ec1..361a090 100644
--- a/src/solver_api/resources/repos/sessions/events.py
+++ b/src/solver_api/resources/repos/sessions/events.py
@@ -32,7 +32,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -41,7 +41,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -194,7 +194,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -203,7 +203,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
diff --git a/src/solver_api/resources/repos/sessions/sessions.py b/src/solver_api/resources/repos/sessions/sessions.py
index cb37dfe..9665f82 100644
--- a/src/solver_api/resources/repos/sessions/sessions.py
+++ b/src/solver_api/resources/repos/sessions/sessions.py
@@ -80,7 +80,7 @@ def with_raw_response(self) -> SessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return SessionsResourceWithRawResponse(self)
@@ -89,7 +89,7 @@ def with_streaming_response(self) -> SessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return SessionsResourceWithStreamingResponse(self)
@@ -367,7 +367,7 @@ def with_raw_response(self) -> AsyncSessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncSessionsResourceWithRawResponse(self)
@@ -376,7 +376,7 @@ def with_streaming_response(self) -> AsyncSessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncSessionsResourceWithStreamingResponse(self)
diff --git a/src/solver_api/resources/repos/sessions/status.py b/src/solver_api/resources/repos/sessions/status.py
index 436baa5..0b3a7ad 100644
--- a/src/solver_api/resources/repos/sessions/status.py
+++ b/src/solver_api/resources/repos/sessions/status.py
@@ -33,7 +33,7 @@ def with_raw_response(self) -> StatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return StatusResourceWithRawResponse(self)
@@ -42,7 +42,7 @@ def with_streaming_response(self) -> StatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return StatusResourceWithStreamingResponse(self)
@@ -101,7 +101,7 @@ def with_raw_response(self) -> AsyncStatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncStatusResourceWithRawResponse(self)
@@ -110,7 +110,7 @@ def with_streaming_response(self) -> AsyncStatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncStatusResourceWithStreamingResponse(self)
diff --git a/src/solver_api/resources/repos/sessions/turns/events.py b/src/solver_api/resources/repos/sessions/turns/events.py
index 91757cf..052bde5 100644
--- a/src/solver_api/resources/repos/sessions/turns/events.py
+++ b/src/solver_api/resources/repos/sessions/turns/events.py
@@ -29,7 +29,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -38,7 +38,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -105,7 +105,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
diff --git a/src/solver_api/resources/repos/sessions/turns/turns.py b/src/solver_api/resources/repos/sessions/turns/turns.py
index ae986fc..442d063 100644
--- a/src/solver_api/resources/repos/sessions/turns/turns.py
+++ b/src/solver_api/resources/repos/sessions/turns/turns.py
@@ -42,7 +42,7 @@ def with_raw_response(self) -> TurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return TurnsResourceWithRawResponse(self)
@@ -51,7 +51,7 @@ def with_streaming_response(self) -> TurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return TurnsResourceWithStreamingResponse(self)
@@ -236,7 +236,7 @@ def with_raw_response(self) -> AsyncTurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncTurnsResourceWithRawResponse(self)
@@ -245,7 +245,7 @@ def with_streaming_response(self) -> AsyncTurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncTurnsResourceWithStreamingResponse(self)
From 1f20badfb0ade74ed54828da3b702b369d4bcd71 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 24 Apr 2025 02:15:07 +0000
Subject: [PATCH 2/9] chore(internal): codegen related update
---
.github/workflows/ci.yml | 16 ++++++++--------
.github/workflows/publish-pypi.yml | 2 +-
.github/workflows/release-doctor.yml | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 04b083c..3382042 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,18 +1,18 @@
name: CI
on:
push:
- branches:
- - main
- pull_request:
- branches:
- - main
- - next
+ branches-ignore:
+ - 'generated'
+ - 'codegen/**'
+ - 'integrated/**'
+ - 'stl-preview-head/**'
+ - 'stl-preview-base/**'
jobs:
lint:
timeout-minutes: 10
name: lint
- runs-on: ubuntu-latest
+ runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v4
@@ -33,7 +33,7 @@ jobs:
test:
timeout-minutes: 10
name: test
- runs-on: ubuntu-latest
+ runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
index 09b11b5..4fd8801 100644
--- a/.github/workflows/publish-pypi.yml
+++ b/.github/workflows/publish-pypi.yml
@@ -11,7 +11,7 @@ on:
jobs:
publish:
name: publish
- runs-on: ubuntu-latest
+ runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
index de3fa13..702bb0f 100644
--- a/.github/workflows/release-doctor.yml
+++ b/.github/workflows/release-doctor.yml
@@ -8,7 +8,7 @@ on:
jobs:
release_doctor:
name: release doctor
- runs-on: ubuntu-latest
+ runs-on: depot-ubuntu-24.04
if: github.repository == 'Laredo-Labs/solverai-sdk-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
steps:
From 0e13fdfa795b2ceef2e7e242aa2c0d26ab0756ea Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 24 Apr 2025 02:15:34 +0000
Subject: [PATCH 3/9] chore(ci): only use depot for staging repos
---
.github/workflows/ci.yml | 4 ++--
.github/workflows/publish-pypi.yml | 2 +-
.github/workflows/release-doctor.yml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3382042..c8b0724 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,7 +12,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
- runs-on: depot-ubuntu-24.04
+ runs-on: ${{ github.repository == 'stainless-sdks/solver-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v4
@@ -33,7 +33,7 @@ jobs:
test:
timeout-minutes: 10
name: test
- runs-on: depot-ubuntu-24.04
+ runs-on: ${{ github.repository == 'stainless-sdks/solver-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
index 4fd8801..09b11b5 100644
--- a/.github/workflows/publish-pypi.yml
+++ b/.github/workflows/publish-pypi.yml
@@ -11,7 +11,7 @@ on:
jobs:
publish:
name: publish
- runs-on: depot-ubuntu-24.04
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
index 702bb0f..de3fa13 100644
--- a/.github/workflows/release-doctor.yml
+++ b/.github/workflows/release-doctor.yml
@@ -8,7 +8,7 @@ on:
jobs:
release_doctor:
name: release doctor
- runs-on: depot-ubuntu-24.04
+ runs-on: ubuntu-latest
if: github.repository == 'Laredo-Labs/solverai-sdk-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next')
steps:
From 8c7adced1025f48a09cc60f2192a389ae3cc0b57 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 24 Apr 2025 02:16:51 +0000
Subject: [PATCH 4/9] chore: broadly detect json family of content-type headers
---
src/solver_api/_response.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/solver_api/_response.py b/src/solver_api/_response.py
index a791860..4e6a962 100644
--- a/src/solver_api/_response.py
+++ b/src/solver_api/_response.py
@@ -235,7 +235,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
# split is required to handle cases where additional information is included
# in the response, e.g. application/json; charset=utf-8
content_type, *_ = response.headers.get("content-type", "*").split(";")
- if content_type != "application/json":
+ if not content_type.endswith("json"):
if is_basemodel(cast_to):
try:
data = response.json()
From 306cbd83a940dfe4b7ea7b5409942a9dd5ba033f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 25 Apr 2025 15:42:26 +0000
Subject: [PATCH 5/9] feat(api): update via SDK Studio
---
.github/workflows/publish-pypi.yml | 31 ------
.github/workflows/release-doctor.yml | 21 -----
.release-please-manifest.json | 3 -
.stats.yml | 6 +-
CONTRIBUTING.md | 6 +-
README.md | 84 ++++++++---------
api.md | 42 ++++-----
bin/check-release-environment | 21 -----
mypy.ini | 2 +-
pyproject.toml | 16 ++--
release-please-config.json | 66 -------------
requirements-dev.lock | 12 +--
requirements.lock | 12 +--
scripts/lint | 2 +-
src/{solver_api => solverai}/__init__.py | 4 +-
src/{solver_api => solverai}/_base_client.py | 2 +-
src/{solver_api => solverai}/_client.py | 16 ++--
src/{solver_api => solverai}/_compat.py | 0
src/{solver_api => solverai}/_constants.py | 0
src/{solver_api => solverai}/_exceptions.py | 0
src/{solver_api => solverai}/_files.py | 0
src/{solver_api => solverai}/_models.py | 0
src/{solver_api => solverai}/_qs.py | 0
src/{solver_api => solverai}/_resource.py | 0
src/{solver_api => solverai}/_response.py | 10 +-
src/{solver_api => solverai}/_streaming.py | 0
src/{solver_api => solverai}/_types.py | 2 +-
.../_utils/__init__.py | 0
src/{solver_api => solverai}/_utils/_logs.py | 4 +-
src/{solver_api => solverai}/_utils/_proxy.py | 0
.../_utils/_reflection.py | 0
.../_utils/_streams.py | 0
src/{solver_api => solverai}/_utils/_sync.py | 0
.../_utils/_transform.py | 0
.../_utils/_typing.py | 0
src/{solver_api => solverai}/_utils/_utils.py | 0
src/{solver_api => solverai}/_version.py | 4 +-
src/solverai/lib/.keep | 4 +
src/{solver_api => solverai}/py.typed | 0
.../resources/__init__.py | 0
.../resources/repos/__init__.py | 0
.../resources/repos/repos.py | 42 ++++-----
.../resources/repos/sessions/__init__.py | 0
.../resources/repos/sessions/events.py | 56 +++++------
.../resources/repos/sessions/sessions.py | 64 ++++++-------
.../resources/repos/sessions/status.py | 12 +--
.../repos/sessions/turns/__init__.py | 0
.../resources/repos/sessions/turns/events.py | 12 +--
.../resources/repos/sessions/turns/turns.py | 54 +++++------
.../types/__init__.py | 2 +-
.../types/repo_retrieve_response.py} | 6 +-
.../types/repos/__init__.py | 4 +-
.../types/repos/session.py | 0
.../types/repos/session_create_params.py | 0
.../types/repos/session_get_patch_params.py} | 4 +-
.../repos/session_get_patch_response.py} | 4 +-
.../types/repos/session_list_params.py | 0
.../types/repos/session_list_response.py | 0
.../types/repos/session_solve_params.py | 0
.../types/repos/session_status.py | 0
.../types/repos/session_visibility.py | 0
.../types/repos/sessions/__init__.py | 6 +-
.../repos/sessions/event_get_patch_params.py} | 4 +-
.../sessions/event_get_patch_response.py} | 4 +-
.../repos/sessions/status_stream_params.py | 0
.../repos/sessions/status_stream_response.py | 2 -
.../types/repos/sessions/trace_event.py | 0
.../sessions/turn_get_patch_response.py} | 4 +-
.../repos/sessions/turn_list_response.py | 0
.../types/repos/sessions/turns/__init__.py | 0
.../types/repos/turn.py | 0
.../types/vcs_provider.py | 0
.../repos/sessions/test_events.py | 72 +++++++-------
.../repos/sessions/test_status.py | 2 +-
.../repos/sessions/test_turns.py | 62 ++++++------
.../repos/sessions/turns/test_events.py | 2 +-
tests/api_resources/repos/test_sessions.py | 70 +++++++-------
tests/api_resources/test_repos.py | 40 ++++----
tests/conftest.py | 4 +-
tests/test_client.py | 94 ++++++++++---------
tests/test_deepcopy.py | 2 +-
tests/test_extract_files.py | 4 +-
tests/test_files.py | 2 +-
tests/test_models.py | 6 +-
tests/test_qs.py | 2 +-
tests/test_required_args.py | 2 +-
tests/test_response.py | 14 +--
tests/test_streaming.py | 4 +-
tests/test_transform.py | 8 +-
tests/test_utils/test_proxy.py | 2 +-
tests/test_utils/test_typing.py | 2 +-
tests/utils.py | 8 +-
92 files changed, 456 insertions(+), 596 deletions(-)
delete mode 100644 .github/workflows/publish-pypi.yml
delete mode 100644 .github/workflows/release-doctor.yml
delete mode 100644 .release-please-manifest.json
delete mode 100644 bin/check-release-environment
delete mode 100644 release-please-config.json
rename src/{solver_api => solverai}/__init__.py (94%)
rename src/{solver_api => solverai}/_base_client.py (99%)
rename src/{solver_api => solverai}/_client.py (96%)
rename src/{solver_api => solverai}/_compat.py (100%)
rename src/{solver_api => solverai}/_constants.py (100%)
rename src/{solver_api => solverai}/_exceptions.py (100%)
rename src/{solver_api => solverai}/_files.py (100%)
rename src/{solver_api => solverai}/_models.py (100%)
rename src/{solver_api => solverai}/_qs.py (100%)
rename src/{solver_api => solverai}/_resource.py (100%)
rename src/{solver_api => solverai}/_response.py (98%)
rename src/{solver_api => solverai}/_streaming.py (100%)
rename src/{solver_api => solverai}/_types.py (99%)
rename src/{solver_api => solverai}/_utils/__init__.py (100%)
rename src/{solver_api => solverai}/_utils/_logs.py (76%)
rename src/{solver_api => solverai}/_utils/_proxy.py (100%)
rename src/{solver_api => solverai}/_utils/_reflection.py (100%)
rename src/{solver_api => solverai}/_utils/_streams.py (100%)
rename src/{solver_api => solverai}/_utils/_sync.py (100%)
rename src/{solver_api => solverai}/_utils/_transform.py (100%)
rename src/{solver_api => solverai}/_utils/_typing.py (100%)
rename src/{solver_api => solverai}/_utils/_utils.py (100%)
rename src/{solver_api => solverai}/_version.py (51%)
create mode 100644 src/solverai/lib/.keep
rename src/{solver_api => solverai}/py.typed (100%)
rename src/{solver_api => solverai}/resources/__init__.py (100%)
rename src/{solver_api => solverai}/resources/repos/__init__.py (100%)
rename src/{solver_api => solverai}/resources/repos/repos.py (83%)
rename src/{solver_api => solverai}/resources/repos/sessions/__init__.py (100%)
rename src/{solver_api => solverai}/resources/repos/sessions/events.py (88%)
rename src/{solver_api => solverai}/resources/repos/sessions/sessions.py (93%)
rename src/{solver_api => solverai}/resources/repos/sessions/status.py (91%)
rename src/{solver_api => solverai}/resources/repos/sessions/turns/__init__.py (100%)
rename src/{solver_api => solverai}/resources/repos/sessions/turns/events.py (90%)
rename src/{solver_api => solverai}/resources/repos/sessions/turns/turns.py (90%)
rename src/{solver_api => solverai}/types/__init__.py (68%)
rename src/{solver_api/types/repo_list_response.py => solverai/types/repo_retrieve_response.py} (55%)
rename src/{solver_api => solverai}/types/repos/__init__.py (78%)
rename src/{solver_api => solverai}/types/repos/session.py (100%)
rename src/{solver_api => solverai}/types/repos/session_create_params.py (100%)
rename src/{solver_api/types/repos/session_patch_params.py => solverai/types/repos/session_get_patch_params.py} (84%)
rename src/{solver_api/types/repos/session_patch_response.py => solverai/types/repos/session_get_patch_response.py} (76%)
rename src/{solver_api => solverai}/types/repos/session_list_params.py (100%)
rename src/{solver_api => solverai}/types/repos/session_list_response.py (100%)
rename src/{solver_api => solverai}/types/repos/session_solve_params.py (100%)
rename src/{solver_api => solverai}/types/repos/session_status.py (100%)
rename src/{solver_api => solverai}/types/repos/session_visibility.py (100%)
rename src/{solver_api => solverai}/types/repos/sessions/__init__.py (61%)
rename src/{solver_api/types/repos/sessions/event_patch_params.py => solverai/types/repos/sessions/event_get_patch_params.py} (87%)
rename src/{solver_api/types/repos/sessions/turn_patch_response.py => solverai/types/repos/sessions/event_get_patch_response.py} (77%)
rename src/{solver_api => solverai}/types/repos/sessions/status_stream_params.py (100%)
rename src/{solver_api => solverai}/types/repos/sessions/status_stream_response.py (86%)
rename src/{solver_api => solverai}/types/repos/sessions/trace_event.py (100%)
rename src/{solver_api/types/repos/sessions/event_patch_response.py => solverai/types/repos/sessions/turn_get_patch_response.py} (78%)
rename src/{solver_api => solverai}/types/repos/sessions/turn_list_response.py (100%)
rename src/{solver_api => solverai}/types/repos/sessions/turns/__init__.py (100%)
rename src/{solver_api => solverai}/types/repos/turn.py (100%)
rename src/{solver_api => solverai}/types/vcs_provider.py (100%)
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
deleted file mode 100644
index 09b11b5..0000000
--- a/.github/workflows/publish-pypi.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-# This workflow is triggered when a GitHub release is created.
-# It can also be run manually to re-publish to PyPI in case it failed for some reason.
-# You can run this workflow by navigating to https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml
-name: Publish PyPI
-on:
- workflow_dispatch:
-
- release:
- types: [published]
-
-jobs:
- publish:
- name: publish
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
-
- - name: Install Rye
- run: |
- curl -sSf https://rye.astral.sh/get | bash
- echo "$HOME/.rye/shims" >> $GITHUB_PATH
- env:
- RYE_VERSION: '0.44.0'
- RYE_INSTALL_OPTION: '--yes'
-
- - name: Publish to PyPI
- run: |
- bash ./bin/publish-pypi
- env:
- PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
deleted file mode 100644
index de3fa13..0000000
--- a/.github/workflows/release-doctor.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Release Doctor
-on:
- pull_request:
- branches:
- - main
- workflow_dispatch:
-
-jobs:
- release_doctor:
- name: release doctor
- runs-on: ubuntu-latest
- if: github.repository == 'Laredo-Labs/solverai-sdk-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
-
- - name: Check release environment
- run: |
- bash ./bin/check-release-environment
- env:
- PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
deleted file mode 100644
index c476280..0000000
--- a/.release-please-manifest.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- ".": "0.0.1-alpha.0"
-}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index ce9cca9..3b934e3 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-30a94cd12d5edc9db3d0fb471d522d687c4949b4c9cc1bdf1b1f062d6a329969.yml
-openapi_spec_hash: d884b89ee925c4112c75e88e65acc65a
-config_hash: 493345ae4f85f393fa5d9a79bd6487d2
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-408c34dbecbdc0cedeeb15fe065582a1497991bc585000afe25bf2d62b8d663a.yml
+openapi_spec_hash: f6806cce3b0e7dc1855a4ac92a71c2dd
+config_hash: 6e10df46282290e5c60c88af338a6d76
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a6dc9bb..e900360 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -37,7 +37,7 @@ $ pip install -r requirements-dev.lock
Most of the SDK is generated code. Modifications to code will be persisted between generations, but may
result in merge conflicts between manual patches and changes from the generator. The generator will never
-modify the contents of the `src/solver_api/lib/` and `examples/` directories.
+modify the contents of the `src/solverai/lib/` and `examples/` directories.
## Adding and running examples
@@ -63,7 +63,7 @@ If you’d like to use the repository from source, you can either install from g
To install via git:
```sh
-$ pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
+$ pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
```
Alternatively, you can build from source and install the wheel file:
@@ -121,7 +121,7 @@ the changes aren't made through the automated pipeline, you may want to make rel
### Publish with a GitHub workflow
-You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
+You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/solver-api-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
### Publish manually
diff --git a/README.md b/README.md
index 5fa3b94..7b961c0 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Solver Python API library
-[](https://pypi.org/project/solver_api/)
+[](https://pypi.org/project/solverai/)
The Solver Python library provides convenient access to the Solver REST API from any Python 3.8+
application. The library includes type definitions for all request params and response fields,
@@ -15,12 +15,12 @@ The REST API documentation can be found on [solverai.com](https://solverai.com).
## Installation
```sh
-# install from the production repo
-pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
+# install from this staging repo
+pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
```
> [!NOTE]
-> Once this package is [published to PyPI](https://app.stainless.com/docs/guides/publish), this will become: `pip install --pre solver_api`
+> Once this package is [published to PyPI](https://app.stainless.com/docs/guides/publish), this will become: `pip install --pre solverai`
## Usage
@@ -28,20 +28,20 @@ The full API of this library can be found in [api.md](api.md).
```python
import os
-from solver_api import Solver
+from solverai import Solver
client = Solver(
- api_key=os.environ.get("SOLVER_API_KEY"), # This is the default and can be omitted
+ api_key=os.environ.get("SOLVER_API_API_KEY"), # This is the default and can be omitted
)
-repos = client.repos.list(
- "github",
+repos = client.repos.retrieve(
+ "REPLACE_ME",
)
```
While you can provide an `api_key` keyword argument,
we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
-to add `SOLVER_API_KEY="My API Key"` to your `.env` file
+to add `SOLVER_API_API_KEY="My API Key"` to your `.env` file
so that your API Key is not stored in source control.
## Async usage
@@ -51,16 +51,16 @@ Simply import `AsyncSolver` instead of `Solver` and use `await` with each API ca
```python
import os
import asyncio
-from solver_api import AsyncSolver
+from solverai import AsyncSolver
client = AsyncSolver(
- api_key=os.environ.get("SOLVER_API_KEY"), # This is the default and can be omitted
+ api_key=os.environ.get("SOLVER_API_API_KEY"), # This is the default and can be omitted
)
async def main() -> None:
- repos = await client.repos.list(
- "github",
+ repos = await client.repos.retrieve(
+ "REPLACE_ME",
)
@@ -80,29 +80,29 @@ Typed requests and responses provide autocomplete and documentation within your
## Handling errors
-When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `solver_api.APIConnectionError` is raised.
+When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `solverai.APIConnectionError` is raised.
When the API returns a non-success status code (that is, 4xx or 5xx
-response), a subclass of `solver_api.APIStatusError` is raised, containing `status_code` and `response` properties.
+response), a subclass of `solverai.APIStatusError` is raised, containing `status_code` and `response` properties.
-All errors inherit from `solver_api.APIError`.
+All errors inherit from `solverai.APIError`.
```python
-import solver_api
-from solver_api import Solver
+import solverai
+from solverai import Solver
client = Solver()
try:
- client.repos.list(
- "github",
+ client.repos.retrieve(
+ "REPLACE_ME",
)
-except solver_api.APIConnectionError as e:
+except solverai.APIConnectionError as e:
print("The server could not be reached")
print(e.__cause__) # an underlying Exception, likely raised within httpx.
-except solver_api.RateLimitError as e:
+except solverai.RateLimitError as e:
print("A 429 status code was received; we should back off a bit.")
-except solver_api.APIStatusError as e:
+except solverai.APIStatusError as e:
print("Another non-200-range status code was received")
print(e.status_code)
print(e.response)
@@ -130,7 +130,7 @@ Connection errors (for example, due to a network connectivity problem), 408 Requ
You can use the `max_retries` option to configure or disable retry settings:
```python
-from solver_api import Solver
+from solverai import Solver
# Configure the default for all requests:
client = Solver(
@@ -139,8 +139,8 @@ client = Solver(
)
# Or, configure per-request:
-client.with_options(max_retries=5).repos.list(
- "github",
+client.with_options(max_retries=5).repos.retrieve(
+ "REPLACE_ME",
)
```
@@ -150,7 +150,7 @@ By default requests time out after 1 minute. You can configure this with a `time
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
```python
-from solver_api import Solver
+from solverai import Solver
# Configure the default for all requests:
client = Solver(
@@ -164,8 +164,8 @@ client = Solver(
)
# Override per-request:
-client.with_options(timeout=5.0).repos.list(
- "github",
+client.with_options(timeout=5.0).repos.retrieve(
+ "REPLACE_ME",
)
```
@@ -204,21 +204,21 @@ if response.my_field is None:
The "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,
```py
-from solver_api import Solver
+from solverai import Solver
client = Solver()
-response = client.repos.with_raw_response.list(
- "github",
+response = client.repos.with_raw_response.retrieve(
+ "REPLACE_ME",
)
print(response.headers.get('X-My-Header'))
-repo = response.parse() # get the object that `repos.list()` would have returned
+repo = response.parse() # get the object that `repos.retrieve()` would have returned
print(repo)
```
-These methods return an [`APIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solver_api/_response.py) object.
+These methods return an [`APIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solverai/_response.py) object.
-The async client returns an [`AsyncAPIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solver_api/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
+The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solverai/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
#### `.with_streaming_response`
@@ -227,8 +227,8 @@ The above interface eagerly reads the full response body when you make the reque
To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
```python
-with client.repos.with_streaming_response.list(
- "github",
+with client.repos.with_streaming_response.retrieve(
+ "REPLACE_ME",
) as response:
print(response.headers.get("X-My-Header"))
@@ -282,7 +282,7 @@ You can directly override the [httpx client](https://www.python-httpx.org/api/#c
```python
import httpx
-from solver_api import Solver, DefaultHttpxClient
+from solverai import Solver, DefaultHttpxClient
client = Solver(
# Or use the `SOLVER_BASE_URL` env var
@@ -305,7 +305,7 @@ client.with_options(http_client=DefaultHttpxClient(...))
By default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.
```py
-from solver_api import Solver
+from solverai import Solver
with Solver() as client:
# make requests here
@@ -324,7 +324,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/Laredo-Labs/solverai-sdk-python/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/solver-api-python/issues) with questions, bugs, or suggestions.
### Determining the installed version
@@ -333,8 +333,8 @@ If you've upgraded to the latest version but aren't seeing any new features you
You can determine the version that is being used at runtime with:
```py
-import solver_api
-print(solver_api.__version__)
+import solverai
+print(solverai.__version__)
```
## Requirements
diff --git a/api.md b/api.md
index 7996194..43e9904 100644
--- a/api.md
+++ b/api.md
@@ -3,79 +3,79 @@
Types:
```python
-from solver_api.types import VcsProvider, RepoListResponse
+from solverai.types import VcsProvider, RepoRetrieveResponse
```
Methods:
-- client.repos.list(provider) -> RepoListResponse
+- client.repos.retrieve(provider) -> RepoRetrieveResponse
## Sessions
Types:
```python
-from solver_api.types.repos import (
+from solverai.types.repos import (
Session,
SessionStatus,
SessionVisibility,
Turn,
SessionListResponse,
- SessionPatchResponse,
+ SessionGetPatchResponse,
)
```
Methods:
-- client.repos.sessions.create(repo, \*, provider, org, \*\*params) -> Session
-- client.repos.sessions.list(repo, \*, provider, org, \*\*params) -> SessionListResponse
-- client.repos.sessions.get(session_id, \*, provider, org, repo) -> Session
-- client.repos.sessions.patch(session_id, \*, provider, org, repo, \*\*params) -> SessionPatchResponse
-- client.repos.sessions.solve(session_id, \*, provider, org, repo, \*\*params) -> Turn
+- client.repos.sessions.create(repo, \*, provider, org, \*\*params) -> Session
+- client.repos.sessions.list(repo, \*, provider, org, \*\*params) -> SessionListResponse
+- client.repos.sessions.get(session_id, \*, provider, org, repo) -> Session
+- client.repos.sessions.get_patch(session_id, \*, provider, org, repo, \*\*params) -> SessionGetPatchResponse
+- client.repos.sessions.solve(session_id, \*, provider, org, repo, \*\*params) -> Turn
### Status
Types:
```python
-from solver_api.types.repos.sessions import StatusStreamResponse
+from solverai.types.repos.sessions import StatusStreamResponse
```
Methods:
-- client.repos.sessions.status.stream(repo, \*, provider, org, \*\*params) -> StatusStreamResponse
+- client.repos.sessions.status.stream(repo, \*, provider, org, \*\*params) -> StatusStreamResponse
### Turns
Types:
```python
-from solver_api.types.repos.sessions import TurnListResponse, TurnPatchResponse
+from solverai.types.repos.sessions import TurnListResponse, TurnGetPatchResponse
```
Methods:
-- client.repos.sessions.turns.list(session_id, \*, provider, org, repo) -> TurnListResponse
-- client.repos.sessions.turns.cancel(turn_id, \*, provider, org, repo, session_id) -> Turn
-- client.repos.sessions.turns.get(turn_id, \*, provider, org, repo, session_id) -> Turn
-- client.repos.sessions.turns.patch(turn_id, \*, provider, org, repo, session_id) -> TurnPatchResponse
+- client.repos.sessions.turns.list(session_id, \*, provider, org, repo) -> TurnListResponse
+- client.repos.sessions.turns.cancel(turn_id, \*, provider, org, repo, session_id) -> Turn
+- client.repos.sessions.turns.get(turn_id, \*, provider, org, repo, session_id) -> Turn
+- client.repos.sessions.turns.get_patch(turn_id, \*, provider, org, repo, session_id) -> TurnGetPatchResponse
#### Events
Methods:
-- client.repos.sessions.turns.events.stream(turn_id, \*, provider, org, repo, session_id) -> TraceEvent
+- client.repos.sessions.turns.events.stream(turn_id, \*, provider, org, repo, session_id) -> TraceEvent
### Events
Types:
```python
-from solver_api.types.repos.sessions import TraceEvent, EventPatchResponse
+from solverai.types.repos.sessions import TraceEvent, EventGetPatchResponse
```
Methods:
-- client.repos.sessions.events.get(event_id, \*, provider, org, repo, session_id) -> TraceEvent
-- client.repos.sessions.events.patch(event_id, \*, provider, org, repo, session_id, \*\*params) -> EventPatchResponse
-- client.repos.sessions.events.stream(session_id, \*, provider, org, repo) -> TraceEvent
+- client.repos.sessions.events.get(event_id, \*, provider, org, repo, session_id) -> TraceEvent
+- client.repos.sessions.events.get_patch(event_id, \*, provider, org, repo, session_id, \*\*params) -> EventGetPatchResponse
+- client.repos.sessions.events.stream(session_id, \*, provider, org, repo) -> TraceEvent
diff --git a/bin/check-release-environment b/bin/check-release-environment
deleted file mode 100644
index fcc6e4b..0000000
--- a/bin/check-release-environment
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-
-errors=()
-
-if [ -z "${PYPI_TOKEN}" ]; then
- errors+=("The SOLVER_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
-fi
-
-lenErrors=${#errors[@]}
-
-if [[ lenErrors -gt 0 ]]; then
- echo -e "Found the following errors in the release environment:\n"
-
- for error in "${errors[@]}"; do
- echo -e "- $error\n"
- done
-
- exit 1
-fi
-
-echo "The environment is ready to push releases!"
diff --git a/mypy.ini b/mypy.ini
index a220603..9b613d5 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -8,7 +8,7 @@ show_error_codes = True
#
# We also exclude our `tests` as mypy doesn't always infer
# types correctly and Pyright will still catch any type errors.
-exclude = ^(src/solver_api/_files\.py|_dev/.*\.py|tests/.*)$
+exclude = ^(src/solverai/_files\.py|_dev/.*\.py|tests/.*)$
strict_equality = True
implicit_reexport = True
diff --git a/pyproject.toml b/pyproject.toml
index 36f3d71..6dbe25a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
[project]
-name = "solver_api"
+name = "solverai"
version = "0.0.1-alpha.0"
description = "The official Python library for the solver API"
dynamic = ["readme"]
@@ -34,8 +34,8 @@ classifiers = [
]
[project.urls]
-Homepage = "https://github.com/Laredo-Labs/solverai-sdk-python"
-Repository = "https://github.com/Laredo-Labs/solverai-sdk-python"
+Homepage = "https://github.com/stainless-sdks/solver-api-python"
+Repository = "https://github.com/stainless-sdks/solver-api-python"
[tool.rye]
@@ -75,14 +75,14 @@ format = { chain = [
"check:ruff" = "ruff check ."
"fix:ruff" = "ruff check --fix ."
-"check:importable" = "python -c 'import solver_api'"
+"check:importable" = "python -c 'import solverai'"
typecheck = { chain = [
"typecheck:pyright",
"typecheck:mypy"
]}
"typecheck:pyright" = "pyright"
-"typecheck:verify-types" = "pyright --verifytypes solver_api --ignoreexternal"
+"typecheck:verify-types" = "pyright --verifytypes solverai --ignoreexternal"
"typecheck:mypy" = "mypy ."
[build-system]
@@ -95,7 +95,7 @@ include = [
]
[tool.hatch.build.targets.wheel]
-packages = ["src/solver_api"]
+packages = ["src/solverai"]
[tool.hatch.build.targets.sdist]
# Basically everything except hidden files/directories (such as .github, .devcontainers, .python-version, etc)
@@ -121,7 +121,7 @@ path = "README.md"
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# replace relative links with absolute links
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
-replacement = '[\1](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/\g<2>)'
+replacement = '[\1](https://github.com/stainless-sdks/solver-api-python/tree/main/\g<2>)'
[tool.pytest.ini_options]
testpaths = ["tests"]
@@ -198,7 +198,7 @@ length-sort = true
length-sort-straight = true
combine-as-imports = true
extra-standard-library = ["typing_extensions"]
-known-first-party = ["solver_api", "tests"]
+known-first-party = ["solverai", "tests"]
[tool.ruff.lint.per-file-ignores]
"bin/**.py" = ["T201", "T203"]
diff --git a/release-please-config.json b/release-please-config.json
deleted file mode 100644
index a33051f..0000000
--- a/release-please-config.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "packages": {
- ".": {}
- },
- "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
- "include-v-in-tag": true,
- "include-component-in-tag": false,
- "versioning": "prerelease",
- "prerelease": true,
- "bump-minor-pre-major": true,
- "bump-patch-for-minor-pre-major": false,
- "pull-request-header": "Automated Release PR",
- "pull-request-title-pattern": "release: ${version}",
- "changelog-sections": [
- {
- "type": "feat",
- "section": "Features"
- },
- {
- "type": "fix",
- "section": "Bug Fixes"
- },
- {
- "type": "perf",
- "section": "Performance Improvements"
- },
- {
- "type": "revert",
- "section": "Reverts"
- },
- {
- "type": "chore",
- "section": "Chores"
- },
- {
- "type": "docs",
- "section": "Documentation"
- },
- {
- "type": "style",
- "section": "Styles"
- },
- {
- "type": "refactor",
- "section": "Refactors"
- },
- {
- "type": "test",
- "section": "Tests",
- "hidden": true
- },
- {
- "type": "build",
- "section": "Build System"
- },
- {
- "type": "ci",
- "section": "Continuous Integration",
- "hidden": true
- }
- ],
- "release-type": "python",
- "extra-files": [
- "src/solver_api/_version.py"
- ]
-}
\ No newline at end of file
diff --git a/requirements-dev.lock b/requirements-dev.lock
index 7b02a9c..ec242be 100644
--- a/requirements-dev.lock
+++ b/requirements-dev.lock
@@ -14,7 +14,7 @@ annotated-types==0.6.0
# via pydantic
anyio==4.4.0
# via httpx
- # via solver-api
+ # via solverai
argcomplete==3.1.2
# via nox
certifi==2023.7.22
@@ -26,7 +26,7 @@ dirty-equals==0.6.0
distlib==0.3.7
# via virtualenv
distro==1.8.0
- # via solver-api
+ # via solverai
exceptiongroup==1.2.2
# via anyio
# via pytest
@@ -38,7 +38,7 @@ httpcore==1.0.2
# via httpx
httpx==0.28.1
# via respx
- # via solver-api
+ # via solverai
idna==3.4
# via anyio
# via httpx
@@ -64,7 +64,7 @@ platformdirs==3.11.0
pluggy==1.5.0
# via pytest
pydantic==2.10.3
- # via solver-api
+ # via solverai
pydantic-core==2.27.1
# via pydantic
pygments==2.18.0
@@ -86,7 +86,7 @@ six==1.16.0
# via python-dateutil
sniffio==1.3.0
# via anyio
- # via solver-api
+ # via solverai
time-machine==2.9.0
tomli==2.0.2
# via mypy
@@ -97,7 +97,7 @@ typing-extensions==4.12.2
# via pydantic
# via pydantic-core
# via pyright
- # via solver-api
+ # via solverai
virtualenv==20.24.5
# via nox
zipp==3.17.0
diff --git a/requirements.lock b/requirements.lock
index c5d0682..7f1992d 100644
--- a/requirements.lock
+++ b/requirements.lock
@@ -14,12 +14,12 @@ annotated-types==0.6.0
# via pydantic
anyio==4.4.0
# via httpx
- # via solver-api
+ # via solverai
certifi==2023.7.22
# via httpcore
# via httpx
distro==1.8.0
- # via solver-api
+ # via solverai
exceptiongroup==1.2.2
# via anyio
h11==0.14.0
@@ -27,19 +27,19 @@ h11==0.14.0
httpcore==1.0.2
# via httpx
httpx==0.28.1
- # via solver-api
+ # via solverai
idna==3.4
# via anyio
# via httpx
pydantic==2.10.3
- # via solver-api
+ # via solverai
pydantic-core==2.27.1
# via pydantic
sniffio==1.3.0
# via anyio
- # via solver-api
+ # via solverai
typing-extensions==4.12.2
# via anyio
# via pydantic
# via pydantic-core
- # via solver-api
+ # via solverai
diff --git a/scripts/lint b/scripts/lint
index 054b596..5840d96 100755
--- a/scripts/lint
+++ b/scripts/lint
@@ -8,4 +8,4 @@ echo "==> Running lints"
rye run lint
echo "==> Making sure it imports"
-rye run python -c 'import solver_api'
+rye run python -c 'import solverai'
diff --git a/src/solver_api/__init__.py b/src/solverai/__init__.py
similarity index 94%
rename from src/solver_api/__init__.py
rename to src/solverai/__init__.py
index c53b9dd..55f1a93 100644
--- a/src/solver_api/__init__.py
+++ b/src/solverai/__init__.py
@@ -73,12 +73,12 @@
# Update the __module__ attribute for exported symbols so that
# error messages point to this module instead of the module
# it was originally defined in, e.g.
-# solver_api._exceptions.NotFoundError -> solver_api.NotFoundError
+# solverai._exceptions.NotFoundError -> solverai.NotFoundError
__locals = locals()
for __name in __all__:
if not __name.startswith("__"):
try:
- __locals[__name].__module__ = "solver_api"
+ __locals[__name].__module__ = "solverai"
except (TypeError, AttributeError):
# Some of our exported symbols are builtins which we can't set attributes for.
pass
diff --git a/src/solver_api/_base_client.py b/src/solverai/_base_client.py
similarity index 99%
rename from src/solver_api/_base_client.py
rename to src/solverai/_base_client.py
index fc9e5e6..41f73c1 100644
--- a/src/solver_api/_base_client.py
+++ b/src/solverai/_base_client.py
@@ -389,7 +389,7 @@ def __init__(
if max_retries is None: # pyright: ignore[reportUnnecessaryComparison]
raise TypeError(
- "max_retries cannot be None. If you want to disable retries, pass `0`; if you want unlimited retries, pass `math.inf` or a very high number; if you want the default behavior, pass `solver_api.DEFAULT_MAX_RETRIES`"
+ "max_retries cannot be None. If you want to disable retries, pass `0`; if you want unlimited retries, pass `math.inf` or a very high number; if you want the default behavior, pass `solverai.DEFAULT_MAX_RETRIES`"
)
def _enforce_trailing_slash(self, url: URL) -> URL:
diff --git a/src/solver_api/_client.py b/src/solverai/_client.py
similarity index 96%
rename from src/solver_api/_client.py
rename to src/solverai/_client.py
index 2e154b3..936bc11 100644
--- a/src/solver_api/_client.py
+++ b/src/solverai/_client.py
@@ -66,20 +66,20 @@ def __init__(
) -> None:
"""Construct a new synchronous Solver client instance.
- This automatically infers the `api_key` argument from the `SOLVER_API_KEY` environment variable if it is not provided.
+ This automatically infers the `api_key` argument from the `SOLVER_API_API_KEY` environment variable if it is not provided.
"""
if api_key is None:
- api_key = os.environ.get("SOLVER_API_KEY")
+ api_key = os.environ.get("SOLVER_API_API_KEY")
if api_key is None:
raise SolverError(
- "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_KEY environment variable"
+ "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_API_KEY environment variable"
)
self.api_key = api_key
if base_url is None:
base_url = os.environ.get("SOLVER_BASE_URL")
if base_url is None:
- base_url = f"https://api.eng.laredolabs.com/alpha/"
+ base_url = f"https://api.solverai.com"
super().__init__(
version=__version__,
@@ -234,20 +234,20 @@ def __init__(
) -> None:
"""Construct a new async AsyncSolver client instance.
- This automatically infers the `api_key` argument from the `SOLVER_API_KEY` environment variable if it is not provided.
+ This automatically infers the `api_key` argument from the `SOLVER_API_API_KEY` environment variable if it is not provided.
"""
if api_key is None:
- api_key = os.environ.get("SOLVER_API_KEY")
+ api_key = os.environ.get("SOLVER_API_API_KEY")
if api_key is None:
raise SolverError(
- "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_KEY environment variable"
+ "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_API_KEY environment variable"
)
self.api_key = api_key
if base_url is None:
base_url = os.environ.get("SOLVER_BASE_URL")
if base_url is None:
- base_url = f"https://api.eng.laredolabs.com/alpha/"
+ base_url = f"https://api.solverai.com"
super().__init__(
version=__version__,
diff --git a/src/solver_api/_compat.py b/src/solverai/_compat.py
similarity index 100%
rename from src/solver_api/_compat.py
rename to src/solverai/_compat.py
diff --git a/src/solver_api/_constants.py b/src/solverai/_constants.py
similarity index 100%
rename from src/solver_api/_constants.py
rename to src/solverai/_constants.py
diff --git a/src/solver_api/_exceptions.py b/src/solverai/_exceptions.py
similarity index 100%
rename from src/solver_api/_exceptions.py
rename to src/solverai/_exceptions.py
diff --git a/src/solver_api/_files.py b/src/solverai/_files.py
similarity index 100%
rename from src/solver_api/_files.py
rename to src/solverai/_files.py
diff --git a/src/solver_api/_models.py b/src/solverai/_models.py
similarity index 100%
rename from src/solver_api/_models.py
rename to src/solverai/_models.py
diff --git a/src/solver_api/_qs.py b/src/solverai/_qs.py
similarity index 100%
rename from src/solver_api/_qs.py
rename to src/solverai/_qs.py
diff --git a/src/solver_api/_resource.py b/src/solverai/_resource.py
similarity index 100%
rename from src/solver_api/_resource.py
rename to src/solverai/_resource.py
diff --git a/src/solver_api/_response.py b/src/solverai/_response.py
similarity index 98%
rename from src/solver_api/_response.py
rename to src/solverai/_response.py
index 4e6a962..4db90b8 100644
--- a/src/solver_api/_response.py
+++ b/src/solverai/_response.py
@@ -217,9 +217,7 @@ def _parse(self, *, to: type[_T] | None = None) -> R | _T:
and not issubclass(origin, BaseModel)
and issubclass(origin, pydantic.BaseModel)
):
- raise TypeError(
- "Pydantic models must subclass our base model type, e.g. `from solver_api import BaseModel`"
- )
+ raise TypeError("Pydantic models must subclass our base model type, e.g. `from solverai import BaseModel`")
if (
cast_to is not object
@@ -285,7 +283,7 @@ def parse(self, *, to: type[_T] | None = None) -> R | _T:
the `to` argument, e.g.
```py
- from solver_api import BaseModel
+ from solverai import BaseModel
class MyModel(BaseModel):
@@ -387,7 +385,7 @@ async def parse(self, *, to: type[_T] | None = None) -> R | _T:
the `to` argument, e.g.
```py
- from solver_api import BaseModel
+ from solverai import BaseModel
class MyModel(BaseModel):
@@ -558,7 +556,7 @@ async def stream_to_file(
class MissingStreamClassError(TypeError):
def __init__(self) -> None:
super().__init__(
- "The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `solver_api._streaming` for reference",
+ "The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `solverai._streaming` for reference",
)
diff --git a/src/solver_api/_streaming.py b/src/solverai/_streaming.py
similarity index 100%
rename from src/solver_api/_streaming.py
rename to src/solverai/_streaming.py
diff --git a/src/solver_api/_types.py b/src/solverai/_types.py
similarity index 99%
rename from src/solver_api/_types.py
rename to src/solverai/_types.py
index 6e9bf43..98a5e3a 100644
--- a/src/solver_api/_types.py
+++ b/src/solverai/_types.py
@@ -81,7 +81,7 @@
# This unfortunately means that you will either have
# to import this type and pass it explicitly:
#
-# from solver_api import NoneType
+# from solverai import NoneType
# client.get('/foo', cast_to=NoneType)
#
# or build it yourself:
diff --git a/src/solver_api/_utils/__init__.py b/src/solverai/_utils/__init__.py
similarity index 100%
rename from src/solver_api/_utils/__init__.py
rename to src/solverai/_utils/__init__.py
diff --git a/src/solver_api/_utils/_logs.py b/src/solverai/_utils/_logs.py
similarity index 76%
rename from src/solver_api/_utils/_logs.py
rename to src/solverai/_utils/_logs.py
index ee0f93e..06defa4 100644
--- a/src/solver_api/_utils/_logs.py
+++ b/src/solverai/_utils/_logs.py
@@ -1,12 +1,12 @@
import os
import logging
-logger: logging.Logger = logging.getLogger("solver_api")
+logger: logging.Logger = logging.getLogger("solverai")
httpx_logger: logging.Logger = logging.getLogger("httpx")
def _basic_config() -> None:
- # e.g. [2023-10-05 14:12:26 - solver_api._base_client:818 - DEBUG] HTTP Request: POST http://127.0.0.1:4010/foo/bar "200 OK"
+ # e.g. [2023-10-05 14:12:26 - solverai._base_client:818 - DEBUG] HTTP Request: POST http://127.0.0.1:4010/foo/bar "200 OK"
logging.basicConfig(
format="[%(asctime)s - %(name)s:%(lineno)d - %(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
diff --git a/src/solver_api/_utils/_proxy.py b/src/solverai/_utils/_proxy.py
similarity index 100%
rename from src/solver_api/_utils/_proxy.py
rename to src/solverai/_utils/_proxy.py
diff --git a/src/solver_api/_utils/_reflection.py b/src/solverai/_utils/_reflection.py
similarity index 100%
rename from src/solver_api/_utils/_reflection.py
rename to src/solverai/_utils/_reflection.py
diff --git a/src/solver_api/_utils/_streams.py b/src/solverai/_utils/_streams.py
similarity index 100%
rename from src/solver_api/_utils/_streams.py
rename to src/solverai/_utils/_streams.py
diff --git a/src/solver_api/_utils/_sync.py b/src/solverai/_utils/_sync.py
similarity index 100%
rename from src/solver_api/_utils/_sync.py
rename to src/solverai/_utils/_sync.py
diff --git a/src/solver_api/_utils/_transform.py b/src/solverai/_utils/_transform.py
similarity index 100%
rename from src/solver_api/_utils/_transform.py
rename to src/solverai/_utils/_transform.py
diff --git a/src/solver_api/_utils/_typing.py b/src/solverai/_utils/_typing.py
similarity index 100%
rename from src/solver_api/_utils/_typing.py
rename to src/solverai/_utils/_typing.py
diff --git a/src/solver_api/_utils/_utils.py b/src/solverai/_utils/_utils.py
similarity index 100%
rename from src/solver_api/_utils/_utils.py
rename to src/solverai/_utils/_utils.py
diff --git a/src/solver_api/_version.py b/src/solverai/_version.py
similarity index 51%
rename from src/solver_api/_version.py
rename to src/solverai/_version.py
index 6300129..d91e2f4 100644
--- a/src/solver_api/_version.py
+++ b/src/solverai/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-__title__ = "solver_api"
-__version__ = "0.0.1-alpha.0" # x-release-please-version
+__title__ = "solverai"
+__version__ = "0.0.1-alpha.0"
diff --git a/src/solverai/lib/.keep b/src/solverai/lib/.keep
new file mode 100644
index 0000000..5e2c99f
--- /dev/null
+++ b/src/solverai/lib/.keep
@@ -0,0 +1,4 @@
+File generated from our OpenAPI spec by Stainless.
+
+This directory can be used to store custom files to expand the SDK.
+It is ignored by Stainless code generation and its content (other than this keep file) won't be touched.
\ No newline at end of file
diff --git a/src/solver_api/py.typed b/src/solverai/py.typed
similarity index 100%
rename from src/solver_api/py.typed
rename to src/solverai/py.typed
diff --git a/src/solver_api/resources/__init__.py b/src/solverai/resources/__init__.py
similarity index 100%
rename from src/solver_api/resources/__init__.py
rename to src/solverai/resources/__init__.py
diff --git a/src/solver_api/resources/repos/__init__.py b/src/solverai/resources/repos/__init__.py
similarity index 100%
rename from src/solver_api/resources/repos/__init__.py
rename to src/solverai/resources/repos/__init__.py
diff --git a/src/solver_api/resources/repos/repos.py b/src/solverai/resources/repos/repos.py
similarity index 83%
rename from src/solver_api/resources/repos/repos.py
rename to src/solverai/resources/repos/repos.py
index 3ca701b..349f482 100644
--- a/src/solver_api/resources/repos/repos.py
+++ b/src/solverai/resources/repos/repos.py
@@ -24,7 +24,7 @@
AsyncSessionsResourceWithStreamingResponse,
)
from ...types.vcs_provider import VcsProvider
-from ...types.repo_list_response import RepoListResponse
+from ...types.repo_retrieve_response import RepoRetrieveResponse
__all__ = ["ReposResource", "AsyncReposResource"]
@@ -40,7 +40,7 @@ def with_raw_response(self) -> ReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return ReposResourceWithRawResponse(self)
@@ -49,11 +49,11 @@ def with_streaming_response(self) -> ReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return ReposResourceWithStreamingResponse(self)
- def list(
+ def retrieve(
self,
provider: VcsProvider,
*,
@@ -63,7 +63,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> RepoListResponse:
+ ) -> RepoRetrieveResponse:
"""
Args:
extra_headers: Send extra headers
@@ -77,11 +77,11 @@ def list(
if not provider:
raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}")
return self._get(
- f"/repos/{provider}",
+ f"/alpha/repos/{provider}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=RepoListResponse,
+ cast_to=RepoRetrieveResponse,
)
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncReposResourceWithRawResponse(self)
@@ -105,11 +105,11 @@ def with_streaming_response(self) -> AsyncReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncReposResourceWithStreamingResponse(self)
- async def list(
+ async def retrieve(
self,
provider: VcsProvider,
*,
@@ -119,7 +119,7 @@ async def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> RepoListResponse:
+ ) -> RepoRetrieveResponse:
"""
Args:
extra_headers: Send extra headers
@@ -133,11 +133,11 @@ async def list(
if not provider:
raise ValueError(f"Expected a non-empty value for `provider` but received {provider!r}")
return await self._get(
- f"/repos/{provider}",
+ f"/alpha/repos/{provider}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=RepoListResponse,
+ cast_to=RepoRetrieveResponse,
)
@@ -145,8 +145,8 @@ class ReposResourceWithRawResponse:
def __init__(self, repos: ReposResource) -> None:
self._repos = repos
- self.list = to_raw_response_wrapper(
- repos.list,
+ self.retrieve = to_raw_response_wrapper(
+ repos.retrieve,
)
@cached_property
@@ -158,8 +158,8 @@ class AsyncReposResourceWithRawResponse:
def __init__(self, repos: AsyncReposResource) -> None:
self._repos = repos
- self.list = async_to_raw_response_wrapper(
- repos.list,
+ self.retrieve = async_to_raw_response_wrapper(
+ repos.retrieve,
)
@cached_property
@@ -171,8 +171,8 @@ class ReposResourceWithStreamingResponse:
def __init__(self, repos: ReposResource) -> None:
self._repos = repos
- self.list = to_streamed_response_wrapper(
- repos.list,
+ self.retrieve = to_streamed_response_wrapper(
+ repos.retrieve,
)
@cached_property
@@ -184,8 +184,8 @@ class AsyncReposResourceWithStreamingResponse:
def __init__(self, repos: AsyncReposResource) -> None:
self._repos = repos
- self.list = async_to_streamed_response_wrapper(
- repos.list,
+ self.retrieve = async_to_streamed_response_wrapper(
+ repos.retrieve,
)
@cached_property
diff --git a/src/solver_api/resources/repos/sessions/__init__.py b/src/solverai/resources/repos/sessions/__init__.py
similarity index 100%
rename from src/solver_api/resources/repos/sessions/__init__.py
rename to src/solverai/resources/repos/sessions/__init__.py
diff --git a/src/solver_api/resources/repos/sessions/events.py b/src/solverai/resources/repos/sessions/events.py
similarity index 88%
rename from src/solver_api/resources/repos/sessions/events.py
rename to src/solverai/resources/repos/sessions/events.py
index 361a090..a09a7f0 100644
--- a/src/solver_api/resources/repos/sessions/events.py
+++ b/src/solverai/resources/repos/sessions/events.py
@@ -18,9 +18,9 @@
from ...._streaming import Stream, AsyncStream
from ...._base_client import make_request_options
from ....types.vcs_provider import VcsProvider
-from ....types.repos.sessions import event_patch_params
+from ....types.repos.sessions import event_get_patch_params
from ....types.repos.sessions.trace_event import TraceEvent
-from ....types.repos.sessions.event_patch_response import EventPatchResponse
+from ....types.repos.sessions.event_get_patch_response import EventGetPatchResponse
__all__ = ["EventsResource", "AsyncEventsResource"]
@@ -32,7 +32,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -41,7 +41,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -81,14 +81,14 @@ def get(
if not event_id:
raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=TraceEvent,
)
- def patch(
+ def get_patch(
self,
event_id: str,
*,
@@ -104,7 +104,7 @@ def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EventPatchResponse:
+ ) -> EventGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -126,7 +126,7 @@ def patch(
if not event_id:
raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}/patch",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -137,10 +137,10 @@ def patch(
"context_lines": context_lines,
"interhunk_lines": interhunk_lines,
},
- event_patch_params.EventPatchParams,
+ event_get_patch_params.EventGetPatchParams,
),
),
- cast_to=EventPatchResponse,
+ cast_to=EventGetPatchResponse,
)
def stream(
@@ -177,7 +177,7 @@ def stream(
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/stream",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -194,7 +194,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -203,7 +203,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
@@ -243,14 +243,14 @@ async def get(
if not event_id:
raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=TraceEvent,
)
- async def patch(
+ async def get_patch(
self,
event_id: str,
*,
@@ -266,7 +266,7 @@ async def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EventPatchResponse:
+ ) -> EventGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -288,7 +288,7 @@ async def patch(
if not event_id:
raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/{event_id}/patch",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -299,10 +299,10 @@ async def patch(
"context_lines": context_lines,
"interhunk_lines": interhunk_lines,
},
- event_patch_params.EventPatchParams,
+ event_get_patch_params.EventGetPatchParams,
),
),
- cast_to=EventPatchResponse,
+ cast_to=EventGetPatchResponse,
)
async def stream(
@@ -339,7 +339,7 @@ async def stream(
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/events/stream",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -356,8 +356,8 @@ def __init__(self, events: EventsResource) -> None:
self.get = to_raw_response_wrapper(
events.get,
)
- self.patch = to_raw_response_wrapper(
- events.patch,
+ self.get_patch = to_raw_response_wrapper(
+ events.get_patch,
)
self.stream = to_raw_response_wrapper(
events.stream,
@@ -371,8 +371,8 @@ def __init__(self, events: AsyncEventsResource) -> None:
self.get = async_to_raw_response_wrapper(
events.get,
)
- self.patch = async_to_raw_response_wrapper(
- events.patch,
+ self.get_patch = async_to_raw_response_wrapper(
+ events.get_patch,
)
self.stream = async_to_raw_response_wrapper(
events.stream,
@@ -386,8 +386,8 @@ def __init__(self, events: EventsResource) -> None:
self.get = to_streamed_response_wrapper(
events.get,
)
- self.patch = to_streamed_response_wrapper(
- events.patch,
+ self.get_patch = to_streamed_response_wrapper(
+ events.get_patch,
)
self.stream = to_streamed_response_wrapper(
events.stream,
@@ -401,8 +401,8 @@ def __init__(self, events: AsyncEventsResource) -> None:
self.get = async_to_streamed_response_wrapper(
events.get,
)
- self.patch = async_to_streamed_response_wrapper(
- events.patch,
+ self.get_patch = async_to_streamed_response_wrapper(
+ events.get_patch,
)
self.stream = async_to_streamed_response_wrapper(
events.stream,
diff --git a/src/solver_api/resources/repos/sessions/sessions.py b/src/solverai/resources/repos/sessions/sessions.py
similarity index 93%
rename from src/solver_api/resources/repos/sessions/sessions.py
rename to src/solverai/resources/repos/sessions/sessions.py
index 9665f82..d481989 100644
--- a/src/solver_api/resources/repos/sessions/sessions.py
+++ b/src/solverai/resources/repos/sessions/sessions.py
@@ -45,9 +45,9 @@
from ....types.repos import (
SessionVisibility,
session_list_params,
- session_patch_params,
session_solve_params,
session_create_params,
+ session_get_patch_params,
)
from ...._base_client import make_request_options
from ....types.repos.turn import Turn
@@ -56,7 +56,7 @@
from ....types.repos.session_status import SessionStatus
from ....types.repos.session_visibility import SessionVisibility
from ....types.repos.session_list_response import SessionListResponse
-from ....types.repos.session_patch_response import SessionPatchResponse
+from ....types.repos.session_get_patch_response import SessionGetPatchResponse
__all__ = ["SessionsResource", "AsyncSessionsResource"]
@@ -80,7 +80,7 @@ def with_raw_response(self) -> SessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return SessionsResourceWithRawResponse(self)
@@ -89,7 +89,7 @@ def with_streaming_response(self) -> SessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return SessionsResourceWithStreamingResponse(self)
@@ -127,7 +127,7 @@ def create(
if not repo:
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
return self._post(
- f"/repos/{provider}/{org}/{repo}/sessions",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions",
body=maybe_transform(
{
"user_branch_name": user_branch_name,
@@ -180,7 +180,7 @@ def list(
if not repo:
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -235,14 +235,14 @@ def get(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=Session,
)
- def patch(
+ def get_patch(
self,
session_id: str,
*,
@@ -257,7 +257,7 @@ def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SessionPatchResponse:
+ ) -> SessionGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -277,7 +277,7 @@ def patch(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/patch",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -288,10 +288,10 @@ def patch(
"context_lines": context_lines,
"interhunk_lines": interhunk_lines,
},
- session_patch_params.SessionPatchParams,
+ session_get_patch_params.SessionGetPatchParams,
),
),
- cast_to=SessionPatchResponse,
+ cast_to=SessionGetPatchResponse,
)
def solve(
@@ -332,7 +332,7 @@ def solve(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return self._post(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/solve",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/solve",
body=maybe_transform(
{
"instruction": instruction,
@@ -367,7 +367,7 @@ def with_raw_response(self) -> AsyncSessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncSessionsResourceWithRawResponse(self)
@@ -376,7 +376,7 @@ def with_streaming_response(self) -> AsyncSessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncSessionsResourceWithStreamingResponse(self)
@@ -414,7 +414,7 @@ async def create(
if not repo:
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
return await self._post(
- f"/repos/{provider}/{org}/{repo}/sessions",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions",
body=await async_maybe_transform(
{
"user_branch_name": user_branch_name,
@@ -467,7 +467,7 @@ async def list(
if not repo:
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -522,14 +522,14 @@ async def get(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=Session,
)
- async def patch(
+ async def get_patch(
self,
session_id: str,
*,
@@ -544,7 +544,7 @@ async def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SessionPatchResponse:
+ ) -> SessionGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -564,7 +564,7 @@ async def patch(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/patch",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -575,10 +575,10 @@ async def patch(
"context_lines": context_lines,
"interhunk_lines": interhunk_lines,
},
- session_patch_params.SessionPatchParams,
+ session_get_patch_params.SessionGetPatchParams,
),
),
- cast_to=SessionPatchResponse,
+ cast_to=SessionGetPatchResponse,
)
async def solve(
@@ -619,7 +619,7 @@ async def solve(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return await self._post(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/solve",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/solve",
body=await async_maybe_transform(
{
"instruction": instruction,
@@ -648,8 +648,8 @@ def __init__(self, sessions: SessionsResource) -> None:
self.get = to_raw_response_wrapper(
sessions.get,
)
- self.patch = to_raw_response_wrapper(
- sessions.patch,
+ self.get_patch = to_raw_response_wrapper(
+ sessions.get_patch,
)
self.solve = to_raw_response_wrapper(
sessions.solve,
@@ -681,8 +681,8 @@ def __init__(self, sessions: AsyncSessionsResource) -> None:
self.get = async_to_raw_response_wrapper(
sessions.get,
)
- self.patch = async_to_raw_response_wrapper(
- sessions.patch,
+ self.get_patch = async_to_raw_response_wrapper(
+ sessions.get_patch,
)
self.solve = async_to_raw_response_wrapper(
sessions.solve,
@@ -714,8 +714,8 @@ def __init__(self, sessions: SessionsResource) -> None:
self.get = to_streamed_response_wrapper(
sessions.get,
)
- self.patch = to_streamed_response_wrapper(
- sessions.patch,
+ self.get_patch = to_streamed_response_wrapper(
+ sessions.get_patch,
)
self.solve = to_streamed_response_wrapper(
sessions.solve,
@@ -747,8 +747,8 @@ def __init__(self, sessions: AsyncSessionsResource) -> None:
self.get = async_to_streamed_response_wrapper(
sessions.get,
)
- self.patch = async_to_streamed_response_wrapper(
- sessions.patch,
+ self.get_patch = async_to_streamed_response_wrapper(
+ sessions.get_patch,
)
self.solve = async_to_streamed_response_wrapper(
sessions.solve,
diff --git a/src/solver_api/resources/repos/sessions/status.py b/src/solverai/resources/repos/sessions/status.py
similarity index 91%
rename from src/solver_api/resources/repos/sessions/status.py
rename to src/solverai/resources/repos/sessions/status.py
index 0b3a7ad..42bcada 100644
--- a/src/solver_api/resources/repos/sessions/status.py
+++ b/src/solverai/resources/repos/sessions/status.py
@@ -33,7 +33,7 @@ def with_raw_response(self) -> StatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return StatusResourceWithRawResponse(self)
@@ -42,7 +42,7 @@ def with_streaming_response(self) -> StatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return StatusResourceWithStreamingResponse(self)
@@ -80,7 +80,7 @@ def stream(
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/status/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/status/stream",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -101,7 +101,7 @@ def with_raw_response(self) -> AsyncStatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncStatusResourceWithRawResponse(self)
@@ -110,7 +110,7 @@ def with_streaming_response(self) -> AsyncStatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncStatusResourceWithStreamingResponse(self)
@@ -148,7 +148,7 @@ async def stream(
raise ValueError(f"Expected a non-empty value for `repo` but received {repo!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/status/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/status/stream",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
diff --git a/src/solver_api/resources/repos/sessions/turns/__init__.py b/src/solverai/resources/repos/sessions/turns/__init__.py
similarity index 100%
rename from src/solver_api/resources/repos/sessions/turns/__init__.py
rename to src/solverai/resources/repos/sessions/turns/__init__.py
diff --git a/src/solver_api/resources/repos/sessions/turns/events.py b/src/solverai/resources/repos/sessions/turns/events.py
similarity index 90%
rename from src/solver_api/resources/repos/sessions/turns/events.py
rename to src/solverai/resources/repos/sessions/turns/events.py
index 052bde5..d95c848 100644
--- a/src/solver_api/resources/repos/sessions/turns/events.py
+++ b/src/solverai/resources/repos/sessions/turns/events.py
@@ -29,7 +29,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -38,7 +38,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -79,7 +79,7 @@ def stream(
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/events/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/events/stream",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -105,7 +105,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
@@ -146,7 +146,7 @@ async def stream(
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/events/stream",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/events/stream",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
diff --git a/src/solver_api/resources/repos/sessions/turns/turns.py b/src/solverai/resources/repos/sessions/turns/turns.py
similarity index 90%
rename from src/solver_api/resources/repos/sessions/turns/turns.py
rename to src/solverai/resources/repos/sessions/turns/turns.py
index 442d063..f0d5ec3 100644
--- a/src/solver_api/resources/repos/sessions/turns/turns.py
+++ b/src/solverai/resources/repos/sessions/turns/turns.py
@@ -26,7 +26,7 @@
from .....types.repos.turn import Turn
from .....types.vcs_provider import VcsProvider
from .....types.repos.sessions.turn_list_response import TurnListResponse
-from .....types.repos.sessions.turn_patch_response import TurnPatchResponse
+from .....types.repos.sessions.turn_get_patch_response import TurnGetPatchResponse
__all__ = ["TurnsResource", "AsyncTurnsResource"]
@@ -42,7 +42,7 @@ def with_raw_response(self) -> TurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return TurnsResourceWithRawResponse(self)
@@ -51,7 +51,7 @@ def with_streaming_response(self) -> TurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return TurnsResourceWithStreamingResponse(self)
@@ -88,7 +88,7 @@ def list(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -131,7 +131,7 @@ def cancel(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return self._post(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/cancel",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/cancel",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -174,14 +174,14 @@ def get(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=Turn,
)
- def patch(
+ def get_patch(
self,
turn_id: str,
*,
@@ -195,7 +195,7 @@ def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> TurnPatchResponse:
+ ) -> TurnGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -217,11 +217,11 @@ def patch(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/patch",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=TurnPatchResponse,
+ cast_to=TurnGetPatchResponse,
)
@@ -236,7 +236,7 @@ def with_raw_response(self) -> AsyncTurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
"""
return AsyncTurnsResourceWithRawResponse(self)
@@ -245,7 +245,7 @@ def with_streaming_response(self) -> AsyncTurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
+ For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
"""
return AsyncTurnsResourceWithStreamingResponse(self)
@@ -282,7 +282,7 @@ async def list(
if not session_id:
raise ValueError(f"Expected a non-empty value for `session_id` but received {session_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -325,7 +325,7 @@ async def cancel(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return await self._post(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/cancel",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/cancel",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
@@ -368,14 +368,14 @@ async def get(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
cast_to=Turn,
)
- async def patch(
+ async def get_patch(
self,
turn_id: str,
*,
@@ -389,7 +389,7 @@ async def patch(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> TurnPatchResponse:
+ ) -> TurnGetPatchResponse:
"""
Args:
extra_headers: Send extra headers
@@ -411,11 +411,11 @@ async def patch(
if not turn_id:
raise ValueError(f"Expected a non-empty value for `turn_id` but received {turn_id!r}")
return await self._get(
- f"/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/patch",
+ f"/alpha/repos/{provider}/{org}/{repo}/sessions/{session_id}/turns/{turn_id}/patch",
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=TurnPatchResponse,
+ cast_to=TurnGetPatchResponse,
)
@@ -432,8 +432,8 @@ def __init__(self, turns: TurnsResource) -> None:
self.get = to_raw_response_wrapper(
turns.get,
)
- self.patch = to_raw_response_wrapper(
- turns.patch,
+ self.get_patch = to_raw_response_wrapper(
+ turns.get_patch,
)
@cached_property
@@ -454,8 +454,8 @@ def __init__(self, turns: AsyncTurnsResource) -> None:
self.get = async_to_raw_response_wrapper(
turns.get,
)
- self.patch = async_to_raw_response_wrapper(
- turns.patch,
+ self.get_patch = async_to_raw_response_wrapper(
+ turns.get_patch,
)
@cached_property
@@ -476,8 +476,8 @@ def __init__(self, turns: TurnsResource) -> None:
self.get = to_streamed_response_wrapper(
turns.get,
)
- self.patch = to_streamed_response_wrapper(
- turns.patch,
+ self.get_patch = to_streamed_response_wrapper(
+ turns.get_patch,
)
@cached_property
@@ -498,8 +498,8 @@ def __init__(self, turns: AsyncTurnsResource) -> None:
self.get = async_to_streamed_response_wrapper(
turns.get,
)
- self.patch = async_to_streamed_response_wrapper(
- turns.patch,
+ self.get_patch = async_to_streamed_response_wrapper(
+ turns.get_patch,
)
@cached_property
diff --git a/src/solver_api/types/__init__.py b/src/solverai/types/__init__.py
similarity index 68%
rename from src/solver_api/types/__init__.py
rename to src/solverai/types/__init__.py
index 2fd2670..6e6dfc5 100644
--- a/src/solver_api/types/__init__.py
+++ b/src/solverai/types/__init__.py
@@ -3,4 +3,4 @@
from __future__ import annotations
from .vcs_provider import VcsProvider as VcsProvider
-from .repo_list_response import RepoListResponse as RepoListResponse
+from .repo_retrieve_response import RepoRetrieveResponse as RepoRetrieveResponse
diff --git a/src/solver_api/types/repo_list_response.py b/src/solverai/types/repo_retrieve_response.py
similarity index 55%
rename from src/solver_api/types/repo_list_response.py
rename to src/solverai/types/repo_retrieve_response.py
index 81004dc..b22b2e7 100644
--- a/src/solver_api/types/repo_list_response.py
+++ b/src/solverai/types/repo_retrieve_response.py
@@ -5,13 +5,13 @@
from .._models import BaseModel
-__all__ = ["RepoListResponse", "RepoListResponseItem"]
+__all__ = ["RepoRetrieveResponse", "RepoRetrieveResponseItem"]
-class RepoListResponseItem(BaseModel):
+class RepoRetrieveResponseItem(BaseModel):
org: str
repo: str
-RepoListResponse: TypeAlias = List[RepoListResponseItem]
+RepoRetrieveResponse: TypeAlias = List[RepoRetrieveResponseItem]
diff --git a/src/solver_api/types/repos/__init__.py b/src/solverai/types/repos/__init__.py
similarity index 78%
rename from src/solver_api/types/repos/__init__.py
rename to src/solverai/types/repos/__init__.py
index 98c2083..57e8177 100644
--- a/src/solver_api/types/repos/__init__.py
+++ b/src/solverai/types/repos/__init__.py
@@ -7,8 +7,8 @@
from .session_status import SessionStatus as SessionStatus
from .session_visibility import SessionVisibility as SessionVisibility
from .session_list_params import SessionListParams as SessionListParams
-from .session_patch_params import SessionPatchParams as SessionPatchParams
from .session_solve_params import SessionSolveParams as SessionSolveParams
from .session_create_params import SessionCreateParams as SessionCreateParams
from .session_list_response import SessionListResponse as SessionListResponse
-from .session_patch_response import SessionPatchResponse as SessionPatchResponse
+from .session_get_patch_params import SessionGetPatchParams as SessionGetPatchParams
+from .session_get_patch_response import SessionGetPatchResponse as SessionGetPatchResponse
diff --git a/src/solver_api/types/repos/session.py b/src/solverai/types/repos/session.py
similarity index 100%
rename from src/solver_api/types/repos/session.py
rename to src/solverai/types/repos/session.py
diff --git a/src/solver_api/types/repos/session_create_params.py b/src/solverai/types/repos/session_create_params.py
similarity index 100%
rename from src/solver_api/types/repos/session_create_params.py
rename to src/solverai/types/repos/session_create_params.py
diff --git a/src/solver_api/types/repos/session_patch_params.py b/src/solverai/types/repos/session_get_patch_params.py
similarity index 84%
rename from src/solver_api/types/repos/session_patch_params.py
rename to src/solverai/types/repos/session_get_patch_params.py
index 88bfa6a..a21de3c 100644
--- a/src/solver_api/types/repos/session_patch_params.py
+++ b/src/solverai/types/repos/session_get_patch_params.py
@@ -7,10 +7,10 @@
from ..._utils import PropertyInfo
from ..vcs_provider import VcsProvider
-__all__ = ["SessionPatchParams"]
+__all__ = ["SessionGetPatchParams"]
-class SessionPatchParams(TypedDict, total=False):
+class SessionGetPatchParams(TypedDict, total=False):
provider: Required[VcsProvider]
org: Required[str]
diff --git a/src/solver_api/types/repos/session_patch_response.py b/src/solverai/types/repos/session_get_patch_response.py
similarity index 76%
rename from src/solver_api/types/repos/session_patch_response.py
rename to src/solverai/types/repos/session_get_patch_response.py
index baa78be..6d50e5b 100644
--- a/src/solver_api/types/repos/session_patch_response.py
+++ b/src/solverai/types/repos/session_get_patch_response.py
@@ -6,8 +6,8 @@
from ..._models import BaseModel
-__all__ = ["SessionPatchResponse"]
+__all__ = ["SessionGetPatchResponse"]
-class SessionPatchResponse(BaseModel):
+class SessionGetPatchResponse(BaseModel):
patch_set: Optional[str] = FieldInfo(alias="patchSet", default=None)
diff --git a/src/solver_api/types/repos/session_list_params.py b/src/solverai/types/repos/session_list_params.py
similarity index 100%
rename from src/solver_api/types/repos/session_list_params.py
rename to src/solverai/types/repos/session_list_params.py
diff --git a/src/solver_api/types/repos/session_list_response.py b/src/solverai/types/repos/session_list_response.py
similarity index 100%
rename from src/solver_api/types/repos/session_list_response.py
rename to src/solverai/types/repos/session_list_response.py
diff --git a/src/solver_api/types/repos/session_solve_params.py b/src/solverai/types/repos/session_solve_params.py
similarity index 100%
rename from src/solver_api/types/repos/session_solve_params.py
rename to src/solverai/types/repos/session_solve_params.py
diff --git a/src/solver_api/types/repos/session_status.py b/src/solverai/types/repos/session_status.py
similarity index 100%
rename from src/solver_api/types/repos/session_status.py
rename to src/solverai/types/repos/session_status.py
diff --git a/src/solver_api/types/repos/session_visibility.py b/src/solverai/types/repos/session_visibility.py
similarity index 100%
rename from src/solver_api/types/repos/session_visibility.py
rename to src/solverai/types/repos/session_visibility.py
diff --git a/src/solver_api/types/repos/sessions/__init__.py b/src/solverai/types/repos/sessions/__init__.py
similarity index 61%
rename from src/solver_api/types/repos/sessions/__init__.py
rename to src/solverai/types/repos/sessions/__init__.py
index e104e82..5836f31 100644
--- a/src/solver_api/types/repos/sessions/__init__.py
+++ b/src/solverai/types/repos/sessions/__init__.py
@@ -3,9 +3,9 @@
from __future__ import annotations
from .trace_event import TraceEvent as TraceEvent
-from .event_patch_params import EventPatchParams as EventPatchParams
from .turn_list_response import TurnListResponse as TurnListResponse
-from .turn_patch_response import TurnPatchResponse as TurnPatchResponse
-from .event_patch_response import EventPatchResponse as EventPatchResponse
from .status_stream_params import StatusStreamParams as StatusStreamParams
+from .event_get_patch_params import EventGetPatchParams as EventGetPatchParams
from .status_stream_response import StatusStreamResponse as StatusStreamResponse
+from .turn_get_patch_response import TurnGetPatchResponse as TurnGetPatchResponse
+from .event_get_patch_response import EventGetPatchResponse as EventGetPatchResponse
diff --git a/src/solver_api/types/repos/sessions/event_patch_params.py b/src/solverai/types/repos/sessions/event_get_patch_params.py
similarity index 87%
rename from src/solver_api/types/repos/sessions/event_patch_params.py
rename to src/solverai/types/repos/sessions/event_get_patch_params.py
index 3eca06e..b877ee4 100644
--- a/src/solver_api/types/repos/sessions/event_patch_params.py
+++ b/src/solverai/types/repos/sessions/event_get_patch_params.py
@@ -7,10 +7,10 @@
from ...._utils import PropertyInfo
from ...vcs_provider import VcsProvider
-__all__ = ["EventPatchParams"]
+__all__ = ["EventGetPatchParams"]
-class EventPatchParams(TypedDict, total=False):
+class EventGetPatchParams(TypedDict, total=False):
provider: Required[VcsProvider]
org: Required[str]
diff --git a/src/solver_api/types/repos/sessions/turn_patch_response.py b/src/solverai/types/repos/sessions/event_get_patch_response.py
similarity index 77%
rename from src/solver_api/types/repos/sessions/turn_patch_response.py
rename to src/solverai/types/repos/sessions/event_get_patch_response.py
index c0742b7..f63fcbb 100644
--- a/src/solver_api/types/repos/sessions/turn_patch_response.py
+++ b/src/solverai/types/repos/sessions/event_get_patch_response.py
@@ -6,8 +6,8 @@
from ...._models import BaseModel
-__all__ = ["TurnPatchResponse"]
+__all__ = ["EventGetPatchResponse"]
-class TurnPatchResponse(BaseModel):
+class EventGetPatchResponse(BaseModel):
patch_set: Optional[str] = FieldInfo(alias="patchSet", default=None)
diff --git a/src/solver_api/types/repos/sessions/status_stream_params.py b/src/solverai/types/repos/sessions/status_stream_params.py
similarity index 100%
rename from src/solver_api/types/repos/sessions/status_stream_params.py
rename to src/solverai/types/repos/sessions/status_stream_params.py
diff --git a/src/solver_api/types/repos/sessions/status_stream_response.py b/src/solverai/types/repos/sessions/status_stream_response.py
similarity index 86%
rename from src/solver_api/types/repos/sessions/status_stream_response.py
rename to src/solverai/types/repos/sessions/status_stream_response.py
index 3d89a5a..0ac6815 100644
--- a/src/solver_api/types/repos/sessions/status_stream_response.py
+++ b/src/solverai/types/repos/sessions/status_stream_response.py
@@ -12,7 +12,6 @@
class ChangeData(BaseModel):
new_visibility: Optional[SessionVisibility] = None
- """The new session visibility."""
class StatusStreamResponse(BaseModel):
@@ -28,4 +27,3 @@ class StatusStreamResponse(BaseModel):
"""Additional data about the change. Only present for `visibility_changed` events."""
new_state: Optional[SessionStatus] = None
- """The new status of the session. Only present for `state_transition` events."""
diff --git a/src/solver_api/types/repos/sessions/trace_event.py b/src/solverai/types/repos/sessions/trace_event.py
similarity index 100%
rename from src/solver_api/types/repos/sessions/trace_event.py
rename to src/solverai/types/repos/sessions/trace_event.py
diff --git a/src/solver_api/types/repos/sessions/event_patch_response.py b/src/solverai/types/repos/sessions/turn_get_patch_response.py
similarity index 78%
rename from src/solver_api/types/repos/sessions/event_patch_response.py
rename to src/solverai/types/repos/sessions/turn_get_patch_response.py
index 3c3eb8a..5c13e95 100644
--- a/src/solver_api/types/repos/sessions/event_patch_response.py
+++ b/src/solverai/types/repos/sessions/turn_get_patch_response.py
@@ -6,8 +6,8 @@
from ...._models import BaseModel
-__all__ = ["EventPatchResponse"]
+__all__ = ["TurnGetPatchResponse"]
-class EventPatchResponse(BaseModel):
+class TurnGetPatchResponse(BaseModel):
patch_set: Optional[str] = FieldInfo(alias="patchSet", default=None)
diff --git a/src/solver_api/types/repos/sessions/turn_list_response.py b/src/solverai/types/repos/sessions/turn_list_response.py
similarity index 100%
rename from src/solver_api/types/repos/sessions/turn_list_response.py
rename to src/solverai/types/repos/sessions/turn_list_response.py
diff --git a/src/solver_api/types/repos/sessions/turns/__init__.py b/src/solverai/types/repos/sessions/turns/__init__.py
similarity index 100%
rename from src/solver_api/types/repos/sessions/turns/__init__.py
rename to src/solverai/types/repos/sessions/turns/__init__.py
diff --git a/src/solver_api/types/repos/turn.py b/src/solverai/types/repos/turn.py
similarity index 100%
rename from src/solver_api/types/repos/turn.py
rename to src/solverai/types/repos/turn.py
diff --git a/src/solver_api/types/vcs_provider.py b/src/solverai/types/vcs_provider.py
similarity index 100%
rename from src/solver_api/types/vcs_provider.py
rename to src/solverai/types/vcs_provider.py
diff --git a/tests/api_resources/repos/sessions/test_events.py b/tests/api_resources/repos/sessions/test_events.py
index 027a7e4..22888f5 100644
--- a/tests/api_resources/repos/sessions/test_events.py
+++ b/tests/api_resources/repos/sessions/test_events.py
@@ -7,9 +7,9 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
from tests.utils import assert_matches_type
-from solver_api.types.repos.sessions import TraceEvent, EventPatchResponse
+from solverai.types.repos.sessions import TraceEvent, EventGetPatchResponse
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -104,20 +104,20 @@ def test_path_params_get(self, client: Solver) -> None:
@pytest.mark.skip()
@parametrize
- def test_method_patch(self, client: Solver) -> None:
- event = client.repos.sessions.events.patch(
+ def test_method_get_patch(self, client: Solver) -> None:
+ event = client.repos.sessions.events.get_patch(
event_id="eventId",
provider="github",
org="org",
repo="repo",
session_id="sessionId",
)
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_method_patch_with_all_params(self, client: Solver) -> None:
- event = client.repos.sessions.events.patch(
+ def test_method_get_patch_with_all_params(self, client: Solver) -> None:
+ event = client.repos.sessions.events.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -126,12 +126,12 @@ def test_method_patch_with_all_params(self, client: Solver) -> None:
context_lines=0,
interhunk_lines=0,
)
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_raw_response_patch(self, client: Solver) -> None:
- response = client.repos.sessions.events.with_raw_response.patch(
+ def test_raw_response_get_patch(self, client: Solver) -> None:
+ response = client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -142,12 +142,12 @@ def test_raw_response_patch(self, client: Solver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
event = response.parse()
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_streaming_response_patch(self, client: Solver) -> None:
- with client.repos.sessions.events.with_streaming_response.patch(
+ def test_streaming_response_get_patch(self, client: Solver) -> None:
+ with client.repos.sessions.events.with_streaming_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -158,15 +158,15 @@ def test_streaming_response_patch(self, client: Solver) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
event = response.parse()
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- def test_path_params_patch(self, client: Solver) -> None:
+ def test_path_params_get_patch(self, client: Solver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- client.repos.sessions.events.with_raw_response.patch(
+ client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="",
@@ -175,7 +175,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- client.repos.sessions.events.with_raw_response.patch(
+ client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -184,7 +184,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- client.repos.sessions.events.with_raw_response.patch(
+ client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -193,7 +193,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `event_id` but received ''"):
- client.repos.sessions.events.with_raw_response.patch(
+ client.repos.sessions.events.with_raw_response.get_patch(
event_id="",
provider="github",
org="org",
@@ -369,20 +369,20 @@ async def test_path_params_get(self, async_client: AsyncSolver) -> None:
@pytest.mark.skip()
@parametrize
- async def test_method_patch(self, async_client: AsyncSolver) -> None:
- event = await async_client.repos.sessions.events.patch(
+ async def test_method_get_patch(self, async_client: AsyncSolver) -> None:
+ event = await async_client.repos.sessions.events.get_patch(
event_id="eventId",
provider="github",
org="org",
repo="repo",
session_id="sessionId",
)
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_method_patch_with_all_params(self, async_client: AsyncSolver) -> None:
- event = await async_client.repos.sessions.events.patch(
+ async def test_method_get_patch_with_all_params(self, async_client: AsyncSolver) -> None:
+ event = await async_client.repos.sessions.events.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -391,12 +391,12 @@ async def test_method_patch_with_all_params(self, async_client: AsyncSolver) ->
context_lines=0,
interhunk_lines=0,
)
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
- response = await async_client.repos.sessions.events.with_raw_response.patch(
+ async def test_raw_response_get_patch(self, async_client: AsyncSolver) -> None:
+ response = await async_client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -407,12 +407,12 @@ async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
event = await response.parse()
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None:
- async with async_client.repos.sessions.events.with_streaming_response.patch(
+ async def test_streaming_response_get_patch(self, async_client: AsyncSolver) -> None:
+ async with async_client.repos.sessions.events.with_streaming_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -423,15 +423,15 @@ async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
event = await response.parse()
- assert_matches_type(EventPatchResponse, event, path=["response"])
+ assert_matches_type(EventGetPatchResponse, event, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
+ async def test_path_params_get_patch(self, async_client: AsyncSolver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- await async_client.repos.sessions.events.with_raw_response.patch(
+ await async_client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="",
@@ -440,7 +440,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- await async_client.repos.sessions.events.with_raw_response.patch(
+ await async_client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -449,7 +449,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- await async_client.repos.sessions.events.with_raw_response.patch(
+ await async_client.repos.sessions.events.with_raw_response.get_patch(
event_id="eventId",
provider="github",
org="org",
@@ -458,7 +458,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `event_id` but received ''"):
- await async_client.repos.sessions.events.with_raw_response.patch(
+ await async_client.repos.sessions.events.with_raw_response.get_patch(
event_id="",
provider="github",
org="org",
diff --git a/tests/api_resources/repos/sessions/test_status.py b/tests/api_resources/repos/sessions/test_status.py
index 19ab3f6..5c56790 100644
--- a/tests/api_resources/repos/sessions/test_status.py
+++ b/tests/api_resources/repos/sessions/test_status.py
@@ -7,7 +7,7 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
diff --git a/tests/api_resources/repos/sessions/test_turns.py b/tests/api_resources/repos/sessions/test_turns.py
index aa6624e..90eb827 100644
--- a/tests/api_resources/repos/sessions/test_turns.py
+++ b/tests/api_resources/repos/sessions/test_turns.py
@@ -7,10 +7,10 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
from tests.utils import assert_matches_type
-from solver_api.types.repos import Turn
-from solver_api.types.repos.sessions import TurnListResponse, TurnPatchResponse
+from solverai.types.repos import Turn
+from solverai.types.repos.sessions import TurnListResponse, TurnGetPatchResponse
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -260,20 +260,20 @@ def test_path_params_get(self, client: Solver) -> None:
@pytest.mark.skip()
@parametrize
- def test_method_patch(self, client: Solver) -> None:
- turn = client.repos.sessions.turns.patch(
+ def test_method_get_patch(self, client: Solver) -> None:
+ turn = client.repos.sessions.turns.get_patch(
turn_id="turnId",
provider="github",
org="org",
repo="repo",
session_id="sessionId",
)
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_raw_response_patch(self, client: Solver) -> None:
- response = client.repos.sessions.turns.with_raw_response.patch(
+ def test_raw_response_get_patch(self, client: Solver) -> None:
+ response = client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -284,12 +284,12 @@ def test_raw_response_patch(self, client: Solver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
turn = response.parse()
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_streaming_response_patch(self, client: Solver) -> None:
- with client.repos.sessions.turns.with_streaming_response.patch(
+ def test_streaming_response_get_patch(self, client: Solver) -> None:
+ with client.repos.sessions.turns.with_streaming_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -300,15 +300,15 @@ def test_streaming_response_patch(self, client: Solver) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
turn = response.parse()
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- def test_path_params_patch(self, client: Solver) -> None:
+ def test_path_params_get_patch(self, client: Solver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- client.repos.sessions.turns.with_raw_response.patch(
+ client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="",
@@ -317,7 +317,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- client.repos.sessions.turns.with_raw_response.patch(
+ client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -326,7 +326,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- client.repos.sessions.turns.with_raw_response.patch(
+ client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -335,7 +335,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `turn_id` but received ''"):
- client.repos.sessions.turns.with_raw_response.patch(
+ client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="",
provider="github",
org="org",
@@ -589,20 +589,20 @@ async def test_path_params_get(self, async_client: AsyncSolver) -> None:
@pytest.mark.skip()
@parametrize
- async def test_method_patch(self, async_client: AsyncSolver) -> None:
- turn = await async_client.repos.sessions.turns.patch(
+ async def test_method_get_patch(self, async_client: AsyncSolver) -> None:
+ turn = await async_client.repos.sessions.turns.get_patch(
turn_id="turnId",
provider="github",
org="org",
repo="repo",
session_id="sessionId",
)
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
- response = await async_client.repos.sessions.turns.with_raw_response.patch(
+ async def test_raw_response_get_patch(self, async_client: AsyncSolver) -> None:
+ response = await async_client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -613,12 +613,12 @@ async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
turn = await response.parse()
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None:
- async with async_client.repos.sessions.turns.with_streaming_response.patch(
+ async def test_streaming_response_get_patch(self, async_client: AsyncSolver) -> None:
+ async with async_client.repos.sessions.turns.with_streaming_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -629,15 +629,15 @@ async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
turn = await response.parse()
- assert_matches_type(TurnPatchResponse, turn, path=["response"])
+ assert_matches_type(TurnGetPatchResponse, turn, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
+ async def test_path_params_get_patch(self, async_client: AsyncSolver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- await async_client.repos.sessions.turns.with_raw_response.patch(
+ await async_client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="",
@@ -646,7 +646,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- await async_client.repos.sessions.turns.with_raw_response.patch(
+ await async_client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -655,7 +655,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- await async_client.repos.sessions.turns.with_raw_response.patch(
+ await async_client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="turnId",
provider="github",
org="org",
@@ -664,7 +664,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `turn_id` but received ''"):
- await async_client.repos.sessions.turns.with_raw_response.patch(
+ await async_client.repos.sessions.turns.with_raw_response.get_patch(
turn_id="",
provider="github",
org="org",
diff --git a/tests/api_resources/repos/sessions/turns/test_events.py b/tests/api_resources/repos/sessions/turns/test_events.py
index 3b48e2d..882b795 100644
--- a/tests/api_resources/repos/sessions/turns/test_events.py
+++ b/tests/api_resources/repos/sessions/turns/test_events.py
@@ -7,7 +7,7 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
diff --git a/tests/api_resources/repos/test_sessions.py b/tests/api_resources/repos/test_sessions.py
index e4fe8f0..214488a 100644
--- a/tests/api_resources/repos/test_sessions.py
+++ b/tests/api_resources/repos/test_sessions.py
@@ -7,13 +7,13 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
from tests.utils import assert_matches_type
-from solver_api.types.repos import (
+from solverai.types.repos import (
Turn,
Session,
SessionListResponse,
- SessionPatchResponse,
+ SessionGetPatchResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -244,19 +244,19 @@ def test_path_params_get(self, client: Solver) -> None:
@pytest.mark.skip()
@parametrize
- def test_method_patch(self, client: Solver) -> None:
- session = client.repos.sessions.patch(
+ def test_method_get_patch(self, client: Solver) -> None:
+ session = client.repos.sessions.get_patch(
session_id="sessionId",
provider="github",
org="org",
repo="repo",
)
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_method_patch_with_all_params(self, client: Solver) -> None:
- session = client.repos.sessions.patch(
+ def test_method_get_patch_with_all_params(self, client: Solver) -> None:
+ session = client.repos.sessions.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -264,12 +264,12 @@ def test_method_patch_with_all_params(self, client: Solver) -> None:
context_lines=0,
interhunk_lines=0,
)
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_raw_response_patch(self, client: Solver) -> None:
- response = client.repos.sessions.with_raw_response.patch(
+ def test_raw_response_get_patch(self, client: Solver) -> None:
+ response = client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -279,12 +279,12 @@ def test_raw_response_patch(self, client: Solver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = response.parse()
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_streaming_response_patch(self, client: Solver) -> None:
- with client.repos.sessions.with_streaming_response.patch(
+ def test_streaming_response_get_patch(self, client: Solver) -> None:
+ with client.repos.sessions.with_streaming_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -294,15 +294,15 @@ def test_streaming_response_patch(self, client: Solver) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = response.parse()
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- def test_path_params_patch(self, client: Solver) -> None:
+ def test_path_params_get_patch(self, client: Solver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- client.repos.sessions.with_raw_response.patch(
+ client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="",
@@ -310,7 +310,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- client.repos.sessions.with_raw_response.patch(
+ client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -318,7 +318,7 @@ def test_path_params_patch(self, client: Solver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- client.repos.sessions.with_raw_response.patch(
+ client.repos.sessions.with_raw_response.get_patch(
session_id="",
provider="github",
org="org",
@@ -647,19 +647,19 @@ async def test_path_params_get(self, async_client: AsyncSolver) -> None:
@pytest.mark.skip()
@parametrize
- async def test_method_patch(self, async_client: AsyncSolver) -> None:
- session = await async_client.repos.sessions.patch(
+ async def test_method_get_patch(self, async_client: AsyncSolver) -> None:
+ session = await async_client.repos.sessions.get_patch(
session_id="sessionId",
provider="github",
org="org",
repo="repo",
)
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_method_patch_with_all_params(self, async_client: AsyncSolver) -> None:
- session = await async_client.repos.sessions.patch(
+ async def test_method_get_patch_with_all_params(self, async_client: AsyncSolver) -> None:
+ session = await async_client.repos.sessions.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -667,12 +667,12 @@ async def test_method_patch_with_all_params(self, async_client: AsyncSolver) ->
context_lines=0,
interhunk_lines=0,
)
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
- response = await async_client.repos.sessions.with_raw_response.patch(
+ async def test_raw_response_get_patch(self, async_client: AsyncSolver) -> None:
+ response = await async_client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -682,12 +682,12 @@ async def test_raw_response_patch(self, async_client: AsyncSolver) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = await response.parse()
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None:
- async with async_client.repos.sessions.with_streaming_response.patch(
+ async def test_streaming_response_get_patch(self, async_client: AsyncSolver) -> None:
+ async with async_client.repos.sessions.with_streaming_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -697,15 +697,15 @@ async def test_streaming_response_patch(self, async_client: AsyncSolver) -> None
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
session = await response.parse()
- assert_matches_type(SessionPatchResponse, session, path=["response"])
+ assert_matches_type(SessionGetPatchResponse, session, path=["response"])
assert cast(Any, response.is_closed) is True
@pytest.mark.skip()
@parametrize
- async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
+ async def test_path_params_get_patch(self, async_client: AsyncSolver) -> None:
with pytest.raises(ValueError, match=r"Expected a non-empty value for `org` but received ''"):
- await async_client.repos.sessions.with_raw_response.patch(
+ await async_client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="",
@@ -713,7 +713,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `repo` but received ''"):
- await async_client.repos.sessions.with_raw_response.patch(
+ await async_client.repos.sessions.with_raw_response.get_patch(
session_id="sessionId",
provider="github",
org="org",
@@ -721,7 +721,7 @@ async def test_path_params_patch(self, async_client: AsyncSolver) -> None:
)
with pytest.raises(ValueError, match=r"Expected a non-empty value for `session_id` but received ''"):
- await async_client.repos.sessions.with_raw_response.patch(
+ await async_client.repos.sessions.with_raw_response.get_patch(
session_id="",
provider="github",
org="org",
diff --git a/tests/api_resources/test_repos.py b/tests/api_resources/test_repos.py
index 80a4b4e..59e0cdd 100644
--- a/tests/api_resources/test_repos.py
+++ b/tests/api_resources/test_repos.py
@@ -7,9 +7,9 @@
import pytest
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
from tests.utils import assert_matches_type
-from solver_api.types import RepoListResponse
+from solverai.types import RepoRetrieveResponse
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -19,35 +19,35 @@ class TestRepos:
@pytest.mark.skip()
@parametrize
- def test_method_list(self, client: Solver) -> None:
- repo = client.repos.list(
+ def test_method_retrieve(self, client: Solver) -> None:
+ repo = client.repos.retrieve(
"github",
)
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_raw_response_list(self, client: Solver) -> None:
- response = client.repos.with_raw_response.list(
+ def test_raw_response_retrieve(self, client: Solver) -> None:
+ response = client.repos.with_raw_response.retrieve(
"github",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = response.parse()
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_streaming_response_list(self, client: Solver) -> None:
- with client.repos.with_streaming_response.list(
+ def test_streaming_response_retrieve(self, client: Solver) -> None:
+ with client.repos.with_streaming_response.retrieve(
"github",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = response.parse()
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -57,34 +57,34 @@ class TestAsyncRepos:
@pytest.mark.skip()
@parametrize
- async def test_method_list(self, async_client: AsyncSolver) -> None:
- repo = await async_client.repos.list(
+ async def test_method_retrieve(self, async_client: AsyncSolver) -> None:
+ repo = await async_client.repos.retrieve(
"github",
)
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_raw_response_list(self, async_client: AsyncSolver) -> None:
- response = await async_client.repos.with_raw_response.list(
+ async def test_raw_response_retrieve(self, async_client: AsyncSolver) -> None:
+ response = await async_client.repos.with_raw_response.retrieve(
"github",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = await response.parse()
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_streaming_response_list(self, async_client: AsyncSolver) -> None:
- async with async_client.repos.with_streaming_response.list(
+ async def test_streaming_response_retrieve(self, async_client: AsyncSolver) -> None:
+ async with async_client.repos.with_streaming_response.retrieve(
"github",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = await response.parse()
- assert_matches_type(RepoListResponse, repo, path=["response"])
+ assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
assert cast(Any, response.is_closed) is True
diff --git a/tests/conftest.py b/tests/conftest.py
index a3a238c..3f140f5 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -7,14 +7,14 @@
import pytest
from pytest_asyncio import is_async_test
-from solver_api import Solver, AsyncSolver
+from solverai import Solver, AsyncSolver
if TYPE_CHECKING:
from _pytest.fixtures import FixtureRequest # pyright: ignore[reportPrivateImportUsage]
pytest.register_assert_rewrite("tests.utils")
-logging.getLogger("solver_api").setLevel(logging.DEBUG)
+logging.getLogger("solverai").setLevel(logging.DEBUG)
# automatically add `pytest.mark.asyncio()` to all of our async tests
diff --git a/tests/test_client.py b/tests/test_client.py
index cd72101..82c33c4 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -21,12 +21,12 @@
from respx import MockRouter
from pydantic import ValidationError
-from solver_api import Solver, AsyncSolver, APIResponseValidationError
-from solver_api._types import Omit
-from solver_api._models import BaseModel, FinalRequestOptions
-from solver_api._constants import RAW_RESPONSE_HEADER
-from solver_api._exceptions import SolverError, APIStatusError, APITimeoutError, APIResponseValidationError
-from solver_api._base_client import (
+from solverai import Solver, AsyncSolver, APIResponseValidationError
+from solverai._types import Omit
+from solverai._models import BaseModel, FinalRequestOptions
+from solverai._constants import RAW_RESPONSE_HEADER
+from solverai._exceptions import SolverError, APIStatusError, APITimeoutError, APIResponseValidationError
+from solverai._base_client import (
DEFAULT_TIMEOUT,
HTTPX_DEFAULT_TIMEOUT,
BaseClient,
@@ -230,10 +230,10 @@ def add_leak(leaks: list[tracemalloc.StatisticDiff], diff: tracemalloc.Statistic
# to_raw_response_wrapper leaks through the @functools.wraps() decorator.
#
# removing the decorator fixes the leak for reasons we don't understand.
- "solver_api/_legacy_response.py",
- "solver_api/_response.py",
+ "solverai/_legacy_response.py",
+ "solverai/_response.py",
# pydantic.BaseModel.model_dump || pydantic.BaseModel.dict leak memory for some reason.
- "solver_api/_compat.py",
+ "solverai/_compat.py",
# Standard library leaks we don't care about.
"/logging/__init__.py",
]
@@ -338,7 +338,7 @@ def test_validate_headers(self) -> None:
assert request.headers.get("Authorization") == api_key
with pytest.raises(SolverError):
- with update_env(**{"SOLVER_API_KEY": Omit()}):
+ with update_env(**{"SOLVER_API_API_KEY": Omit()}):
client2 = Solver(base_url=base_url, api_key=None, _strict_response_validation=True)
_ = client2
@@ -707,32 +707,32 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str
calculated = client._calculate_retry_timeout(remaining_retries, options, headers)
assert calculated == pytest.approx(timeout, 0.5 * 0.875) # pyright: ignore[reportUnknownMemberType]
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
+ respx_mock.get("/alpha/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
with pytest.raises(APITimeoutError):
self.client.get(
- "/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
)
assert _get_open_connections(self.client) == 0
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/repos/github").mock(return_value=httpx.Response(500))
+ respx_mock.get("/alpha/repos/github").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
self.client.get(
- "/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
)
assert _get_open_connections(self.client) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
@pytest.mark.parametrize("failure_mode", ["status", "exception"])
def test_retries_taken(
@@ -755,15 +755,15 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.list("github")
+ response = client.repos.with_raw_response.retrieve("github")
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_omit_retry_count_header(
self, client: Solver, failures_before_success: int, respx_mock: MockRouter
@@ -779,14 +779,14 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.list("github", extra_headers={"x-stainless-retry-count": Omit()})
+ response = client.repos.with_raw_response.retrieve("github", extra_headers={"x-stainless-retry-count": Omit()})
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_overwrite_retry_count_header(
self, client: Solver, failures_before_success: int, respx_mock: MockRouter
@@ -802,9 +802,9 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.list("github", extra_headers={"x-stainless-retry-count": "42"})
+ response = client.repos.with_raw_response.retrieve("github", extra_headers={"x-stainless-retry-count": "42"})
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
@@ -984,10 +984,10 @@ def add_leak(leaks: list[tracemalloc.StatisticDiff], diff: tracemalloc.Statistic
# to_raw_response_wrapper leaks through the @functools.wraps() decorator.
#
# removing the decorator fixes the leak for reasons we don't understand.
- "solver_api/_legacy_response.py",
- "solver_api/_response.py",
+ "solverai/_legacy_response.py",
+ "solverai/_response.py",
# pydantic.BaseModel.model_dump || pydantic.BaseModel.dict leak memory for some reason.
- "solver_api/_compat.py",
+ "solverai/_compat.py",
# Standard library leaks we don't care about.
"/logging/__init__.py",
]
@@ -1094,7 +1094,7 @@ def test_validate_headers(self) -> None:
assert request.headers.get("Authorization") == api_key
with pytest.raises(SolverError):
- with update_env(**{"SOLVER_API_KEY": Omit()}):
+ with update_env(**{"SOLVER_API_API_KEY": Omit()}):
client2 = AsyncSolver(base_url=base_url, api_key=None, _strict_response_validation=True)
_ = client2
@@ -1477,32 +1477,32 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte
calculated = client._calculate_retry_timeout(remaining_retries, options, headers)
assert calculated == pytest.approx(timeout, 0.5 * 0.875) # pyright: ignore[reportUnknownMemberType]
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
+ respx_mock.get("/alpha/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
with pytest.raises(APITimeoutError):
await self.client.get(
- "/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
)
assert _get_open_connections(self.client) == 0
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/repos/github").mock(return_value=httpx.Response(500))
+ respx_mock.get("/alpha/repos/github").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
await self.client.get(
- "/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
)
assert _get_open_connections(self.client) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
@pytest.mark.asyncio
@pytest.mark.parametrize("failure_mode", ["status", "exception"])
@@ -1526,15 +1526,15 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.list("github")
+ response = await client.repos.with_raw_response.retrieve("github")
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
@pytest.mark.asyncio
async def test_omit_retry_count_header(
@@ -1551,16 +1551,16 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.list(
+ response = await client.repos.with_raw_response.retrieve(
"github", extra_headers={"x-stainless-retry-count": Omit()}
)
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@pytest.mark.parametrize("failures_before_success", [0, 2, 4])
- @mock.patch("solver_api._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
+ @mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
@pytest.mark.asyncio
async def test_overwrite_retry_count_header(
@@ -1577,9 +1577,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/repos/github").mock(side_effect=retry_handler)
+ respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.list("github", extra_headers={"x-stainless-retry-count": "42"})
+ response = await client.repos.with_raw_response.retrieve(
+ "github", extra_headers={"x-stainless-retry-count": "42"}
+ )
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
@@ -1594,8 +1596,8 @@ def test_get_platform(self) -> None:
import nest_asyncio
import threading
- from solver_api._utils import asyncify
- from solver_api._base_client import get_platform
+ from solverai._utils import asyncify
+ from solverai._base_client import get_platform
async def test_main() -> None:
result = await asyncify(get_platform)()
diff --git a/tests/test_deepcopy.py b/tests/test_deepcopy.py
index 95274cc..19c814a 100644
--- a/tests/test_deepcopy.py
+++ b/tests/test_deepcopy.py
@@ -1,4 +1,4 @@
-from solver_api._utils import deepcopy_minimal
+from solverai._utils import deepcopy_minimal
def assert_different_identities(obj1: object, obj2: object) -> None:
diff --git a/tests/test_extract_files.py b/tests/test_extract_files.py
index 6ecfbaa..13b9036 100644
--- a/tests/test_extract_files.py
+++ b/tests/test_extract_files.py
@@ -4,8 +4,8 @@
import pytest
-from solver_api._types import FileTypes
-from solver_api._utils import extract_files
+from solverai._types import FileTypes
+from solverai._utils import extract_files
def test_removes_files_from_input() -> None:
diff --git a/tests/test_files.py b/tests/test_files.py
index 97932bf..7e4cb1a 100644
--- a/tests/test_files.py
+++ b/tests/test_files.py
@@ -4,7 +4,7 @@
import pytest
from dirty_equals import IsDict, IsList, IsBytes, IsTuple
-from solver_api._files import to_httpx_files, async_to_httpx_files
+from solverai._files import to_httpx_files, async_to_httpx_files
readme_path = Path(__file__).parent.parent.joinpath("README.md")
diff --git a/tests/test_models.py b/tests/test_models.py
index d3e4b6d..78972ae 100644
--- a/tests/test_models.py
+++ b/tests/test_models.py
@@ -7,9 +7,9 @@
import pydantic
from pydantic import Field
-from solver_api._utils import PropertyInfo
-from solver_api._compat import PYDANTIC_V2, parse_obj, model_dump, model_json
-from solver_api._models import BaseModel, construct_type
+from solverai._utils import PropertyInfo
+from solverai._compat import PYDANTIC_V2, parse_obj, model_dump, model_json
+from solverai._models import BaseModel, construct_type
class BasicModel(BaseModel):
diff --git a/tests/test_qs.py b/tests/test_qs.py
index a40d062..5f525a3 100644
--- a/tests/test_qs.py
+++ b/tests/test_qs.py
@@ -4,7 +4,7 @@
import pytest
-from solver_api._qs import Querystring, stringify
+from solverai._qs import Querystring, stringify
def test_empty() -> None:
diff --git a/tests/test_required_args.py b/tests/test_required_args.py
index 89bc6c3..a1957ee 100644
--- a/tests/test_required_args.py
+++ b/tests/test_required_args.py
@@ -2,7 +2,7 @@
import pytest
-from solver_api._utils import required_args
+from solverai._utils import required_args
def test_too_many_positional_params() -> None:
diff --git a/tests/test_response.py b/tests/test_response.py
index 749d672..d97f3d9 100644
--- a/tests/test_response.py
+++ b/tests/test_response.py
@@ -6,8 +6,8 @@
import pytest
import pydantic
-from solver_api import Solver, BaseModel, AsyncSolver
-from solver_api._response import (
+from solverai import Solver, BaseModel, AsyncSolver
+from solverai._response import (
APIResponse,
BaseAPIResponse,
AsyncAPIResponse,
@@ -15,8 +15,8 @@
AsyncBinaryAPIResponse,
extract_response_type,
)
-from solver_api._streaming import Stream
-from solver_api._base_client import FinalRequestOptions
+from solverai._streaming import Stream
+from solverai._base_client import FinalRequestOptions
class ConcreteBaseAPIResponse(APIResponse[bytes]): ...
@@ -37,7 +37,7 @@ def test_extract_response_type_direct_classes() -> None:
def test_extract_response_type_direct_class_missing_type_arg() -> None:
with pytest.raises(
RuntimeError,
- match="Expected type to have a type argument at index 0 but it did not",
+ match="Expected type to have a type argument at index 0 but it did not",
):
extract_response_type(AsyncAPIResponse)
@@ -68,7 +68,7 @@ def test_response_parse_mismatched_basemodel(client: Solver) -> None:
with pytest.raises(
TypeError,
- match="Pydantic models must subclass our base model type, e.g. `from solver_api import BaseModel`",
+ match="Pydantic models must subclass our base model type, e.g. `from solverai import BaseModel`",
):
response.parse(to=PydanticModel)
@@ -86,7 +86,7 @@ async def test_async_response_parse_mismatched_basemodel(async_client: AsyncSolv
with pytest.raises(
TypeError,
- match="Pydantic models must subclass our base model type, e.g. `from solver_api import BaseModel`",
+ match="Pydantic models must subclass our base model type, e.g. `from solverai import BaseModel`",
):
await response.parse(to=PydanticModel)
diff --git a/tests/test_streaming.py b/tests/test_streaming.py
index 408fa3a..4243972 100644
--- a/tests/test_streaming.py
+++ b/tests/test_streaming.py
@@ -5,8 +5,8 @@
import httpx
import pytest
-from solver_api import Solver, AsyncSolver
-from solver_api._streaming import Stream, AsyncStream, ServerSentEvent
+from solverai import Solver, AsyncSolver
+from solverai._streaming import Stream, AsyncStream, ServerSentEvent
@pytest.mark.asyncio
diff --git a/tests/test_transform.py b/tests/test_transform.py
index 76fb057..1b4277f 100644
--- a/tests/test_transform.py
+++ b/tests/test_transform.py
@@ -8,15 +8,15 @@
import pytest
-from solver_api._types import NOT_GIVEN, Base64FileInput
-from solver_api._utils import (
+from solverai._types import NOT_GIVEN, Base64FileInput
+from solverai._utils import (
PropertyInfo,
transform as _transform,
parse_datetime,
async_transform as _async_transform,
)
-from solver_api._compat import PYDANTIC_V2
-from solver_api._models import BaseModel
+from solverai._compat import PYDANTIC_V2
+from solverai._models import BaseModel
_T = TypeVar("_T")
diff --git a/tests/test_utils/test_proxy.py b/tests/test_utils/test_proxy.py
index 333f375..a05646b 100644
--- a/tests/test_utils/test_proxy.py
+++ b/tests/test_utils/test_proxy.py
@@ -2,7 +2,7 @@
from typing import Any
from typing_extensions import override
-from solver_api._utils import LazyProxy
+from solverai._utils import LazyProxy
class RecursiveLazyProxy(LazyProxy[Any]):
diff --git a/tests/test_utils/test_typing.py b/tests/test_utils/test_typing.py
index 4b22184..faef5e7 100644
--- a/tests/test_utils/test_typing.py
+++ b/tests/test_utils/test_typing.py
@@ -2,7 +2,7 @@
from typing import Generic, TypeVar, cast
-from solver_api._utils import extract_type_var_from_base
+from solverai._utils import extract_type_var_from_base
_T = TypeVar("_T")
_T2 = TypeVar("_T2")
diff --git a/tests/utils.py b/tests/utils.py
index 5008fa9..93c7308 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -8,8 +8,8 @@
from datetime import date, datetime
from typing_extensions import Literal, get_args, get_origin, assert_type
-from solver_api._types import Omit, NoneType
-from solver_api._utils import (
+from solverai._types import Omit, NoneType
+from solverai._utils import (
is_dict,
is_list,
is_list_type,
@@ -18,8 +18,8 @@
is_annotated_type,
is_type_alias_type,
)
-from solver_api._compat import PYDANTIC_V2, field_outer_type, get_model_fields
-from solver_api._models import BaseModel
+from solverai._compat import PYDANTIC_V2, field_outer_type, get_model_fields
+from solverai._models import BaseModel
BaseModelT = TypeVar("BaseModelT", bound=BaseModel)
From 3581c640b87cbe289efc4a7a08564a9ae411ca17 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 25 Apr 2025 15:48:00 +0000
Subject: [PATCH 6/9] feat(api): update via SDK Studio
---
.stats.yml | 2 +-
README.md | 61 ++++++++----
api.md | 4 +-
src/solverai/_client.py | 12 +--
src/solverai/resources/repos/repos.py | 30 +++---
src/solverai/types/__init__.py | 2 +-
...ieve_response.py => repo_list_response.py} | 6 +-
tests/api_resources/test_repos.py | 38 +++----
tests/test_client.py | 98 +++++++++++++------
9 files changed, 159 insertions(+), 94 deletions(-)
rename src/solverai/types/{repo_retrieve_response.py => repo_list_response.py} (55%)
diff --git a/.stats.yml b/.stats.yml
index 3b934e3..8af4d12 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-408c34dbecbdc0cedeeb15fe065582a1497991bc585000afe25bf2d62b8d663a.yml
openapi_spec_hash: f6806cce3b0e7dc1855a4ac92a71c2dd
-config_hash: 6e10df46282290e5c60c88af338a6d76
+config_hash: d9a64d2267a9f823be63199186fab246
diff --git a/README.md b/README.md
index 7b961c0..c66052c 100644
--- a/README.md
+++ b/README.md
@@ -31,17 +31,21 @@ import os
from solverai import Solver
client = Solver(
- api_key=os.environ.get("SOLVER_API_API_KEY"), # This is the default and can be omitted
+ api_key=os.environ.get("SOLVER_API_KEY"), # This is the default and can be omitted
)
-repos = client.repos.retrieve(
- "REPLACE_ME",
+session = client.repos.sessions.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
+print(session.id)
```
While you can provide an `api_key` keyword argument,
we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
-to add `SOLVER_API_API_KEY="My API Key"` to your `.env` file
+to add `SOLVER_API_KEY="My API Key"` to your `.env` file
so that your API Key is not stored in source control.
## Async usage
@@ -54,14 +58,18 @@ import asyncio
from solverai import AsyncSolver
client = AsyncSolver(
- api_key=os.environ.get("SOLVER_API_API_KEY"), # This is the default and can be omitted
+ api_key=os.environ.get("SOLVER_API_KEY"), # This is the default and can be omitted
)
async def main() -> None:
- repos = await client.repos.retrieve(
- "REPLACE_ME",
+ session = await client.repos.sessions.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
+ print(session.id)
asyncio.run(main())
@@ -94,8 +102,11 @@ from solverai import Solver
client = Solver()
try:
- client.repos.retrieve(
- "REPLACE_ME",
+ client.repos.sessions.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
except solverai.APIConnectionError as e:
print("The server could not be reached")
@@ -139,8 +150,11 @@ client = Solver(
)
# Or, configure per-request:
-client.with_options(max_retries=5).repos.retrieve(
- "REPLACE_ME",
+client.with_options(max_retries=5).repos.sessions.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
```
@@ -164,8 +178,11 @@ client = Solver(
)
# Override per-request:
-client.with_options(timeout=5.0).repos.retrieve(
- "REPLACE_ME",
+client.with_options(timeout=5.0).repos.sessions.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
```
@@ -207,13 +224,16 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to
from solverai import Solver
client = Solver()
-response = client.repos.with_raw_response.retrieve(
- "REPLACE_ME",
+response = client.repos.sessions.with_raw_response.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
)
print(response.headers.get('X-My-Header'))
-repo = response.parse() # get the object that `repos.retrieve()` would have returned
-print(repo)
+session = response.parse() # get the object that `repos.sessions.create()` would have returned
+print(session.id)
```
These methods return an [`APIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solverai/_response.py) object.
@@ -227,8 +247,11 @@ The above interface eagerly reads the full response body when you make the reque
To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods.
```python
-with client.repos.with_streaming_response.retrieve(
- "REPLACE_ME",
+with client.repos.sessions.with_streaming_response.create(
+ repo="solverai-sdk-python",
+ provider="github",
+ org="Laredo-Labs",
+ user_branch_name="main",
) as response:
print(response.headers.get("X-My-Header"))
diff --git a/api.md b/api.md
index 43e9904..d76b9e5 100644
--- a/api.md
+++ b/api.md
@@ -3,12 +3,12 @@
Types:
```python
-from solverai.types import VcsProvider, RepoRetrieveResponse
+from solverai.types import VcsProvider, RepoListResponse
```
Methods:
-- client.repos.retrieve(provider) -> RepoRetrieveResponse
+- client.repos.list(provider) -> RepoListResponse
## Sessions
diff --git a/src/solverai/_client.py b/src/solverai/_client.py
index 936bc11..1403c60 100644
--- a/src/solverai/_client.py
+++ b/src/solverai/_client.py
@@ -66,13 +66,13 @@ def __init__(
) -> None:
"""Construct a new synchronous Solver client instance.
- This automatically infers the `api_key` argument from the `SOLVER_API_API_KEY` environment variable if it is not provided.
+ This automatically infers the `api_key` argument from the `SOLVER_API_KEY` environment variable if it is not provided.
"""
if api_key is None:
- api_key = os.environ.get("SOLVER_API_API_KEY")
+ api_key = os.environ.get("SOLVER_API_KEY")
if api_key is None:
raise SolverError(
- "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_API_KEY environment variable"
+ "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_KEY environment variable"
)
self.api_key = api_key
@@ -234,13 +234,13 @@ def __init__(
) -> None:
"""Construct a new async AsyncSolver client instance.
- This automatically infers the `api_key` argument from the `SOLVER_API_API_KEY` environment variable if it is not provided.
+ This automatically infers the `api_key` argument from the `SOLVER_API_KEY` environment variable if it is not provided.
"""
if api_key is None:
- api_key = os.environ.get("SOLVER_API_API_KEY")
+ api_key = os.environ.get("SOLVER_API_KEY")
if api_key is None:
raise SolverError(
- "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_API_KEY environment variable"
+ "The api_key client option must be set either by passing api_key to the client or by setting the SOLVER_API_KEY environment variable"
)
self.api_key = api_key
diff --git a/src/solverai/resources/repos/repos.py b/src/solverai/resources/repos/repos.py
index 349f482..422c38b 100644
--- a/src/solverai/resources/repos/repos.py
+++ b/src/solverai/resources/repos/repos.py
@@ -24,7 +24,7 @@
AsyncSessionsResourceWithStreamingResponse,
)
from ...types.vcs_provider import VcsProvider
-from ...types.repo_retrieve_response import RepoRetrieveResponse
+from ...types.repo_list_response import RepoListResponse
__all__ = ["ReposResource", "AsyncReposResource"]
@@ -53,7 +53,7 @@ def with_streaming_response(self) -> ReposResourceWithStreamingResponse:
"""
return ReposResourceWithStreamingResponse(self)
- def retrieve(
+ def list(
self,
provider: VcsProvider,
*,
@@ -63,7 +63,7 @@ def retrieve(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> RepoRetrieveResponse:
+ ) -> RepoListResponse:
"""
Args:
extra_headers: Send extra headers
@@ -81,7 +81,7 @@ def retrieve(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=RepoRetrieveResponse,
+ cast_to=RepoListResponse,
)
@@ -109,7 +109,7 @@ def with_streaming_response(self) -> AsyncReposResourceWithStreamingResponse:
"""
return AsyncReposResourceWithStreamingResponse(self)
- async def retrieve(
+ async def list(
self,
provider: VcsProvider,
*,
@@ -119,7 +119,7 @@ async def retrieve(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> RepoRetrieveResponse:
+ ) -> RepoListResponse:
"""
Args:
extra_headers: Send extra headers
@@ -137,7 +137,7 @@ async def retrieve(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=RepoRetrieveResponse,
+ cast_to=RepoListResponse,
)
@@ -145,8 +145,8 @@ class ReposResourceWithRawResponse:
def __init__(self, repos: ReposResource) -> None:
self._repos = repos
- self.retrieve = to_raw_response_wrapper(
- repos.retrieve,
+ self.list = to_raw_response_wrapper(
+ repos.list,
)
@cached_property
@@ -158,8 +158,8 @@ class AsyncReposResourceWithRawResponse:
def __init__(self, repos: AsyncReposResource) -> None:
self._repos = repos
- self.retrieve = async_to_raw_response_wrapper(
- repos.retrieve,
+ self.list = async_to_raw_response_wrapper(
+ repos.list,
)
@cached_property
@@ -171,8 +171,8 @@ class ReposResourceWithStreamingResponse:
def __init__(self, repos: ReposResource) -> None:
self._repos = repos
- self.retrieve = to_streamed_response_wrapper(
- repos.retrieve,
+ self.list = to_streamed_response_wrapper(
+ repos.list,
)
@cached_property
@@ -184,8 +184,8 @@ class AsyncReposResourceWithStreamingResponse:
def __init__(self, repos: AsyncReposResource) -> None:
self._repos = repos
- self.retrieve = async_to_streamed_response_wrapper(
- repos.retrieve,
+ self.list = async_to_streamed_response_wrapper(
+ repos.list,
)
@cached_property
diff --git a/src/solverai/types/__init__.py b/src/solverai/types/__init__.py
index 6e6dfc5..2fd2670 100644
--- a/src/solverai/types/__init__.py
+++ b/src/solverai/types/__init__.py
@@ -3,4 +3,4 @@
from __future__ import annotations
from .vcs_provider import VcsProvider as VcsProvider
-from .repo_retrieve_response import RepoRetrieveResponse as RepoRetrieveResponse
+from .repo_list_response import RepoListResponse as RepoListResponse
diff --git a/src/solverai/types/repo_retrieve_response.py b/src/solverai/types/repo_list_response.py
similarity index 55%
rename from src/solverai/types/repo_retrieve_response.py
rename to src/solverai/types/repo_list_response.py
index b22b2e7..81004dc 100644
--- a/src/solverai/types/repo_retrieve_response.py
+++ b/src/solverai/types/repo_list_response.py
@@ -5,13 +5,13 @@
from .._models import BaseModel
-__all__ = ["RepoRetrieveResponse", "RepoRetrieveResponseItem"]
+__all__ = ["RepoListResponse", "RepoListResponseItem"]
-class RepoRetrieveResponseItem(BaseModel):
+class RepoListResponseItem(BaseModel):
org: str
repo: str
-RepoRetrieveResponse: TypeAlias = List[RepoRetrieveResponseItem]
+RepoListResponse: TypeAlias = List[RepoListResponseItem]
diff --git a/tests/api_resources/test_repos.py b/tests/api_resources/test_repos.py
index 59e0cdd..9c86a8a 100644
--- a/tests/api_resources/test_repos.py
+++ b/tests/api_resources/test_repos.py
@@ -9,7 +9,7 @@
from solverai import Solver, AsyncSolver
from tests.utils import assert_matches_type
-from solverai.types import RepoRetrieveResponse
+from solverai.types import RepoListResponse
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -19,35 +19,35 @@ class TestRepos:
@pytest.mark.skip()
@parametrize
- def test_method_retrieve(self, client: Solver) -> None:
- repo = client.repos.retrieve(
+ def test_method_list(self, client: Solver) -> None:
+ repo = client.repos.list(
"github",
)
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_raw_response_retrieve(self, client: Solver) -> None:
- response = client.repos.with_raw_response.retrieve(
+ def test_raw_response_list(self, client: Solver) -> None:
+ response = client.repos.with_raw_response.list(
"github",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = response.parse()
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- def test_streaming_response_retrieve(self, client: Solver) -> None:
- with client.repos.with_streaming_response.retrieve(
+ def test_streaming_response_list(self, client: Solver) -> None:
+ with client.repos.with_streaming_response.list(
"github",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = response.parse()
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -57,34 +57,34 @@ class TestAsyncRepos:
@pytest.mark.skip()
@parametrize
- async def test_method_retrieve(self, async_client: AsyncSolver) -> None:
- repo = await async_client.repos.retrieve(
+ async def test_method_list(self, async_client: AsyncSolver) -> None:
+ repo = await async_client.repos.list(
"github",
)
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_raw_response_retrieve(self, async_client: AsyncSolver) -> None:
- response = await async_client.repos.with_raw_response.retrieve(
+ async def test_raw_response_list(self, async_client: AsyncSolver) -> None:
+ response = await async_client.repos.with_raw_response.list(
"github",
)
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = await response.parse()
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
@pytest.mark.skip()
@parametrize
- async def test_streaming_response_retrieve(self, async_client: AsyncSolver) -> None:
- async with async_client.repos.with_streaming_response.retrieve(
+ async def test_streaming_response_list(self, async_client: AsyncSolver) -> None:
+ async with async_client.repos.with_streaming_response.list(
"github",
) as response:
assert not response.is_closed
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
repo = await response.parse()
- assert_matches_type(RepoRetrieveResponse, repo, path=["response"])
+ assert_matches_type(RepoListResponse, repo, path=["response"])
assert cast(Any, response.is_closed) is True
diff --git a/tests/test_client.py b/tests/test_client.py
index 82c33c4..e69755b 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -23,6 +23,7 @@
from solverai import Solver, AsyncSolver, APIResponseValidationError
from solverai._types import Omit
+from solverai._utils import maybe_transform
from solverai._models import BaseModel, FinalRequestOptions
from solverai._constants import RAW_RESPONSE_HEADER
from solverai._exceptions import SolverError, APIStatusError, APITimeoutError, APIResponseValidationError
@@ -32,6 +33,7 @@
BaseClient,
make_request_options,
)
+from solverai.types.repos.session_create_params import SessionCreateParams
from .utils import update_env
@@ -338,7 +340,7 @@ def test_validate_headers(self) -> None:
assert request.headers.get("Authorization") == api_key
with pytest.raises(SolverError):
- with update_env(**{"SOLVER_API_API_KEY": Omit()}):
+ with update_env(**{"SOLVER_API_KEY": Omit()}):
client2 = Solver(base_url=base_url, api_key=None, _strict_response_validation=True)
_ = client2
@@ -710,11 +712,16 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str
@mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/alpha/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(
+ side_effect=httpx.TimeoutException("Test timeout error")
+ )
with pytest.raises(APITimeoutError):
- self.client.get(
- "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ self.client.post(
+ "/alpha/repos/github/org/repo/sessions",
+ body=cast(object, maybe_transform(dict(user_branch_name="main"), SessionCreateParams)),
+ cast_to=httpx.Response,
+ options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
)
assert _get_open_connections(self.client) == 0
@@ -722,11 +729,14 @@ def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> No
@mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/alpha/repos/github").mock(return_value=httpx.Response(500))
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
- self.client.get(
- "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ self.client.post(
+ "/alpha/repos/github/org/repo/sessions",
+ body=cast(object, maybe_transform(dict(user_branch_name="main"), SessionCreateParams)),
+ cast_to=httpx.Response,
+ options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
)
assert _get_open_connections(self.client) == 0
@@ -755,9 +765,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.retrieve("github")
+ response = client.repos.sessions.with_raw_response.create(
+ repo="repo", provider="github", org="org", user_branch_name="userBranchName"
+ )
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@@ -779,9 +791,15 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.retrieve("github", extra_headers={"x-stainless-retry-count": Omit()})
+ response = client.repos.sessions.with_raw_response.create(
+ repo="repo",
+ provider="github",
+ org="org",
+ user_branch_name="userBranchName",
+ extra_headers={"x-stainless-retry-count": Omit()},
+ )
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@@ -802,9 +820,15 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = client.repos.with_raw_response.retrieve("github", extra_headers={"x-stainless-retry-count": "42"})
+ response = client.repos.sessions.with_raw_response.create(
+ repo="repo",
+ provider="github",
+ org="org",
+ user_branch_name="userBranchName",
+ extra_headers={"x-stainless-retry-count": "42"},
+ )
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
@@ -1094,7 +1118,7 @@ def test_validate_headers(self) -> None:
assert request.headers.get("Authorization") == api_key
with pytest.raises(SolverError):
- with update_env(**{"SOLVER_API_API_KEY": Omit()}):
+ with update_env(**{"SOLVER_API_KEY": Omit()}):
client2 = AsyncSolver(base_url=base_url, api_key=None, _strict_response_validation=True)
_ = client2
@@ -1480,11 +1504,16 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte
@mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/alpha/repos/github").mock(side_effect=httpx.TimeoutException("Test timeout error"))
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(
+ side_effect=httpx.TimeoutException("Test timeout error")
+ )
with pytest.raises(APITimeoutError):
- await self.client.get(
- "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ await self.client.post(
+ "/alpha/repos/github/org/repo/sessions",
+ body=cast(object, maybe_transform(dict(user_branch_name="main"), SessionCreateParams)),
+ cast_to=httpx.Response,
+ options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
)
assert _get_open_connections(self.client) == 0
@@ -1492,11 +1521,14 @@ async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter)
@mock.patch("solverai._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout)
@pytest.mark.respx(base_url=base_url)
async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None:
- respx_mock.get("/alpha/repos/github").mock(return_value=httpx.Response(500))
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(return_value=httpx.Response(500))
with pytest.raises(APIStatusError):
- await self.client.get(
- "/alpha/repos/github", cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}
+ await self.client.post(
+ "/alpha/repos/github/org/repo/sessions",
+ body=cast(object, maybe_transform(dict(user_branch_name="main"), SessionCreateParams)),
+ cast_to=httpx.Response,
+ options={"headers": {RAW_RESPONSE_HEADER: "stream"}},
)
assert _get_open_connections(self.client) == 0
@@ -1526,9 +1558,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.retrieve("github")
+ response = await client.repos.sessions.with_raw_response.create(
+ repo="repo", provider="github", org="org", user_branch_name="userBranchName"
+ )
assert response.retries_taken == failures_before_success
assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success
@@ -1551,10 +1585,14 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.retrieve(
- "github", extra_headers={"x-stainless-retry-count": Omit()}
+ response = await client.repos.sessions.with_raw_response.create(
+ repo="repo",
+ provider="github",
+ org="org",
+ user_branch_name="userBranchName",
+ extra_headers={"x-stainless-retry-count": Omit()},
)
assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0
@@ -1577,10 +1615,14 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
return httpx.Response(500)
return httpx.Response(200)
- respx_mock.get("/alpha/repos/github").mock(side_effect=retry_handler)
+ respx_mock.post("/alpha/repos/github/org/repo/sessions").mock(side_effect=retry_handler)
- response = await client.repos.with_raw_response.retrieve(
- "github", extra_headers={"x-stainless-retry-count": "42"}
+ response = await client.repos.sessions.with_raw_response.create(
+ repo="repo",
+ provider="github",
+ org="org",
+ user_branch_name="userBranchName",
+ extra_headers={"x-stainless-retry-count": "42"},
)
assert response.http_request.headers.get("x-stainless-retry-count") == "42"
From 63ea47d9b6f641ff2779ea928839e7d2576f3a67 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 25 Apr 2025 15:50:45 +0000
Subject: [PATCH 7/9] chore: go live
---
.github/workflows/publish-pypi.yml | 31 +++++++++
.github/workflows/release-doctor.yml | 21 ++++++
.release-please-manifest.json | 3 +
.stats.yml | 2 +-
CONTRIBUTING.md | 4 +-
README.md | 10 +--
bin/check-release-environment | 21 ++++++
pyproject.toml | 6 +-
release-please-config.json | 66 +++++++++++++++++++
src/solverai/_version.py | 2 +-
src/solverai/resources/repos/repos.py | 8 +--
.../resources/repos/sessions/events.py | 8 +--
.../resources/repos/sessions/sessions.py | 8 +--
.../resources/repos/sessions/status.py | 8 +--
.../resources/repos/sessions/turns/events.py | 8 +--
.../resources/repos/sessions/turns/turns.py | 8 +--
16 files changed, 178 insertions(+), 36 deletions(-)
create mode 100644 .github/workflows/publish-pypi.yml
create mode 100644 .github/workflows/release-doctor.yml
create mode 100644 .release-please-manifest.json
create mode 100644 bin/check-release-environment
create mode 100644 release-please-config.json
diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml
new file mode 100644
index 0000000..09b11b5
--- /dev/null
+++ b/.github/workflows/publish-pypi.yml
@@ -0,0 +1,31 @@
+# This workflow is triggered when a GitHub release is created.
+# It can also be run manually to re-publish to PyPI in case it failed for some reason.
+# You can run this workflow by navigating to https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml
+name: Publish PyPI
+on:
+ workflow_dispatch:
+
+ release:
+ types: [published]
+
+jobs:
+ publish:
+ name: publish
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Rye
+ run: |
+ curl -sSf https://rye.astral.sh/get | bash
+ echo "$HOME/.rye/shims" >> $GITHUB_PATH
+ env:
+ RYE_VERSION: '0.44.0'
+ RYE_INSTALL_OPTION: '--yes'
+
+ - name: Publish to PyPI
+ run: |
+ bash ./bin/publish-pypi
+ env:
+ PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
new file mode 100644
index 0000000..de3fa13
--- /dev/null
+++ b/.github/workflows/release-doctor.yml
@@ -0,0 +1,21 @@
+name: Release Doctor
+on:
+ pull_request:
+ branches:
+ - main
+ workflow_dispatch:
+
+jobs:
+ release_doctor:
+ name: release doctor
+ runs-on: ubuntu-latest
+ if: github.repository == 'Laredo-Labs/solverai-sdk-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
+
+ - name: Check release environment
+ run: |
+ bash ./bin/check-release-environment
+ env:
+ PYPI_TOKEN: ${{ secrets.SOLVER_PYPI_TOKEN || secrets.PYPI_TOKEN }}
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
new file mode 100644
index 0000000..c476280
--- /dev/null
+++ b/.release-please-manifest.json
@@ -0,0 +1,3 @@
+{
+ ".": "0.0.1-alpha.0"
+}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 8af4d12..977b0fd 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-408c34dbecbdc0cedeeb15fe065582a1497991bc585000afe25bf2d62b8d663a.yml
openapi_spec_hash: f6806cce3b0e7dc1855a4ac92a71c2dd
-config_hash: d9a64d2267a9f823be63199186fab246
+config_hash: 27c5c63ee379774d1b9ce14e0a6ee2b0
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e900360..bdae47f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -63,7 +63,7 @@ If you’d like to use the repository from source, you can either install from g
To install via git:
```sh
-$ pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
+$ pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
```
Alternatively, you can build from source and install the wheel file:
@@ -121,7 +121,7 @@ the changes aren't made through the automated pipeline, you may want to make rel
### Publish with a GitHub workflow
-You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/solver-api-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
+You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/Laredo-Labs/solverai-sdk-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up.
### Publish manually
diff --git a/README.md b/README.md
index c66052c..1422919 100644
--- a/README.md
+++ b/README.md
@@ -15,8 +15,8 @@ The REST API documentation can be found on [solverai.com](https://solverai.com).
## Installation
```sh
-# install from this staging repo
-pip install git+ssh://git@github.com/stainless-sdks/solver-api-python.git
+# install from the production repo
+pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
```
> [!NOTE]
@@ -236,9 +236,9 @@ session = response.parse() # get the object that `repos.sessions.create()` woul
print(session.id)
```
-These methods return an [`APIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solverai/_response.py) object.
+These methods return an [`APIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solverai/_response.py) object.
-The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/solver-api-python/tree/main/src/solverai/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
+The async client returns an [`AsyncAPIResponse`](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/src/solverai/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
#### `.with_streaming_response`
@@ -347,7 +347,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
-We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/solver-api-python/issues) with questions, bugs, or suggestions.
+We are keen for your feedback; please open an [issue](https://www.github.com/Laredo-Labs/solverai-sdk-python/issues) with questions, bugs, or suggestions.
### Determining the installed version
diff --git a/bin/check-release-environment b/bin/check-release-environment
new file mode 100644
index 0000000..fcc6e4b
--- /dev/null
+++ b/bin/check-release-environment
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+
+errors=()
+
+if [ -z "${PYPI_TOKEN}" ]; then
+ errors+=("The SOLVER_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.")
+fi
+
+lenErrors=${#errors[@]}
+
+if [[ lenErrors -gt 0 ]]; then
+ echo -e "Found the following errors in the release environment:\n"
+
+ for error in "${errors[@]}"; do
+ echo -e "- $error\n"
+ done
+
+ exit 1
+fi
+
+echo "The environment is ready to push releases!"
diff --git a/pyproject.toml b/pyproject.toml
index 6dbe25a..63ed15f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -34,8 +34,8 @@ classifiers = [
]
[project.urls]
-Homepage = "https://github.com/stainless-sdks/solver-api-python"
-Repository = "https://github.com/stainless-sdks/solver-api-python"
+Homepage = "https://github.com/Laredo-Labs/solverai-sdk-python"
+Repository = "https://github.com/Laredo-Labs/solverai-sdk-python"
[tool.rye]
@@ -121,7 +121,7 @@ path = "README.md"
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# replace relative links with absolute links
pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)'
-replacement = '[\1](https://github.com/stainless-sdks/solver-api-python/tree/main/\g<2>)'
+replacement = '[\1](https://github.com/Laredo-Labs/solverai-sdk-python/tree/main/\g<2>)'
[tool.pytest.ini_options]
testpaths = ["tests"]
diff --git a/release-please-config.json b/release-please-config.json
new file mode 100644
index 0000000..da0bd57
--- /dev/null
+++ b/release-please-config.json
@@ -0,0 +1,66 @@
+{
+ "packages": {
+ ".": {}
+ },
+ "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json",
+ "include-v-in-tag": true,
+ "include-component-in-tag": false,
+ "versioning": "prerelease",
+ "prerelease": true,
+ "bump-minor-pre-major": true,
+ "bump-patch-for-minor-pre-major": false,
+ "pull-request-header": "Automated Release PR",
+ "pull-request-title-pattern": "release: ${version}",
+ "changelog-sections": [
+ {
+ "type": "feat",
+ "section": "Features"
+ },
+ {
+ "type": "fix",
+ "section": "Bug Fixes"
+ },
+ {
+ "type": "perf",
+ "section": "Performance Improvements"
+ },
+ {
+ "type": "revert",
+ "section": "Reverts"
+ },
+ {
+ "type": "chore",
+ "section": "Chores"
+ },
+ {
+ "type": "docs",
+ "section": "Documentation"
+ },
+ {
+ "type": "style",
+ "section": "Styles"
+ },
+ {
+ "type": "refactor",
+ "section": "Refactors"
+ },
+ {
+ "type": "test",
+ "section": "Tests",
+ "hidden": true
+ },
+ {
+ "type": "build",
+ "section": "Build System"
+ },
+ {
+ "type": "ci",
+ "section": "Continuous Integration",
+ "hidden": true
+ }
+ ],
+ "release-type": "python",
+ "extra-files": [
+ "src/solverai/_version.py"
+ ]
+}
\ No newline at end of file
diff --git a/src/solverai/_version.py b/src/solverai/_version.py
index d91e2f4..4308899 100644
--- a/src/solverai/_version.py
+++ b/src/solverai/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "solverai"
-__version__ = "0.0.1-alpha.0"
+__version__ = "0.0.1-alpha.0" # x-release-please-version
diff --git a/src/solverai/resources/repos/repos.py b/src/solverai/resources/repos/repos.py
index 422c38b..ac0dd75 100644
--- a/src/solverai/resources/repos/repos.py
+++ b/src/solverai/resources/repos/repos.py
@@ -40,7 +40,7 @@ def with_raw_response(self) -> ReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return ReposResourceWithRawResponse(self)
@@ -49,7 +49,7 @@ def with_streaming_response(self) -> ReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return ReposResourceWithStreamingResponse(self)
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncReposResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncReposResourceWithRawResponse(self)
@@ -105,7 +105,7 @@ def with_streaming_response(self) -> AsyncReposResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncReposResourceWithStreamingResponse(self)
diff --git a/src/solverai/resources/repos/sessions/events.py b/src/solverai/resources/repos/sessions/events.py
index a09a7f0..f9ae1d4 100644
--- a/src/solverai/resources/repos/sessions/events.py
+++ b/src/solverai/resources/repos/sessions/events.py
@@ -32,7 +32,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -41,7 +41,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -194,7 +194,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -203,7 +203,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
diff --git a/src/solverai/resources/repos/sessions/sessions.py b/src/solverai/resources/repos/sessions/sessions.py
index d481989..976942c 100644
--- a/src/solverai/resources/repos/sessions/sessions.py
+++ b/src/solverai/resources/repos/sessions/sessions.py
@@ -80,7 +80,7 @@ def with_raw_response(self) -> SessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return SessionsResourceWithRawResponse(self)
@@ -89,7 +89,7 @@ def with_streaming_response(self) -> SessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return SessionsResourceWithStreamingResponse(self)
@@ -367,7 +367,7 @@ def with_raw_response(self) -> AsyncSessionsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncSessionsResourceWithRawResponse(self)
@@ -376,7 +376,7 @@ def with_streaming_response(self) -> AsyncSessionsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncSessionsResourceWithStreamingResponse(self)
diff --git a/src/solverai/resources/repos/sessions/status.py b/src/solverai/resources/repos/sessions/status.py
index 42bcada..7bde89f 100644
--- a/src/solverai/resources/repos/sessions/status.py
+++ b/src/solverai/resources/repos/sessions/status.py
@@ -33,7 +33,7 @@ def with_raw_response(self) -> StatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return StatusResourceWithRawResponse(self)
@@ -42,7 +42,7 @@ def with_streaming_response(self) -> StatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return StatusResourceWithStreamingResponse(self)
@@ -101,7 +101,7 @@ def with_raw_response(self) -> AsyncStatusResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncStatusResourceWithRawResponse(self)
@@ -110,7 +110,7 @@ def with_streaming_response(self) -> AsyncStatusResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncStatusResourceWithStreamingResponse(self)
diff --git a/src/solverai/resources/repos/sessions/turns/events.py b/src/solverai/resources/repos/sessions/turns/events.py
index d95c848..2e5dc6f 100644
--- a/src/solverai/resources/repos/sessions/turns/events.py
+++ b/src/solverai/resources/repos/sessions/turns/events.py
@@ -29,7 +29,7 @@ def with_raw_response(self) -> EventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return EventsResourceWithRawResponse(self)
@@ -38,7 +38,7 @@ def with_streaming_response(self) -> EventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return EventsResourceWithStreamingResponse(self)
@@ -96,7 +96,7 @@ def with_raw_response(self) -> AsyncEventsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncEventsResourceWithRawResponse(self)
@@ -105,7 +105,7 @@ def with_streaming_response(self) -> AsyncEventsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncEventsResourceWithStreamingResponse(self)
diff --git a/src/solverai/resources/repos/sessions/turns/turns.py b/src/solverai/resources/repos/sessions/turns/turns.py
index f0d5ec3..1dc5dbf 100644
--- a/src/solverai/resources/repos/sessions/turns/turns.py
+++ b/src/solverai/resources/repos/sessions/turns/turns.py
@@ -42,7 +42,7 @@ def with_raw_response(self) -> TurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return TurnsResourceWithRawResponse(self)
@@ -51,7 +51,7 @@ def with_streaming_response(self) -> TurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return TurnsResourceWithStreamingResponse(self)
@@ -236,7 +236,7 @@ def with_raw_response(self) -> AsyncTurnsResourceWithRawResponse:
This property can be used as a prefix for any HTTP method call to return
the raw response object instead of the parsed content.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#accessing-raw-response-data-eg-headers
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#accessing-raw-response-data-eg-headers
"""
return AsyncTurnsResourceWithRawResponse(self)
@@ -245,7 +245,7 @@ def with_streaming_response(self) -> AsyncTurnsResourceWithStreamingResponse:
"""
An alternative to `.with_raw_response` that doesn't eagerly read the response body.
- For more information, see https://www.github.com/stainless-sdks/solver-api-python#with_streaming_response
+ For more information, see https://www.github.com/Laredo-Labs/solverai-sdk-python#with_streaming_response
"""
return AsyncTurnsResourceWithStreamingResponse(self)
From 99c7592daee266b1807f019bd7d16d74e60d9379 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 25 Apr 2025 15:51:19 +0000
Subject: [PATCH 8/9] chore: update SDK settings
---
.stats.yml | 2 +-
README.md | 7 ++-----
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 977b0fd..43cb594 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 15
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/solver-ai%2Fsolver-api-408c34dbecbdc0cedeeb15fe065582a1497991bc585000afe25bf2d62b8d663a.yml
openapi_spec_hash: f6806cce3b0e7dc1855a4ac92a71c2dd
-config_hash: 27c5c63ee379774d1b9ce14e0a6ee2b0
+config_hash: feaa57eb2464300a39a877a38ed85f68
diff --git a/README.md b/README.md
index 1422919..f547841 100644
--- a/README.md
+++ b/README.md
@@ -15,13 +15,10 @@ The REST API documentation can be found on [solverai.com](https://solverai.com).
## Installation
```sh
-# install from the production repo
-pip install git+ssh://git@github.com/Laredo-Labs/solverai-sdk-python.git
+# install from PyPI
+pip install --pre solverai
```
-> [!NOTE]
-> Once this package is [published to PyPI](https://app.stainless.com/docs/guides/publish), this will become: `pip install --pre solverai`
-
## Usage
The full API of this library can be found in [api.md](api.md).
From 6d3645de6174c90e87ee7c940f7cc6623d37e658 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 25 Apr 2025 15:51:36 +0000
Subject: [PATCH 9/9] release: 0.1.0-alpha.1
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 31 +++++++++++++++++++++++++++++++
pyproject.toml | 2 +-
src/solverai/_version.py | 2 +-
4 files changed, 34 insertions(+), 3 deletions(-)
create mode 100644 CHANGELOG.md
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index c476280..ba6c348 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.0.1-alpha.0"
+ ".": "0.1.0-alpha.1"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..abc5bd2
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,31 @@
+# Changelog
+
+## 0.1.0-alpha.1 (2025-04-25)
+
+Full Changelog: [v0.0.1-alpha.0...v0.1.0-alpha.1](https://github.com/Laredo-Labs/solverai-sdk-python/compare/v0.0.1-alpha.0...v0.1.0-alpha.1)
+
+### Features
+
+* **api:** update via SDK Studio ([3581c64](https://github.com/Laredo-Labs/solverai-sdk-python/commit/3581c640b87cbe289efc4a7a08564a9ae411ca17))
+* **api:** update via SDK Studio ([306cbd8](https://github.com/Laredo-Labs/solverai-sdk-python/commit/306cbd83a940dfe4b7ea7b5409942a9dd5ba033f))
+* **api:** update via SDK Studio ([1e2eea0](https://github.com/Laredo-Labs/solverai-sdk-python/commit/1e2eea06cb5dc8c8064b4b270348f1314e8f888a))
+* **api:** update via SDK Studio ([c4f07d8](https://github.com/Laredo-Labs/solverai-sdk-python/commit/c4f07d87fe333341decfc944f40ae50079b9f101))
+
+
+### Bug Fixes
+
+* **pydantic v1:** more robust ModelField.annotation check ([fb446a4](https://github.com/Laredo-Labs/solverai-sdk-python/commit/fb446a49433f676c32ed09594f436321db9f4fa3))
+
+
+### Chores
+
+* broadly detect json family of content-type headers ([8c7adce](https://github.com/Laredo-Labs/solverai-sdk-python/commit/8c7adced1025f48a09cc60f2192a389ae3cc0b57))
+* **ci:** add timeout thresholds for CI jobs ([747d18f](https://github.com/Laredo-Labs/solverai-sdk-python/commit/747d18fec846fc3b1796be0cfb2a91a90683263b))
+* **ci:** only use depot for staging repos ([0e13fdf](https://github.com/Laredo-Labs/solverai-sdk-python/commit/0e13fdfa795b2ceef2e7e242aa2c0d26ab0756ea))
+* go live ([63ea47d](https://github.com/Laredo-Labs/solverai-sdk-python/commit/63ea47d9b6f641ff2779ea928839e7d2576f3a67))
+* go live ([269266e](https://github.com/Laredo-Labs/solverai-sdk-python/commit/269266e5853b734ce774bd8660151d61bcb5337a))
+* **internal:** codegen related update ([1f20bad](https://github.com/Laredo-Labs/solverai-sdk-python/commit/1f20badfb0ade74ed54828da3b702b369d4bcd71))
+* **internal:** fix list file params ([22afcc8](https://github.com/Laredo-Labs/solverai-sdk-python/commit/22afcc855f286278595458214ad8ceca0d52f0a7))
+* **internal:** import reformatting ([0e1374c](https://github.com/Laredo-Labs/solverai-sdk-python/commit/0e1374c790a7716b399cf597d826590aa18bf06e))
+* **internal:** refactor retries to not use recursion ([4020e02](https://github.com/Laredo-Labs/solverai-sdk-python/commit/4020e0289602a18e861fe800a72937b46236fdad))
+* update SDK settings ([99c7592](https://github.com/Laredo-Labs/solverai-sdk-python/commit/99c7592daee266b1807f019bd7d16d74e60d9379))
diff --git a/pyproject.toml b/pyproject.toml
index 63ed15f..201032f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "solverai"
-version = "0.0.1-alpha.0"
+version = "0.1.0-alpha.1"
description = "The official Python library for the solver API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/solverai/_version.py b/src/solverai/_version.py
index 4308899..29eb443 100644
--- a/src/solverai/_version.py
+++ b/src/solverai/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "solverai"
-__version__ = "0.0.1-alpha.0" # x-release-please-version
+__version__ = "0.1.0-alpha.1" # x-release-please-version