Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import sys
from pyinstrument import processors
from pyinstrument.frame import Frame, SelfTimeFrame
from pytest import approx
all_processors = [
processors.aggregate_repeated_calls,
processors.group_library_frames_processor,
processors.merge_consecutive_self_time,
processors.remove_importlib,
processors.remove_unnecessary_self_time_nodes,
processors.remove_irrelevant_nodes,
]
def test_remove_importlib():
frame = Frame(
identifier='\x00sympy/__init__.py\x0012',
children=[
Frame(
identifier='_handle_fromlist\x00../\x00997',
self_time=0.1,
children=[
Frame(
SelfTimeFrame(
self_time=0.2,
),
Frame(
identifier='calculate_metrics\x00cibuildwheel/utils.py\x007',
self_time=0.1,
),
SelfTimeFrame(
self_time=0.05,
),
]
)
assert frame.time() == approx(0.85)
frame = processors.aggregate_repeated_calls(frame, options={})
assert frame.time() == approx(0.85)
# children should be sorted by time
assert len(frame.children) == 3
assert frame.children[0].function == 'strip_newlines'
assert frame.children[0].time() == 0.4
assert frame.children[0].children[0].function == 'scan_string'
assert isinstance(frame.children[1], SelfTimeFrame)
assert frame.children[1].time() == approx(0.35)
def __init__(self, show_all=False, timeline=False, processor_options=None):
# processors is defined on the base class to provide a common way for users to
# add to and manipulate them before calling render()
self.processors = self.default_processors()
self.processor_options = processor_options or {}
if show_all:
self.processors.remove(processors.group_library_frames_processor)
if timeline:
self.processors.remove(processors.aggregate_repeated_calls)
def default_processors(self):
return [
processors.remove_importlib,
processors.merge_consecutive_self_time,
processors.aggregate_repeated_calls,
processors.group_library_frames_processor,
processors.remove_unnecessary_self_time_nodes,
processors.remove_irrelevant_nodes,
]
def default_processors(self):
return [
processors.remove_importlib,
processors.merge_consecutive_self_time,
processors.aggregate_repeated_calls,
processors.group_library_frames_processor,
processors.remove_unnecessary_self_time_nodes,
processors.remove_irrelevant_nodes,
]
def default_processors(self):
return [
processors.remove_importlib,
processors.merge_consecutive_self_time,
processors.aggregate_repeated_calls,
processors.group_library_frames_processor,
processors.remove_unnecessary_self_time_nodes,
processors.remove_irrelevant_nodes,
]