diff --git a/graph/graph.py b/graph/graph.py index cebfaac..3dc1997 100644 --- a/graph/graph.py +++ b/graph/graph.py @@ -1,4 +1,6 @@ +from typing import Optional import matplotlib +from matplotlib.pylab import Axes import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import FuncFormatter, AutoMinorLocator, MultipleLocator @@ -32,7 +34,7 @@ def __init__( square=False, show_source_file=None, ) -> None: - self.ax2 = None + self.ax2: Optional[Axes] = None self.args = args self.fig, self.ax = plt.subplots() self.dpi = 100 diff --git a/hwbench/bench/test_benchmarks.py b/hwbench/bench/test_benchmarks.py index f1eb9ea..aaa0b10 100644 --- a/hwbench/bench/test_benchmarks.py +++ b/hwbench/bench/test_benchmarks.py @@ -12,17 +12,18 @@ def __init__(self, *args, **kwargs): with patch( "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: + print(pathlib.Path(".")) p.return_value = ( - pathlib.Path("./tests/parsing/stressngmethods/v17/stdout") + pathlib.Path("hwbench/tests/parsing/stressngmethods/v17/stdout") .read_bytes() .split(b":", 1) ) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="hwbench/tests/parsing/cpu_info/v2321", + numa="hwbench/tests/parsing/numa/8domainsllc", ) - self.load_benches("./config/sample.ini") + self.load_benches("./hwbench/config/sample.ini") self.parse_jobs_config() def test_parsing(self): @@ -100,11 +101,11 @@ def test_stream_short(self): "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: p.return_value = ( - pathlib.Path("./tests/parsing/stressngmethods/v17/stdout") + pathlib.Path("./hwbench/tests/parsing/stressngmethods/v17/stdout") .read_bytes() .split(b":", 1) ) - self.load_benches("./config/stream.ini") + self.load_benches("./hwbench/config/stream.ini") assert self.get_jobs_config().get_config().getint("global", "runtime") == 5 self.get_jobs_config().get_config().set("global", "runtime", "2") with self.assertRaises(SystemExit): diff --git a/hwbench/bench/test_benchmarks_common.py b/hwbench/bench/test_benchmarks_common.py index 14cadd6..beda82b 100644 --- a/hwbench/bench/test_benchmarks_common.py +++ b/hwbench/bench/test_benchmarks_common.py @@ -65,7 +65,7 @@ def parse_jobs_config(self, validate_parameters=True): with patch("hwbench.environment.turbostat.Turbostat.check_version") as cv: cv.return_value = True with patch("hwbench.environment.turbostat.Turbostat.run") as ts: - with open("tests/parsing/turbostat/run", "r") as f: + with open("hwbench/tests/parsing/turbostat/run", "r") as f: ts.return_value = ast.literal_eval(f.read()) return self.benches.parse_jobs_config(validate_parameters) diff --git a/hwbench/bench/test_cores.py b/hwbench/bench/test_cores.py index 5b69b12..130c9cc 100644 --- a/hwbench/bench/test_cores.py +++ b/hwbench/bench/test_cores.py @@ -5,11 +5,11 @@ class TestCores(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="./hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="./hwbench/tests/parsing/cpu_info/v2321", + numa="./hwbench/tests/parsing/numa/8domainsllc", ) - self.load_benches("./config/cores.conf") + self.load_benches("./hwbench/config/cores.conf") self.parse_jobs_config() def test_cores(self): @@ -30,7 +30,7 @@ def test_cores(self): assert self.get_bench_parameters(3).get_pinned_cpu() == CPU0_1 # Testing broken syntax that must fail - self.load_benches("./config/sample_weirds.conf") + self.load_benches("./hwbench/config/sample_weirds.conf") for test_name in [ "invalid_cpu_core", "alpha_cpu_core", diff --git a/hwbench/bench/test_helpers.py b/hwbench/bench/test_helpers.py index 0812bc9..85500bb 100644 --- a/hwbench/bench/test_helpers.py +++ b/hwbench/bench/test_helpers.py @@ -5,11 +5,11 @@ class TestHelpers(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="./hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="./hwbench/tests/parsing/cpu_info/v2321", + numa="./hwbench/tests/parsing/numa/8domainsllc", ) - self.load_benches("./config/helpers.conf") + self.load_benches("./hwbench/config/helpers.conf") self.parse_jobs_config() def test_helpers(self): @@ -32,11 +32,11 @@ class TestHelpers_CPUSTORAGE(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/cpustorage", - cpuinfo="./tests/parsing/cpu_info/cpustorage", - numa="./tests/parsing/numa/2domains", + cpucores="./hwbench/tests/parsing/cpu_cores/cpustorage", + cpuinfo="./hwbench/tests/parsing/cpu_info/cpustorage", + numa="./hwbench/tests/parsing/numa/2domains", ) - self.load_benches("./config/helpers.conf") + self.load_benches("./hwbench/config/helpers.conf") self.parse_jobs_config() def test_helpers(self): @@ -59,11 +59,11 @@ class TestHelpersImpossible(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="./hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="./hwbench/tests/parsing/cpu_info/v2321", + numa="./hwbench/tests/parsing/numa/8domainsllc", ) - self.load_benches("./config/helpers_fail.conf") + self.load_benches("./hwbench/config/helpers_fail.conf") def test_helpers_impossible(self): """Testing impossible helper usecase.""" diff --git a/hwbench/bench/test_numa.py b/hwbench/bench/test_numa.py index 8bab5eb..136c4f8 100644 --- a/hwbench/bench/test_numa.py +++ b/hwbench/bench/test_numa.py @@ -5,16 +5,16 @@ class TestNuma(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="./hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="./hwbench/tests/parsing/cpu_info/v2321", + numa="./hwbench/tests/parsing/numa/8domainsllc", ) self.NUMA0 = list(range(0, 8)) + list(range(64, 72)) self.NUMA1 = list(range(8, 16)) + list(range(72, 80)) self.NUMA0_1 = sorted(self.NUMA0 + self.NUMA1) self.NUMA7 = list(range(56, 64)) + list(range(120, 128)) self.NUMA07 = list(range(0, self.hw.get_cpu().get_logical_cores_count())) - self.load_benches("./config/numa.conf") + self.load_benches("./hwbench/config/numa.conf") self.parse_jobs_config() def test_quadrant(self): @@ -28,7 +28,7 @@ def test_quadrant(self): # Testing broken syntax that must fail # Testing quadrants - self.load_benches("./config/sample_weirds.conf") + self.load_benches("./hwbench/config/sample_weirds.conf") for test_name in [ "invalid_quadrant", "alpha_quadrant", @@ -59,7 +59,7 @@ def test_numa(self): # Testing broken syntax that must fail # Testing quadrants - self.load_benches("./config/sample_weirds.conf") + self.load_benches("./hwbench/config/sample_weirds.conf") for test_name in [ "invalid_numa_nodes", "alpha_numa_nodes", diff --git a/hwbench/bench/test_spike.py b/hwbench/bench/test_spike.py index 7cf9f70..5a9ad57 100644 --- a/hwbench/bench/test_spike.py +++ b/hwbench/bench/test_spike.py @@ -5,11 +5,11 @@ class TestSpike(tbc.TestCommon): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.load_mocked_hardware( - cpucores="./tests/parsing/cpu_cores/v2321", - cpuinfo="./tests/parsing/cpu_info/v2321", - numa="./tests/parsing/numa/8domainsllc", + cpucores="./hwbench/tests/parsing/cpu_cores/v2321", + cpuinfo="./hwbench/tests/parsing/cpu_info/v2321", + numa="./hwbench/tests/parsing/numa/8domainsllc", ) - self.load_benches("./config/spike.conf") + self.load_benches("./hwbench/config/spike.conf") self.parse_jobs_config() self.QUADRANT0 = list(range(0, 16)) + list(range(64, 80)) self.QUADRANT1 = list(range(16, 32)) + list(range(80, 96)) @@ -33,7 +33,7 @@ def test_spike(self): def test_spike_wrong_syntax(self): # Testing broken syntax that must fail # Testing quadrants - self.load_benches("./config/spike_weirds.conf") + self.load_benches("./hwbench/config/spike_weirds.conf") self.parse_jobs_config(validate_parameters=False) self.should_be_fatal(self.benches.benchs[0].validate_parameters) diff --git a/hwbench/config/test_parse.py b/hwbench/config/test_parse.py index 7690e5c..7ed4d12 100644 --- a/hwbench/config/test_parse.py +++ b/hwbench/config/test_parse.py @@ -11,12 +11,12 @@ def __init__(self, *args, **kwargs): "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: p.return_value = ( - pathlib.Path("./tests/parsing/stressngmethods/v17/stdout") + pathlib.Path("./hwbench/tests/parsing/stressngmethods/v17/stdout") .read_bytes() .split(b":", 1) ) self.hw = MockHardware() - self.load_benches("./config/sample.ini") + self.load_benches("./hwbench/config/sample.ini") def test_sections_name(self): """Check if sections names are properly detected.""" @@ -43,7 +43,7 @@ def test_keywords(self): "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: p.return_value = ( - pathlib.Path("./tests/parsing/stressngmethods/v17/stdout") + pathlib.Path("./hwbench/tests/parsing/stressngmethods/v17/stdout") .read_bytes() .split(b":", 1) ) @@ -59,11 +59,11 @@ def test_defaults(self): "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: p.return_value = ( - pathlib.Path("./tests/parsing/stressngmethods/v17/stdout") + pathlib.Path("./hwbench/tests/parsing/stressngmethods/v17/stdout") .read_bytes() .split(b":", 1) ) - self.load_benches("./config/sample_weirds.conf") + self.load_benches("./hwbench/config/sample_weirds.conf") assert ( self.get_jobs_config().get_config().getint("noglobalruntime", "runtime") == 60 diff --git a/hwbench/engines/test_parse.py b/hwbench/engines/test_parse.py index ce7d315..656df8f 100644 --- a/hwbench/engines/test_parse.py +++ b/hwbench/engines/test_parse.py @@ -28,7 +28,9 @@ def mock_engine(version: str) -> StressNG: "hwbench.engines.stressng.EngineModuleCpu.list_module_parameters" ) as p: p.return_value = ( - pathlib.Path(f"./tests/parsing/stressngmethods/{version}/stdout") + pathlib.Path( + f"./hwbench/tests/parsing/stressngmethods/{version}/stdout" + ) .read_bytes() .split(b":", 1) ) @@ -37,7 +39,7 @@ def mock_engine(version: str) -> StressNG: class TestParse(unittest.TestCase): def test_engine_parsing_version(self): - test_dir = pathlib.Path("./tests/parsing/stressng") + test_dir = pathlib.Path("./hwbench/tests/parsing/stressng") for d in test_dir.iterdir(): test_target = mock_engine("v17") if not d.is_dir(): @@ -54,7 +56,7 @@ def test_module_parsing_output(self): (StressNGStream, EngineModuleStream, "stressng-stream", 0, engine_v17), (StressNGMemrate, EngineModuleMemrate, "stressng-memrate", 128, engine_v17), ]: - test_dir = pathlib.Path(f"./tests/parsing/{prefix}") + test_dir = pathlib.Path(f"./hwbench/tests/parsing/{prefix}") for d in test_dir.iterdir(): if not d.is_dir(): continue @@ -95,7 +97,7 @@ def test_module_parsing_output(self): assert output == json.loads((d / "output").read_bytes()) def test_stressng_methods(self): - test_dir = pathlib.Path("./tests/parsing/stressngmethods") + test_dir = pathlib.Path("./hwbench/tests/parsing/stressngmethods") for d in test_dir.iterdir(): if not d.is_dir(): continue diff --git a/hwbench/environment/test_hpe.py b/hwbench/environment/test_hpe.py index 7587b7b..41add91 100644 --- a/hwbench/environment/test_hpe.py +++ b/hwbench/environment/test_hpe.py @@ -16,7 +16,9 @@ class TestGenericHpe(TestVendors): def __init__(self, path: str, *args, **kwargs): - super().__init__(Hpe("", None, "tests/mocked_monitoring.cfg"), *args, **kwargs) + super().__init__( + Hpe("", None, "hwbench/tests/mocked_monitoring.cfg"), *args, **kwargs + ) self.path = path def setUp(self): diff --git a/hwbench/environment/test_parse.py b/hwbench/environment/test_parse.py index 469e613..d7befc9 100644 --- a/hwbench/environment/test_parse.py +++ b/hwbench/environment/test_parse.py @@ -12,7 +12,7 @@ class TestParseCPU(object): def test_ami_aptio(self): - d = pathlib.Path("./tests/parsing/ami_aptio/v5") + d = pathlib.Path("./hwbench/tests/parsing/ami_aptio/v5") print(f"parsing test {d.name}") test_target = amd.Ami_Aptio(path) ver_stdout = (d / "version-stdout").read_bytes() @@ -22,8 +22,8 @@ def test_ami_aptio(self): def test_parsing_cpuinfo(self): for d in [ - pathlib.Path("./tests/parsing/cpu_info/v2321"), - pathlib.Path("./tests/parsing/cpu_info/cpustorage"), + pathlib.Path("./hwbench/tests/parsing/cpu_info/v2321"), + pathlib.Path("./hwbench/tests/parsing/cpu_info/cpustorage"), ]: print(f"parsing test {d.name}") test_target = cpu_info.CPU_INFO(path) @@ -49,7 +49,7 @@ def test_parsing_cpuinfo(self): assert test_target.get_vendor() == output["Vendor ID"] def test_parsing_cpu_cores(self): - d = pathlib.Path("./tests/parsing/cpu_cores/v2321") + d = pathlib.Path("./hwbench/tests/parsing/cpu_cores/v2321") print(f"parsing test {d.name}") test_target = cpu_cores.CPU_CORES(path) @@ -202,7 +202,7 @@ def test_parsing_cpu_cores(self): assert test_target.get_peer_sibling(64) == 0 def test_parsing_numa_1_domain(self): - d = pathlib.Path("./tests/parsing/numa/1domain") + d = pathlib.Path("./hwbench/tests/parsing/numa/1domain") print(f"parsing test {d.name}") test_target = numa.NUMA(path) @@ -214,7 +214,7 @@ def test_parsing_numa_1_domain(self): assert len(test_target.get_cores(0)) == 128 def test_parsing_numa_2_domains(self): - d = pathlib.Path("./tests/parsing/numa/2domains") + d = pathlib.Path("./hwbench/tests/parsing/numa/2domains") print(f"parsing test {d.name}") test_target = numa.NUMA(path) @@ -227,7 +227,7 @@ def test_parsing_numa_2_domains(self): assert len(test_target.get_cores(1)) == 36 def test_parsing_numa_4_domains(self): - d = pathlib.Path("./tests/parsing/numa/4domains") + d = pathlib.Path("./hwbench/tests/parsing/numa/4domains") print(f"parsing test {d.name}") test_target = numa.NUMA(path) @@ -240,7 +240,7 @@ def test_parsing_numa_4_domains(self): assert len(test_target.get_cores(domain)) == 16 def test_parsing_numa_8_domains_with_llc(self): - d = pathlib.Path("./tests/parsing/numa/8domainsllc") + d = pathlib.Path("./hwbench/tests/parsing/numa/8domainsllc") print(f"parsing test {d.name}") test_target = numa.NUMA(path) @@ -253,7 +253,7 @@ def test_parsing_numa_8_domains_with_llc(self): assert len(test_target.get_cores(domain)) == 16 def test_ipmitool_parsing(self): - d = pathlib.Path("./tests/parsing/ipmitool/1818") + d = pathlib.Path("./hwbench/tests/parsing/ipmitool/1818") print(f"parsing test {d.name}") test_target = BMC(path, None) stdout = (d / "stdout").read_bytes() diff --git a/hwbench/environment/vendors/mock.py b/hwbench/environment/vendors/mock.py index b97a316..b41860f 100644 --- a/hwbench/environment/vendors/mock.py +++ b/hwbench/environment/vendors/mock.py @@ -83,7 +83,10 @@ def connect_redfish(self): class MockVendor(Vendor): def __init__( - self, out_dir, dmi, monitoring_config_filename="tests/mocked_monitoring.cfg" + self, + out_dir, + dmi, + monitoring_config_filename="hwbench/tests/mocked_monitoring.cfg", ): super().__init__(out_dir, dmi, monitoring_config_filename) self.bmc = MockedBMC(self.out_dir, self) diff --git a/requirements/base.in b/requirements/base.in index 9faafdd..b0f19c9 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,6 +1,6 @@ cachetools numpy -matplotlib +matplotlib>=3.9.2 redfish pycairo packaging diff --git a/requirements/base.txt b/requirements/base.txt index ed6aac5..3054067 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -325,35 +325,47 @@ kiwisolver==1.4.5 \ --hash=sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892 \ --hash=sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f # via matplotlib -matplotlib==3.8.4 \ - --hash=sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67 \ - --hash=sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c \ - --hash=sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94 \ - --hash=sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb \ - --hash=sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9 \ - --hash=sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0 \ - --hash=sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616 \ - --hash=sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa \ - --hash=sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661 \ - --hash=sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a \ - --hash=sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae \ - --hash=sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6 \ - --hash=sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea \ - --hash=sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106 \ - --hash=sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef \ - --hash=sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54 \ - --hash=sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f \ - --hash=sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014 \ - --hash=sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338 \ - --hash=sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25 \ - --hash=sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b \ - --hash=sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35 \ - --hash=sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732 \ - --hash=sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71 \ - --hash=sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10 \ - --hash=sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0 \ - --hash=sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30 \ - --hash=sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc +matplotlib==3.9.2 \ + --hash=sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21 \ + --hash=sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5 \ + --hash=sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697 \ + --hash=sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9 \ + --hash=sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca \ + --hash=sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64 \ + --hash=sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e \ + --hash=sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03 \ + --hash=sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae \ + --hash=sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa \ + --hash=sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3 \ + --hash=sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e \ + --hash=sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a \ + --hash=sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc \ + --hash=sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea \ + --hash=sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b \ + --hash=sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e \ + --hash=sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447 \ + --hash=sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b \ + --hash=sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92 \ + --hash=sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb \ + --hash=sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66 \ + --hash=sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9 \ + --hash=sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7 \ + --hash=sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2 \ + --hash=sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30 \ + --hash=sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d \ + --hash=sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7 \ + --hash=sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4 \ + --hash=sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41 \ + --hash=sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2 \ + --hash=sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556 \ + --hash=sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f \ + --hash=sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772 \ + --hash=sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c \ + --hash=sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a \ + --hash=sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51 \ + --hash=sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49 \ + --hash=sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c \ + --hash=sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413 # via -r requirements/base.in numpy==1.26.4 \ --hash=sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b \ diff --git a/requirements/test.in b/requirements/test.in index 364c36d..bdae0ad 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -10,7 +10,7 @@ types-cachetools typing-extensions wheel pex -mypy +mypy>=1.13.0 # In --require-hashes mode, all requirements must have their versions pinned with ==. These do not: exceptiongroup importlib-resources diff --git a/requirements/test.txt b/requirements/test.txt index ccace88..e2cee48 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -436,68 +436,85 @@ kiwisolver==1.4.5 \ # via # -r requirements/base.txt # matplotlib -matplotlib==3.8.4 \ - --hash=sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67 \ - --hash=sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c \ - --hash=sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94 \ - --hash=sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb \ - --hash=sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9 \ - --hash=sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0 \ - --hash=sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616 \ - --hash=sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa \ - --hash=sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661 \ - --hash=sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a \ - --hash=sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae \ - --hash=sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6 \ - --hash=sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea \ - --hash=sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106 \ - --hash=sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef \ - --hash=sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54 \ - --hash=sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f \ - --hash=sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014 \ - --hash=sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338 \ - --hash=sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25 \ - --hash=sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b \ - --hash=sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35 \ - --hash=sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732 \ - --hash=sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71 \ - --hash=sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10 \ - --hash=sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0 \ - --hash=sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30 \ - --hash=sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc +matplotlib==3.9.2 \ + --hash=sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21 \ + --hash=sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5 \ + --hash=sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697 \ + --hash=sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9 \ + --hash=sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca \ + --hash=sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64 \ + --hash=sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e \ + --hash=sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03 \ + --hash=sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae \ + --hash=sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa \ + --hash=sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3 \ + --hash=sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e \ + --hash=sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a \ + --hash=sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc \ + --hash=sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea \ + --hash=sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b \ + --hash=sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e \ + --hash=sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447 \ + --hash=sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b \ + --hash=sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92 \ + --hash=sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb \ + --hash=sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66 \ + --hash=sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9 \ + --hash=sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7 \ + --hash=sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2 \ + --hash=sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30 \ + --hash=sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d \ + --hash=sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7 \ + --hash=sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4 \ + --hash=sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41 \ + --hash=sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2 \ + --hash=sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556 \ + --hash=sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f \ + --hash=sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772 \ + --hash=sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c \ + --hash=sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a \ + --hash=sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51 \ + --hash=sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49 \ + --hash=sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c \ + --hash=sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413 # via -r requirements/base.txt mock==5.1.0 \ --hash=sha256:18c694e5ae8a208cdb3d2c20a993ca1a7b0efa258c247a1e565150f477f83744 \ --hash=sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d # via -r requirements/test.in -mypy==1.10.0 \ - --hash=sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061 \ - --hash=sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99 \ - --hash=sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de \ - --hash=sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a \ - --hash=sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9 \ - --hash=sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec \ - --hash=sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1 \ - --hash=sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131 \ - --hash=sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f \ - --hash=sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821 \ - --hash=sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5 \ - --hash=sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee \ - --hash=sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e \ - --hash=sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746 \ - --hash=sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2 \ - --hash=sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0 \ - --hash=sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b \ - --hash=sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53 \ - --hash=sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30 \ - --hash=sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda \ - --hash=sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051 \ - --hash=sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2 \ - --hash=sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7 \ - --hash=sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee \ - --hash=sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727 \ - --hash=sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976 \ - --hash=sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4 +mypy==1.13.0 \ + --hash=sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc \ + --hash=sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e \ + --hash=sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f \ + --hash=sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74 \ + --hash=sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a \ + --hash=sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2 \ + --hash=sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b \ + --hash=sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73 \ + --hash=sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e \ + --hash=sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d \ + --hash=sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d \ + --hash=sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6 \ + --hash=sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca \ + --hash=sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d \ + --hash=sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5 \ + --hash=sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62 \ + --hash=sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a \ + --hash=sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc \ + --hash=sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7 \ + --hash=sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb \ + --hash=sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7 \ + --hash=sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732 \ + --hash=sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80 \ + --hash=sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a \ + --hash=sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc \ + --hash=sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2 \ + --hash=sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0 \ + --hash=sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24 \ + --hash=sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7 \ + --hash=sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b \ + --hash=sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372 \ + --hash=sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8 # via -r requirements/test.in mypy-extensions==1.0.0 \ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ diff --git a/tox.ini b/tox.ini index 6e96bba..f9e5a4b 100644 --- a/tox.ini +++ b/tox.ini @@ -7,7 +7,6 @@ ignore_base_python_conflict=true basepython = {env:PYTHON:python3.9} setenv = LANG = en_US.UTF-8 deps = -r requirements/test.txt -changedir = ./hwbench commands = coverage erase coverage run -m pytest -vvv --junitxml=junit-{envname}.xml --ignore={toxworkdir}