@@ -125,6 +125,7 @@ pub struct RuntimeTracer {
125125 pub ( super ) io : IoCoordinator ,
126126 pub ( super ) filter : FilterCoordinator ,
127127 pub ( super ) module_names : ModuleIdentityCache ,
128+ pub ( super ) module_name_from_globals : bool ,
128129 session_exit : SessionExitState ,
129130}
130131
@@ -135,6 +136,7 @@ impl RuntimeTracer {
135136 format : TraceEventsFileFormat ,
136137 activation_path : Option < & Path > ,
137138 trace_filter : Option < Arc < TraceFilterEngine > > ,
139+ module_name_from_globals : bool ,
138140 ) -> Self {
139141 let mut writer = NonStreamingTraceWriter :: new ( program, args) ;
140142 writer. set_format ( format) ;
@@ -147,6 +149,7 @@ impl RuntimeTracer {
147149 io : IoCoordinator :: new ( ) ,
148150 filter : FilterCoordinator :: new ( trace_filter) ,
149151 module_names : ModuleIdentityCache :: new ( ) ,
152+ module_name_from_globals,
150153 session_exit : SessionExitState :: default ( ) ,
151154 }
152155 }
@@ -231,7 +234,10 @@ impl RuntimeTracer {
231234 code : & CodeObjectWrapper ,
232235 allow_disable : bool ,
233236 ) -> Option < CallbackOutcome > {
234- let is_active = self . lifecycle . activation_mut ( ) . should_process_event ( py, code) ;
237+ let is_active = self
238+ . lifecycle
239+ . activation_mut ( )
240+ . should_process_event ( py, code) ;
235241 if matches ! (
236242 self . should_trace_code( py, code) ,
237243 TraceDecision :: SkipAndDisable
@@ -290,6 +296,12 @@ impl RuntimeTracer {
290296 }
291297
292298 fn derive_module_name ( & self , py : Python < ' _ > , code : & CodeObjectWrapper ) -> Option < String > {
299+ if self . module_name_from_globals {
300+ if let Some ( name) = self . filter . module_name_hint ( code. id ( ) ) {
301+ return Some ( name) ;
302+ }
303+ }
304+
293305 let resolution = self . filter . cached_resolution ( code. id ( ) ) ;
294306 if let Some ( resolution) = resolution. as_ref ( ) {
295307 let hints = ModuleNameHints {
@@ -388,8 +400,14 @@ mod tests {
388400 #[ test]
389401 fn skips_synthetic_filename_events ( ) {
390402 Python :: with_gil ( |py| {
391- let mut tracer =
392- RuntimeTracer :: new ( "test.py" , & [ ] , TraceEventsFileFormat :: Json , None , None ) ;
403+ let mut tracer = RuntimeTracer :: new (
404+ "test.py" ,
405+ & [ ] ,
406+ TraceEventsFileFormat :: Json ,
407+ None ,
408+ None ,
409+ false ,
410+ ) ;
393411 ensure_test_module ( py) ;
394412 let script = format ! ( "{PRELUDE}\n snapshot()\n " ) ;
395413 {
@@ -485,6 +503,7 @@ result = compute()\n"
485503 TraceEventsFileFormat :: Json ,
486504 Some ( script_path. as_path ( ) ) ,
487505 None ,
506+ false ,
488507 ) ;
489508
490509 {
@@ -536,6 +555,7 @@ result = compute()\n"
536555 TraceEventsFileFormat :: Json ,
537556 None ,
538557 None ,
558+ false ,
539559 ) ;
540560 let store = tracer. line_snapshot_store ( ) ;
541561
@@ -612,6 +632,7 @@ result = compute()\n"
612632 TraceEventsFileFormat :: Json ,
613633 None ,
614634 None ,
635+ false ,
615636 ) ;
616637 let outputs = TraceOutputPaths :: new ( tmp. path ( ) , TraceEventsFileFormat :: Json ) ;
617638 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
@@ -705,6 +726,7 @@ result = compute()\n"
705726 TraceEventsFileFormat :: Json ,
706727 None ,
707728 None ,
729+ false ,
708730 ) ;
709731 let outputs = TraceOutputPaths :: new ( tmp. path ( ) , TraceEventsFileFormat :: Json ) ;
710732 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
@@ -812,6 +834,7 @@ result = compute()\n"
812834 TraceEventsFileFormat :: Json ,
813835 None ,
814836 None ,
837+ false ,
815838 ) ;
816839 let outputs = TraceOutputPaths :: new ( tmp. path ( ) , TraceEventsFileFormat :: Json ) ;
817840 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
@@ -1066,8 +1089,14 @@ def start_call():
10661089
10671090 fn run_traced_script ( body : & str ) -> Vec < Snapshot > {
10681091 Python :: with_gil ( |py| {
1069- let mut tracer =
1070- RuntimeTracer :: new ( "test.py" , & [ ] , TraceEventsFileFormat :: Json , None , None ) ;
1092+ let mut tracer = RuntimeTracer :: new (
1093+ "test.py" ,
1094+ & [ ] ,
1095+ TraceEventsFileFormat :: Json ,
1096+ None ,
1097+ None ,
1098+ false ,
1099+ ) ;
10711100 ensure_test_module ( py) ;
10721101 let tmp = tempfile:: tempdir ( ) . expect ( "create temp dir" ) ;
10731102 let script_path = tmp. path ( ) . join ( "script.py" ) ;
@@ -1191,6 +1220,7 @@ sensitive("s3cr3t")
11911220 TraceEventsFileFormat :: Json ,
11921221 None ,
11931222 Some ( engine) ,
1223+ false ,
11941224 ) ;
11951225
11961226 {
@@ -1297,8 +1327,14 @@ sensitive("s3cr3t")
12971327 . call_method1 ( "insert" , ( 0 , pkg_root. to_string_lossy ( ) . as_ref ( ) ) )
12981328 . expect ( "insert temp root" ) ;
12991329
1300- let tracer =
1301- RuntimeTracer :: new ( "runner.py" , & [ ] , TraceEventsFileFormat :: Json , None , None ) ;
1330+ let tracer = RuntimeTracer :: new (
1331+ "runner.py" ,
1332+ & [ ] ,
1333+ TraceEventsFileFormat :: Json ,
1334+ None ,
1335+ None ,
1336+ false ,
1337+ ) ;
13021338
13031339 let builtins = py. import ( "builtins" ) . expect ( "builtins" ) ;
13041340 let compile = builtins. getattr ( "compile" ) . expect ( "compile builtin" ) ;
@@ -1361,6 +1397,7 @@ dropper()
13611397 TraceEventsFileFormat :: Json ,
13621398 None ,
13631399 Some ( engine) ,
1400+ false ,
13641401 ) ;
13651402
13661403 {
@@ -1448,6 +1485,7 @@ initializer("omega")
14481485 TraceEventsFileFormat :: Json ,
14491486 None ,
14501487 Some ( engine) ,
1488+ false ,
14511489 ) ;
14521490
14531491 {
@@ -1501,6 +1539,7 @@ initializer("omega")
15011539 TraceEventsFileFormat :: Json ,
15021540 None ,
15031541 None ,
1542+ false ,
15041543 ) ;
15051544 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
15061545 tracer. record_exit_status ( Some ( 7 ) ) ;
@@ -1607,6 +1646,7 @@ sensitive("s3cr3t")
16071646 TraceEventsFileFormat :: Json ,
16081647 None ,
16091648 Some ( engine) ,
1649+ false ,
16101650 ) ;
16111651 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
16121652
@@ -2163,6 +2203,7 @@ snapshot()
21632203 TraceEventsFileFormat :: Json ,
21642204 None ,
21652205 None ,
2206+ false ,
21662207 ) ;
21672208 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
21682209
@@ -2197,6 +2238,7 @@ snapshot()
21972238 TraceEventsFileFormat :: Json ,
21982239 None ,
21992240 None ,
2241+ false ,
22002242 ) ;
22012243 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
22022244 tracer. mark_failure ( ) ;
@@ -2241,6 +2283,7 @@ snapshot()
22412283 TraceEventsFileFormat :: Json ,
22422284 None ,
22432285 None ,
2286+ false ,
22442287 ) ;
22452288 tracer. begin ( & outputs, 1 ) . expect ( "begin tracer" ) ;
22462289 tracer. mark_failure ( ) ;
0 commit comments