From 116e321b64ef73ff8dcc50be7cb4918444807d7f Mon Sep 17 00:00:00 2001 From: Musa Jundi Date: Fri, 24 Apr 2026 05:46:24 -0500 Subject: [PATCH] fix: resolve type errors and Pydantic failures from codegen overwrites - asset_create_params: restore missing Required import - organization_profile: inline Result type alias from deleted module - ai/to_markdown: add type-checker suppression for files kwarg in _get_api_list; fix mypy comment placement on call site - radar/ai/to_markdown: fix mypy comment placement on call site - pipelines params (sink_create_params, stream_create_params): restore TypedDict base class on SchemaFieldStruct/SchemaFieldList with object for recursive field refs to avoid Pydantic schema generation errors - pipelines responses (6 files): add BaseModel base class, type discriminator, and standard fields to SchemaFieldStruct/SchemaFieldList stubs with object for recursive refs All fixes address codegen overwrites of manual patches from earlier commits (1c415a2dd, f280942f4). --- src/cloudflare/resources/ai/to_markdown.py | 8 ++--- .../organizations/organization_profile.py | 2 +- .../resources/radar/ai/to_markdown.py | 8 ++--- .../types/ai/finetunes/asset_create_params.py | 2 +- .../types/pipelines/sink_create_params.py | 30 +++++++++++++++---- .../types/pipelines/sink_create_response.py | 28 ++++++++++++++--- .../types/pipelines/sink_get_response.py | 28 ++++++++++++++--- .../types/pipelines/sink_list_response.py | 28 ++++++++++++++--- .../types/pipelines/stream_create_params.py | 30 +++++++++++++++---- .../types/pipelines/stream_create_response.py | 28 ++++++++++++++--- .../types/pipelines/stream_get_response.py | 28 ++++++++++++++--- .../types/pipelines/stream_list_response.py | 28 ++++++++++++++--- .../test_organization_profile.py | 2 +- 13 files changed, 205 insertions(+), 45 deletions(-) diff --git a/src/cloudflare/resources/ai/to_markdown.py b/src/cloudflare/resources/ai/to_markdown.py index 92c71b86c7d..3f8d7a5e718 100644 --- a/src/cloudflare/resources/ai/to_markdown.py +++ b/src/cloudflare/resources/ai/to_markdown.py @@ -111,11 +111,11 @@ def transform( # sent to the server will contain a `boundary` parameter, e.g. # multipart/form-data; boundary=---abc-- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} - return self._get_api_list( + return self._get_api_list( # type: ignore[call-arg] path_template("/accounts/{account_id}/ai/tomarkdown", account_id=account_id), page=SyncSinglePage[ToMarkdownTransformResponse], body=maybe_transform(body, to_markdown_transform_params.ToMarkdownTransformParams), - files=files, + files=files, # pyright: ignore[reportCallIssue] options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -210,11 +210,11 @@ def transform( # sent to the server will contain a `boundary` parameter, e.g. # multipart/form-data; boundary=---abc-- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} - return self._get_api_list( + return self._get_api_list( # type: ignore[call-arg] path_template("/accounts/{account_id}/ai/tomarkdown", account_id=account_id), page=AsyncSinglePage[ToMarkdownTransformResponse], body=maybe_transform(body, to_markdown_transform_params.ToMarkdownTransformParams), - files=files, + files=files, # pyright: ignore[reportCallIssue] options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/cloudflare/resources/organizations/organization_profile.py b/src/cloudflare/resources/organizations/organization_profile.py index 1bf721d9640..63a8b06f707 100644 --- a/src/cloudflare/resources/organizations/organization_profile.py +++ b/src/cloudflare/resources/organizations/organization_profile.py @@ -19,7 +19,7 @@ from ..._wrappers import ResultWrapper from ..._base_client import make_request_options from ...types.organizations import organization_profile_update_params -from ...types.organizations.organization_profile_get_params import Result +from ...types.organizations.organization_profile import OrganizationProfile as Result __all__ = ["OrganizationProfileResource", "AsyncOrganizationProfileResource"] diff --git a/src/cloudflare/resources/radar/ai/to_markdown.py b/src/cloudflare/resources/radar/ai/to_markdown.py index e13a7c75b4c..67ce47c87e5 100644 --- a/src/cloudflare/resources/radar/ai/to_markdown.py +++ b/src/cloudflare/resources/radar/ai/to_markdown.py @@ -88,11 +88,11 @@ def create( # sent to the server will contain a `boundary` parameter, e.g. # multipart/form-data; boundary=---abc-- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} - return self._get_api_list( + return self._get_api_list( # type: ignore[call-arg] path_template("/accounts/{account_id}/ai/tomarkdown", account_id=account_id), page=SyncSinglePage[ToMarkdownCreateResponse], body=maybe_transform(body, to_markdown_create_params.ToMarkdownCreateParams), - files=extracted_files, # pyright: ignore[reportCallIssue] # type: ignore[call-arg] + files=extracted_files, # pyright: ignore[reportCallIssue] options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -156,11 +156,11 @@ def create( # sent to the server will contain a `boundary` parameter, e.g. # multipart/form-data; boundary=---abc-- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})} - return self._get_api_list( + return self._get_api_list( # type: ignore[call-arg] path_template("/accounts/{account_id}/ai/tomarkdown", account_id=account_id), page=AsyncSinglePage[ToMarkdownCreateResponse], body=maybe_transform(body, to_markdown_create_params.ToMarkdownCreateParams), - files=extracted_files, # pyright: ignore[reportCallIssue] # type: ignore[call-arg] + files=extracted_files, # pyright: ignore[reportCallIssue] options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/cloudflare/types/ai/finetunes/asset_create_params.py b/src/cloudflare/types/ai/finetunes/asset_create_params.py index ad11c25d1bd..dffc4f71692 100644 --- a/src/cloudflare/types/ai/finetunes/asset_create_params.py +++ b/src/cloudflare/types/ai/finetunes/asset_create_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing_extensions import TypedDict +from typing_extensions import Required, TypedDict from ...._types import FileTypes diff --git a/src/cloudflare/types/pipelines/sink_create_params.py b/src/cloudflare/types/pipelines/sink_create_params.py index 5834c220a62..ab16f0f536c 100644 --- a/src/cloudflare/types/pipelines/sink_create_params.py +++ b/src/cloudflare/types/pipelines/sink_create_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Union, Iterable, Optional +from typing import List, Union, Iterable, Optional from typing_extensions import Literal, Required, TypeAlias, TypedDict __all__ = [ @@ -290,12 +290,32 @@ class SchemaFieldJson(TypedDict, total=False): sql_name: str -class SchemaFieldStruct(total=False): - pass +class SchemaFieldStruct(TypedDict, total=False): + type: Required[Literal["struct"]] + metadata_key: Optional[str] + + name: str + + required: bool + + sql_name: str + + fields: Optional[List[object]] # recursive SchemaField + + +class SchemaFieldList(TypedDict, total=False): + type: Required[Literal["list"]] + + metadata_key: Optional[str] + + name: str + + required: bool + + sql_name: str -class SchemaFieldList(total=False): - pass + element: Optional[object] # recursive SchemaField SchemaField: TypeAlias = Union[ diff --git a/src/cloudflare/types/pipelines/sink_create_response.py b/src/cloudflare/types/pipelines/sink_create_response.py index 0d903fa1baf..0c29fde8f4a 100644 --- a/src/cloudflare/types/pipelines/sink_create_response.py +++ b/src/cloudflare/types/pipelines/sink_create_response.py @@ -276,12 +276,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/src/cloudflare/types/pipelines/sink_get_response.py b/src/cloudflare/types/pipelines/sink_get_response.py index 9541dbbb94d..bb2ecefaafa 100644 --- a/src/cloudflare/types/pipelines/sink_get_response.py +++ b/src/cloudflare/types/pipelines/sink_get_response.py @@ -264,12 +264,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/src/cloudflare/types/pipelines/sink_list_response.py b/src/cloudflare/types/pipelines/sink_list_response.py index fefd423ca39..a93b01a415d 100644 --- a/src/cloudflare/types/pipelines/sink_list_response.py +++ b/src/cloudflare/types/pipelines/sink_list_response.py @@ -264,12 +264,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/src/cloudflare/types/pipelines/stream_create_params.py b/src/cloudflare/types/pipelines/stream_create_params.py index 5c3a7448c1f..187dd3ea779 100644 --- a/src/cloudflare/types/pipelines/stream_create_params.py +++ b/src/cloudflare/types/pipelines/stream_create_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Union, Iterable, Optional +from typing import List, Union, Iterable, Optional from typing_extensions import Literal, Required, TypeAlias, TypedDict from ..._types import SequenceNotStr @@ -198,12 +198,32 @@ class SchemaFieldJson(TypedDict, total=False): sql_name: str -class SchemaFieldStruct(total=False): - pass +class SchemaFieldStruct(TypedDict, total=False): + type: Required[Literal["struct"]] + metadata_key: Optional[str] + + name: str + + required: bool + + sql_name: str + + fields: Optional[List[object]] # recursive SchemaField + + +class SchemaFieldList(TypedDict, total=False): + type: Required[Literal["list"]] + + metadata_key: Optional[str] + + name: str + + required: bool + + sql_name: str -class SchemaFieldList(total=False): - pass + element: Optional[object] # recursive SchemaField SchemaField: TypeAlias = Union[ diff --git a/src/cloudflare/types/pipelines/stream_create_response.py b/src/cloudflare/types/pipelines/stream_create_response.py index 8db4fcc1937..c262806cc8c 100644 --- a/src/cloudflare/types/pipelines/stream_create_response.py +++ b/src/cloudflare/types/pipelines/stream_create_response.py @@ -189,12 +189,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/src/cloudflare/types/pipelines/stream_get_response.py b/src/cloudflare/types/pipelines/stream_get_response.py index 7b9098819e2..b9dc8164270 100644 --- a/src/cloudflare/types/pipelines/stream_get_response.py +++ b/src/cloudflare/types/pipelines/stream_get_response.py @@ -189,12 +189,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/src/cloudflare/types/pipelines/stream_list_response.py b/src/cloudflare/types/pipelines/stream_list_response.py index a2d4540ef0b..a94b466a1ef 100644 --- a/src/cloudflare/types/pipelines/stream_list_response.py +++ b/src/cloudflare/types/pipelines/stream_list_response.py @@ -189,12 +189,32 @@ class SchemaFieldJson(BaseModel): sql_name: Optional[str] = None -class SchemaFieldStruct: - pass +class SchemaFieldStruct(BaseModel): + type: Literal["struct"] + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None + + fields: Optional[List[object]] = None # recursive SchemaField + + +class SchemaFieldList(BaseModel): + type: Literal["list"] + + metadata_key: Optional[str] = None + + name: Optional[str] = None + + required: Optional[bool] = None + + sql_name: Optional[str] = None -class SchemaFieldList: - pass + element: Optional[object] = None # recursive SchemaField SchemaField: TypeAlias = Annotated[ diff --git a/tests/api_resources/organizations/test_organization_profile.py b/tests/api_resources/organizations/test_organization_profile.py index 769bf2368a8..6061ec9c426 100644 --- a/tests/api_resources/organizations/test_organization_profile.py +++ b/tests/api_resources/organizations/test_organization_profile.py @@ -9,7 +9,7 @@ from cloudflare import Cloudflare, AsyncCloudflare from tests.utils import assert_matches_type -from cloudflare.types.organizations.organization_profile_get_params import Result +from cloudflare.types.organizations.organization_profile import OrganizationProfile as Result base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")