Skip to content

Commit eacac4f

Browse files
committed
chore: type v1.Event chainable Set*() methods
The v1.Event self-returning Set*() methods like SetData() were returning BaseEvent, which doesn't declare the same Set* methods. As a result, chaining more than one Set* method would make the return type unknown. This was causing type errors in test_event_pipeline.py. The Set*() methods now return the Self type. Signed-off-by: Hal Blackburn <[email protected]>
1 parent e9b6301 commit eacac4f

File tree

1 file changed

+14
-9
lines changed
  • cloudevents/sdk/event

1 file changed

+14
-9
lines changed

cloudevents/sdk/event/v1.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@
1111
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1212
# License for the specific language governing permissions and limitations
1313
# under the License.
14+
from __future__ import annotations
15+
1416
import typing
1517

1618
from cloudevents.sdk.event import base, opt
1719

20+
if typing.TYPE_CHECKING:
21+
from typing_extensions import Self
22+
1823

1924
class Event(base.BaseEvent):
2025
_ce_required_fields = {"id", "source", "type", "specversion"}
@@ -79,39 +84,39 @@ def Extensions(self) -> dict:
7984
return {}
8085
return dict(result)
8186

82-
def SetEventType(self, eventType: str) -> base.BaseEvent:
87+
def SetEventType(self, eventType: str) -> Self:
8388
self.Set("type", eventType)
8489
return self
8590

86-
def SetSource(self, source: str) -> base.BaseEvent:
91+
def SetSource(self, source: str) -> Self:
8792
self.Set("source", source)
8893
return self
8994

90-
def SetEventID(self, eventID: str) -> base.BaseEvent:
95+
def SetEventID(self, eventID: str) -> Self:
9196
self.Set("id", eventID)
9297
return self
9398

94-
def SetEventTime(self, eventTime: typing.Optional[str]) -> base.BaseEvent:
99+
def SetEventTime(self, eventTime: typing.Optional[str]) -> Self:
95100
self.Set("time", eventTime)
96101
return self
97102

98-
def SetSubject(self, subject: typing.Optional[str]) -> base.BaseEvent:
103+
def SetSubject(self, subject: typing.Optional[str]) -> Self:
99104
self.Set("subject", subject)
100105
return self
101106

102-
def SetSchema(self, schema: typing.Optional[str]) -> base.BaseEvent:
107+
def SetSchema(self, schema: typing.Optional[str]) -> Self:
103108
self.Set("dataschema", schema)
104109
return self
105110

106-
def SetContentType(self, contentType: typing.Optional[str]) -> base.BaseEvent:
111+
def SetContentType(self, contentType: typing.Optional[str]) -> Self:
107112
self.Set("datacontenttype", contentType)
108113
return self
109114

110-
def SetData(self, data: typing.Optional[object]) -> base.BaseEvent:
115+
def SetData(self, data: typing.Optional[object]) -> Self:
111116
self.Set("data", data)
112117
return self
113118

114-
def SetExtensions(self, extensions: typing.Optional[dict]) -> base.BaseEvent:
119+
def SetExtensions(self, extensions: typing.Optional[dict]) -> Self:
115120
self.Set("extensions", extensions)
116121
return self
117122

0 commit comments

Comments
 (0)