Skip to content

release: 0.4.0#53

Open
stainless-app[bot] wants to merge 39 commits into
mainfrom
release-please--branches--main--changes--next
Open

release: 0.4.0#53
stainless-app[bot] wants to merge 39 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Copy Markdown
Contributor

@stainless-app stainless-app Bot commented Mar 6, 2026

Automated Release PR

0.4.0 (2026-05-15)

Full Changelog: v0.3.0...v0.4.0

Features

  • internal/types: support eagerly validating pydantic iterators (f45ede4)
  • internal: implement indices array format for query and form serialization (04ba964)
  • support setting headers via env (e773bb2)

Bug Fixes

  • client: add missing f-string prefix in file type error message (f5ef3ca)
  • client: preserve hardcoded query params when merging with user params (80f3981)
  • deps: bump minimum typing-extensions version (23ea212)
  • ensure file data are only sent as 1 parameter (721e574)
  • pydantic: do not pass by_alias unless set (b098b05)
  • sanitize endpoint path params (e385e21)
  • use correct field name format for multipart file arrays (a6664c3)

Performance Improvements

  • client: optimize file structure copying in multipart requests (43970d6)

Chores

  • ci: remove release-doctor workflow (5903593)
  • ci: skip lint on metadata-only changes (e11e58f)
  • ci: skip uploading artifacts on stainless-internal branches (e3ed836)
  • internal: more robust bootstrap script (a84687b)
  • internal: reformat pyproject.toml (84db3a8)
  • internal: tweak CI branches (1fc1ee4)
  • internal: update gitignore (97672af)
  • update placeholder string (3a623d4)

Documentation

Refactors

  • types: use extra_items from PEP 728 (de6e4e4)

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

@cursor
Copy link
Copy Markdown

cursor Bot commented Mar 6, 2026

PR Summary

Medium Risk
Touches request construction/serialization (URL interpolation, query merging, multipart file field naming) which can subtly change API calls, but changes are well-scoped and covered by new tests.

Overview
Bumps the SDK to v0.4.0 (manifest, pyproject.toml, __version__, changelog/spec metadata) and updates docs/tests to current example values.

Improves request construction and safety: preserves hard-coded query params when merging params, adds DEDALUS_CUSTOM_HEADERS env support, and introduces path_template() to percent-encode path params and reject dot-segment traversal (adopted in models.retrieve).

Refines serialization and multipart behavior: adds indices support for query arrays and multipart file array field names, replaces deepcopy_minimal with targeted deepcopy_with_paths() to avoid mutating original bodies during extract_files, and adds a Pydantic v2 EagerIterable to eagerly validate iterables/generators without consuming them across repeated dumps.

CI is adjusted to skip metadata-only pushes, pin action SHAs, avoid artifact upload on stl/* branches, and removes the release-doctor workflow.

Reviewed by Cursor Bugbot for commit 2e1e09c. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Autofix Details

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Minimum typing-extensions version too low for extra_items
    • Updated the package dependency constraint to typing-extensions>=4.13 so TypedDict(extra_items=...) is supported at import time.

Create PR

Or push these changes by commenting:

@cursor push 4d33f509c1
Preview (4d33f509c1)
diff --git a/pyproject.toml b/pyproject.toml
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -11,7 +11,7 @@
 dependencies = [
   "httpx>=0.23.0, <1",
   "pydantic>=1.9.0, <3",
-  "typing-extensions>=4.10, <5",
+  "typing-extensions>=4.13, <5",
   "anyio>=3.5.0, <5",
   "distro>=1.7.0, <2",
   "sniffio",

Comment thread src/dedalus_labs/types/shared_params/reasoning.py
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from b40181c to db00e7a Compare March 7, 2026 12:56
@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app Bot commented Mar 7, 2026

🧪 Testing

To try out this version of the SDK:

pip install 'https://pkg.stainless.com/s/dedalus-sdk-python/7ce825c2712be72224b5627ba39fac0e1903d016/dedalus_labs-0.3.0-py3-none-any.whl'

Expires at: Thu, 11 Jun 2026 19:09:59 GMT
Updated at: Tue, 12 May 2026 19:09:59 GMT

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from db00e7a to e3f484a Compare March 7, 2026 13:17
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e3f484a to 14149b0 Compare March 16, 2026 17:35
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 14149b0 to fa5441e Compare March 16, 2026 19:04
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from fa5441e to 73aba21 Compare March 16, 2026 20:49
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 73aba21 to ffeed0c Compare March 19, 2026 15:39
stainless-app Bot added 2 commits March 23, 2026 12:40
Note that we still want to run tests, as these depend on the metadata.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from ffeed0c to 6ebd591 Compare March 24, 2026 15:19
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 6ebd591 to 8e8f7a0 Compare March 26, 2026 19:26
@stainless-app stainless-app Bot changed the title release: 0.3.1 release: 0.4.0 Mar 26, 2026
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 8e8f7a0 to cb3d817 Compare March 26, 2026 19:26
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from cb3d817 to d9a10c4 Compare April 7, 2026 16:12
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from d9a10c4 to 9100b7b Compare April 10, 2026 14:57
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from a2b7d24 to 9ab319a Compare May 11, 2026 17:42
Pin all GitHub Actions referenced in generated workflows (both
first-party `actions/*` and third-party) to immutable commit SHAs.
Updating pinned actions is now a deliberate codegen-side bump rather
than implicit on every workflow run.
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9ab319a to 4e67a97 Compare May 12, 2026 19:12
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from 7032f5b to 7f95aae Compare May 15, 2026 19:02
@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 15, 2026

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7f95aae to 25daf08 Compare May 15, 2026 19:03
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 25daf08 to 9b3889d Compare May 15, 2026 19:04
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9b3889d to 96010bc Compare May 15, 2026 19:04
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from 94289fd to 392474e Compare May 15, 2026 19:06
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 392474e to ae719d9 Compare May 15, 2026 19:09
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from ae719d9 to 683eeda Compare May 15, 2026 19:10
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 683eeda to 9622b27 Compare May 15, 2026 19:10
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9622b27 to a3c5349 Compare May 15, 2026 19:10
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from a3c5349 to 2e1e09c Compare May 15, 2026 19:11
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the Cursor GitHub App does not have access to this repository. If the app is installed on your organization with "selected repositories", make sure this repository is included in the selection.

Reviewed by Cursor Bugbot for commit 2e1e09c. Configure here.

source_type: Any,
handler: GetCoreSchemaHandler,
) -> CoreSchema:
(item_type,) = get_args(source_type) or (Any,)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

EagerIterable schema generation unpacks too many values

High Severity

In _EagerIterable.__get_pydantic_core_schema__, the line (item_type,) = get_args(source_type) or (Any,) assumes source_type has exactly one type argument. When Pydantic v2 invokes this method with metadata from Annotated[Iterable[int], _EagerIterable], the source_type is the full Annotated type and get_args returns (Iterable[int], _EagerIterable) — two elements. The single-element tuple unpacking raises a ValueError: too many values to unpack, breaking schema generation for any model using EagerIterable[T].

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 2e1e09c. Configure here.

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