Skip to content

Commit 84a46e5

Browse files
aaronsteersdevin-ai-integration[bot]octavia-bot[bot]
authored
Do not merge: experiment — overlay rename RowFilteringOperationNot to fix model_rebuild bug (#184)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: octavia-bot[bot] <octavia-bot[bot]@users.noreply.github.com>
1 parent a1d6b45 commit 84a46e5

7 files changed

Lines changed: 74 additions & 31 deletions

File tree

.speakeasy/workflow.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ sources:
88
airbyte-api:
99
inputs:
1010
- location: https://raw.githubusercontent.com/airbytehq/airbyte-platform/refs/heads/main/airbyte-api/server-api/src/main/openapi/api_sdk.yaml
11-
# Uncomment when the overlay has real actions (empty overlays produce
12-
# an empty document in Speakeasy CLI, which fails linting):
13-
# overlays:
14-
# - location: ./overlays/python_speakeasy.yaml
11+
overlays:
12+
- location: ./overlays/python_speakeasy.yaml
1513
registry:
1614
location: registry.speakeasyapi.dev/airbyte/airbyte-prod/my-source
1715
targets:

docs/models/rowfilteringoperation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
value: models.RowFilteringOperationEqual = /* values here */
1010
```
1111

12-
### `models.RowFilteringOperationNot1`
12+
### `models.RowFilteringOperationNot`
1313

1414
```python
15-
value: models.RowFilteringOperationNot1 = /* values here */
15+
value: models.RowFilteringOperationNot = /* values here */
1616
```
1717

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# RowFilteringOperationNot
2+
3+
4+
## Fields
5+
6+
| Field | Type | Required | Description |
7+
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
8+
| `conditions` | List[[models.RowFilteringOperationEqual](../models/rowfilteringoperationequal.md)] | :heavy_check_mark: | Conditions to evaluate with the NOT operator. |
9+
| `type` | [models.RowFilteringOperationType](../models/rowfilteringoperationtype.md) | :heavy_check_mark: | N/A |

overlays/python_speakeasy.yaml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
# Speakeasy overlay for Python SDK-specific customizations.
22
# Applied on top of the upstream API spec before code generation.
3-
#
4-
# This file is currently a no-op placeholder. Add overlay actions here
5-
# when Python SDK-specific schema tweaks are needed.
6-
#
73
# See: https://www.speakeasy.com/docs/customize-sdks/overlays
84

95
overlay: 1.0.0
106
info:
117
title: Python SDK Overlay
12-
version: 0.0.0
13-
actions: []
8+
version: 0.0.1
9+
actions:
10+
# Workaround for Speakeasy circular-ref model_rebuild() bug.
11+
# See: https://github.com/airbytehq/airbyte-api-python-sdk/issues/186
12+
#
13+
# Break the circular $ref: RowFilteringOperationNot.conditions references
14+
# RowFilteringOperation, which references RowFilteringOperationNot again.
15+
# This causes Speakeasy to use TYPE_CHECKING imports and miss model_rebuild()
16+
# calls for dependent models (ConnectionResponse, StreamConfigurations, etc.).
17+
#
18+
# Fix: point conditions.items directly at RowFilteringOperationEqual,
19+
# removing the recursion. NOT(NOT(x)) = x, so nested NOT is redundant.
20+
- target: "$.components.schemas.RowFilteringOperationNot.properties.conditions.items"
21+
update:
22+
$ref: "#/components/schemas/RowFilteringOperationEqual"

src/airbyte_api/models/__init__.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
22

3-
from .rowfilteringoperation import RowFilteringOperation, RowFilteringOperationTypedDict
4-
from .rowfilteringoperationnot_1 import (
5-
RowFilteringOperationNot1,
6-
RowFilteringOperationNot1TypedDict,
7-
)
83
from typing import Any, TYPE_CHECKING
94

105
from airbyte_api.utils.dynamic_imports import lazy_getattr, lazy_dir
@@ -1604,10 +1599,18 @@
16041599
RowFilteringMapperConfiguration,
16051600
RowFilteringMapperConfigurationTypedDict,
16061601
)
1602+
from .rowfilteringoperation import (
1603+
RowFilteringOperation,
1604+
RowFilteringOperationTypedDict,
1605+
)
16071606
from .rowfilteringoperationequal import (
16081607
RowFilteringOperationEqual,
16091608
RowFilteringOperationEqualTypedDict,
16101609
)
1610+
from .rowfilteringoperationnot import (
1611+
RowFilteringOperationNot,
1612+
RowFilteringOperationNotTypedDict,
1613+
)
16111614
from .rowfilteringoperationtype import RowFilteringOperationType
16121615
from .salesforce import Salesforce, SalesforceTypedDict
16131616
from .scheduletypeenum import ScheduleTypeEnum
@@ -4923,9 +4926,7 @@
49234926
ZendeskTalkCredentials,
49244927
ZendeskTalkCredentialsTypedDict,
49254928
ZendeskTalkTypedDict,
4926-
) # Pydantic models with forward references
4927-
RowFilteringOperationNot1.model_rebuild()
4928-
4929+
)
49294930

49304931
__all__ = [
49314932
"APIAccessToken",
@@ -7088,8 +7089,8 @@
70887089
"RowFilteringOperation",
70897090
"RowFilteringOperationEqual",
70907091
"RowFilteringOperationEqualTypedDict",
7091-
"RowFilteringOperationNot1",
7092-
"RowFilteringOperationNot1TypedDict",
7092+
"RowFilteringOperationNot",
7093+
"RowFilteringOperationNotTypedDict",
70937094
"RowFilteringOperationType",
70947095
"RowFilteringOperationTypedDict",
70957096
"Rss",
@@ -11032,8 +11033,12 @@
1103211033
"ResourceRequirementsTypedDict": ".resourcerequirements",
1103311034
"RowFilteringMapperConfiguration": ".rowfilteringmapperconfiguration",
1103411035
"RowFilteringMapperConfigurationTypedDict": ".rowfilteringmapperconfiguration",
11036+
"RowFilteringOperation": ".rowfilteringoperation",
11037+
"RowFilteringOperationTypedDict": ".rowfilteringoperation",
1103511038
"RowFilteringOperationEqual": ".rowfilteringoperationequal",
1103611039
"RowFilteringOperationEqualTypedDict": ".rowfilteringoperationequal",
11040+
"RowFilteringOperationNot": ".rowfilteringoperationnot",
11041+
"RowFilteringOperationNotTypedDict": ".rowfilteringoperationnot",
1103711042
"RowFilteringOperationType": ".rowfilteringoperationtype",
1103811043
"Salesforce": ".salesforce",
1103911044
"SalesforceTypedDict": ".salesforce",

src/airbyte_api/models/rowfilteringoperation.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,26 @@
55
RowFilteringOperationEqual,
66
RowFilteringOperationEqualTypedDict,
77
)
8+
from .rowfilteringoperationnot import (
9+
RowFilteringOperationNot,
10+
RowFilteringOperationNotTypedDict,
11+
)
812
from airbyte_api.utils import get_discriminator
913
from pydantic import Discriminator, Tag
10-
from typing import TYPE_CHECKING, Union
14+
from typing import Union
1115
from typing_extensions import Annotated, TypeAliasType
1216

13-
if TYPE_CHECKING:
14-
from .rowfilteringoperationnot_1 import (
15-
RowFilteringOperationNot1,
16-
RowFilteringOperationNot1TypedDict,
17-
)
18-
1917

2018
RowFilteringOperationTypedDict = TypeAliasType(
2119
"RowFilteringOperationTypedDict",
22-
Union["RowFilteringOperationNot1TypedDict", RowFilteringOperationEqualTypedDict],
20+
Union[RowFilteringOperationNotTypedDict, RowFilteringOperationEqualTypedDict],
2321
)
2422

2523

2624
RowFilteringOperation = Annotated[
2725
Union[
2826
Annotated[RowFilteringOperationEqual, Tag("EQUAL")],
29-
Annotated["RowFilteringOperationNot1", Tag("NOT")],
27+
Annotated[RowFilteringOperationNot, Tag("NOT")],
3028
],
3129
Discriminator(lambda m: get_discriminator(m, "type", "type")),
3230
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2+
3+
from __future__ import annotations
4+
from .rowfilteringoperationequal import (
5+
RowFilteringOperationEqual,
6+
RowFilteringOperationEqualTypedDict,
7+
)
8+
from .rowfilteringoperationtype import RowFilteringOperationType
9+
from airbyte_api.types import BaseModel
10+
from typing import List
11+
from typing_extensions import TypedDict
12+
13+
14+
class RowFilteringOperationNotTypedDict(TypedDict):
15+
conditions: List[RowFilteringOperationEqualTypedDict]
16+
r"""Conditions to evaluate with the NOT operator."""
17+
type: RowFilteringOperationType
18+
19+
20+
class RowFilteringOperationNot(BaseModel):
21+
conditions: List[RowFilteringOperationEqual]
22+
r"""Conditions to evaluate with the NOT operator."""
23+
24+
type: RowFilteringOperationType

0 commit comments

Comments
 (0)