trace_viz 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +34 -0
  3. data/README.md +130 -38
  4. data/examples/example.cast +285 -0
  5. data/examples/example.rb +94 -23
  6. data/lib/trace_viz/adapters/base_adapter.rb +0 -2
  7. data/lib/trace_viz/adapters/trace_point_adapter.rb +17 -11
  8. data/lib/trace_viz/collectors/base_collector.rb +83 -0
  9. data/lib/trace_viz/collectors/depth_manager.rb +37 -0
  10. data/lib/trace_viz/collectors/evaluators/base_evaluator.rb +23 -0
  11. data/lib/trace_viz/collectors/evaluators/filter_evaluator.rb +30 -0
  12. data/lib/trace_viz/collectors/evaluators/hidden_evaluator.rb +21 -0
  13. data/lib/trace_viz/collectors/filters/base_filter.rb +23 -0
  14. data/lib/trace_viz/collectors/filters/exclude_classes_filter.rb +28 -0
  15. data/lib/trace_viz/collectors/filters/exclude_default_classes_filter.rb +38 -0
  16. data/lib/trace_viz/collectors/filters/exclude_gems_filter.rb +30 -0
  17. data/lib/trace_viz/collectors/filters/exclude_internal_call_filter.rb +31 -0
  18. data/lib/trace_viz/collectors/filters/exclude_rails_framework_filter.rb +38 -0
  19. data/lib/trace_viz/collectors/filters/include_classes_filter.rb +28 -0
  20. data/lib/trace_viz/collectors/filters/include_gems_filter.rb +54 -0
  21. data/lib/trace_viz/collectors/filters/registry.rb +59 -0
  22. data/lib/trace_viz/collectors/matchers/trace_point_action_matcher.rb +36 -0
  23. data/lib/trace_viz/collectors/matchers/within_depth_matcher.rb +25 -0
  24. data/lib/trace_viz/collectors/trace_point_collector.rb +51 -0
  25. data/lib/trace_viz/collectors/trace_stats.rb +21 -0
  26. data/lib/trace_viz/config/copier.rb +38 -0
  27. data/lib/trace_viz/config/validator.rb +74 -0
  28. data/lib/trace_viz/configuration.rb +36 -30
  29. data/lib/trace_viz/context/config_context.rb +1 -1
  30. data/lib/trace_viz/context/manager.rb +17 -21
  31. data/lib/trace_viz/context/map.rb +29 -0
  32. data/lib/trace_viz/context/registry.rb +37 -0
  33. data/lib/trace_viz/context/tracking/active_calls.rb +37 -0
  34. data/lib/trace_viz/context/tracking_context.rb +7 -2
  35. data/lib/trace_viz/context.rb +2 -2
  36. data/lib/trace_viz/core/tracer.rb +1 -0
  37. data/lib/trace_viz/defaults.rb +139 -0
  38. data/lib/trace_viz/exporters/base_exporter.rb +84 -0
  39. data/lib/trace_viz/exporters/formatters/base_formatter.rb +12 -0
  40. data/lib/trace_viz/exporters/formatters/method_call_formatter.rb +21 -0
  41. data/lib/trace_viz/exporters/formatters/method_return_formatter.rb +22 -0
  42. data/lib/trace_viz/exporters/text_exporter.rb +15 -0
  43. data/lib/trace_viz/exporters/transformers/base_transformer.rb +25 -0
  44. data/lib/trace_viz/exporters/transformers/text_transformer.rb +28 -0
  45. data/lib/trace_viz/formatters/base_formatter.rb +42 -0
  46. data/lib/trace_viz/formatters/helpers/depth_helper.rb +21 -0
  47. data/lib/trace_viz/formatters/helpers/indent_helper.rb +15 -0
  48. data/lib/trace_viz/formatters/helpers/method_details_helper.rb +15 -0
  49. data/lib/trace_viz/formatters/helpers/params_helper.rb +26 -0
  50. data/lib/trace_viz/formatters/helpers/result_helper.rb +21 -0
  51. data/lib/trace_viz/formatters/helpers/source_helper.rb +21 -0
  52. data/lib/trace_viz/formatters/helpers/time_helper.rb +15 -0
  53. data/lib/trace_viz/logger.rb +37 -47
  54. data/lib/trace_viz/loggers/trace_builder.rb +30 -0
  55. data/lib/trace_viz/loggers/trace_formatters/base_formatter.rb +32 -0
  56. data/lib/trace_viz/loggers/trace_formatters/method_call_formatter.rb +21 -0
  57. data/lib/trace_viz/loggers/trace_formatters/method_return_formatter.rb +22 -0
  58. data/lib/trace_viz/loggers/trace_logger.rb +38 -0
  59. data/lib/trace_viz/loggers/trace_stats_logger.rb +33 -0
  60. data/lib/trace_viz/trace_data/base.rb +56 -0
  61. data/lib/trace_viz/trace_data/trace_point/base.rb +68 -0
  62. data/lib/trace_viz/trace_data/trace_point/method_call.rb +42 -0
  63. data/lib/trace_viz/trace_data/trace_point/method_return.rb +25 -0
  64. data/lib/trace_viz/trace_data/trace_point_builder.rb +23 -0
  65. data/lib/trace_viz/utils/colorize.rb +12 -23
  66. data/lib/trace_viz/utils/format_utils.rb +67 -0
  67. data/lib/trace_viz/version.rb +1 -1
  68. metadata +58 -13
  69. data/lib/trace_viz/adapters/trace_point/depth_manager.rb +0 -34
  70. data/lib/trace_viz/adapters/trace_point/event_handler.rb +0 -36
  71. data/lib/trace_viz/adapters/trace_point/trace_data.rb +0 -89
  72. data/lib/trace_viz/adapters/trace_point/trace_formatter.rb +0 -95
  73. data/lib/trace_viz/adapters/trace_point/trace_logger.rb +0 -44
  74. data/lib/trace_viz/context/manager/context_map.rb +0 -31
  75. data/lib/trace_viz/context/manager/context_operations.rb +0 -60
  76. data/lib/trace_viz/context/manager/context_registry.rb +0 -20
  77. data/lib/trace_viz/context/manager/context_validation.rb +0 -34
