Skip to content

Commit

Permalink
Add more hints so mypy passes
Browse files Browse the repository at this point in the history
  • Loading branch information
asmacdo committed Sep 19, 2024
1 parent 40d43a8 commit b830e45
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/con_duct/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,8 +343,7 @@ def __init__(
self.number = 1
self.system_info: SystemInfo | None = None
self.full_run_stats = Sample()
self.averages: Averages = Averages()
self.current_sample: Sample | None = None
self.current_sample: Optional[Sample] = None
self.end_time: float | None = None
self.run_time_seconds: str | None = None

Expand Down Expand Up @@ -461,6 +460,7 @@ def update_from_sample(self, sample: Sample) -> None:
else:
assert self.current_sample.averages is not None
self.current_sample = self.current_sample.aggregate(sample)
assert self.current_sample is not None

def write_subreport(self) -> None:
assert self.current_sample is not None
Expand Down
26 changes: 26 additions & 0 deletions test/test_aggregation.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from typing import cast
from unittest import mock
import pytest
from con_duct.__main__ import EXECUTION_SUMMARY_FORMAT, ProcessStats, Report, Sample
Expand Down Expand Up @@ -52,6 +53,10 @@ def test_aggregation_num_samples_increment(mock_log_paths: mock.MagicMock) -> No
assert report.current_sample is None
assert report.full_run_stats.averages.num_samples == 0
report.update_from_sample(ex0)
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.current_sample.averages.num_samples == 1
assert report.full_run_stats.averages.num_samples == 1
report.update_from_sample(ex0)
Expand All @@ -74,6 +79,11 @@ def test_aggregation_single_sample_sanity(mock_log_paths: mock.MagicMock) -> Non
assert report.full_run_stats.averages.num_samples == 0
report.update_from_sample(ex0)
# 3 pids in a single sample should still be "1" sample
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.full_run_stats is not None
assert report.current_sample.averages.num_samples == 1
assert report.full_run_stats.averages.num_samples == 1

Expand Down Expand Up @@ -104,6 +114,10 @@ def test_aggregation_single_stat_multiple_samples_sanity(
report.update_from_sample(ex0)
report.update_from_sample(ex0)
report.update_from_sample(ex0)
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.current_sample.averages.num_samples == 3
assert report.full_run_stats.averages.num_samples == 3

Expand Down Expand Up @@ -146,6 +160,10 @@ def test_aggregation_averages(mock_log_paths: mock.MagicMock) -> None:
report.update_from_sample(sample0)
report.update_from_sample(sample1)
report.update_from_sample(sample2)
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.current_sample.averages.num_samples == 3
assert report.full_run_stats.averages.num_samples == 3

Expand Down Expand Up @@ -211,6 +229,10 @@ def test_aggregation_current_ave_diverges_from_total_ave(
report.update_from_sample(sample0)
report.update_from_sample(sample1)
report.update_from_sample(sample2)
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.current_sample.averages.num_samples == 3
assert report.full_run_stats.averages.num_samples == 3
# full_run_stats.averages is still identical to current_sample
Expand All @@ -224,6 +246,10 @@ def test_aggregation_current_ave_diverges_from_total_ave(
report.update_from_sample(sample2)
report.update_from_sample(sample2)
report.update_from_sample(sample2)
report.current_sample = cast(
Sample, report.current_sample
) # So mypy is convcinced it is not None
assert report.current_sample is not None
assert report.current_sample.averages.num_samples == 3
assert report.full_run_stats.averages.num_samples == 6

Expand Down

0 comments on commit b830e45

Please sign in to comment.