zpdatafetch 2.4.1__tar.gz → 2.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. {zpdatafetch-2.4.1/src/zpdatafetch.egg-info → zpdatafetch-2.4.3}/PKG-INFO +11 -1
  2. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/README.md +10 -0
  3. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/pyproject.toml +1 -1
  4. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3/src/zpdatafetch.egg-info}/PKG-INFO +11 -1
  5. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrrider.py +94 -0
  6. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/LICENSE +0 -0
  7. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/setup.cfg +0 -0
  8. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/__init__.py +0 -0
  9. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/cli.py +0 -0
  10. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/config.py +0 -0
  11. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/error_helpers.py +0 -0
  12. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/exceptions.py +0 -0
  13. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/http_client.py +0 -0
  14. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/json_helpers.py +0 -0
  15. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/logging.py +0 -0
  16. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/shared/validation.py +0 -0
  17. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/__init__.py +0 -0
  18. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/activity.py +0 -0
  19. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/auth.py +0 -0
  20. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/cli.py +0 -0
  21. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/config.py +0 -0
  22. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/followers.py +0 -0
  23. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/logging_config.py +0 -0
  24. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/profile.py +0 -0
  25. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/rideons.py +0 -0
  26. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/ridersinworld.py +0 -0
  27. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zdatafetch/worlds.py +0 -0
  28. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/__init__.py +0 -0
  29. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/async_zp.py +0 -0
  30. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/cli.py +0 -0
  31. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/config.py +0 -0
  32. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/logging_config.py +0 -0
  33. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zp.py +0 -0
  34. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zp_obj.py +0 -0
  35. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zp_utils.py +0 -0
  36. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpcyclist.py +0 -0
  37. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpcyclistfetch.py +0 -0
  38. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpleague.py +0 -0
  39. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpleaguefetch.py +0 -0
  40. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpprime.py +0 -0
  41. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpprimesfetch.py +0 -0
  42. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpracefinish.py +0 -0
  43. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpracelog.py +0 -0
  44. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpraceresult.py +0 -0
  45. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpracesignup.py +0 -0
  46. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpracesprint.py +0 -0
  47. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpresultfetch.py +0 -0
  48. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpsignupfetch.py +0 -0
  49. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpsprintsfetch.py +0 -0
  50. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpteam.py +0 -0
  51. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch/zpteamfetch.py +0 -0
  52. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch.egg-info/SOURCES.txt +0 -0
  53. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch.egg-info/dependency_links.txt +0 -0
  54. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch.egg-info/entry_points.txt +0 -0
  55. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch.egg-info/requires.txt +0 -0
  56. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zpdatafetch.egg-info/top_level.txt +0 -0
  57. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/__init__.py +0 -0
  58. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/async_zr.py +0 -0
  59. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/cli.py +0 -0
  60. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/config.py +0 -0
  61. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/logging_config.py +0 -0
  62. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/rate_limiter.py +0 -0
  63. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zr.py +0 -0
  64. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zr_utils.py +0 -0
  65. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrcategories.py +0 -0
  66. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrcategoriesfetch.py +0 -0
  67. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrraceresult.py +0 -0
  68. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrresultfetch.py +0 -0
  69. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrriderfetch.py +0 -0
  70. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrteamfetch.py +0 -0
  71. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zrdatafetch/zrteamroster.py +0 -0
  72. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/__init__.py +0 -0
  73. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/async_zs.py +0 -0
  74. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/cli.py +0 -0
  75. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/logging_config.py +0 -0
  76. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/__init__.py +0 -0
  77. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/component.py +0 -0
  78. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/incident.py +0 -0
  79. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/maintenance.py +0 -0
  80. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/page.py +0 -0
  81. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/status.py +0 -0
  82. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/models/summary.py +0 -0
  83. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/zs.py +0 -0
  84. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/zsincidentfetch.py +0 -0
  85. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/zsmaintenancefetch.py +0 -0
  86. {zpdatafetch-2.4.1 → zpdatafetch-2.4.3}/src/zsdatafetch/zssummaryfetch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zpdatafetch
3
- Version: 2.4.1
3
+ Version: 2.4.3
4
4
  Summary: A package for fetching data from Zwiftpower and Zwiftracing.app
5
5
  Author-email: Doug Morris <doug@mhost.com>
6
6
  License-Expression: MIT
@@ -679,6 +679,16 @@ This provides a clear, separate execution path.
679
679
  - `drs_rank`: Category for DRS
680
680
  - `gender`: Rider gender (M/F)
681
681
  - `zrcs`: Zwiftracing compound score (power metric)
