Skip to content

release: 0.34.0#106

Open
stainless-app[bot] wants to merge 12 commits intomainfrom
release-please--branches--main--changes--next
Open

release: 0.34.0#106
stainless-app[bot] wants to merge 12 commits intomainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Contributor

@stainless-app stainless-app bot commented Mar 2, 2026

Automated Release PR

0.34.0 (2026-03-06)

Full Changelog: v0.33.0...v0.34.0

Features

Chores

  • api: python trusted publisher (3d7a283)
  • internal: add request options to SSE classes (6b5c9ad)
  • internal: make test_proxy_environment_variables more resilient (3cc3332)
  • internal: make test_proxy_environment_variables more resilient to env (2c99a7f)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app
Copy link
Contributor Author

stainless-app bot commented Mar 2, 2026

🧪 Testing

To try out this version of the SDK:

pip install 'https://pkg.stainless.com/s/hyperspell-python/056466258f6dff9fe7709a85f7f5879e31b332a7/hyperspell-0.33.0-py3-none-any.whl'

Expires at: Sun, 05 Apr 2026 01:29:04 GMT
Updated at: Fri, 06 Mar 2026 01:29:04 GMT

@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from c65d124 to 4ac14b8 Compare March 2, 2026 22:51
@canaries-inc
Copy link

canaries-inc bot commented Mar 2, 2026

🐤 Canary Summary

This release expands the Hyperspell Python SDK to support two new data source integrations:

  • GitHub integration added as a new memory source for indexing and searching code repositories
  • Trace integration added as a new memory source for indexing and searching trace data
  • New AI models (gpt-oss-20b, gpt-oss-120b) added for answer generation in memory search
  • Resource ID filtering capability added to memory search for scoping queries to specific documents
  • PyPI publishing workflow migrated to OIDC trusted publisher authentication
  • Internal SDK improvements for request options handling in streaming responses

Note: This is a Python SDK library, not a UI application. The type changes enable new integration options that would appear in UI components of applications consuming this SDK (e.g., integration selection dropdowns, connection management interfaces, search filters).


@canaries-inc
Copy link

canaries-inc bot commented Mar 2, 2026

🐤 Canary Proposed Tests

No testable user journeys found for this PR.

@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from 4ac14b8 to dfee07c Compare March 3, 2026 23:28
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from dfee07c to 2803c0e Compare March 6, 2026 01:28
Comment on lines 2 to 4

errors=()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correctness: Removing the PYPI_TOKEN validation lets the script pass even when the token is unset, which can cause release failures later (or worse, publish without auth). Reintroduce the check to fail fast when the secret is missing. 🚨

🤖 AI Agent Prompt for Cursor/Windsurf

📋 Copy this prompt to your AI coding assistant (Cursor, Windsurf, etc.) to get help fixing this issue

In `bin/check-release-environment` around lines 2-4, reintroduce the PYPI_TOKEN validation block so the script errors when the token is missing. Restore the removed `if [ -z "${PYPI_TOKEN}" ]; then ... fi` block before `lenErrors`.

Comment on lines 46 to +49
self.response = response
self._cast_to = cast_to
self._client = client
self._options = options

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate Code: ⚠️ Duplicate Code Detected (Similarity: 95%)

This function Stream.__init__ duplicates existing code.

📍 Original Location:

src/hyperspell/_streaming.py:121-142

Function: AsyncStream.__init__

💡 Recommendation:
Introduce an abstract base class (e.g., BaseStream) that holds the shared state: _options, _cast_to, _client, _timeout, and their initialization. Both Stream and AsyncStream can inherit from it, eliminating the duplicated __init__ initialization block. Alternatively, if the sync/async split makes inheritance awkward, at least extract the shared options initialization into a _init_options(self, options) helper or use a @dataclass-style mixin.

Consider importing and reusing the existing function instead of duplicating the logic.

@@ -1019,6 +1019,14 @@ def retry_handler(_request: httpx.Request) -> httpx.Response:
def test_proxy_environment_variables(self, monkeypatch: pytest.MonkeyPatch) -> None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate Code: ⚠️ Duplicate Code Detected (Similarity: 97%)

This function TestClient.test_proxy_environment_variables duplicates existing code.

📍 Original Location:

tests/test_client.py:1998-2006 (async version)

Function: TestAsyncClient.test_proxy_environment_variables

💡 Recommendation:
Extract the proxy env var cleanup into a pytest fixture or a shared helper function (e.g., clear_proxy_env(monkeypatch)) and call it at the start of both test_proxy_environment_variables methods. Alternatively, a @pytest.fixture(autouse=True) scoped to the proxy test class could handle cleanup transparently.

Consider importing and reusing the existing function instead of duplicating the logic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants