Skip to content

Commit 0bace15

Browse files
committed
Add new 'power_adjust' config option.
Warn about old X_pace_adjust options not working if still in config.
1 parent bcf5e49 commit 0bace15

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

config.yaml.example

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,5 @@ trainasone_email: [email protected]
44
trainasone_password: my_password
55
finalsurge_email: [email protected]
66
finalsurge_password: my_password
7-
recovery_pace_adjust: [0, 0]
8-
very_easy_pace_adjust: [0, 0]
9-
easy_pace_adjust: [0, 0]
10-
fast_pace_adjust: [0, 0]
11-
extreme_pace_adjust: [0, 0]
7+
power_adjust: [0, 0]
128
number_of_workouts: 1

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "trainaspower"
3-
version = "0.7.2"
3+
version = "0.7.3"
44
description = "Convert TrainAsOne plans to power and upload to Final Surge for use with Stryd pod."
55
authors = ["Chase Sterling <[email protected]>"]
66
license = "MIT"

trainaspower/models.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
import builtins
12
import datetime
23
from dataclasses import dataclass
3-
from typing import List, NamedTuple, Union, Tuple
4+
from typing import List, NamedTuple, Union, Tuple, Any
45

6+
from loguru import logger
57
from pint import UnitRegistry, Quantity
6-
from pydantic import BaseModel
7-
8+
from pydantic import BaseModel, Field, validator
89

910
ureg = UnitRegistry()
1011
mile = ureg.mile
@@ -21,12 +22,24 @@ class Config(BaseModel):
2122
trainasone_password: str
2223
finalsurge_email: str
2324
finalsurge_password: str
24-
recovery_pace_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
25-
very_easy_pace_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
26-
easy_pace_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
27-
fast_pace_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
28-
extreme_pace_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
25+
power_adjust: Tuple[Union[float, int], Union[float, int]] = (0, 0)
2926
number_of_workouts: int = 1
27+
# Old config values
28+
recovery_pace_adjust: Any = Field(removed='Field `power_adjust` has been added instead')
29+
very_easy_pace_adjust: Any = Field(removed='Field `power_adjust` has been added instead')
30+
easy_pace_adjust: Any = Field(removed='Field `power_adjust` has been added instead')
31+
fast_pace_adjust: Any = Field(removed='Field `power_adjust` has been added instead')
32+
extreme_pace_adjust: Any = Field(removed='Field `power_adjust` has been added instead.')
33+
34+
@validator('*')
35+
def warn_removed(cls, v, field):
36+
removed = field.field_info.extra.get('removed')
37+
if removed:
38+
message = f'Config field `{field.name}` was removed.'
39+
if isinstance(removed, str):
40+
message += f' {removed}'
41+
logger.warning(message)
42+
return v
3043

3144
class Config:
3245
extra = 'forbid'
@@ -41,6 +54,14 @@ def __init__(self, min_val, max_val):
4154
self.min = max(0, min_val)
4255
self.max = max_val
4356

57+
def __add__(self, other):
58+
new = PowerRange(self.min, self.max)
59+
if not len(other) == 2:
60+
raise ValueError(f'Cannot add {repr(other)} to PowerRange')
61+
new.min = builtins.max(0, self.min + other[0])
62+
new.max += other[1]
63+
return new
64+
4465

4566
class PaceRange(NamedTuple):
4667
min: Quantity

trainaspower/trainasone.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ def convert_steps(steps, config: models.Config, perceived_effort: bool) -> Gener
183183
else:
184184
out_step.power_range = convert_pace_range_to_power(
185185
out_step.pace_range)
186+
# Add adjustment from config
187+
out_step.power_range += config.power_adjust
186188

187189
yield out_step
188190

0 commit comments

Comments
 (0)