Skip to content

Commit 2313e3f

Browse files
authored
Add public helper fns for event deferral (#364)
* add top level fire_or_defer_event fn * add top level fire_deferred events * add helper functions * Add changelog * remove warn_or_error_with_deferral
1 parent f249cf1 commit 2313e3f

3 files changed

Lines changed: 59 additions & 1 deletion

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Features
2+
body: Adds public helper functions for event deferral functionality
3+
time: 2026-04-22T02:25:44.929201+05:30
4+
custom:
5+
Author: ash2shukla
6+
Issue: "12339"

dbt_common/events/event_manager.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,21 @@ def fire_event(
171171
) -> None:
172172
...
173173

174+
def fire_or_defer_event(
175+
self,
176+
e: BaseEvent,
177+
event_group_type: EventGroupType = EventGroupType.DEFAULT,
178+
level: Optional[EventLevel] = None,
179+
node: Any = None,
180+
force_warn_or_error_handling: bool = False,
181+
) -> None:
182+
...
183+
184+
def fire_deferred_events(
185+
self, event_group_type: EventGroupType = EventGroupType.DEFAULT
186+
) -> None:
187+
...
188+
174189
def add_logger(self, config: LoggerConfig) -> None:
175190
...
176191

@@ -197,6 +212,21 @@ def fire_event(
197212
) -> None:
198213
self.event_history.append((e, level))
199214

215+
def fire_or_defer_event(
216+
self,
217+
e: BaseEvent,
218+
event_group_type: EventGroupType = EventGroupType.DEFAULT,
219+
level: Optional[EventLevel] = None,
220+
node: Any = None,
221+
force_warn_or_error_handling: bool = False,
222+
) -> None:
223+
raise NotImplementedError()
224+
225+
def fire_deferred_events(
226+
self, event_group_type: EventGroupType = EventGroupType.DEFAULT
227+
) -> None:
228+
raise NotImplementedError()
229+
200230
def add_logger(self, config: LoggerConfig) -> None:
201231
raise NotImplementedError()
202232

dbt_common/events/functions.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from dbt_common.helper_types import WarnErrorOptions, WarnErrorOptionsV2
55
from dbt_common.invocation import get_invocation_id
66
from dbt_common.utils.encoding import ForgivingJSONEncoder
7-
from dbt_common.events.base_types import BaseEvent, EventLevel, EventMsg
7+
from dbt_common.events.base_types import BaseEvent, EventLevel, EventMsg, EventGroupType
88
from dbt_common.events.logger import LoggerConfig, LineFormat
99
from dbt_common.exceptions import scrub_secrets, env_secrets
1010
from dbt_common.events.types import Note
@@ -144,6 +144,28 @@ def fire_event(
144144
)
145145

146146

147+
def fire_or_defer_event(
148+
e: BaseEvent,
149+
level: Optional[EventLevel] = None,
150+
node: Any = None,
151+
force_warn_or_error_handling: bool = False,
152+
event_group_type: EventGroupType = EventGroupType.DEFAULT,
153+
) -> None:
154+
get_event_manager().fire_or_defer_event(
155+
e,
156+
level=level,
157+
node=node,
158+
force_warn_or_error_handling=force_warn_or_error_handling,
159+
event_group_type=event_group_type,
160+
)
161+
162+
163+
def fire_deferred_events(
164+
event_group_type: EventGroupType = EventGroupType.DEFAULT,
165+
) -> None:
166+
get_event_manager().fire_deferred_events(event_group_type=event_group_type)
167+
168+
147169
def get_metadata_vars() -> Dict[str, str]:
148170
global metadata_vars
149171
if metadata_vars is None:

0 commit comments

Comments
 (0)