682
+ - `velo_skill_*`: vELO2 skill deltas (endurance, pursuit, sprint, punch,
683
+ climb, time_trial)
684
+ - `velo_category_number`: vELO2 category number
685
+ - `velo_category_name`: vELO2 category name
686
+ - `velo_max30`: vELO2 30-day max rating
687
+ - `velo_max90`: vELO2 90-day max rating
688
+ - `velo_max30_category_number`: vELO2 30-day max category number
689
+ - `velo_max30_category_name`: vELO2 30-day max category name
690
+ - `velo_max90_category_number`: vELO2 90-day max category number
691
+ - `velo_max90_category_name`: vELO2 90-day max category name
682
692
 
683
693
  **ZRResult**: Race result data
684
694
 
@@ -650,6 +650,16 @@ This provides a clear, separate execution path.
650
650
  - `drs_rank`: Category for DRS
651
651
  - `gender`: Rider gender (M/F)
652
652
  - `zrcs`: Zwiftracing compound score (power metric)
653
+ - `velo_skill_*`: vELO2 skill deltas (endurance, pursuit, sprint, punch,
654
+ climb, time_trial)
655
+ - `velo_category_number`: vELO2 category number
656
+ - `velo_category_name`: vELO2 category name
657
+ - `velo_max30`: vELO2 30-day max rating
658
+ - `velo_max90`: vELO2 90-day max rating
659
+ - `velo_max30_category_number`: vELO2 30-day max category number
660
+ - `velo_max30_category_name`: vELO2 30-day max category name
661
+ - `velo_max90_category_number`: vELO2 90-day max category number
662
+ - `velo_max90_category_name`: vELO2 90-day max category name
653
663
 
654
664
  **ZRResult**: Race result data
655
665
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "zpdatafetch"
3
- version = "2.4.1"
3
+ version = "2.4.3"
4
4
  description = "A package for fetching data from Zwiftpower and Zwiftracing.app"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zpdatafetch
3
- Version: 2.4.1
3
+ Version: 2.4.3
4
4
  Summary: A package for fetching data from Zwiftpower and Zwiftracing.app
5
5
  Author-email: Doug Morris <doug@mhost.com>
6
6
  License-Expression: MIT
@@ -679,6 +679,16 @@ This provides a clear, separate execution path.
679
679
  - `drs_rank`: Category for DRS
680
680
  - `gender`: Rider gender (M/F)
681
681
  - `zrcs`: Zwiftracing compound score (power metric)
682
+ - `velo_skill_*`: vELO2 skill deltas (endurance, pursuit, sprint, punch,
683
+ climb, time_trial)
684
+ - `velo_category_number`: vELO2 category number
685
+ - `velo_category_name`: vELO2 category name
686
+ - `velo_max30`: vELO2 30-day max rating
687
+ - `velo_max90`: vELO2 90-day max rating
688
+ - `velo_max30_category_number`: vELO2 30-day max category number
689
+ - `velo_max30_category_name`: vELO2 30-day max category name
690
+ - `velo_max90_category_number`: vELO2 90-day max category number
691
+ - `velo_max90_category_name`: vELO2 90-day max category name
682
692
 
683
693
  **ZRResult**: Race result data
684
694
 
@@ -69,6 +69,20 @@ class ZRRider:
69
69
  velo_punch: vELO2 punch factor
70
70
  velo_climb: vELO2 climb factor
71
71
  velo_time_trial_factor: vELO2 time trial factor
72
+ velo_skill_endurance: vELO2 skill endurance delta
73
+ velo_skill_pursuit: vELO2 skill pursuit delta
74
+ velo_skill_sprint: vELO2 skill sprint delta
75
+ velo_skill_punch: vELO2 skill punch delta
76
+ velo_skill_climb: vELO2 skill climb delta
77
+ velo_skill_time_trial: vELO2 skill time trial delta
78
+ velo_category_number: vELO2 category number
79
+ velo_category_name: vELO2 category name
80
+ velo_max30: vELO2 30-day max rating
81
+ velo_max90: vELO2 90-day max rating
82
+ velo_max30_category_number: vELO2 30-day max category number
83
+ velo_max30_category_name: vELO2 30-day max category name
84
+ velo_max90_category_number: vELO2 90-day max category number
85
+ velo_max90_category_name: vELO2 90-day max category name
72
86
  _excluded: Recognized but not explicitly handled fields
73
87
  _extra: Unknown/new fields from API changes
