Skip to content

Release v1.0.81#43

Closed
roeai-release-bot[bot] wants to merge 1 commit into
mainfrom
release-sdk-python-1-0-81-b5e92f34e243e44a5eb5dfb0a6322544b9397ce9
Closed

Release v1.0.81#43
roeai-release-bot[bot] wants to merge 1 commit into
mainfrom
release-sdk-python-1-0-81-b5e92f34e243e44a5eb5dfb0a6322544b9397ce9

Conversation

@roeai-release-bot
Copy link
Copy Markdown

This PR updates the Python SDK for release 1.0.81.

Generated from:

  • roe-main release branch 1-0-81
  • roe-main commit b5e92f34e243e44a5eb5dfb0a6322544b9397ce9

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 26, 2026

Greptile Summary

This release (v1.0.81) adds three new generated API endpoints — GET /v1/agents/models/, GET /v1/agents/types/, and POST /v1/tables/upload/ — along with their corresponding request/response model classes, and corrects a version number typo (1.0.8011.0.81).

  • New discovery endpoints: discovery_supported_models_list and discovery_agent_engine_types_list expose tenant-agnostic metadata about supported LLM models and agent engine types; both sync and async variants are generated correctly.
  • New table upload endpoint: upload_table handles multipart CSV uploads via TableUploadRequest.to_multipart(); the model handles optional organization_id (UUID or null) and with_headers fields.
  • Generator artifacts: Several generated files contain duplicate imports (from typing import cast, from ..types import UNSET, Unset) and an unused from urllib.parse import quote import — cosmetic issues that do not affect runtime behavior.

Confidence Score: 4/5

Safe to merge — all changes are generated code adding new endpoints and models with no modifications to existing functionality.

The only issues found are duplicate and unused imports produced by the code generator; they have no effect on runtime correctness. The UUID encoding inconsistency in to_multipart() is benign because httpx accepts both str and bytes for multipart fields. Core logic, schema alignment, and model (de)serialization are all correct.

The generated files under src/roe/_generated/api/ and src/roe/_generated/models/table_upload_request.py have minor generator artifacts noted above, but none require changes before merging.

Important Files Changed

Filename Overview
openapi/openapi.yml Adds three new endpoints: GET /v1/agents/models/, GET /v1/agents/types/, and POST /v1/tables/upload/ with corresponding request/response schemas. Definitions look well-formed and required fields are correctly declared.
pyproject.toml Version corrected from the erroneous 1.0.801 to 1.0.81; uv.lock updated to match.
src/roe/_generated/api/discovery/discovery_agent_engine_types_list.py New generated endpoint for GET /v1/agents/types/. Contains a duplicate from typing import cast import and an unused from urllib.parse import quote import; logic is otherwise correct.
src/roe/_generated/api/discovery/discovery_supported_models_list.py New generated endpoint for GET /v1/agents/models/ with optional capability query param. Has duplicate UNSET import and unused quote import; capability filtering logic is correct.
src/roe/_generated/api/tables/upload_table.py New generated endpoint for POST /v1/tables/upload/ using multipart form data. Unused quote import present; parses both 201 and 400 responses correctly.
src/roe/_generated/models/table_upload_request.py New TableUploadRequest model with multipart serialization. Has a duplicate UNSET import and the UUID branch of to_multipart() passes a plain str where all other branches pass bytes.
src/roe/_generated/models/table_upload_response.py New TableUploadResponse model; duplicate UNSET import is present but logic is correct.
src/roe/_generated/models/agent_engine_type_list.py New AgentEngineTypeList model; serialization and deserialization look correct.
src/roe/_generated/models/supported_llm_model.py New SupportedLLMModel model with all fields from the OpenAPI schema; from_dict / to_dict are complete and correct.
src/roe/_generated/models/supported_llm_model_list.py New SupportedLLMModelList model; correctly nests SupportedLLMModel items via from_dict.
src/roe/_generated/models/agent_engine_type_list_engines_item.py New AgentEngineTypeListEnginesItem model; fully dynamic (additionalProperties only) matching the schema definition.
src/roe/_generated/models/init.py Correctly exports all four new model classes and adds them to all.

Sequence Diagram

sequenceDiagram
    participant User
    participant SDK
    participant API

    User->>SDK: discovery.sync(client) / asyncio(client)
    SDK->>API: GET /v1/agents/types/
    API-->>SDK: 200 AgentEngineTypeList
    SDK-->>User: AgentEngineTypeList

    User->>SDK: "discovery_supported_models_list.sync(client, capability=...)"
    SDK->>API: "GET /v1/agents/models/?capability=..."
    API-->>SDK: 200 SupportedLLMModelList
    SDK-->>User: SupportedLLMModelList

    User->>SDK: "upload_table.sync(client, body=TableUploadRequest)"
    SDK->>SDK: body.to_multipart() → multipart files
    SDK->>API: POST /v1/tables/upload/ (multipart/form-data)
    API-->>SDK: 201 TableUploadResponse
    API-->>SDK: 400 ErrorResponse
    SDK-->>User: "TableUploadResponse | ErrorResponse | None"
Loading

Fix All in Claude Code

Reviews (1): Last reviewed commit: "Release v1.0.81" | Re-trigger Greptile

Comment on lines +7 to +11
from ...client import AuthenticatedClient, Client
from ...types import Response, UNSET
from ... import errors

from ...models.agent_engine_type_list import AgentEngineTypeList
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Duplicate cast import

from typing import cast appears twice in this file (once bundled inside from typing import Any, cast and again as a standalone import on line 11). While Python silently ignores duplicate imports, this is a generator artifact that adds noise and will confuse static-analysis tools. The same pattern appears in discovery_supported_models_list.py (duplicate from ...types import UNSET) and table_upload_request.py (duplicate from ..types import UNSET, Unset).

Fix in Claude Code

@@ -0,0 +1,166 @@
from http import HTTPStatus
from typing import Any, cast
from urllib.parse import quote
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Unused quote import

from urllib.parse import quote is imported but never referenced in this file. The same unused import also appears in discovery_supported_models_list.py and upload_table.py. These are likely scaffolding left over from the generator for endpoints that use path parameters; since none of these three endpoints have path segments that need URL-encoding, the import is dead code.

Fix in Claude Code

if not isinstance(self.organization_id, Unset):
if isinstance(self.organization_id, UUID):

files.append(("organization_id", (None, str(self.organization_id), "text/plain")))
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Inconsistent encoding for UUID in to_multipart

When organization_id is a UUID the value passed to httpx is a plain str, but every other branch in this method encodes values to bytes. httpx accepts both, so this won't hard-crash, but the inconsistency is a generator bug. Adding .encode() makes the output uniform and matches the else branch directly below.

Suggested change
files.append(("organization_id", (None, str(self.organization_id), "text/plain")))
files.append(("organization_id", (None, str(self.organization_id).encode(), "text/plain")))

Fix in Claude Code

@jadenfix
Copy link
Copy Markdown
Member

Closing per request.

@jadenfix jadenfix closed this May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants