@@ -107,11 +107,21 @@ def _detect_base_from_push_event(ev: dict[str, typing.Any]) -> str | None:
107107 return None
108108
109109
110+ ReferencesSource = typing .Literal [
111+ "manual" ,
112+ "merge_queue" ,
113+ "fallback_last_commit" ,
114+ "github_event_other" ,
115+ "github_event_pull_request" ,
116+ "github_event_push" ,
117+ ]
118+
119+
110120@dataclasses .dataclass
111121class References :
112122 base : str | None
113123 head : str
114- is_merge_queue : bool
124+ source : ReferencesSource
115125
116126 def maybe_write_to_github_outputs (self ) -> None :
117127 gha = os .environ .get ("GITHUB_OUTPUT" )
@@ -135,37 +145,41 @@ def detect() -> References:
135145 event_name , event = utils .get_github_event ()
136146 except utils .GitHubEventNotFoundError :
137147 # fallback to last commit
138- return References ("HEAD^" , "HEAD" , is_merge_queue = False )
148+ return References ("HEAD^" , "HEAD" , "fallback_last_commit" )
139149 else :
140150 if event_name in PULL_REQUEST_EVENTS :
141151 head = _detect_head_from_event (event ) or "HEAD"
142152 # 0) merge-queue PR override
143153 mq_sha = _detect_base_from_merge_queue_payload (event )
144154 if mq_sha :
145- return References (mq_sha , head , is_merge_queue = True )
155+ return References (mq_sha , head , "merge_queue" )
146156
147157 # 1) standard event payload
148158 event_sha = _detect_base_from_event (event )
149159 if event_sha :
150- return References (event_sha , head , is_merge_queue = False )
160+ return References (event_sha , head , "github_event_pull_request" )
151161
152162 # 2) standard event payload
153163 event_sha = _detect_default_branch_from_event (event )
154164 if event_sha :
155- return References (event_sha , head , is_merge_queue = False )
165+ return References (
166+ event_sha ,
167+ head ,
168+ "github_event_pull_request" ,
169+ )
156170
157171 elif event_name == "push" :
158172 head_sha = _detect_head_from_push_event (event ) or "HEAD"
159173 base_sha = _detect_base_from_push_event (event )
160174 if base_sha :
161- return References (base_sha , head_sha , is_merge_queue = False )
175+ return References (base_sha , head_sha , "github_event_push" )
162176
163177 event_sha = _detect_default_branch_from_event (event )
164178 if event_sha :
165- return References (event_sha , "HEAD" , is_merge_queue = False )
179+ return References (event_sha , "HEAD" , "github_event_push" )
166180
167181 else :
168- return References (None , "HEAD" , is_merge_queue = False )
182+ return References (None , "HEAD" , "github_event_other" )
169183
170184 msg = "Could not detect base SHA. Provide GITHUB_EVENT_NAME / GITHUB_EVENT_PATH."
171185 raise BaseNotFoundError (msg )
0 commit comments