@@ -0,0 +1,285 @@
1
+ {"version": 2, "width": 212, "height": 59, "timestamp": 1735147257, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
2
+ [0.64568, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
3
+ [0.646231, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
4
+ [0.648024, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
5
+ [0.738818, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
6
+ [0.738961, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
7
+ [0.792791, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
8
+ [0.914575, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
9
+ [0.971096, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
10
+ [1.108353, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
11
+ [1.774491, "o", "\u001b[H\u001b[2J\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
12
+ [4.833607, "o", "b"]
13
+ [4.843204, "o", "\b\u001b[4mb\u001b[24m"]
14
+ [4.84343, "o", "\b\u001b[4mb\u001b[24m\u001b[90mat tmp/trace_output.txt\u001b[39m\u001b[23D"]
15
+ [5.002367, "o", "\b\u001b[4mb\u001b[39m\u001b[4ma\u001b[24m"]
16
+ [5.009045, "o", "\b\b\u001b[24m\u001b[1m\u001b[31mb\u001b[24m\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
17
+ [5.279827, "o", "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31ma\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"]
18
+ [5.28265, "o", "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32ma\u001b[0m\u001b[32mt\u001b[39m"]
19
+ [6.248245, "o", "\b\u001b[32mt\u001b[32m \u001b[39m"]
20
+ [6.250512, "o", "\b\b\u001b[32mt\u001b[39m\u001b[39m "]
21
+ [6.558669, "o", "\u001b[39me\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[19D"]
22
+ [6.561992, "o", "\b\u001b[4me\u001b[24m"]
23
+ [6.562225, "o", "\u001b[90mxamples/example.rb\u001b[39m\u001b[18D"]
24
+ [6.804794, "o", "\b\u001b[4me\u001b[39m\u001b[4mx\u001b[24m"]
25
+ [6.909949, "o", "\b\u001b[4mx\u001b[39m\u001b[4ma\u001b[24m"]
26
+ [7.634714, "o", "\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39ms\u001b[39m/\u001b[39me\u001b[39mx\u001b[39ma\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39m.\u001b[39mr\u001b[39mb"]
27
+ [7.636148, "o", "\u001b[17D\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4ms\u001b[4m/\u001b[4me\u001b[4mx\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4m.\u001b[4mr\u001b[4mb\u001b[24m"]
28
+ [7.99046, "o", "\u001b[?1l\u001b>"]
29
+ [7.990625, "o", "\u001b[?2004l"]
30
+ [7.993914, "o", "\r\r\n"]
31
+ [7.994761, "o", "\u001b]2;bat examples/example.rb\u0007\u001b]1;bat\u0007"]
32
+ [8.070849, "o", "\u001b[?1049h\u001b[?1h\u001b=\r\u001b[38;5;238m───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n \u001b[38;5;238m│ \u001b[0mFile: \u001b[1mexamples/example.rb\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┼────────────────────────────────────────────────────────────────────────────────────"]
33
+ [8.070997, "o", "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\u001b[38;5;238m 1\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;246;170;17m$\u001b[0m\u001b[38;2;255;255;255mLOAD_PATH\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242munshift\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;102;217;239mFile\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mexpand_path\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116m../lib\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239m__dir__\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 2\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mrequire\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mtrace_viz\u001b[0m\u001b[38;2;249;38;114m"]
34
+ [8.071099, "o", "\"\u001b[0m\u001b[m\r\n\u001b[38;5;238m 3\u001b[0m \u001b[31m_\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 4\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mclass\u001b[0m\u001b[38;2;166;226;46m \u001b[0m\u001b[4;38;2;102;217;239mCalculator\u001b[0m\u001b[m\r\n\u001b[38;5;238m 5\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;166;226;46m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17minitialize\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mfactor\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 6\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17m@\u001b[0m\u001b[38;2;255;255;255mfactor\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m factor\u001b[0m\u001b[m\r\n\u001b[38;5;238m 7\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 8\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 9\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m A method that triggers a chain of calculations\u001b[0m\u001b[m\r\n\u001b[38;5;238m 10\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[3"]
35
+ [8.071193, "o", "8;2;248;2"]
36
+ [8.071343, "o", "48;242m \u001b[0m\u001b[38;2;246;170;17mcalculate_chain\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31ma\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;253;151;31mb\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 11\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m sum \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m add\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242ma\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m b\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 12\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m scaled \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m scale\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242msum\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 13\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m complex_operation\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242mscaled\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 14\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 15\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 16\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0"]
37
+ [8.071405, "o", "m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Basic addition\u001b[0m\u001b[m\r\n\u001b[38;5;238m 17\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17madd\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mx\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;253;151;31my\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 18\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m05\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 19\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m x \u001b[0m\u001b[38;2;249;38;114m+\u001b[0m\u001b[38;2;248;248;242m y\u001b[0m\u001b[m\r\n\u001b[38;5;238m 20\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 21\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 22\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Scaling a number by the factor\u001b[0m\u001b[m\r\n\u001b[38;5;238m 23\u001b[0m \u001b[38;5;238m│\u001b"]
38
+ [8.071483, "o", "[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mscale\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mvalue\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 24\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m05\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 25\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m value \u001b[0m\u001b[38;2;249;38;114m*\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17m@\u001b[0m\u001b[38;2;255;255;255mfactor\u001b[0m\u001b[m\r\n\u001b[38;5;238m 26\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 27\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 28\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Complex operation involving another class\u001b[0m\u001b[m\r\n\u001b[38;5;238m 29\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mcomple"]
39
+ [8.071526, "o", "x_operation\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mvalue\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 30\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m05\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 31\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mLogger\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mlog\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mStarting complex operation\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 32\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m divider \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mDivider\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[m\r\n\u001b[38;5;238m 33\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m divider\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mdivide_and_process\u001b[0m\u001b[38;2;255;255;2"]
40
+ [8.071568, "o", "55m(\u001b[0m\u001b[38;2;248;"]
41
+ [8.071652, "o", "248;242mvalue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m2\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 34\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 35\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 36\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 37\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mclass\u001b[0m\u001b[38;2;166;226;46m \u001b[0m\u001b[4;38;2;102;217;239mDivider\u001b[0m\u001b[m\r\n\u001b[38;5;238m 38\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;166;226;46m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Divides a number and calls a nested method\u001b[0m\u001b[m\r\n\u001b[38;5;238m 39\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mdivide_and_process\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mvalue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;253;151;31mdivisor\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 40\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m result \u001b[0m\u001b[38;2;249;38;114m=\u001b"]
42
+ [8.071726, "o", "[0m\u001b[38;2;248;248;242m divide\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242mvalue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m divisor\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 41\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m process_divided_result\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242mresult\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 42\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 43\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 44\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Performs division\u001b[0m\u001b[m\r\n\u001b[38;5;238m 45\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mdivide\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31ma\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;253;151;31mb\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 46\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mraise\u001b[0m\u001b[38;2;248;248;242m \u001b["]
43
+ [8.071781, "o", "0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mDivision by zero!\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mif\u001b[0m\u001b[38;2;248;248;242m b\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mzero?\u001b[0m\u001b[m\r\n\u001b[38;5;238m 47\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 48\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m05\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 49\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m a \u001b[0m\u001b[38;2;249;38;114m/\u001b[0m\u001b[38;2;248;248;242m b\u001b[0m\u001b[m\r\n\u001b[38;5;238m 50\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n\u001b[38;5;238m 51\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 52\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m Processes the divided result further\u001b[0m\u001b[m\r\n\u001b[38;5;238m 53\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;"]
44
+ [8.071839, "o", "2;246;170;17mproc"]
45
+ [8.071868, "o", "ess_divided_result\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mvalue\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 54\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mLogger\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mlog\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mProcessing divided result: \u001b[0m\u001b[38;2;248;248;242m#{\u001b[0m\u001b[38;2;248;248;242mvalue\u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 55\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m nested_process\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;248;248;242mvalue\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
46
+ [10.116272, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
47
+ [10.116331, "o", "\u001b[38;5;238m 56\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
48
+ [10.146992, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
49
+ [10.147073, "o", "\u001b[38;5;238m 57\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n:\u001b[K"]
50
+ [10.163626, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 58\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;117;113;94m#\u001b[0m\u001b[38;2;117;113;94m A nested operation\u001b[0m\u001b[m\r\n:\u001b[K"]
51
+ [10.180272, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 59\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mnested_process\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mvalue\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
52
+ [10.196812, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
53
+ [10.19695, "o", "\u001b[38;5;238m 60\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m05\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
54
+ [10.215983, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
55
+ [10.216091, "o", "\u001b[38;5;238m 61\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mLogger\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mlog\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mFinal nested processing on \u001b[0m\u001b[38;2;248;248;242m#{\u001b[0m\u001b[38;2;248;248;242mvalue\u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
56
+ [10.239924, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
57
+ [10.240002, "o", "\u001b[38;5;238m 62\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m value \u001b[0m\u001b[38;2;249;38;114m+\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m10\u001b[0m\u001b[m\r\n:\u001b[K"]
58
+ [10.264725, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 63\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
59
+ [10.299632, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
60
+ [10.299742, "o", "\u001b[38;5;238m 64\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
61
+ [10.322251, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 65\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n:\u001b[K"]
62
+ [10.338525, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 66\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mclass\u001b[0m\u001b[38;2;166;226;46m \u001b[0m\u001b[4;38;2;102;217;239mLogger\u001b[0m\u001b[m\r\n:\u001b[K"]
63
+ [10.363229, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 67\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;166;226;46m \u001b[0m\u001b[38;2;249;38;114mdef\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;170;17mlog\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;253;151;31mmessage\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
64
+ [10.380024, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
65
+ [10.380178, "o", "\u001b[38;5;238m 68\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239msleep\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m0\u001b[0m\u001b[38;2;190;132;255m.\u001b[0m\u001b[38;2;190;132;255m01\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
66
+ [10.396664, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
67
+ [10.396691, "o", "\u001b[38;5;238m 69\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mputs\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116m[LOG] \u001b[0m\u001b[38;2;248;248;242m#{\u001b[0m\u001b[38;2;248;248;242mmessage\u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[m\r\n:\u001b[K"]
68
+ [10.413701, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 70\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
69
+ [10.430283, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
70
+ [10.430421, "o", "\u001b[38;5;238m 71\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
71
+ [10.43825, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
72
+ [10.438269, "o", "\u001b[38;5;238m 72\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n:\u001b[K"]
73
+ [10.4552, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 73\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;102;217;239mTraceViz\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mtrace\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[m\r\n:\u001b[K"]
74
+ [10.480994, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 74\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mgeneral\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
75
+ [10.496674, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
76
+ [10.496726, "o", "\u001b[38;5;238m 75\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtab_size\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m4\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
77
+ [10.522133, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 76\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_indent\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
78
+ [10.547977, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
79
+ [10.548062, "o", "\u001b[38;5;238m 77\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_depth\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
80
+ [10.571783, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
81
+ [10.571856, "o", "\u001b[38;5;238m 78\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mmax_display_depth\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m10\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
82
+ [10.606774, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 79\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_method_name\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
83
+ [10.648629, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 80\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
84
+ [10.690297, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
85
+ [10.690464, "o", "\u001b[38;5;238m 81\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mparams\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
86
+ [10.748575, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 82\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
87
+ [10.81526, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
88
+ [10.815404, "o", "\u001b[38;5;238m 83\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mmode\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mname_and_value\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
89
+ [10.983258, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
90
+ [10.983377, "o", "\u001b[38;5;238m 84\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtruncate_values\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m10\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
91
+ [11.038736, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
92
+ [11.038815, "o", "\u001b[38;5;238m 85\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
93
+ [11.113697, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
94
+ [11.113753, "o", "\u001b[38;5;238m 86\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mresult\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
95
+ [11.175071, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
96
+ [11.175183, "o", "\u001b[38;5;238m 87\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
97
+ [11.231143, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
98
+ [11.231272, "o", "\u001b[38;5;238m 88\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtruncate_length\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m5\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
99
+ [11.291343, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
100
+ [11.291782, "o", "\u001b[38;5;238m 89\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
101
+ [11.33122, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
102
+ [11.33132, "o", "\u001b[38;5;238m 90\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128msource_location\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
103
+ [11.365506, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
104
+ [11.365599, "o", "\u001b[38;5;238m 91\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
105
+ [11.38852, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
106
+ [11.388552, "o", "\u001b[38;5;238m 92\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mtruncate_length\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m20\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
107
+ [11.415886, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 93\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
108
+ [11.441992, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
109
+ [11.442039, "o", "\u001b[38;5;238m 94\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mexecution\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
110
+ [11.463644, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
111
+ [11.463706, "o", "\u001b[38;5;238m 95\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_time\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
112
+ [11.488566, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
113
+ [11.488692, "o", "\u001b[38;5;238m 96\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mshow_trace_events\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mcall\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mreturn\u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
114
+ [11.514954, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 97\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
115
+ [11.540246, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 98\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mfilters\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[m\r\n:\u001b[K"]
116
+ [11.554885, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
117
+ [11.554935, "o", "\u001b[38;5;238m 99\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mexclude_internal_call\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
118
+ [11.575981, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 100\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128minclude_classes\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
119
+ [11.588551, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
120
+ [11.588726, "o", "\u001b[38;5;238m 101\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mclasses\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m[\u001b[0m\u001b[38;2;102;217;239mCalculator\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mDivider\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mLogger\u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
121
+ [11.613292, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
122
+ [11.613409, "o", "\u001b[38;5;238m 102\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[m\r\n:\u001b[K"]
123
+ [11.649292, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
124
+ [11.649419, "o", "\u001b[38;5;238m 103\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m]\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
125
+ [11.672046, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 104\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mexport\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m{\u001b[0m\u001b[m\r\n:\u001b[K"]
126
+ [11.715235, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 105\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128menabled\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
127
+ [11.758306, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 106\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128mformat\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;246;240;128mtxt\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[m\r\n:\u001b[K"]
128
+ [11.858086, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
129
+ [11.858211, "o", "\u001b[38;5;238m 107\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;246;240;128moverwrite\u001b[0m\u001b[38;2;246;240;128m:\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;174;129;255mtrue\u001b[0m\u001b[m\r\n:\u001b[K"]
130
+ [11.89158, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
131
+ [11.892863, "o", "\u001b[38;5;238m 108\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[m\r\n:\u001b[K"]
132
+ [11.913246, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
133
+ [11.91337, "o", "\u001b[38;5;238m 109\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;255;255;255m)\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114mdo\u001b[0m\u001b[m\r\n:\u001b[K"]
134
+ [11.938248, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
135
+ [11.938413, "o", "\u001b[38;5;238m 110\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m calculator \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mCalculator\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;166;226;46mnew\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m3\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
136
+ [11.967097, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 111\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m result \u001b[0m\u001b[38;2;249;38;114m=\u001b[0m\u001b[38;2;248;248;242m calculator\u001b[0m\u001b[38;2;248;248;242m.\u001b[0m\u001b[38;2;248;248;242mcalculate_chain\u001b[0m\u001b[38;2;255;255;255m(\u001b[0m\u001b[38;2;190;132;255m10\u001b[0m\u001b[38;2;248;248;242m,\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;190;132;255m20\u001b[0m\u001b[38;2;255;255;255m)\u001b[0m\u001b[m\r\n:\u001b[K"]
137
+ [11.996793, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
138
+ [11.996933, "o", "\u001b[38;5;238m 112\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;102;217;239mputs\u001b[0m\u001b[38;2;248;248;242m \u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[38;2;230;219;116mFinal result: \u001b[0m\u001b[38;2;248;248;242m#{\u001b[0m\u001b[38;2;248;248;242mresult\u001b[0m\u001b[38;2;248;248;242m}\u001b[0m\u001b[38;2;249;38;114m\"\u001b[0m\u001b[m\r\n:\u001b[K"]
139
+ [12.030507, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u001b[38;5;238m 113\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;249;38;114mend\u001b[0m\u001b[m\r\n:\u001b[K"]
140
+ [12.046693, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
141
+ [12.046723, "o", "\u001b[38;5;238m───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n:\u001b[K"]
142
+ [12.074647, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\u0007\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
143
+ [12.0881, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
144
+ [12.105923, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
145
+ [12.13234, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
146
+ [12.156743, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
147
+ [12.181792, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
148
+ [12.214547, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
149
+ [12.248182, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
150
+ [12.250077, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
151
+ [12.290325, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
152
+ [12.409303, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
153
+ [12.409347, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
154
+ [12.457518, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
155
+ [12.457887, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
156
+ [12.474405, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
157
+ [12.474606, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
158
+ [12.490261, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
159
+ [12.490302, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
160
+ [12.507379, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
161
+ [12.507636, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
162
+ [12.531977, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
163
+ [12.532099, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
164
+ [12.546664, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
165
+ [12.55675, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
166
+ [12.573634, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
167
+ [12.582173, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
168
+ [12.582311, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
169
+ [12.59004, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
170
+ [12.606783, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
171
+ [12.615699, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
172
+ [12.631678, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
173
+ [12.631731, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
174
+ [12.641306, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
175
+ [12.655344, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
176
+ [12.655457, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
177
+ [12.674909, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
178
+ [12.688416, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
179
+ [12.688534, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
180
+ [12.706563, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
181
+ [12.706661, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
182
+ [12.72186, "o", "\r\u001b[K \u001b[KESC\b\b\bESC\u001b[KO\bO\u001b[KB\bB\r\u001b[K"]
183
+ [12.721905, "o", "\r\u001b[K\u001b[7m(END)\u001b[27m\u001b[K"]
184
+ [16.230674, "o", "\r\u001b[K\u001b[?1l\u001b>\u001b[?1049l"]
185
+ [16.234603, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
186
+ [16.234934, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
187
+ [16.240086, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
188
+ [16.341667, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m8.3s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
189
+ [16.341758, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
190
+ [16.39663, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m8.3s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
191
+ [16.521073, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m8.3s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
192
+ [16.569822, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m8.3s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
193
+ [16.719055, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1mtook \u001b[0m\u001b[1m\u001b[33m8.3s\u001b[0m\u001b[33m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
194
+ [18.16768, "o", "r"]
195
+ [18.170405, "o", "\b\u001b[32mr\u001b[39m"]
196
+ [18.170724, "o", "\b\u001b[32mr\u001b[39m\u001b[90muby examples/example.rb\u001b[39m\u001b[23D"]
197
+ [18.301485, "o", "\b\u001b[32mr\u001b[32mu\u001b[39m"]
198
+ [18.307918, "o", "\b\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mu\u001b[0m\u001b[39m"]
199
+ [18.50469, "o", "\b\b\u001b[1m\u001b[31mr\u001b[1m\u001b[31mu\u001b[1m\u001b[31mb\u001b[0m\u001b[39m"]
200
+ [18.693919, "o", "\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31my\u001b[0m\u001b[39m"]
201
+ [18.695187, "o", "\b\b\b\b\u001b[0m\u001b[32mr\u001b[0m\u001b[32mu\u001b[0m\u001b[32mb\u001b[0m\u001b[32my\u001b[39m"]
202
+ [19.366731, "o", "\u001b[39m \u001b[39me\u001b[39mx\u001b[39ma\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39ms\u001b[39m/\u001b[39me\u001b[39mx\u001b[39ma\u001b[39mm\u001b[39mp\u001b[39ml\u001b[39me\u001b[39m.\u001b[39mr\u001b[39mb"]
203
+ [19.368136, "o", "\u001b[19D\u001b[4me\u001b[4mx\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4ms\u001b[4m/\u001b[4me\u001b[4mx\u001b[4ma\u001b[4mm\u001b[4mp\u001b[4ml\u001b[4me\u001b[4m.\u001b[4mr\u001b[4mb\u001b[24m"]
204
+ [20.01911, "o", "\u001b[?1l\u001b>"]
205
+ [20.019357, "o", "\u001b[?2004l"]
206
+ [20.022218, "o", "\r\r\n"]
207
+ [20.023149, "o", "\u001b]2;ruby examples/example.rb\u0007\u001b]1;ruby\u0007"]
208
+ [20.227433, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[0]\u001b[0m \u001b[92mCalculator#initialize\u001b[0m \u001b[90mat examples/example.rb:5\u001b[0m \u001b[33m(factor: 3)\u001b[0m\u001b[0m\r\n\u001b[35m🏁 [FINISH] \u001b[34mdepth[0]\u001b[0m \u001b[92mCalculator#initialize\u001b[0m \u001b[36m#=> 3\u001b[0m \u001b[90mat examples/example.rb:7\u001b[0m\u001b[0m\r\n"]
209
+ [20.227462, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[0]\u001b[0m \u001b[92mCalculator#calculate_chain\u001b[0m \u001b[90mat examples/example.rb:10\u001b[0m \u001b[33m(a: 10, b: 20)\u001b[0m\u001b[0m\r\n\u001b[36m🚀 [START] \u001b[34mdepth[+1]\u001b[0m \u001b[92mCalculator#add\u001b[0m \u001b[90mat examples/example.rb:17\u001b[0m \u001b[33m(x: 10, y: 20)\u001b[0m\u001b[0m\r\n"]
210
+ [20.280131, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-1]\u001b[0m \u001b[92mCalculator#add\u001b[0m \u001b[36m#=> 30\u001b[0m \u001b[90mat examples/example.rb:20\u001b[0m\u001b[0m\r\n"]
211
+ [20.280219, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+1]\u001b[0m \u001b[92mCalculator#scale\u001b[0m \u001b[90mat examples/example.rb:23\u001b[0m \u001b[33m(value: 30)\u001b[0m\u001b[0m\r\n"]
212
+ [20.335563, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-1]\u001b[0m \u001b[92mCalculator#scale\u001b[0m \u001b[36m#=> 90\u001b[0m \u001b[90mat examples/example.rb:26\u001b[0m\u001b[0m\r\n"]
213
+ [20.335599, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+1]\u001b[0m \u001b[92mCalculator#complex_operation\u001b[0m \u001b[90mat examples/example.rb:29\u001b[0m \u001b[33m(value: 90)\u001b[0m\u001b[0m\r\n"]
214
+ [20.39116, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+2]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[90mat examples/example.rb:67\u001b[0m \u001b[33m(message: Starting c...)\u001b[0m\u001b[0m\r\n"]
215
+ [20.403782, "o", "[LOG] Starting complex operation\r\n"]
216
+ [20.403912, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-2]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[36m#=> nil\u001b[0m \u001b[90mat examples/example.rb:70\u001b[0m\u001b[0m\r\n"]
217
+ [20.403998, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+2]\u001b[0m \u001b[92mDivider#divide_and_process\u001b[0m \u001b[90mat examples/example.rb:39\u001b[0m \u001b[33m(value: 90, divisor: 2)\u001b[0m\u001b[0m\r\n"]
218
+ [20.404205, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+3]\u001b[0m \u001b[92mDivider#divide\u001b[0m \u001b[90mat examples/example.rb:45\u001b[0m \u001b[33m(a: 90, b: 2)\u001b[0m\u001b[0m\r\n"]
219
+ [20.45964, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-3]\u001b[0m \u001b[92mDivider#divide\u001b[0m \u001b[36m#=> 45\u001b[0m \u001b[90mat examples/example.rb:50\u001b[0m\u001b[0m\r\n"]
220
+ [20.459776, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+3]\u001b[0m \u001b[92mDivider#process_divided_result\u001b[0m \u001b[90mat examples/example.rb:53\u001b[0m \u001b[33m(value: 45)\u001b[0m\u001b[0m\r\n"]
221
+ [20.459855, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+4]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[90mat examples/example.rb:67\u001b[0m \u001b[33m(message: Processing...)\u001b[0m\u001b[0m\r\n"]
222
+ [20.472455, "o", "[LOG] Processing divided result: 45\r\n"]
223
+ [20.472734, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-4]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[36m#=> nil\u001b[0m \u001b[90mat examples/example.rb:70\u001b[0m\u001b[0m\r\n"]
224
+ [20.472924, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+4]\u001b[0m \u001b[92mDivider#nested_process\u001b[0m \u001b[90mat examples/example.rb:59\u001b[0m \u001b[33m(value: 45)\u001b[0m\u001b[0m\r\n"]
225
+ [20.52383, "o", "\u001b[36m🚀 [START] \u001b[34mdepth[+5]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[90mat examples/example.rb:67\u001b[0m \u001b[33m(message: Final nest...)\u001b[0m\u001b[0m\r\n"]
226
+ [20.536452, "o", "[LOG] Final nested processing on 45\r\n"]
227
+ [20.536603, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-5]\u001b[0m \u001b[92mLogger#log\u001b[0m \u001b[36m#=> nil\u001b[0m \u001b[90mat examples/example.rb:70\u001b[0m\u001b[0m\r\n"]
228
+ [20.53671, "o", "\u001b[35m🏁 [FINISH] \u001b[34mdepth[-4]\u001b[0m \u001b[92mDivider#nested_process\u001b[0m \u001b[36m#=> 55\u001b[0m \u001b[90mat examples/example.rb:63\u001b[0m\u001b[0m\r\n\u001b[35m🏁 [FINISH] \u001b[34mdepth[-3]\u001b[0m \u001b[92mDivider#process_divided_result\u001b[0m \u001b[36m#=> 55\u001b[0m \u001b[90mat examples/example.rb:56\u001b[0m\u001b[0m\r\n\u001b[35m🏁 [FINISH] \u001b[34mdepth[-2]\u001b[0m \u001b[92mDivider#divide_and_process\u001b[0m \u001b[36m#=> 55\u001b[0m \u001b[90mat examples/example.rb:42\u001b[0m\u001b[0m\r\n\u001b[35m🏁 [FINISH] \u001b[34mdepth[-1]\u001b[0m \u001b[92mCalculator#complex_operation\u001b[0m \u001b[36m#=> 55\u001b[0m \u001b[90mat examples/example.rb:34\u001b[0m\u001b[0m\r\n\u001b[35m🏁 [FINISH] \u001b[34mdepth[0]\u001b[0m \u001b[92mCalculator#calculate_chain\u001b[0m \u001b[36m#=> 55\u001b[0m \u001b[90mat examples/example.rb:14\u001b[0m\u001b[0m\r\nFinal result: 55\r\n"]
229
+ [20.536763, "o", "\u001b[4m📊 [STATS] Total Traces: 24 | Max Depth: 5 | Event Counts: [Call: 12, Return: 12]\u001b[0m\r\n"]
230
+ [20.53703, "o", "\u001b[2;37m🔄 [PROCESSING] Overwriting existing file: tmp/trace_output.txt\u001b[0m\r\n"]
231
+ [20.538379, "o", "\u001b[92m📤 [EXPORTED] Data successfully exported to tmp/trace_output.txt\u001b[0m\r\n"]
232
+ [20.539486, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
233
+ [20.539619, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007"]
234
+ [20.539631, "o", "\u001b]1;..box/trace_viz\u0007"]
235
+ [20.542084, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
236
+ [20.643273, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
237
+ [20.643363, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
238
+ [20.697038, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
239
+ [20.819721, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
240
+ [20.866436, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
241
+ [21.010292, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
242
+ [26.824578, "o", "a"]
243
+ [26.829963, "o", "\b\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
244
+ [26.830362, "o", "\b\u001b[1m\u001b[31ma\u001b[0m\u001b[39m\u001b[90msciinema rec trace_viz_demo.cast\u001b[39m\u001b[32D"]
245
+ [27.232232, "o", "\b\u001b[0m\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[33D"]
246
+ [27.37372, "o", "b"]
247
+ [27.379121, "o", "\b\u001b[4mb\u001b[24m"]
248
+ [27.379368, "o", "\b\u001b[4mb\u001b[24m\u001b[90mat examples/example.rb\u001b[39m\u001b[22D"]
249
+ [27.468568, "o", "\b\u001b[4mb\u001b[39m\u001b[4ma\u001b[24m"]
250
+ [27.472927, "o", "\b\b\u001b[24m\u001b[1m\u001b[31mb\u001b[24m\u001b[1m\u001b[31ma\u001b[0m\u001b[39m"]
251
+ [27.971363, "o", "\b\b\u001b[1m\u001b[31mb\u001b[1m\u001b[31ma\u001b[1m\u001b[31mt\u001b[0m\u001b[39m"]
252
+ [27.973942, "o", "\b\b\b\u001b[0m\u001b[32mb\u001b[0m\u001b[32ma\u001b[0m\u001b[32mt\u001b[39m"]
253
+ [28.11948, "o", "\b\u001b[32mt\u001b[32m \u001b[39m"]
254
+ [28.121821, "o", "\b\b\u001b[32mt\u001b[39m\u001b[39m "]
255
+ [28.350561, "o", "\u001b[39mt\u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[39m \u001b[18D"]
256
+ [28.354573, "o", "\b\u001b[4mt\u001b[24m"]
257
+ [28.354983, "o", "\u001b[90mmp/trace_output.txt\u001b[39m\u001b[19D"]
258
+ [28.573172, "o", "\b\u001b[4mt\u001b[39m\u001b[4mm\u001b[24m"]
259
+ [28.718216, "o", "\b\u001b[4mm\u001b[39m\u001b[4mp\u001b[24m"]
260
+ [29.18966, "o", "\u001b[39m/\u001b[39mt\u001b[39mr\u001b[39ma\u001b[39mc\u001b[39me\u001b[39m_\u001b[39mo\u001b[39mu\u001b[39mt\u001b[39mp\u001b[39mu\u001b[39mt\u001b[39m.\u001b[39mt\u001b[39mx\u001b[39mt"]
261
+ [29.192524, "o", "\u001b[18D\u001b[4mp\u001b[4m/\u001b[4mt\u001b[4mr\u001b[4ma\u001b[4mc\u001b[4me\u001b[4m_\u001b[4mo\u001b[4mu\u001b[4mt\u001b[4mp\u001b[4mu\u001b[4mt\u001b[4m.\u001b[4mt\u001b[4mx\u001b[4mt\u001b[24m"]
262
+ [29.653735, "o", "\u001b[?1l\u001b>"]
263
+ [29.65398, "o", "\u001b[?2004l"]
264
+ [29.656753, "o", "\r\r\n"]
265
+ [29.657805, "o", "\u001b]2;bat tmp/trace_output.txt\u0007\u001b]1;bat\u0007"]
266
+ [29.690057, "o", "\r\u001b[38;5;238m───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n \u001b[38;5;238m│ \u001b[0mFile: \u001b[1mtmp/trace_output.txt\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┼─────────────────────────────────────────────────────────────────────────────────────────"]
267
+ [29.690181, "o", ""]
268
+ [29.690364, "o", "───────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\u001b[38;5;238m 1\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] Calculator#initialize at examples/example.rb:5 (factor: 3)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 2\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] Calculator#initialize #=> 3 at examples/example.rb:7\u001b[0m\u001b[m\r\n\u001b[38;5;238m 3\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] Calculator#calculate_chain at examples/example.rb:10 (a: 10, b: 20)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 4\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+1] Calculator#add at examples/example.rb:17 (x: 10, y: 20)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 5\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-1] Calculator#add #=> 30 at examples/example.r"]
269
+ [29.690433, "o", "b:20\u001b[0m\u001b[m\r\n\u001b[38;5;238m 6\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+1] Calculator#scale at examples/example.rb:23 (value: 30)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 7\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-1] Calculator#scale #=> 90 at examples/example.rb:26\u001b[0m\u001b[m\r\n\u001b[38;5;238m 8\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+1] Calculator#complex_operation at examples/example.rb:29 (value: 90)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 9\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+2] Logger#log at examples/example.rb:67 (message: Starting c...)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 10\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-2] Logger#log #=> nil at examples/example.rb:70\u001b[0m\u001b[m\r\n\u001b[38;5;238m 11\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+2] Divider#divide_and_process at examples/example.rb:39 (value: 90, divisor: 2)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 12\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+3] Divider#divide at examples/example.rb:45 (a: 90, b: 2)\u001b[0m\u001b[m\r"]
270
+ [29.690528, "o", "\r\n\u001b[38;5;238m 13\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-3] Divider#divide #=> 45 at examples/example.rb:50\u001b[0m\u001b[m\r\n\u001b[38;5;238m 14\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+3] Divider#process_divided_result at examples/example.rb:53 (value: 45)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 15\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+4] Logger#log at examples/example.rb:67 (message: Processing...)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 16\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-4] Logger#log #=> nil at examples/example.rb:70\u001b[0m\u001b[m\r\n\u001b[38;5;238m 17\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+4] Divider#nested_process at examples/example.rb:59 (value: 45)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 18\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[+5] Logger#log at examples/example.rb:67 (message: Final nest...)\u001b[0m\u001b[m\r\n\u001b[38;5;238m 19\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-5] Logger#log #=> nil"]
271
+ [29.690537, "o", " at examples/exam"]
272
+ [29.690596, "o", "ple.rb:70\u001b[0m\u001b[m\r\n\u001b[38;5;238m 20\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-4] Divider#nested_process #=> 55 at examples/example.rb:63\u001b[0m\u001b[m\r\n\u001b[38;5;238m 21\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-3] Divider#process_divided_result #=> 55 at examples/example.rb:56\u001b[0m\u001b[m\r\n\u001b[38;5;238m 22\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-2] Divider#divide_and_process #=> 55 at examples/example.rb:42\u001b[0m\u001b[m\r\n\u001b[38;5;238m 23\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[-1] Calculator#complex_operation #=> 55 at examples/example.rb:34\u001b[0m\u001b[m\r\n\u001b[38;5;238m 24\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;2;248;248;242m depth[0] Calculator#calculate_chain #=> 55 at examples/example.rb:14\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┴──────────────────────────────────────────────────────────────────────────────"]
273
+ [29.690645, "o", "──"]
274
+ [29.691077, "o", "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\r\u001b[K"]
275
+ [29.692221, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
276
+ [29.692371, "o", "\u001b]2;patrick204nqh@Patrick-Mac:~/Desktop/sandbox/trace_viz\u0007\u001b]1;..box/trace_viz\u0007"]
277
+ [29.694482, "o", "\u001b]7;file://Patrick-Mac.local/Users/patrick204nqh/Desktop/sandbox/trace_viz\u001b\\"]
278
+ [29.783966, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
279
+ [29.784116, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
280
+ [29.838984, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
281
+ [29.963102, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
282
+ [30.011214, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[39m…\u001b[0m\u001b[39m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
283
+ [30.155657, "o", "\r\r\u001b[A\u001b[A\u001b[0m\u001b[27m\u001b[24m\u001b[J\r\n\u001b[1m\u001b[36mtrace_viz\u001b[0m\u001b[36m\u001b[39m\u001b[1m \u001b[0m\u001b[1mon \u001b[0m\u001b[1m\u001b[37m\u001b[1m\u001b[37m\u001b[35m develop\u001b[0m\u001b[35m\u001b[39m\u001b[1m\u001b[31m [!+?]\u001b[0m\u001b[31m\u001b[39m\u001b[0m\u001b[39m\u001b[1m \u001b[0m\u001b[1mvia \u001b[0m\u001b[1m\u001b[31m💎 v3.3.0\u001b[0m\u001b[31m\u001b[39m\u001b[1m \u001b[0m\u001b[1m\u001b[37m\r\n\u001b[0m\u001b[37m\u001b[39m\u001b[1m\u001b[32m➜ \u001b[0m\u001b[32m\u001b[39m\u001b[K\u001b[209C\u001b[1A\u001b[1B\u001b[209D"]
284
+ [36.461007, "o", "\u001b[?2004l"]
285
+ [36.461058, "o", "\r\r\n"]
data/examples/example.rb CHANGED
@@ -1,42 +1,113 @@
1
1
  $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
2
2
  require "trace_viz"
3
3
 
4
- class Example
5
- def perform_task(x, y)
6
- result = add_numbers(x, y)
7
- log_result(result)
8
- result
4
+ class Calculator
5
+ def initialize(factor)
6
+ @factor = factor
9
7
  end
10
8
 
11
- def add_numbers(a, b)
12
- sleep(0.1)
13
- sum = a + b
14
- multiply_by_factor(sum, 2)
9
+ # A method that triggers a chain of calculations
10
+ def calculate_chain(a, b)
11
+ sum = add(a, b)
12
+ scaled = scale(sum)
13
+ complex_operation(scaled)
15
14
  end
16
15
 
17
- def multiply_by_factor(value, factor)
16
+ # Basic addition
17
+ def add(x, y)
18
18
  sleep(0.05)
19
- value * factor
19
+ x + y
20
20
  end
21
21
 
22
- def log_result(result)
23
- sleep(0.02)
24
- puts "Final result: #{result}"
22
+ # Scaling a number by the factor
23
+ def scale(value)
24
+ sleep(0.05)
25
+ value * @factor
26
+ end
27
+
28
+ # Complex operation involving another class
29
+ def complex_operation(value)
30
+ sleep(0.05)
31
+ Logger.new.log("Starting complex operation")
32
+ divider = Divider.new
33
+ divider.divide_and_process(value, 2)
34
+ end
35
+ end
36
+
37
+ class Divider
38
+ # Divides a number and calls a nested method
39
+ def divide_and_process(value, divisor)
40
+ result = divide(value, divisor)
41
+ process_divided_result(result)
42
+ end
43
+
44
+ # Performs division
45
+ def divide(a, b)
46
+ raise "Division by zero!" if b.zero?
47
+
48
+ sleep(0.05)
49
+ a / b
50
+ end
51
+
52
+ # Processes the divided result further
53
+ def process_divided_result(value)
54
+ Logger.new.log("Processing divided result: #{value}")
55
+ nested_process(value)
56
+ end
57
+
58
+ # A nested operation
59
+ def nested_process(value)
60
+ sleep(0.05)
61
+ Logger.new.log("Final nested processing on #{value}")
62
+ value + 10
63
+ end
64
+ end
65
+
66
+ class Logger
67
+ def log(message)
68
+ sleep(0.01)
69
+ puts "[LOG] #{message}"
25
70
  end
26
71
  end
27
72
 
28
73
  TraceViz.trace(
74
+ general: {
29
75
  tab_size: 4,
30
76
  show_indent: true,
31
77
  show_depth: true,
32
- max_display_depth: 3,
78
+ max_display_depth: 10,
33
79
  show_method_name: true,
34
- show_params: true,
35
- show_return_value: true,
36
- show_execution_time: true,
37
- show_source_location: true,
38
- show_trace_events: [:call, :return]
80
+ },
81
+ params: {
82
+ show: true,
83
+ mode: :name_and_value,
84
+ truncate_values: 10,
85
+ },
86
+ result: {
87
+ show: true,
88
+ truncate_length: 5,
89
+ },
90
+ source_location: {
91
+ show: true,
92
+ truncate_length: 20,
93
+ },
94
+ execution: {
95
+ show_time: true,
96
+ show_trace_events: [:call, :return],
97
+ },
98
+ filters: [
99
+ :exclude_internal_call,
100
+ include_classes: {
101
+ classes: [Calculator, Divider, Logger],
102
+ }
103
+ ],
104
+ export: {
105
+ enabled: true,
106
+ format: :txt,
107
+ overwrite: true
108
+ }
39
109
  ) do
40
- example = Example.new
41
- example.perform_task(5, 7)
42
- end
110
+ calculator = Calculator.new(3)
111
+ result = calculator.calculate_chain(10, 20)
112
+ puts "Final result: #{result}"
113
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "trace_viz/context"
4
-
5
3
  module TraceViz
6
4
  module Adapters
7
5
  class BaseAdapter
@@ -1,25 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "trace_viz/logger"
4
3
  require "trace_viz/adapters/base_adapter"
5
- require "trace_viz/adapters/trace_point/trace_formatter"
6
- require "trace_viz/adapters/trace_point/trace_logger"
7
- require "trace_viz/adapters/trace_point/trace_data"
8
- require "trace_viz/adapters/trace_point/event_handler"
4
+ require "trace_viz/collectors/trace_point_collector"
5
+ require "trace_viz/exporters/text_exporter"
6
+ require "trace_viz/loggers/trace_stats_logger"
9
7
 
10
8
  module TraceViz
11
9
  module Adapters
12
10
  class TracePointAdapter < BaseAdapter
13
- def trace(&block)
14
- ::TracePoint.new(:call, :return) do |tp|
15
- trace_data = TracePoint::TraceData.new(tp)
11
+ def initialize
12
+ super()
16
13
 
17
- next if trace_data.internal_call?
18
- next if trace_data.exceeded_max_depth?
14
+ @collector = Collectors::TracePointCollector.new
15
+ end
19
16
 
20
- TracePoint::EventHandler.new(trace_data).handle
17
+ def trace(&block)
18
+ ::TracePoint.new(:call, :return) do |tp|
19
+ collector.collect(tp)
21
20
  end.enable(&block)
21
+ ensure
22
+ Loggers::TraceStatsLogger.log(collector)
23
+ Exporters::TextExporter.new(collector).export
22
24
  end
25
+
26
+ private
27
+
28
+ attr_reader :collector
23
29
  end
24
30
  end
25
31
  end