74
88
  """
@@ -126,6 +140,28 @@ class ZRRider:
126
140
  velo_climb: float = 0.0
127
141
  velo_time_trial_factor: float = 0.0
128
142
 
143
+ # Velo skill (vELO2 skill deltas)
144
+ velo_skill_endurance: float = 0.0
145
+ velo_skill_pursuit: float = 0.0
146
+ velo_skill_sprint: float = 0.0
147
+ velo_skill_punch: float = 0.0
148
+ velo_skill_climb: float = 0.0
149
+ velo_skill_time_trial: float = 0.0
150
+
151
+ # Velo category (vELO2 category)
152
+ velo_category_number: int = 0
153
+ velo_category_name: str = ''
154
+
155
+ # Velo max (vELO2 max30/max90)
156
+ velo_max30: float = 0.0
157
+ velo_max90: float = 0.0
158
+
159
+ # Velo max category (vELO2 max30Category/max90Category)
160
+ velo_max30_category_number: int = 0
161
+ velo_max30_category_name: str = ''
162
+ velo_max90_category_number: int = 0
163
+ velo_max90_category_name: str = ''
164
+
129
165
  # Field classification
130
166
  _excluded: dict[str, Any] = field(default_factory=dict, repr=False)
131
167
  _extra: dict[str, Any] = field(default_factory=dict, repr=False)
@@ -300,6 +336,50 @@ class ZRRider:
300
336
  extract_nested_value(data, 'velo', 'factors', 'timeTrial'),
301
337
  )
302
338
 
339
+ # Velo skill (vELO2 skill deltas)
340
+ velo_skill_endurance = safe_float(
341
+ extract_nested_value(data, 'velo', 'skill', 'endurance'),
342
+ )
343
+ velo_skill_pursuit = safe_float(
344
+ extract_nested_value(data, 'velo', 'skill', 'pursuit'),
345
+ )
346
+ velo_skill_sprint = safe_float(
347
+ extract_nested_value(data, 'velo', 'skill', 'sprint'),
348
+ )
349
+ velo_skill_punch = safe_float(
350
+ extract_nested_value(data, 'velo', 'skill', 'punch'),
351
+ )
352
+ velo_skill_climb = safe_float(
353
+ extract_nested_value(data, 'velo', 'skill', 'climb'),
354
+ )
355
+ velo_skill_time_trial = safe_float(
356
+ extract_nested_value(data, 'velo', 'skill', 'timeTrial'),
357
+ )
358
+
359
+ # Velo category (vELO2 category)
360
+ velo_category_number = safe_int(
361
+ extract_nested_value(data, 'velo', 'category', 'number'),
362
+ )
363
+ velo_category_name = safe_str(
364
+ extract_nested_value(data, 'velo', 'category', 'name'),
365
+ )
366
+
367
+ # Velo max (vELO2 max30/max90)
368
+ velo_max30 = safe_float(extract_nested_value(data, 'velo', 'max30'))
369
+ velo_max90 = safe_float(extract_nested_value(data, 'velo', 'max90'))
370
+ velo_max30_category_number = safe_int(
371
+ extract_nested_value(data, 'velo', 'max30Category', 'number'),
372
+ )
373
+ velo_max30_category_name = safe_str(
374
+ extract_nested_value(data, 'velo', 'max30Category', 'name'),
375
+ )
376
+ velo_max90_category_number = safe_int(
377
+ extract_nested_value(data, 'velo', 'max90Category', 'number'),
378
+ )
379
+ velo_max90_category_name = safe_str(
380
+ extract_nested_value(data, 'velo', 'max90Category', 'name'),
381
+ )
382
+
303
383
  # Classify remaining fields
304
384
  excluded = {}
305
385
  extra = {}
@@ -352,6 +432,20 @@ class ZRRider:
352
432
  velo_punch=velo_punch,
353
433
  velo_climb=velo_climb,
354
434
  velo_time_trial_factor=velo_time_trial_factor,
435
+ velo_skill_endurance=velo_skill_endurance,
436
+ velo_skill_pursuit=velo_skill_pursuit,
437
+ velo_skill_sprint=velo_skill_sprint,
438
+ velo_skill_punch=velo_skill_punch,
439
+ velo_skill_climb=velo_skill_climb,
440
+ velo_skill_time_trial=velo_skill_time_trial,
441
+ velo_category_number=velo_category_number,
442
+ velo_category_name=velo_category_name,
443
+ velo_max30=velo_max30,
444
+ velo_max90=velo_max90,
445
+ velo_max30_category_number=velo_max30_category_number,
446
+ velo_max30_category_name=velo_max30_category_name,
447
+ velo_max90_category_number=velo_max90_category_number,
448
+ velo_max90_category_name=velo_max90_category_name,
355
449
  _excluded=excluded,
356
450
  _extra=extra,
357
451
  )
File without changes
File without changes