.ext_test_case¶
The module contains the main class ExtTestCase
which adds
specific functionalities to this project.
- class experimental_experiment.ext_test_case.ExtTestCase(methodName='runTest')[source]¶
Inherits from
unittest.TestCase
and adds specific comprison functions and other helpers.- assertAlmostEqual(expected: ndarray, value: ndarray, atol: float = 0, rtol: float = 0)[source]¶
In the name
- assertEqual(expected: Any, value: Any, msg: str = '')[source]¶
Overwrites the error message to get a more explicit message about what is what.
- assertEqualArray(expected: ndarray, value: ndarray, atol: float = 0, rtol: float = 0, msg: str | None = None)[source]¶
In the name
- assertEqualArrays(expected: Sequence[ndarray], value: Sequence[ndarray], atol: float = 0, rtol: float = 0, msg: str | None = None)[source]¶
In the name
- assertEqualOr(value: Any, expected: Tuple[Any, ...])[source]¶
Checks if value is one or the expected values.
- assertIn(tofind: str, text: str, msg: str = '')[source]¶
Just like self.assertTrue(a in b), but with a nicer default message.
- capture(fct: Callable)[source]¶
Runs a function and capture standard output and error.
- Parameters:
fct – function to run
- Returns:
result of fct, output, error
- get_dump_file(name: str, folder: str | None = None) str [source]¶
Returns a filename to dump a model.
- classmethod setUpClass()[source]¶
Hook method for setting up class fixture before running tests in the class.
- classmethod tearDownClass()[source]¶
Hook method for deconstructing the class fixture after running all tests in the class.
- tryCall(fct: Callable, msg: str | None = None, none_if: str | None = None) Any | None [source]¶
Calls the function, catch any error.
- Parameters:
fct – function to call
msg – error message to display if failing
none_if – returns None if this substring is found in the error message
- Returns:
output of fct
- experimental_experiment.ext_test_case.dump_dort_onnx(fn)[source]¶
Context manager to dump onnx model created by dort.
- experimental_experiment.ext_test_case.get_figure(ax)[source]¶
Returns the figure of a matplotlib figure.
- experimental_experiment.ext_test_case.has_cuda() bool [source]¶
Returns
torch.cuda.device_count() > 0
.
- experimental_experiment.ext_test_case.has_executorch(version: str = '', msg: str = '') bool [source]¶
Tells if ExecuTorch is installed.
- experimental_experiment.ext_test_case.has_onnxruntime(version: str, msg: str = '') bool [source]¶
Skips a unit test if onnxruntime is not recent enough.
- experimental_experiment.ext_test_case.has_onnxruntime_training(push_back_batch: bool = False) bool [source]¶
Tells if onnxruntime_training is installed.
- experimental_experiment.ext_test_case.has_onnxscript(version: str, msg: str = '') bool [source]¶
Skips a unit test if onnxscript is not recent enough.
- experimental_experiment.ext_test_case.has_torch(version: str) bool [source]¶
Returns True if torch verions is higher.
- experimental_experiment.ext_test_case.hide_stdout(f: Callable | None = None) Callable [source]¶
Catches warnings, hides standard output. The function may be disabled by setting
UNHIDE=1
before running the unit test.- Parameters:
f – the function is called with the stdout as an argument
- experimental_experiment.ext_test_case.ignore_warnings(warns: List[Warning]) Callable [source]¶
Catches warnings.
- Parameters:
warns – warnings to ignore
- experimental_experiment.ext_test_case.is_azure() bool [source]¶
Tells if the job is running on Azure DevOps.
- experimental_experiment.ext_test_case.long_test(msg: str = '') Callable [source]¶
Skips a unit test if it runs on azure pipeline on Windows.
- experimental_experiment.ext_test_case.measure_time(stmt: str | Callable, context: Dict[str, Any] | None = None, repeat: int = 10, number: int = 50, warmup: int = 1, div_by_number: bool = True, max_time: float | None = None) Dict[str, str | int | float] [source]¶
Measures a statement and returns the results as a dictionary.
- Parameters:
stmt – string or callable
context – variable to know in a dictionary
repeat – average over repeat experiment
number – number of executions in one row
warmup – number of iteration to do before starting the real measurement
div_by_number – divide by the number of executions
max_time – execute the statement until the total goes beyond this time (approximatively), repeat is ignored, div_by_number must be set to True
- Returns:
dictionary
<<<
from pprint import pprint from math import cos from experimental_experiment.ext_test_case import measure_time res = measure_time(lambda: cos(0.5)) pprint(res)
>>>
{'average': np.float64(8.477398660033942e-08), 'context_size': 64, 'deviation': np.float64(9.923055592087468e-09), 'max_exec': np.float64(1.1266005458310246e-07), 'min_exec': np.float64(7.579990779049695e-08), 'number': 50, 'repeat': 10, 'ttime': np.float64(8.477398660033942e-07), 'warmup_time': 2.074400254059583e-05}
See Timer.repeat for a better understanding of parameter repeat and number. The function returns a duration corresponding to number times the execution of the main statement.
- experimental_experiment.ext_test_case.never_test(msg: str = '') Callable [source]¶
Skips a unit test.
- experimental_experiment.ext_test_case.requires_cuda(msg: str = '', version: str = '', memory: int = 0)[source]¶
Skips a test if cuda is not available.
- Parameters:
msg – to overwrite the message
version – minimum version
memory – minimun number of Gb to run the test
- experimental_experiment.ext_test_case.requires_diffusers(version: str, msg: str = '', or_older_than: str | None = None) Callable [source]¶
Skips a unit test if transformers is not recent enough.
- experimental_experiment.ext_test_case.requires_executorch(version: str, msg: str = '') Callable [source]¶
Skips a unit test if executorch is not recent enough.
- experimental_experiment.ext_test_case.requires_monai(version: str = '', msg: str = '') Callable [source]¶
Skips a unit test if monai is not recent enough.
- experimental_experiment.ext_test_case.requires_numpy(version: str, msg: str = '') Callable [source]¶
Skips a unit test if numpy is not recent enough.
- experimental_experiment.ext_test_case.requires_onnx(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnx is not recent enough.
- experimental_experiment.ext_test_case.requires_onnx_array_api(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnx-array-api is not recent enough.
- experimental_experiment.ext_test_case.requires_onnx_diagnostic(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnx-diagnostic is not recent enough.
- experimental_experiment.ext_test_case.requires_onnxir(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnx-ir is not recent enough.
- experimental_experiment.ext_test_case.requires_onnxruntime(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnxruntime is not recent enough.
- experimental_experiment.ext_test_case.requires_onnxruntime_training(push_back_batch: bool = False, ortmodule: bool = False, msg: str = '') Callable [source]¶
Skips a unit test if onnxruntime is not onnxruntime_training.
- experimental_experiment.ext_test_case.requires_onnxscript(version: str, msg: str = '') Callable [source]¶
Skips a unit test if onnxscript is not recent enough.
- experimental_experiment.ext_test_case.requires_pyinstrument(version: str = '', msg: str = '') Callable [source]¶
Skips a unit test if pyinstrument is not recent enough.
- experimental_experiment.ext_test_case.requires_sklearn(version: str, msg: str = '') Callable [source]¶
Skips a unit test if scikit-learn is not recent enough.
- experimental_experiment.ext_test_case.requires_torch(version: str, msg: str = '') Callable [source]¶
Skips a unit test if pytorch is not recent enough.
- experimental_experiment.ext_test_case.requires_transformers(version: str, msg: str = '', or_older_than: str | None = None) Callable [source]¶
Skips a unit test if transformers is not recent enough.
- experimental_experiment.ext_test_case.requires_vocos(version: str = '', msg: str = '') Callable [source]¶
Skips a unit test if vocos is not recent enough.
- experimental_experiment.ext_test_case.requires_zoo(msg: str = '') Callable [source]¶
Skips a unit test if environment variable ZOO is not equal to 1.
- experimental_experiment.ext_test_case.skipif_ci_apple(msg) Callable [source]¶
Skips a unit test if it runs on azure pipeline on Windows.
- experimental_experiment.ext_test_case.skipif_ci_linux(msg) Callable [source]¶
Skips a unit test if it runs on azure pipeline on Linux.
- experimental_experiment.ext_test_case.skipif_ci_windows(msg) Callable [source]¶
Skips a unit test if it runs on azure pipeline on Windows.
- experimental_experiment.ext_test_case.skipif_not_onnxrt(msg) Callable [source]¶
Skips a unit test if it runs on azure pipeline on Windows.
- experimental_experiment.ext_test_case.skipif_transformers(version_to_skip: str | Set[str], msg: str) Callable [source]¶
Skips a unit test if transformers has a specific version.
- experimental_experiment.ext_test_case.statistics_on_file(filename: str) Dict[str, str | int | float] [source]¶
Computes statistics on a file.
<<<
import pprint from experimental_experiment.ext_test_case import statistics_on_file, __file__ pprint.pprint(statistics_on_file(__file__))
>>>
{'chars': 27949, 'ext': '.py', 'lines': 933}
- experimental_experiment.ext_test_case.statistics_on_folder(folder: str | List[str], pattern: str = '.*[.]((py|rst))$', aggregation: int = 0) List[Dict[str, str | int | float]] [source]¶
Computes statistics on files in a folder.
- Parameters:
folder – folder or folders to investigate
pattern – file pattern
aggregation – show the first subfolders
- Returns:
list of dictionaries
<<<
import os import pprint from experimental_experiment.ext_test_case import statistics_on_folder, __file__ pprint.pprint(statistics_on_folder(os.path.dirname(__file__)))
>>>
[{'chars': 16379, 'ext': '.py', 'lines': 479, 'name': 'ort_session.py'}, {'chars': 66, 'ext': '.py', 'lines': 3, 'name': '_bench_test.py'}, {'chars': 7951, 'ext': '.py', 'lines': 261, 'name': 'torch_test_helper.py'}, {'chars': 1807, 'ext': '.py', 'lines': 51, 'name': 'checks.py'}, {'chars': 9988, 'ext': '.py', 'lines': 400, 'name': '_command_lines_parser.py'}, {'chars': 27949, 'ext': '.py', 'lines': 933, 'name': 'ext_test_case.py'}, {'chars': 5677, 'ext': '.py', 'lines': 212, 'name': 'onnx_tools.py'}, {'chars': 10909, 'ext': '.py', 'lines': 384, 'name': 'bench_run.py'}, {'chars': 2878, 'ext': '.py', 'lines': 115, 'name': 'args.py'}, {'chars': 17799, 'ext': '.py', 'lines': 639, 'name': 'helpers.py'}, {'chars': 235, 'ext': '.py', 'lines': 9, 'name': '__init__.py'}, {'chars': 5287, 'ext': '.py', 'lines': 157, 'name': 'model_run.py'}, {'chars': 65, 'ext': '.py', 'lines': 3, 'name': '__main__.py'}, {'chars': 4328, 'ext': '.py', 'lines': 186, 'name': 'memory_peak.py'}, {'chars': 12054, 'ext': '.py', 'lines': 418, 'name': 'gradient/grad_helper.py'}, {'chars': 17770, 'ext': '.py', 'lines': 497, 'name': 'gradient/loss_helper.py'}, {'chars': 0, 'ext': '.py', 'lines': 0, 'name': 'gradient/__init__.py'}, {'chars': 89, 'ext': '.py', 'lines': 2, 'name': 'gradient/ops/__init__.py'}, {'chars': 671, 'ext': '.py', 'lines': 42, 'name': 'gradient/ops/op_broadcast_gradient_args.py'}, {'chars': 751, 'ext': '.py', 'lines': 33, 'name': 'reference/quantized_tensor.py'}, {'chars': 18020, 'ext': '.py', 'lines': 613, 'name': 'reference/ort_evaluator.py'}, {'chars': 6246, 'ext': '.py', 'lines': 222, 'name': 'reference/evaluator.py'}, {'chars': 289, 'ext': '.py', 'lines': 7, 'name': 'reference/__init__.py'}, {'chars': 439, 'ext': '.py', 'lines': 20, 'name': 'reference/ops/op_complex.py'}, {'chars': 647, 'ext': '.py', 'lines': 27, 'name': 'reference/ops/op_fused_matmul.py'}, {'chars': 380, 'ext': '.py', 'lines': 14, 'name': 'reference/ops/op_tri_matrix.py'}, {'chars': 458, 'ext': '.py', 'lines': 17, 'name': 'reference/ops/op_quick_gelu.py'}, {'chars': 531, 'ext': '.py', 'lines': 15, 'name': 'reference/ops/op_slice.py'}, {'chars': 2582, 'ext': '.py', 'lines': 88, 'name': 'reference/ops/op_qlinear_conv.py'}, {'chars': 1149, 'ext': '.py', 'lines': 59, 'name': 'reference/ops/op_constant_of_shape.py'}, {'chars': 667, 'ext': '.py', 'lines': 16, 'name': 'reference/ops/op_scatternd_of_shape.py'}, {'chars': 147, 'ext': '.py', 'lines': 5, 'name': 'reference/ops/op_negxplus1.py'}, {'chars': 220, 'ext': '.py', 'lines': 6, 'name': 'reference/ops/op_simplified_layer_normalization.py'}, {'chars': 295, 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_transpose_cast.py'}, {'chars': 140, 'ext': '.py', 'lines': 7, 'name': 'reference/ops/op_memcpy_host.py'}, {'chars': 1401, 'ext': '.py', 'lines': 46, 'name': 'reference/ops/op_average_pool_grad.py'}, {'chars': 317, 'ext': '.py', 'lines': 9, 'name': 'reference/ops/op_gather_grad.py'}, {'chars': 853, 'ext': '.py', 'lines': 35, 'name': 'reference/ops/op_qlinear_average_pool.py'}, {'chars': 684, 'ext': '.py', 'lines': 24, 'name': 'reference/ops/op_gather.py'}, {'chars': 1260, 'ext': '.py', 'lines': 47, 'name': 'reference/ops/op_attention.py'}, {'chars': 384, 'ext': '.py', 'lines': 13, 'name': 'reference/ops/op_bias_softmax.py'}, {'chars': 224, 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_replace_zero.py'}, {'chars': 350, 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_skip_layer_normalization.py'}, {'chars': 455, 'ext': '.py', 'lines': 17, 'name': 'reference/ops/op_mul_sigmoid.py'}, {'chars': 0, 'ext': '.py', 'lines': 0, 'name': 'reference/ops/__init__.py'}, {'chars': 1139, 'ext': '.py', 'lines': 33, 'name': 'reference/ops/op_gather_elements.py'}, {'chars': 434, 'ext': '.py', 'lines': 16, 'name': 'reference/ops/op_rotary.py'}, {'chars': 383, 'ext': '.py', 'lines': 11, 'name': 'reference/ops/op_concat.py'}, {'chars': 1091, 'ext': '.py', 'lines': 44, 'name': 'reference/ops/op_add_add_mul_mul.py'}, {'chars': 2202, 'ext': '.py', 'lines': 82, 'name': 'reference/ops/op_scatter_elements.py'}, {'chars': 1140, 'ext': '.py', 'lines': 38, 'name': 'reference/ops/op_cast_like.py'}, {'chars': 852, 'ext': '.py', 'lines': 23, 'name': 'convert/ort_helper.py'}, {'chars': 4887, 'ext': '.py', 'lines': 149, 'name': 'convert/convert_helper.py'}, {'chars': 0, 'ext': '.py', 'lines': 0, 'name': 'convert/__init__.py'}, {'chars': 6285, 'ext': '.py', 'lines': 377, 'name': 'plotting/data.py'}, {'chars': 1893, 'ext': '.py', 'lines': 54, 'name': 'plotting/memory.py'}, {'chars': 0, 'ext': '.py', 'lines': 0, 'name': 'plotting/__init__.py'}, {'chars': 4873, 'ext': '.py', 'lines': 148, 'name': 'skl/convert.py'}, {'chars': 1344, 'ext': '.py', 'lines': 47, 'name': 'skl/helpers.py'}, {'chars': 25, 'ext': '.py', 'lines': 1, 'name': 'skl/__init__.py'}, {'chars': 11414, 'ext': '.py', 'lines': 366, 'name': 'torch_interpreter/piece_by_piece_serialize.py'}, {'chars': 152, 'ext': '.py', 'lines': 4, 'name': 'torch_interpreter/_doc_.py'}, {'chars': 11971, 'ext': '.py', 'lines': 469, 'name': 'torch_interpreter/_aten_methods.py'}, {'chars': 2976, 'ext': '.py', 'lines': 97, 'name': 'torch_interpreter/control_flows.py'}, {'chars': 7214, 'ext': '.py', 'lines': 254, 'name': 'torch_interpreter/dispatcher.py'}, {'chars': 528, 'ext': '.py', 'lines': 21, 'name': 'torch_interpreter/aten_methods.py'}, {'chars': 62119, 'ext': '.py', 'lines': 1951, 'name': 'torch_interpreter/interpreter.py'}, {'chars': 36962, 'ext': '.py', 'lines': 1257, 'name': 'torch_interpreter/tracing.py'}, {'chars': 33943, 'ext': '.py', 'lines': 1017, 'name': 'torch_interpreter/onnx_export.py'}, {'chars': 1424, 'ext': '.py', 'lines': 53, 'name': 'torch_interpreter/_torch_helper.py'}, {'chars': 87, 'ext': '.py', 'lines': 2, 'name': 'torch_interpreter/_exceptions.py'}, {'chars': 82783, 'ext': '.py', 'lines': 2509, 'name': 'torch_interpreter/piece_by_piece.py'}, {'chars': 10193, 'ext': '.py', 'lines': 447, 'name': 'torch_interpreter/_prims_functions.py'}, {'chars': 262264, 'ext': '.py', 'lines': 10163, 'name': 'torch_interpreter/_aten_functions.py'}, {'chars': 12320, 'ext': '.py', 'lines': 402, 'name': 'torch_interpreter/_aten_functions_attention.py'}, {'chars': 2143, 'ext': '.py', 'lines': 65, 'name': 'torch_interpreter/aten_functions.py'}, {'chars': 845, 'ext': '.py', 'lines': 28, 'name': 'torch_interpreter/__init__.py'}, {'chars': 5660, 'ext': '.py', 'lines': 200, 'name': 'torch_interpreter/oxs_dispatcher.py'}, {'chars': 4212, 'ext': '.py', 'lines': 189, 'name': 'torch_interpreter/oxs_opset.py'}, {'chars': 20545, 'ext': '.py', 'lines': 607, 'name': 'torch_interpreter/export_options.py'}, {'chars': 1777, 'ext': '.py', 'lines': 49, 'name': 'torch_interpreter/_non_aten_functions.py'}, {'chars': 11005, 'ext': '.py', 'lines': 343, 'name': 'torch_interpreter/investigate_helper.py'}, {'chars': 370, 'ext': '.py', 'lines': 16, 'name': 'torch_interpreter/_math_functions.py'}, {'chars': 6844, 'ext': '.py', 'lines': 223, 'name': 'torch_models/llm_model_setup.py'}, {'chars': 3979, 'ext': '.py', 'lines': 140, 'name': 'torch_models/phi3_helper.py'}, {'chars': 1652, 'ext': '.py', 'lines': 61, 'name': 'torch_models/diffusion_model_helper.py'}, {'chars': 5886, 'ext': '.py', 'lines': 204, 'name': 'torch_models/dump_helper.py'}, {'chars': 7227, 'ext': '.py', 'lines': 209, 'name': 'torch_models/training_helper.py'}, {'chars': 3418, 'ext': '.py', 'lines': 118, 'name': 'torch_models/mistral_helper.py'}, {'chars': 977, 'ext': '.py', 'lines': 31, 'name': 'torch_models/__init__.py'}, {'chars': 20412, 'ext': '.py', 'lines': 786, 'name': 'torch_models/llm_model_helper.py'}, {'chars': 2956, 'ext': '.py', 'lines': 84, 'name': 'torch_models/llama_helper.py'}, {'chars': 3811, 'ext': '.py', 'lines': 132, 'name': 'torch_models/phi_helper.py'}, {'chars': 3806, 'ext': '.py', 'lines': 127, 'name': 'torch_models/chronos_model_helper.py'}, {'chars': 4090, 'ext': '.py', 'lines': 144, 'name': 'xbuilder/type_inference.py'}, {'chars': 6924, 'ext': '.py', 'lines': 245, 'name': 'xbuilder/graph_builder_opset.py'}, {'chars': 44446, 'ext': '.py', 'lines': 1345, 'name': 'xbuilder/shape_type_compute.py'}, {'chars': 10650, 'ext': '.py', 'lines': 330, 'name': 'xbuilder/model_container.py'}, {'chars': 332, 'ext': '.py', 'lines': 9, 'name': 'xbuilder/virtual_tensor.py'}, {'chars': 4849, 'ext': '.py', 'lines': 181, 'name': 'xbuilder/expression_dimension.py'}, {'chars': 259028, 'ext': '.py', 'lines': 8329, 'name': 'xbuilder/graph_builder.py'}, {'chars': 6179, 'ext': '.py', 'lines': 202, 'name': 'xbuilder/reverse_graph_builder.py'}, {'chars': 3782, 'ext': '.py', 'lines': 119, 'name': 'xbuilder/_shape_helper.py'}, {'chars': 6687, 'ext': '.py', 'lines': 278, 'name': 'xbuilder/_onnx_helper.py'}, {'chars': 413, 'ext': '.py', 'lines': 12, 'name': 'xbuilder/__init__.py'}, {'chars': 13591, 'ext': '.py', 'lines': 468, 'name': 'xbuilder/_graph_builder_runtime.py'}, {'chars': 3802, 'ext': '.py', 'lines': 98, 'name': 'xbuilder/optimization_options.py'}, {'chars': 14786, 'ext': '.py', 'lines': 537, 'name': 'xbuilder/_internal/numpy_helper.py'}, {'chars': 14464, 'ext': '.py', 'lines': 585, 'name': 'xbuilder/_internal/onnx_export.py'}, {'chars': 1182, 'ext': '.py', 'lines': 38, 'name': 'xbuilder/_internal/onnx_export_templates.py'}, {'chars': 0, 'ext': '.py', 'lines': 0, 'name': 'xbuilder/_internal/__init__.py'}, {'chars': 35026, 'ext': '.py', 'lines': 1140, 'name': 'xoptim/patterns_api.py'}, {'chars': 3888, 'ext': '.py', 'lines': 137, 'name': 'xoptim/unfused.py'}, {'chars': 14326, 'ext': '.py', 'lines': 519, 'name': 'xoptim/repeated_optim.py'}, {'chars': 4266, 'ext': '.py', 'lines': 171, 'name': 'xoptim/order_optim.py'}, {'chars': 3318, 'ext': '.py', 'lines': 117, 'name': 'xoptim/__init__.py'}, {'chars': 38642, 'ext': '.py', 'lines': 1321, 'name': 'xoptim/graph_builder_optim.py'}, {'chars': 2089, 'ext': '.py', 'lines': 53, 'name': 'xoptim/patterns_investigation/__init__.py'}, {'chars': 1213, 'ext': '.py', 'lines': 44, 'name': 'xoptim/patterns_investigation/element_wise.py'}, {'chars': 6143, 'ext': '.py', 'lines': 171, 'name': 'xoptim/patterns_investigation/llm_patterns.py'}, {'chars': 9921, 'ext': '.py', 'lines': 320, 'name': 'xoptim/patterns_ml/tree_ensemble.py'}, {'chars': 608, 'ext': '.py', 'lines': 19, 'name': 'xoptim/patterns_ml/__init__.py'}, {'chars': 3967, 'ext': '.py', 'lines': 117, 'name': 'xoptim/patterns_exp/constant_of_shape_scatter_nd.py'}, {'chars': 3185, 'ext': '.py', 'lines': 95, 'name': 'xoptim/patterns_exp/constants.py'}, {'chars': 2528, 'ext': '.py', 'lines': 74, 'name': 'xoptim/patterns_exp/unary_operators.py'}, {'chars': 2463, 'ext': '.py', 'lines': 76, 'name': 'xoptim/patterns_exp/simple_rotary.py'}, {'chars': 1653, 'ext': '.py', 'lines': 50, 'name': 'xoptim/patterns_exp/__init__.py'}, {'chars': 1510, 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns_exp/where_replace.py'}, {'chars': 14615, 'ext': '.py', 'lines': 481, 'name': 'xoptim/patterns_exp/binary_operators.py'}, {'chars': 5007, 'ext': '.py', 'lines': 159, 'name': 'xoptim/patterns/onnx_functions.py'}, {'chars': 1432, 'ext': '.py', 'lines': 46, 'name': 'xoptim/patterns/onnx_sequence.py'}, {'chars': 33207, 'ext': '.py', 'lines': 1059, 'name': 'xoptim/patterns/onnx_matmul.py'}, {'chars': 10097, 'ext': '.py', 'lines': 345, 'name': 'xoptim/patterns/onnx_any.py'}, {'chars': 9283, 'ext': '.py', 'lines': 295, 'name': 'xoptim/patterns/onnx_mul.py'}, {'chars': 20532, 'ext': '.py', 'lines': 626, 'name': 'xoptim/patterns/onnx_layer_normalization.py'}, {'chars': 42922, 'ext': '.py', 'lines': 1240, 'name': 'xoptim/patterns/onnx_rotary.py'}, {'chars': 25077, 'ext': '.py', 'lines': 860, 'name': 'xoptim/patterns/onnx_reshape.py'}, {'chars': 1609, 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns/onnx_equal.py'}, {'chars': 25591, 'ext': '.py', 'lines': 789, 'name': 'xoptim/patterns/onnx_expand.py'}, {'chars': 1461, 'ext': '.py', 'lines': 40, 'name': 'xoptim/patterns/onnx_shape.py'}, {'chars': 1429, 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns/onnx_clip.py'}, {'chars': 9979, 'ext': '.py', 'lines': 321, 'name': 'xoptim/patterns/onnx_cast.py'}, {'chars': 825, 'ext': '.py', 'lines': 27, 'name': 'xoptim/patterns/onnx_constants.py'}, {'chars': 6545, 'ext': '.py', 'lines': 212, 'name': 'xoptim/patterns/onnx_unsqueeze.py'}, {'chars': 2728, 'ext': '.py', 'lines': 86, 'name': 'xoptim/patterns/onnx_sub.py'}, {'chars': 1077, 'ext': '.py', 'lines': 37, 'name': 'xoptim/patterns/onnx_conv.py'}, {'chars': 2432, 'ext': '.py', 'lines': 73, 'name': 'xoptim/patterns/onnx_reduce.py'}, {'chars': 4466, 'ext': '.py', 'lines': 148, 'name': 'xoptim/patterns/onnx_split.py'}, {'chars': 4695, 'ext': '.py', 'lines': 168, 'name': 'xoptim/patterns/onnx_concat.py'}, {'chars': 6547, 'ext': '.py', 'lines': 195, 'name': 'xoptim/patterns/__init__.py'}, {'chars': 8033, 'ext': '.py', 'lines': 304, 'name': 'xoptim/patterns/onnx_transpose.py'}, {'chars': 3025, 'ext': '.py', 'lines': 107, 'name': 'xoptim/patterns/onnx_slice.py'}, {'chars': 1136, 'ext': '.py', 'lines': 42, 'name': 'xoptim/patterns/onnx_dropout.py'}, {'chars': 1241, 'ext': '.py', 'lines': 42, 'name': 'xoptim/patterns_ort/fused_conv.py'}, {'chars': 6859, 'ext': '.py', 'lines': 219, 'name': 'xoptim/patterns_ort/activation.py'}, {'chars': 1456, 'ext': '.py', 'lines': 49, 'name': 'xoptim/patterns_ort/gather_grad.py'}, {'chars': 1982, 'ext': '.py', 'lines': 58, 'name': 'xoptim/patterns_ort/activation_grad.py'}, {'chars': 12484, 'ext': '.py', 'lines': 433, 'name': 'xoptim/patterns_ort/fused_matmul.py'}, {'chars': 6806, 'ext': '.py', 'lines': 163, 'name': 'xoptim/patterns_ort/llm_optim.py'}, {'chars': 7468, 'ext': '.py', 'lines': 212, 'name': 'xoptim/patterns_ort/simplified_layer_normalization.py'}, {'chars': 4071, 'ext': '.py', 'lines': 140, 'name': 'xoptim/patterns_ort/batch_normalization.py'}, {'chars': 1913, 'ext': '.py', 'lines': 56, 'name': 'xoptim/patterns_ort/__init__.py'}, {'chars': 1283, 'ext': '.py', 'lines': 44, 'name': 'xoptim/patterns_fix/add_reduction_scatter_nd.py'}, {'chars': 515, 'ext': '.py', 'lines': 15, 'name': 'xoptim/patterns_fix/__init__.py'}, {'chars': 3530, 'ext': '.py', 'lines': 120, 'name': 'torch_dynamo/dynger_backend.py'}, {'chars': 9448, 'ext': '.py', 'lines': 323, 'name': 'torch_dynamo/debug_backend.py'}, {'chars': 19266, 'ext': '.py', 'lines': 629, 'name': 'torch_dynamo/fast_backend.py'}, {'chars': 2428, 'ext': '.py', 'lines': 70, 'name': 'torch_dynamo/_dynamo_exporter.py'}, {'chars': 4073, 'ext': '.py', 'lines': 128, 'name': 'torch_dynamo/partition.py'}, {'chars': 567, 'ext': '.py', 'lines': 18, 'name': 'torch_dynamo/backend_helper.py'}, {'chars': 6699, 'ext': '.py', 'lines': 218, 'name': 'torch_dynamo/__init__.py'}, {'chars': 5840, 'ext': '.py', 'lines': 165, 'name': 'torch_bench/dort_profile.py'}, {'chars': 18233, 'ext': '.py', 'lines': 609, 'name': 'torch_bench/export_model_helper.py'}, {'chars': 55431, 'ext': '.py', 'lines': 2117, 'name': 'torch_bench/_bash_bench_benchmark_runner_agg_helper.py'}, {'chars': 14340, 'ext': '.py', 'lines': 508, 'name': 'torch_bench/_bash_bench_set_huggingface.py'}, {'chars': 4087, 'ext': '.py', 'lines': 375, 'name': 'torch_bench/_bash_bench_models_helper.py'}, {'chars': 5579, 'ext': '.py', 'lines': 191, 'name': 'torch_bench/bash_bench_agg.py'}, {'chars': 33249, 'ext': '.py', 'lines': 1228, 'name': 'torch_bench/_bash_bench_benchmark_runner_agg.py'}, {'chars': 744, 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_explicit.py'}, {'chars': 9326, 'ext': '.py', 'lines': 377, 'name': 'torch_bench/_bash_bench_untrained.py'}, {'chars': 7034, 'ext': '.py', 'lines': 195, 'name': 'torch_bench/_bash_bench_set_dummies.py'}, {'chars': 5975, 'ext': '.py', 'lines': 196, 'name': 'torch_bench/dort_bench_profile.py'}, {'chars': 17169, 'ext': '.py', 'lines': 529, 'name': 'torch_bench/_dort_cmd_common.py'}, {'chars': 925, 'ext': '.py', 'lines': 26, 'name': 'torch_bench/bash_bench_torchbench.py'}, {'chars': 2522, 'ext': '.py', 'lines': 95, 'name': 'torch_bench/_bash_bench_set_explicit.py'}, {'chars': 53057, 'ext': '.py', 'lines': 1711, 'name': 'torch_bench/_bash_bench_benchmark_runner.py'}, {'chars': 9839, 'ext': '.py', 'lines': 309, 'name': 'torch_bench/dort_bench.py'}, {'chars': 947, 'ext': '.py', 'lines': 26, 'name': 'torch_bench/bash_bench_torchbench_ado.py'}, {'chars': 62198, 'ext': '.py', 'lines': 2169, 'name': 'torch_bench/_bash_bench_model_runner.py'}, {'chars': 780, 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_timm.py'}, {'chars': 48, 'ext': '.py', 'lines': 1, 'name': 'torch_bench/__init__.py'}, {'chars': 10000, 'ext': '.py', 'lines': 323, 'name': 'torch_bench/_bash_bench_cmd.py'}, {'chars': 13615, 'ext': '.py', 'lines': 529, 'name': 'torch_bench/_bash_bench_set_timm.py'}, {'chars': 7617, 'ext': '.py', 'lines': 264, 'name': 'torch_bench/_dort_cmd_common_models.py'}, {'chars': 1319, 'ext': '.py', 'lines': 43, 'name': 'torch_bench/check_model.py'}, {'chars': 1015, 'ext': '.py', 'lines': 22, 'name': 'torch_bench/bash_bench_huggingface.py'}, {'chars': 20548, 'ext': '.py', 'lines': 817, 'name': 'torch_bench/_bash_bench_set_torchbench.py'}, {'chars': 5297, 'ext': '.py', 'lines': 170, 'name': 'torch_bench/export_model.py'}, {'chars': 897, 'ext': '.py', 'lines': 33, 'name': 'torch_bench/_bash_bench_set_torchbench_ado.py'}, {'chars': 754, 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_untrained.py'}]
Aggregated:
<<<
import os import pprint from experimental_experiment.ext_test_case import statistics_on_folder, __file__ pprint.pprint(statistics_on_folder(os.path.dirname(__file__), aggregation=1))
>>>
[{'chars': 16379, 'dir': '', 'ext': '.py', 'lines': 479, 'name': 'ort_session.py'}, {'chars': 66, 'dir': '', 'ext': '.py', 'lines': 3, 'name': '_bench_test.py'}, {'chars': 7951, 'dir': '', 'ext': '.py', 'lines': 261, 'name': 'torch_test_helper.py'}, {'chars': 1807, 'dir': '', 'ext': '.py', 'lines': 51, 'name': 'checks.py'}, {'chars': 9988, 'dir': '', 'ext': '.py', 'lines': 400, 'name': '_command_lines_parser.py'}, {'chars': 27949, 'dir': '', 'ext': '.py', 'lines': 933, 'name': 'ext_test_case.py'}, {'chars': 5677, 'dir': '', 'ext': '.py', 'lines': 212, 'name': 'onnx_tools.py'}, {'chars': 10909, 'dir': '', 'ext': '.py', 'lines': 384, 'name': 'bench_run.py'}, {'chars': 2878, 'dir': '', 'ext': '.py', 'lines': 115, 'name': 'args.py'}, {'chars': 17799, 'dir': '', 'ext': '.py', 'lines': 639, 'name': 'helpers.py'}, {'chars': 235, 'dir': '', 'ext': '.py', 'lines': 9, 'name': '__init__.py'}, {'chars': 5287, 'dir': '', 'ext': '.py', 'lines': 157, 'name': 'model_run.py'}, {'chars': 65, 'dir': '', 'ext': '.py', 'lines': 3, 'name': '__main__.py'}, {'chars': 4328, 'dir': '', 'ext': '.py', 'lines': 186, 'name': 'memory_peak.py'}, {'chars': 12054, 'dir': 'gradient', 'ext': '.py', 'lines': 418, 'name': 'gradient/grad_helper.py'}, {'chars': 17770, 'dir': 'gradient', 'ext': '.py', 'lines': 497, 'name': 'gradient/loss_helper.py'}, {'chars': 0, 'dir': 'gradient', 'ext': '.py', 'lines': 0, 'name': 'gradient/__init__.py'}, {'chars': 89, 'dir': 'gradient', 'ext': '.py', 'lines': 2, 'name': 'gradient/ops/__init__.py'}, {'chars': 671, 'dir': 'gradient', 'ext': '.py', 'lines': 42, 'name': 'gradient/ops/op_broadcast_gradient_args.py'}, {'chars': 751, 'dir': 'reference', 'ext': '.py', 'lines': 33, 'name': 'reference/quantized_tensor.py'}, {'chars': 18020, 'dir': 'reference', 'ext': '.py', 'lines': 613, 'name': 'reference/ort_evaluator.py'}, {'chars': 6246, 'dir': 'reference', 'ext': '.py', 'lines': 222, 'name': 'reference/evaluator.py'}, {'chars': 289, 'dir': 'reference', 'ext': '.py', 'lines': 7, 'name': 'reference/__init__.py'}, {'chars': 439, 'dir': 'reference', 'ext': '.py', 'lines': 20, 'name': 'reference/ops/op_complex.py'}, {'chars': 647, 'dir': 'reference', 'ext': '.py', 'lines': 27, 'name': 'reference/ops/op_fused_matmul.py'}, {'chars': 380, 'dir': 'reference', 'ext': '.py', 'lines': 14, 'name': 'reference/ops/op_tri_matrix.py'}, {'chars': 458, 'dir': 'reference', 'ext': '.py', 'lines': 17, 'name': 'reference/ops/op_quick_gelu.py'}, {'chars': 531, 'dir': 'reference', 'ext': '.py', 'lines': 15, 'name': 'reference/ops/op_slice.py'}, {'chars': 2582, 'dir': 'reference', 'ext': '.py', 'lines': 88, 'name': 'reference/ops/op_qlinear_conv.py'}, {'chars': 1149, 'dir': 'reference', 'ext': '.py', 'lines': 59, 'name': 'reference/ops/op_constant_of_shape.py'}, {'chars': 667, 'dir': 'reference', 'ext': '.py', 'lines': 16, 'name': 'reference/ops/op_scatternd_of_shape.py'}, {'chars': 147, 'dir': 'reference', 'ext': '.py', 'lines': 5, 'name': 'reference/ops/op_negxplus1.py'}, {'chars': 220, 'dir': 'reference', 'ext': '.py', 'lines': 6, 'name': 'reference/ops/op_simplified_layer_normalization.py'}, {'chars': 295, 'dir': 'reference', 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_transpose_cast.py'}, {'chars': 140, 'dir': 'reference', 'ext': '.py', 'lines': 7, 'name': 'reference/ops/op_memcpy_host.py'}, {'chars': 1401, 'dir': 'reference', 'ext': '.py', 'lines': 46, 'name': 'reference/ops/op_average_pool_grad.py'}, {'chars': 317, 'dir': 'reference', 'ext': '.py', 'lines': 9, 'name': 'reference/ops/op_gather_grad.py'}, {'chars': 853, 'dir': 'reference', 'ext': '.py', 'lines': 35, 'name': 'reference/ops/op_qlinear_average_pool.py'}, {'chars': 684, 'dir': 'reference', 'ext': '.py', 'lines': 24, 'name': 'reference/ops/op_gather.py'}, {'chars': 1260, 'dir': 'reference', 'ext': '.py', 'lines': 47, 'name': 'reference/ops/op_attention.py'}, {'chars': 384, 'dir': 'reference', 'ext': '.py', 'lines': 13, 'name': 'reference/ops/op_bias_softmax.py'}, {'chars': 224, 'dir': 'reference', 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_replace_zero.py'}, {'chars': 350, 'dir': 'reference', 'ext': '.py', 'lines': 10, 'name': 'reference/ops/op_skip_layer_normalization.py'}, {'chars': 455, 'dir': 'reference', 'ext': '.py', 'lines': 17, 'name': 'reference/ops/op_mul_sigmoid.py'}, {'chars': 0, 'dir': 'reference', 'ext': '.py', 'lines': 0, 'name': 'reference/ops/__init__.py'}, {'chars': 1139, 'dir': 'reference', 'ext': '.py', 'lines': 33, 'name': 'reference/ops/op_gather_elements.py'}, {'chars': 434, 'dir': 'reference', 'ext': '.py', 'lines': 16, 'name': 'reference/ops/op_rotary.py'}, {'chars': 383, 'dir': 'reference', 'ext': '.py', 'lines': 11, 'name': 'reference/ops/op_concat.py'}, {'chars': 1091, 'dir': 'reference', 'ext': '.py', 'lines': 44, 'name': 'reference/ops/op_add_add_mul_mul.py'}, {'chars': 2202, 'dir': 'reference', 'ext': '.py', 'lines': 82, 'name': 'reference/ops/op_scatter_elements.py'}, {'chars': 1140, 'dir': 'reference', 'ext': '.py', 'lines': 38, 'name': 'reference/ops/op_cast_like.py'}, {'chars': 852, 'dir': 'convert', 'ext': '.py', 'lines': 23, 'name': 'convert/ort_helper.py'}, {'chars': 4887, 'dir': 'convert', 'ext': '.py', 'lines': 149, 'name': 'convert/convert_helper.py'}, {'chars': 0, 'dir': 'convert', 'ext': '.py', 'lines': 0, 'name': 'convert/__init__.py'}, {'chars': 6285, 'dir': 'plotting', 'ext': '.py', 'lines': 377, 'name': 'plotting/data.py'}, {'chars': 1893, 'dir': 'plotting', 'ext': '.py', 'lines': 54, 'name': 'plotting/memory.py'}, {'chars': 0, 'dir': 'plotting', 'ext': '.py', 'lines': 0, 'name': 'plotting/__init__.py'}, {'chars': 4873, 'dir': 'skl', 'ext': '.py', 'lines': 148, 'name': 'skl/convert.py'}, {'chars': 1344, 'dir': 'skl', 'ext': '.py', 'lines': 47, 'name': 'skl/helpers.py'}, {'chars': 25, 'dir': 'skl', 'ext': '.py', 'lines': 1, 'name': 'skl/__init__.py'}, {'chars': 11414, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 366, 'name': 'torch_interpreter/piece_by_piece_serialize.py'}, {'chars': 152, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 4, 'name': 'torch_interpreter/_doc_.py'}, {'chars': 11971, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 469, 'name': 'torch_interpreter/_aten_methods.py'}, {'chars': 2976, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 97, 'name': 'torch_interpreter/control_flows.py'}, {'chars': 7214, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 254, 'name': 'torch_interpreter/dispatcher.py'}, {'chars': 528, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 21, 'name': 'torch_interpreter/aten_methods.py'}, {'chars': 62119, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 1951, 'name': 'torch_interpreter/interpreter.py'}, {'chars': 36962, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 1257, 'name': 'torch_interpreter/tracing.py'}, {'chars': 33943, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 1017, 'name': 'torch_interpreter/onnx_export.py'}, {'chars': 1424, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 53, 'name': 'torch_interpreter/_torch_helper.py'}, {'chars': 87, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 2, 'name': 'torch_interpreter/_exceptions.py'}, {'chars': 82783, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 2509, 'name': 'torch_interpreter/piece_by_piece.py'}, {'chars': 10193, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 447, 'name': 'torch_interpreter/_prims_functions.py'}, {'chars': 262264, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 10163, 'name': 'torch_interpreter/_aten_functions.py'}, {'chars': 12320, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 402, 'name': 'torch_interpreter/_aten_functions_attention.py'}, {'chars': 2143, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 65, 'name': 'torch_interpreter/aten_functions.py'}, {'chars': 845, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 28, 'name': 'torch_interpreter/__init__.py'}, {'chars': 5660, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 200, 'name': 'torch_interpreter/oxs_dispatcher.py'}, {'chars': 4212, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 189, 'name': 'torch_interpreter/oxs_opset.py'}, {'chars': 20545, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 607, 'name': 'torch_interpreter/export_options.py'}, {'chars': 1777, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 49, 'name': 'torch_interpreter/_non_aten_functions.py'}, {'chars': 11005, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 343, 'name': 'torch_interpreter/investigate_helper.py'}, {'chars': 370, 'dir': 'torch_interpreter', 'ext': '.py', 'lines': 16, 'name': 'torch_interpreter/_math_functions.py'}, {'chars': 6844, 'dir': 'torch_models', 'ext': '.py', 'lines': 223, 'name': 'torch_models/llm_model_setup.py'}, {'chars': 3979, 'dir': 'torch_models', 'ext': '.py', 'lines': 140, 'name': 'torch_models/phi3_helper.py'}, {'chars': 1652, 'dir': 'torch_models', 'ext': '.py', 'lines': 61, 'name': 'torch_models/diffusion_model_helper.py'}, {'chars': 5886, 'dir': 'torch_models', 'ext': '.py', 'lines': 204, 'name': 'torch_models/dump_helper.py'}, {'chars': 7227, 'dir': 'torch_models', 'ext': '.py', 'lines': 209, 'name': 'torch_models/training_helper.py'}, {'chars': 3418, 'dir': 'torch_models', 'ext': '.py', 'lines': 118, 'name': 'torch_models/mistral_helper.py'}, {'chars': 977, 'dir': 'torch_models', 'ext': '.py', 'lines': 31, 'name': 'torch_models/__init__.py'}, {'chars': 20412, 'dir': 'torch_models', 'ext': '.py', 'lines': 786, 'name': 'torch_models/llm_model_helper.py'}, {'chars': 2956, 'dir': 'torch_models', 'ext': '.py', 'lines': 84, 'name': 'torch_models/llama_helper.py'}, {'chars': 3811, 'dir': 'torch_models', 'ext': '.py', 'lines': 132, 'name': 'torch_models/phi_helper.py'}, {'chars': 3806, 'dir': 'torch_models', 'ext': '.py', 'lines': 127, 'name': 'torch_models/chronos_model_helper.py'}, {'chars': 4090, 'dir': 'xbuilder', 'ext': '.py', 'lines': 144, 'name': 'xbuilder/type_inference.py'}, {'chars': 6924, 'dir': 'xbuilder', 'ext': '.py', 'lines': 245, 'name': 'xbuilder/graph_builder_opset.py'}, {'chars': 44446, 'dir': 'xbuilder', 'ext': '.py', 'lines': 1345, 'name': 'xbuilder/shape_type_compute.py'}, {'chars': 10650, 'dir': 'xbuilder', 'ext': '.py', 'lines': 330, 'name': 'xbuilder/model_container.py'}, {'chars': 332, 'dir': 'xbuilder', 'ext': '.py', 'lines': 9, 'name': 'xbuilder/virtual_tensor.py'}, {'chars': 4849, 'dir': 'xbuilder', 'ext': '.py', 'lines': 181, 'name': 'xbuilder/expression_dimension.py'}, {'chars': 259028, 'dir': 'xbuilder', 'ext': '.py', 'lines': 8329, 'name': 'xbuilder/graph_builder.py'}, {'chars': 6179, 'dir': 'xbuilder', 'ext': '.py', 'lines': 202, 'name': 'xbuilder/reverse_graph_builder.py'}, {'chars': 3782, 'dir': 'xbuilder', 'ext': '.py', 'lines': 119, 'name': 'xbuilder/_shape_helper.py'}, {'chars': 6687, 'dir': 'xbuilder', 'ext': '.py', 'lines': 278, 'name': 'xbuilder/_onnx_helper.py'}, {'chars': 413, 'dir': 'xbuilder', 'ext': '.py', 'lines': 12, 'name': 'xbuilder/__init__.py'}, {'chars': 13591, 'dir': 'xbuilder', 'ext': '.py', 'lines': 468, 'name': 'xbuilder/_graph_builder_runtime.py'}, {'chars': 3802, 'dir': 'xbuilder', 'ext': '.py', 'lines': 98, 'name': 'xbuilder/optimization_options.py'}, {'chars': 14786, 'dir': 'xbuilder', 'ext': '.py', 'lines': 537, 'name': 'xbuilder/_internal/numpy_helper.py'}, {'chars': 14464, 'dir': 'xbuilder', 'ext': '.py', 'lines': 585, 'name': 'xbuilder/_internal/onnx_export.py'}, {'chars': 1182, 'dir': 'xbuilder', 'ext': '.py', 'lines': 38, 'name': 'xbuilder/_internal/onnx_export_templates.py'}, {'chars': 0, 'dir': 'xbuilder', 'ext': '.py', 'lines': 0, 'name': 'xbuilder/_internal/__init__.py'}, {'chars': 35026, 'dir': 'xoptim', 'ext': '.py', 'lines': 1140, 'name': 'xoptim/patterns_api.py'}, {'chars': 3888, 'dir': 'xoptim', 'ext': '.py', 'lines': 137, 'name': 'xoptim/unfused.py'}, {'chars': 14326, 'dir': 'xoptim', 'ext': '.py', 'lines': 519, 'name': 'xoptim/repeated_optim.py'}, {'chars': 4266, 'dir': 'xoptim', 'ext': '.py', 'lines': 171, 'name': 'xoptim/order_optim.py'}, {'chars': 3318, 'dir': 'xoptim', 'ext': '.py', 'lines': 117, 'name': 'xoptim/__init__.py'}, {'chars': 38642, 'dir': 'xoptim', 'ext': '.py', 'lines': 1321, 'name': 'xoptim/graph_builder_optim.py'}, {'chars': 2089, 'dir': 'xoptim', 'ext': '.py', 'lines': 53, 'name': 'xoptim/patterns_investigation/__init__.py'}, {'chars': 1213, 'dir': 'xoptim', 'ext': '.py', 'lines': 44, 'name': 'xoptim/patterns_investigation/element_wise.py'}, {'chars': 6143, 'dir': 'xoptim', 'ext': '.py', 'lines': 171, 'name': 'xoptim/patterns_investigation/llm_patterns.py'}, {'chars': 9921, 'dir': 'xoptim', 'ext': '.py', 'lines': 320, 'name': 'xoptim/patterns_ml/tree_ensemble.py'}, {'chars': 608, 'dir': 'xoptim', 'ext': '.py', 'lines': 19, 'name': 'xoptim/patterns_ml/__init__.py'}, {'chars': 3967, 'dir': 'xoptim', 'ext': '.py', 'lines': 117, 'name': 'xoptim/patterns_exp/constant_of_shape_scatter_nd.py'}, {'chars': 3185, 'dir': 'xoptim', 'ext': '.py', 'lines': 95, 'name': 'xoptim/patterns_exp/constants.py'}, {'chars': 2528, 'dir': 'xoptim', 'ext': '.py', 'lines': 74, 'name': 'xoptim/patterns_exp/unary_operators.py'}, {'chars': 2463, 'dir': 'xoptim', 'ext': '.py', 'lines': 76, 'name': 'xoptim/patterns_exp/simple_rotary.py'}, {'chars': 1653, 'dir': 'xoptim', 'ext': '.py', 'lines': 50, 'name': 'xoptim/patterns_exp/__init__.py'}, {'chars': 1510, 'dir': 'xoptim', 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns_exp/where_replace.py'}, {'chars': 14615, 'dir': 'xoptim', 'ext': '.py', 'lines': 481, 'name': 'xoptim/patterns_exp/binary_operators.py'}, {'chars': 5007, 'dir': 'xoptim', 'ext': '.py', 'lines': 159, 'name': 'xoptim/patterns/onnx_functions.py'}, {'chars': 1432, 'dir': 'xoptim', 'ext': '.py', 'lines': 46, 'name': 'xoptim/patterns/onnx_sequence.py'}, {'chars': 33207, 'dir': 'xoptim', 'ext': '.py', 'lines': 1059, 'name': 'xoptim/patterns/onnx_matmul.py'}, {'chars': 10097, 'dir': 'xoptim', 'ext': '.py', 'lines': 345, 'name': 'xoptim/patterns/onnx_any.py'}, {'chars': 9283, 'dir': 'xoptim', 'ext': '.py', 'lines': 295, 'name': 'xoptim/patterns/onnx_mul.py'}, {'chars': 20532, 'dir': 'xoptim', 'ext': '.py', 'lines': 626, 'name': 'xoptim/patterns/onnx_layer_normalization.py'}, {'chars': 42922, 'dir': 'xoptim', 'ext': '.py', 'lines': 1240, 'name': 'xoptim/patterns/onnx_rotary.py'}, {'chars': 25077, 'dir': 'xoptim', 'ext': '.py', 'lines': 860, 'name': 'xoptim/patterns/onnx_reshape.py'}, {'chars': 1609, 'dir': 'xoptim', 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns/onnx_equal.py'}, {'chars': 25591, 'dir': 'xoptim', 'ext': '.py', 'lines': 789, 'name': 'xoptim/patterns/onnx_expand.py'}, {'chars': 1461, 'dir': 'xoptim', 'ext': '.py', 'lines': 40, 'name': 'xoptim/patterns/onnx_shape.py'}, {'chars': 1429, 'dir': 'xoptim', 'ext': '.py', 'lines': 47, 'name': 'xoptim/patterns/onnx_clip.py'}, {'chars': 9979, 'dir': 'xoptim', 'ext': '.py', 'lines': 321, 'name': 'xoptim/patterns/onnx_cast.py'}, {'chars': 825, 'dir': 'xoptim', 'ext': '.py', 'lines': 27, 'name': 'xoptim/patterns/onnx_constants.py'}, {'chars': 6545, 'dir': 'xoptim', 'ext': '.py', 'lines': 212, 'name': 'xoptim/patterns/onnx_unsqueeze.py'}, {'chars': 2728, 'dir': 'xoptim', 'ext': '.py', 'lines': 86, 'name': 'xoptim/patterns/onnx_sub.py'}, {'chars': 1077, 'dir': 'xoptim', 'ext': '.py', 'lines': 37, 'name': 'xoptim/patterns/onnx_conv.py'}, {'chars': 2432, 'dir': 'xoptim', 'ext': '.py', 'lines': 73, 'name': 'xoptim/patterns/onnx_reduce.py'}, {'chars': 4466, 'dir': 'xoptim', 'ext': '.py', 'lines': 148, 'name': 'xoptim/patterns/onnx_split.py'}, {'chars': 4695, 'dir': 'xoptim', 'ext': '.py', 'lines': 168, 'name': 'xoptim/patterns/onnx_concat.py'}, {'chars': 6547, 'dir': 'xoptim', 'ext': '.py', 'lines': 195, 'name': 'xoptim/patterns/__init__.py'}, {'chars': 8033, 'dir': 'xoptim', 'ext': '.py', 'lines': 304, 'name': 'xoptim/patterns/onnx_transpose.py'}, {'chars': 3025, 'dir': 'xoptim', 'ext': '.py', 'lines': 107, 'name': 'xoptim/patterns/onnx_slice.py'}, {'chars': 1136, 'dir': 'xoptim', 'ext': '.py', 'lines': 42, 'name': 'xoptim/patterns/onnx_dropout.py'}, {'chars': 1241, 'dir': 'xoptim', 'ext': '.py', 'lines': 42, 'name': 'xoptim/patterns_ort/fused_conv.py'}, {'chars': 6859, 'dir': 'xoptim', 'ext': '.py', 'lines': 219, 'name': 'xoptim/patterns_ort/activation.py'}, {'chars': 1456, 'dir': 'xoptim', 'ext': '.py', 'lines': 49, 'name': 'xoptim/patterns_ort/gather_grad.py'}, {'chars': 1982, 'dir': 'xoptim', 'ext': '.py', 'lines': 58, 'name': 'xoptim/patterns_ort/activation_grad.py'}, {'chars': 12484, 'dir': 'xoptim', 'ext': '.py', 'lines': 433, 'name': 'xoptim/patterns_ort/fused_matmul.py'}, {'chars': 6806, 'dir': 'xoptim', 'ext': '.py', 'lines': 163, 'name': 'xoptim/patterns_ort/llm_optim.py'}, {'chars': 7468, 'dir': 'xoptim', 'ext': '.py', 'lines': 212, 'name': 'xoptim/patterns_ort/simplified_layer_normalization.py'}, {'chars': 4071, 'dir': 'xoptim', 'ext': '.py', 'lines': 140, 'name': 'xoptim/patterns_ort/batch_normalization.py'}, {'chars': 1913, 'dir': 'xoptim', 'ext': '.py', 'lines': 56, 'name': 'xoptim/patterns_ort/__init__.py'}, {'chars': 1283, 'dir': 'xoptim', 'ext': '.py', 'lines': 44, 'name': 'xoptim/patterns_fix/add_reduction_scatter_nd.py'}, {'chars': 515, 'dir': 'xoptim', 'ext': '.py', 'lines': 15, 'name': 'xoptim/patterns_fix/__init__.py'}, {'chars': 3530, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 120, 'name': 'torch_dynamo/dynger_backend.py'}, {'chars': 9448, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 323, 'name': 'torch_dynamo/debug_backend.py'}, {'chars': 19266, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 629, 'name': 'torch_dynamo/fast_backend.py'}, {'chars': 2428, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 70, 'name': 'torch_dynamo/_dynamo_exporter.py'}, {'chars': 4073, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 128, 'name': 'torch_dynamo/partition.py'}, {'chars': 567, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 18, 'name': 'torch_dynamo/backend_helper.py'}, {'chars': 6699, 'dir': 'torch_dynamo', 'ext': '.py', 'lines': 218, 'name': 'torch_dynamo/__init__.py'}, {'chars': 5840, 'dir': 'torch_bench', 'ext': '.py', 'lines': 165, 'name': 'torch_bench/dort_profile.py'}, {'chars': 18233, 'dir': 'torch_bench', 'ext': '.py', 'lines': 609, 'name': 'torch_bench/export_model_helper.py'}, {'chars': 55431, 'dir': 'torch_bench', 'ext': '.py', 'lines': 2117, 'name': 'torch_bench/_bash_bench_benchmark_runner_agg_helper.py'}, {'chars': 14340, 'dir': 'torch_bench', 'ext': '.py', 'lines': 508, 'name': 'torch_bench/_bash_bench_set_huggingface.py'}, {'chars': 4087, 'dir': 'torch_bench', 'ext': '.py', 'lines': 375, 'name': 'torch_bench/_bash_bench_models_helper.py'}, {'chars': 5579, 'dir': 'torch_bench', 'ext': '.py', 'lines': 191, 'name': 'torch_bench/bash_bench_agg.py'}, {'chars': 33249, 'dir': 'torch_bench', 'ext': '.py', 'lines': 1228, 'name': 'torch_bench/_bash_bench_benchmark_runner_agg.py'}, {'chars': 744, 'dir': 'torch_bench', 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_explicit.py'}, {'chars': 9326, 'dir': 'torch_bench', 'ext': '.py', 'lines': 377, 'name': 'torch_bench/_bash_bench_untrained.py'}, {'chars': 7034, 'dir': 'torch_bench', 'ext': '.py', 'lines': 195, 'name': 'torch_bench/_bash_bench_set_dummies.py'}, {'chars': 5975, 'dir': 'torch_bench', 'ext': '.py', 'lines': 196, 'name': 'torch_bench/dort_bench_profile.py'}, {'chars': 17169, 'dir': 'torch_bench', 'ext': '.py', 'lines': 529, 'name': 'torch_bench/_dort_cmd_common.py'}, {'chars': 925, 'dir': 'torch_bench', 'ext': '.py', 'lines': 26, 'name': 'torch_bench/bash_bench_torchbench.py'}, {'chars': 2522, 'dir': 'torch_bench', 'ext': '.py', 'lines': 95, 'name': 'torch_bench/_bash_bench_set_explicit.py'}, {'chars': 53057, 'dir': 'torch_bench', 'ext': '.py', 'lines': 1711, 'name': 'torch_bench/_bash_bench_benchmark_runner.py'}, {'chars': 9839, 'dir': 'torch_bench', 'ext': '.py', 'lines': 309, 'name': 'torch_bench/dort_bench.py'}, {'chars': 947, 'dir': 'torch_bench', 'ext': '.py', 'lines': 26, 'name': 'torch_bench/bash_bench_torchbench_ado.py'}, {'chars': 62198, 'dir': 'torch_bench', 'ext': '.py', 'lines': 2169, 'name': 'torch_bench/_bash_bench_model_runner.py'}, {'chars': 780, 'dir': 'torch_bench', 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_timm.py'}, {'chars': 48, 'dir': 'torch_bench', 'ext': '.py', 'lines': 1, 'name': 'torch_bench/__init__.py'}, {'chars': 10000, 'dir': 'torch_bench', 'ext': '.py', 'lines': 323, 'name': 'torch_bench/_bash_bench_cmd.py'}, {'chars': 13615, 'dir': 'torch_bench', 'ext': '.py', 'lines': 529, 'name': 'torch_bench/_bash_bench_set_timm.py'}, {'chars': 7617, 'dir': 'torch_bench', 'ext': '.py', 'lines': 264, 'name': 'torch_bench/_dort_cmd_common_models.py'}, {'chars': 1319, 'dir': 'torch_bench', 'ext': '.py', 'lines': 43, 'name': 'torch_bench/check_model.py'}, {'chars': 1015, 'dir': 'torch_bench', 'ext': '.py', 'lines': 22, 'name': 'torch_bench/bash_bench_huggingface.py'}, {'chars': 20548, 'dir': 'torch_bench', 'ext': '.py', 'lines': 817, 'name': 'torch_bench/_bash_bench_set_torchbench.py'}, {'chars': 5297, 'dir': 'torch_bench', 'ext': '.py', 'lines': 170, 'name': 'torch_bench/export_model.py'}, {'chars': 897, 'dir': 'torch_bench', 'ext': '.py', 'lines': 33, 'name': 'torch_bench/_bash_bench_set_torchbench_ado.py'}, {'chars': 754, 'dir': 'torch_bench', 'ext': '.py', 'lines': 18, 'name': 'torch_bench/bash_bench_untrained.py'}]