reviewstats: don't write 'None' if duration is unset

Keep the current reviewstats format: when review duration is unset/unknown,
the line contains only two values separated by one tab and then EOL.

Another way to test/reproduce the fixed issue:
1. add 'lllll : !stats' to tests/datas/irc.txt
2. run 'pytest tests/test_review_stats.py'
This commit is contained in:
Pierre-Louis Bonicoli 2024-07-21 15:18:52 +02:00
parent c4a3e78967
commit 919bb59859
Signed by: pilou
GPG Key ID: 06914C4A5EDAA6DD
3 changed files with 42 additions and 30 deletions

View File

@ -9,6 +9,29 @@ class ReviewData:
user_count: int
duration: int
def __str__(self):
return (
f"{self.date.strftime('%Y%m%d-%Hh%M')}\t{self.user_count}"
f"{f'\t{self.duration}' if self.duration is not None else ''}"
"\n"
)
@staticmethod
def load(line: str):
datas = re.split(r"\s+", line.strip())
if len(datas) == 2:
return ReviewData(
datetime.strptime(datas[0], "%Y%m%d-%Hh%M"),
int(datas[1]),
None,
)
return ReviewData(
datetime.strptime(datas[0], "%Y%m%d-%Hh%M"),
int(datas[1]),
int(datas[2]),
)
class Board:
def __init__(self, datas={}):
@ -148,23 +171,7 @@ class ReviewStats:
lines = file_handle.read().splitlines()
for line in lines:
if line.strip() != "":
datas = re.split(r"\s+", line)
if len(datas) == 2:
self.datas.append(
ReviewData(
datetime.strptime(datas[0], "%Y%m%d-%Hh%M"),
int(datas[1]),
None,
)
)
else:
self.datas.append(
ReviewData(
datetime.strptime(datas[0], "%Y%m%d-%Hh%M"),
int(datas[1]),
int(datas[2]) if datas[2]!="" else None,
)
)
self.datas.append(ReviewData.load(line))
except FileNotFoundError:
# no file, no stats
pass
@ -174,7 +181,4 @@ class ReviewStats:
def save(self):
with open(self.filepath, "w") as file_handle:
for data in self.datas:
file_handle.write(
f"{data.date.strftime('%Y%m%d-%Hh%M')}\t"
f"{data.user_count}\t{data.duration}\n"
)
file_handle.write(str(data))

View File

@ -1,12 +1,12 @@
20110930-12h00 1
20111007-12h00 2
20111014-12h00 4
20111021-12h00 5
20111028-12h00 10
20111104-12h00 6
20111111-12h00 1
20111118-12h00 2
20111125-12h00 4
20110930-12h00 1
20111007-12h00 2
20111014-12h00 4
20111021-12h00 5
20111028-12h00 10
20111104-12h00 6
20111111-12h00 1
20111118-12h00 2
20111125-12h00 4
20111202-12h00 5 3
20111209-12h00 1 7
20111216-12h00 2 17

1 20110930-12h00 20110930-12h00 1 1
2 20111007-12h00 20111007-12h00 2 2
3 20111014-12h00 20111014-12h00 4 4
4 20111021-12h00 20111021-12h00 5 5
5 20111028-12h00 20111028-12h00 10 10
6 20111104-12h00 20111104-12h00 6 6
7 20111111-12h00 20111111-12h00 1 1
8 20111118-12h00 20111118-12h00 2 2
9 20111125-12h00 20111125-12h00 4 4
10 20111202-12h00 20111202-12h00 5 3 5 3
11 20111209-12h00 20111209-12h00 1 7 1 7
12 20111216-12h00 20111216-12h00 2 17 2 17

View File

@ -0,0 +1,8 @@
from review.stats import ReviewData
def test_reviewdata():
for filename in ("reviewstats_1.csv", "reviewstats_2.csv"):
with open(f"tests/datas/{filename}", "r") as review:
for line in review:
assert line == str(ReviewData.load(line))