Skip to content

Commit 90252ca

Browse files
committed
Fixed installation issue with PyYAML and cython version.
Fixed duration from gtasks not a valid value issue by serialising before sync
1 parent b709b6f commit 90252ca

File tree

2 files changed

+11
-22
lines changed

2 files changed

+11
-22
lines changed

cython_constraint.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Cython<3
2+
# echo "Cython<3" > cython_constraint.txt  ✔  base
3+
# PIP_CONSTRAINT=cython_constraint.txt pip3 install "PyYAML<6.0.0,>=5.3.1"
4+

syncall/taskwarrior/taskw_duration.py

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from syncall.types import TaskwarriorRawItem
88

9-
tw_duration_key = "syncallduration"
9+
tw_duration_key = "twgcalsyncduration"
1010

1111

1212
def extract_part(s: str, split: str) -> Tuple[float, str]:
@@ -108,11 +108,11 @@ def parse_iso8601_duration(string: str) -> timedelta:
108108
return timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
109109

110110

111-
def taskw_duration_serialize(value: timedelta) -> str:
111+
def duration_serialize(value: timedelta) -> str:
112112
"""
113-
>>> taskw_duration_serialize(timedelta(days=300))
113+
>>> duration_serialize(timedelta(days=300))
114114
'PT25920000S'
115-
>>> taskw_duration_serialize(timedelta(minutes=3))
115+
>>> duration_serialize(timedelta(minutes=3))
116116
'PT180S'
117117
"""
118118
# TODO atm (220220529) taskwarrior does not support float notation for its fields (i.e.,
@@ -121,33 +121,18 @@ def taskw_duration_serialize(value: timedelta) -> str:
121121
return "PT{}S".format(int(value.total_seconds()))
122122

123123

124-
def taskw_duration_deserialize(value: str) -> timedelta:
124+
def duration_deserialize(value: str) -> timedelta:
125125
return parse_iso8601_duration(value)
126126

127127

128128
def convert_tw_duration_to_timedelta(
129-
item: TaskwarriorRawItem, default_duration=datetime.timedelta(hours=1)
130-
) -> None:
129+
item: TaskwarriorRawItem, default_duration=duration_serialize(datetime.timedelta(hours=1))) -> None:
131130
if tw_duration_key in item.keys():
132131
duration = item[tw_duration_key]
133132
if isinstance(duration, str):
134-
duration: datetime.timedelta = taskw_duration_deserialize(duration)
133+
duration: datetime.timedelta = duration_deserialize(duration)
135134
assert isinstance(duration, datetime.timedelta)
136135
else:
137136
duration = default_duration
138137

139138
item[tw_duration_key] = duration
140-
141-
142-
def convert_tw_duration_serialize(
143-
item: TaskwarriorRawItem, default_duration=datetime.timedelta(hours=1)
144-
) -> None:
145-
if tw_duration_key in item.keys():
146-
duration = item[tw_duration_key]
147-
if isinstance(duration, str):
148-
duration: datetime.timedelta = taskw_duration_deserialize(duration)
149-
assert isinstance(duration, datetime.timedelta)
150-
else:
151-
duration = default_duration
152-
153-
item[tw_duration_key] = taskw_duration_serialize(value=duration)

0 commit comments

Comments
 (0)