otf-api 0.6.2__py3-none-any.whl → 0.6.4__py3-none-any.whl

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.
otf_api/__init__.py CHANGED
@@ -6,7 +6,7 @@ from loguru import logger
6
6
  from .api import Otf
7
7
  from .auth import OtfUser
8
8
 
9
- __version__ = "0.6.2"
9
+ __version__ = "0.6.4"
10
10
 
11
11
 
12
12
  __all__ = ["Otf", "OtfUser"]
@@ -11,7 +11,6 @@ from .responses import (
11
11
  DoW,
12
12
  EquipmentType,
13
13
  FavoriteStudioList,
14
- HistoryClassStatus,
15
14
  LatestAgreement,
16
15
  MemberDetail,
17
16
  MemberMembership,
@@ -45,7 +44,6 @@ __all__ = [
45
44
  "DoW",
46
45
  "EquipmentType",
47
46
  "FavoriteStudioList",
48
- "HistoryClassStatus",
49
47
  "LatestAgreement",
50
48
  "MemberDetail",
51
49
  "MemberMembership",
@@ -5,7 +5,7 @@ from .cancel_booking import CancelBooking
5
5
  from .challenge_tracker_content import ChallengeTrackerContent
6
6
  from .challenge_tracker_detail import ChallengeTrackerDetailList
7
7
  from .classes import ClassType, DoW, OtfClassList
8
- from .enums import ChallengeType, EquipmentType, HistoryClassStatus
8
+ from .enums import ChallengeType, EquipmentType
9
9
  from .favorite_studios import FavoriteStudioList
10
10
  from .latest_agreement import LatestAgreement
11
11
  from .lifetime_stats import StatsResponse, StatsTime
@@ -35,7 +35,6 @@ __all__ = [
35
35
  "DoW",
36
36
  "EquipmentType",
37
37
  "FavoriteStudioList",
38
- "HistoryClassStatus",
39
38
  "LatestAgreement",
40
39
  "MemberDetail",
41
40
  "MemberMembership",
@@ -70,16 +70,16 @@ class Member(OtfItemBase):
70
70
  first_name: str = Field(..., alias="firstName")
71
71
  last_name: str = Field(..., alias="lastName")
72
72
  email: str
73
- profile_picture_url: None = Field(..., alias="profilePictureUrl")
73
+ profile_picture_url: str | None = Field(..., alias="profilePictureUrl")
74
74
  alternate_emails: None = Field(..., alias="alternateEmails")
75
- address_line1: None = Field(..., alias="addressLine1")
76
- address_line2: None = Field(..., alias="addressLine2")
77
- city: None
78
- state: None
79
- postal_code: None = Field(..., alias="postalCode")
75
+ address_line1: str | None = Field(..., alias="addressLine1")
76
+ address_line2: str | None = Field(..., alias="addressLine2")
77
+ city: str | None
78
+ state: str | None
79
+ postal_code: str | None = Field(..., alias="postalCode")
80
80
  phone_number: str = Field(..., alias="phoneNumber")
81
81
  home_phone: str = Field(..., alias="homePhone")
82
- work_phone: None = Field(..., alias="workPhone")
82
+ work_phone: str | None = Field(..., alias="workPhone")
83
83
  phone_type: None = Field(..., alias="phoneType")
84
84
  birth_day: str = Field(..., alias="birthDay")
85
85
  cc_last4: str = Field(..., alias="ccLast4")
@@ -195,13 +195,13 @@ class SavedBooking(OtfItemBase):
195
195
  member_id: int = Field(..., alias="memberId")
196
196
  mbo_member_id: str = Field(..., alias="mboMemberId")
197
197
  mbo_class_id: int = Field(..., alias="mboClassId")
198
- mbo_visit_id: None = Field(..., alias="mboVisitId")
199
- mbo_waitlist_entry_id: None = Field(..., alias="mboWaitlistEntryId")
200
- mbo_sync_message: None = Field(..., alias="mboSyncMessage")
198
+ mbo_visit_id: int | None = Field(..., alias="mboVisitId")
199
+ mbo_waitlist_entry_id: int | None = Field(..., alias="mboWaitlistEntryId")
200
+ mbo_sync_message: str | None = Field(..., alias="mboSyncMessage")
201
201
  status: str
202
202
  booked_date: datetime = Field(..., alias="bookedDate")
203
- checked_in_date: None = Field(..., alias="checkedInDate")
204
- cancelled_date: None = Field(..., alias="cancelledDate")
203
+ checked_in_date: datetime | None = Field(..., alias="checkedInDate")
204
+ cancelled_date: datetime | None = Field(..., alias="cancelledDate")
205
205
  created_by: str | None = Field(None, alias="createdBy")
206
206
  created_date: datetime | None = Field(None, alias="createdDate")
207
207
  updated_by: str | None = Field(None, alias="updatedBy")
@@ -376,7 +376,7 @@ class MboClass(OtfItemBase):
376
376
  location: Location1
377
377
  max_capacity: MaxCapacity = Field(..., alias="maxCapacity")
378
378
  web_capacity: WebCapacity = Field(..., alias="webCapacity")
379
- total_booked: None = Field(..., alias="totalBooked")
379
+ total_booked: int | None = Field(..., alias="totalBooked")
380
380
  total_booked_waitlist: TotalBookedWaitlist = Field(..., alias="totalBookedWaitlist")
381
381
  web_booked: WebBooked = Field(..., alias="webBooked")
382
382
  semester_id: SemesterId = Field(..., alias="semesterId")
@@ -2,7 +2,6 @@ from datetime import datetime
2
2
  from enum import Enum
3
3
  from typing import ClassVar
4
4
 
5
- from inflection import humanize
6
5
  from pydantic import Field
7
6
 
8
7
  from otf_api.models.base import OtfItemBase, OtfListBase
@@ -17,10 +16,6 @@ class StudioStatus(str, Enum):
17
16
  TEMP_CLOSED = "Temporarily Closed"
18
17
  PERM_CLOSED = "Permanently Closed"
19
18
 
20
- @classmethod
21
- def all_statuses(cls) -> list[str]:
22
- return list(cls.__members__.values())
23
-
24
19
 
25
20
  class BookingStatus(str, Enum):
26
21
  CheckedIn = "Checked In"
@@ -34,46 +29,6 @@ class BookingStatus(str, Enum):
34
29
  CheckinRequested = "Checkin Requested"
35
30
  CheckinCancelled = "Checkin Cancelled"
36
31
 
37
- @classmethod
38
- def get_from_key_insensitive(cls, key: str) -> "BookingStatus":
39
- lcase_to_actual = {item.lower(): item for item in cls._member_map_}
40
- val = cls.__members__.get(lcase_to_actual[key.lower()])
41
- if not val:
42
- raise ValueError(f"Invalid BookingStatus: {key}")
43
- return val
44
-
45
- @classmethod
46
- def get_case_insensitive(cls, value: str) -> str:
47
- lcase_to_actual = {item.value.lower(): item.value for item in cls}
48
- return lcase_to_actual[value.lower()]
49
-
50
- @classmethod
51
- def all_statuses(cls) -> list[str]:
52
- return list(cls.__members__.values())
53
-
54
-
55
- class BookingStatusCli(str, Enum):
56
- """Flipped enum so that the CLI does not have values with spaces"""
57
-
58
- CheckedIn = "CheckedIn"
59
- CancelCheckinPending = "CancelCheckinPending"
60
- CancelCheckinRequested = "CancelCheckinRequested"
61
- Cancelled = "Cancelled"
62
- LateCancelled = "LateCancelled"
63
- Booked = "Booked"
64
- Waitlisted = "Waitlisted"
65
- CheckinPending = "CheckinPending"
66
- CheckinRequested = "CheckinRequested"
67
- CheckinCancelled = "CheckinCancelled"
68
-
69
- @classmethod
70
- def to_standard_case_insensitive(cls, key: str) -> BookingStatus:
71
- lcase_to_actual = {item.lower(): item for item in cls._member_map_}
72
- val = cls.__members__.get(lcase_to_actual[key.lower()])
73
- if not val:
74
- raise ValueError(f"Invalid BookingStatus: {key}")
75
- return BookingStatus(val)
76
-
77
32
  @classmethod
78
33
  def get_case_insensitive(cls, value: str) -> str:
79
34
  lcase_to_actual = {item.value.lower(): item.value for item in cls}
@@ -162,23 +117,6 @@ class OtfClass(OtfItemBase, OtfClassTimeMixin):
162
117
  location: Location
163
118
  virtual_class: bool | None = Field(None, alias="virtualClass")
164
119
 
165
- @classmethod
166
- def attr_to_column_header(cls, attr: str) -> str:
167
- attr_map = {k: humanize(k) for k in cls.model_fields}
168
- overrides = {
169
- "day_of_week": "Class DoW",
170
- "date": "Class Date",
171
- "time": "Class Time",
172
- "duration": "Class Duration",
173
- "name": "Class Name",
174
- "is_home_studio": "Home Studio",
175
- "is_booked": "Booked",
176
- }
177
-
178
- attr_map.update(overrides)
179
-
180
- return attr_map.get(attr, attr)
181
-
182
120
 
183
121
  class Member(OtfItemBase):
184
122
  member_uuid: str = Field(alias="memberUUId")
@@ -216,10 +154,6 @@ class Booking(OtfItemBase):
216
154
  otf_class: OtfClass = Field(alias="class")
217
155
  is_home_studio: bool | None = Field(None, description="Custom helper field to determine if at home studio")
218
156
 
219
- @property
220
- def id_val(self) -> str:
221
- return self.class_booking_id
222
-
223
157
 
224
158
  class BookingList(OtfListBase):
225
159
  collection_field: ClassVar[str] = "bookings"
@@ -79,11 +79,11 @@ class CancelBooking(OtfItemBase):
79
79
  mbo_member_id: str = Field(..., alias="mboMemberId")
80
80
  mbo_class_id: int = Field(..., alias="mboClassId")
81
81
  mbo_visit_id: int = Field(..., alias="mboVisitId")
82
- mbo_waitlist_entry_id: None = Field(..., alias="mboWaitlistEntryId")
82
+ mbo_waitlist_entry_id: int | None = Field(..., alias="mboWaitlistEntryId")
83
83
  mbo_sync_message: str = Field(..., alias="mboSyncMessage")
84
84
  status: str
85
85
  booked_date: datetime = Field(..., alias="bookedDate")
86
- checked_in_date: None = Field(..., alias="checkedInDate")
86
+ checked_in_date: datetime | None = Field(..., alias="checkedInDate")
87
87
  cancelled_date: datetime = Field(..., alias="cancelledDate")
88
88
  created_by: str = Field(..., alias="createdBy")
89
89
  created_date: datetime = Field(..., alias="createdDate")
@@ -22,15 +22,15 @@ class BenchmarkHistory(OtfItemBase):
22
22
  date_created: datetime = Field(..., alias="DateCreated")
23
23
  date_updated: datetime = Field(..., alias="DateUpdated")
24
24
  class_time: datetime = Field(..., alias="ClassTime")
25
- challenge_sub_category_id: None = Field(..., alias="ChallengeSubCategoryId")
25
+ challenge_sub_category_id: int | None = Field(..., alias="ChallengeSubCategoryId")
26
26
  class_id: int = Field(..., alias="ClassId")
27
27
  substitute_id: int | None = Field(..., alias="SubstituteId")
28
28
  weight_lbs: int = Field(..., alias="WeightLBS")
29
29
  class_name: str = Field(..., alias="ClassName")
30
30
  coach_name: str = Field(..., alias="CoachName")
31
31
  coach_image_url: str = Field(..., alias="CoachImageUrl")
32
- workout_type_id: None = Field(..., alias="WorkoutTypeId")
33
- workout_id: None = Field(..., alias="WorkoutId")
32
+ workout_type_id: int | None = Field(..., alias="WorkoutTypeId")
33
+ workout_id: int | None = Field(..., alias="WorkoutId")
34
34
  linked_challenges: list[Any] = Field(
35
35
  ..., alias="LinkedChallenges"
36
36
  ) # not sure what this will be, never seen it before
@@ -50,7 +50,7 @@ class ChallengeHistory(OtfItemBase):
50
50
 
51
51
  class ChallengeTrackerDetail(OtfItemBase):
52
52
  challenge_category_id: int = Field(..., alias="ChallengeCategoryId")
53
- challenge_sub_category_id: None = Field(..., alias="ChallengeSubCategoryId")
53
+ challenge_sub_category_id: int | None = Field(..., alias="ChallengeSubCategoryId")
54
54
  equipment_id: int = Field(..., alias="EquipmentId")
55
55
  equipment_name: str = Field(..., alias="EquipmentName")
56
56
  metric_entry: MetricEntry = Field(..., alias="MetricEntry")
@@ -18,8 +18,8 @@ class DoW(str, Enum):
18
18
  sunday = "sunday"
19
19
 
20
20
  @classmethod
21
- def get_case_insensitive(cls, value: str) -> str:
22
- lcase_to_actual = {item.value.lower(): item.value for item in cls}
21
+ def get_case_insensitive(cls, value: str) -> "DoW":
22
+ lcase_to_actual = {item.value.lower(): item for item in cls}
23
23
  return lcase_to_actual[value.lower()]
24
24
 
25
25
 
@@ -34,38 +34,12 @@ class ClassType(str, Enum):
34
34
  VIP_CLASS = "VIP Class"
35
35
  OTHER = "Other"
36
36
 
37
- @classmethod
38
- def all_statuses(cls) -> list[str]:
39
- return list(cls.__members__.values())
40
-
41
- @classmethod
42
- def get_from_key_insensitive(cls, key: str) -> "ClassType":
43
- lcase_to_actual = {item.lower(): item for item in cls._member_map_}
44
- val = cls.__members__.get(lcase_to_actual[key.lower()])
45
- if not val:
46
- raise ValueError(f"Invalid ClassType: {key}")
47
- return val
48
-
49
37
  @classmethod
50
38
  def get_case_insensitive(cls, value: str) -> str:
51
39
  lcase_to_actual = {item.value.lower(): item.value for item in cls}
52
40
  return lcase_to_actual[value.lower()]
53
41
 
54
42
 
55
- class ClassTypeCli(str, Enum):
56
- """Flipped enum so that the CLI does not have values with spaces"""
57
-
58
- ORANGE_60_MIN_2G = "Orange_60_Min_2G"
59
- TREAD_50 = "Tread_50"
60
- STRENGTH_50 = "Strength_50"
61
- ORANGE_3G = "Orange_3G"
62
- ORANGE_60_TORNADO = "Orange_60_Tornado"
63
- ORANGE_TORNADO = "Orange_Tornado"
64
- ORANGE_90_MIN_3G = "Orange_90_Min_3G"
65
- VIP_CLASS = "VIP_Class"
66
- OTHER = "Other"
67
-
68
-
69
43
  class Address(OtfItemBase):
70
44
  line1: str
71
45
  city: str
@@ -163,10 +137,6 @@ class OtfClass(OtfItemBase, OtfClassTimeMixin):
163
137
  def has_availability(self) -> bool:
164
138
  return not self.full
165
139
 
166
- @property
167
- def id_val(self) -> str:
168
- return self.ot_class_uuid
169
-
170
140
  @property
171
141
  def day_of_week_enum(self) -> DoW:
172
142
  dow = self.starts_at_local.strftime("%A")
@@ -21,32 +21,3 @@ class ChallengeType(int, Enum):
21
21
  RemixInSix = 65
22
22
  Push = 66
23
23
  BackAtIt = 84
24
-
25
-
26
- class HistoryBookingStatus(str, Enum):
27
- Attended = "Attended"
28
- Cancelled = "Cancelled"
29
- LateCancelled = "Late Cancelled"
30
-
31
- @classmethod
32
- def all_statuses(cls) -> list[str]:
33
- return list(cls.__members__.values())
34
-
35
-
36
- class HistoryClassStatus(str, Enum):
37
- CheckedIn = "Checked In"
38
- CancelCheckinPending = "Cancel Checkin Pending"
39
- CancelCheckinRequested = "Cancel Checkin Requested"
40
- LateCancelled = "Late Cancelled"
41
- Booked = "Booked"
42
- Waitlisted = "Waitlisted"
43
- CheckinPending = "Checkin Pending"
44
- CheckinRequested = "Checkin Requested"
45
- CheckinCancelled = "Checkin Cancelled"
46
- Pending = "Pending"
47
- Confirmed = "Confirmed"
48
- Requested = "Requested"
49
-
50
- @classmethod
51
- def all_statuses(cls) -> list[str]:
52
- return list(cls.__members__.values())
@@ -93,16 +93,16 @@ class MemberDetail(OtfItemBase):
93
93
  first_name: str = Field(..., alias="firstName")
94
94
  last_name: str = Field(..., alias="lastName")
95
95
  email: str
96
- profile_picture_url: None = Field(..., alias="profilePictureUrl")
96
+ profile_picture_url: str | None = Field(..., alias="profilePictureUrl")
97
97
  alternate_emails: None = Field(..., alias="alternateEmails")
98
- address_line1: None = Field(..., alias="addressLine1")
99
- address_line2: None = Field(..., alias="addressLine2")
100
- city: None
101
- state: None
102
- postal_code: None = Field(..., alias="postalCode")
98
+ address_line1: str | None = Field(..., alias="addressLine1")
99
+ address_line2: str | None = Field(..., alias="addressLine2")
100
+ city: str | None
101
+ state: str | None
102
+ postal_code: str | None = Field(..., alias="postalCode")
103
103
  phone_number: str = Field(..., alias="phoneNumber")
104
104
  home_phone: str | None = Field(..., alias="homePhone")
105
- work_phone: None = Field(..., alias="workPhone")
105
+ work_phone: str | None = Field(..., alias="workPhone")
106
106
  phone_type: None = Field(..., alias="phoneType")
107
107
  birth_day: date | str = Field(..., alias="birthDay")
108
108
  cc_last4: str = Field(..., alias="ccLast4")
@@ -44,7 +44,7 @@ class StudioLocation(OtfItemBase):
44
44
  bill_to_country_id: int = Field(..., alias="billToCountryId")
45
45
  bill_to_country: str = Field(..., alias="billToCountry")
46
46
  ship_to_address: str = Field(..., alias="shipToAddress")
47
- ship_to_address2: None = Field(..., alias="shipToAddress2")
47
+ ship_to_address2: str | None = Field(..., alias="shipToAddress2")
48
48
  ship_to_city: str = Field(..., alias="shipToCity")
49
49
  ship_to_state: str = Field(..., alias="shipToState")
50
50
  ship_to_postal_code: str = Field(..., alias="shipToPostalCode")
@@ -52,7 +52,7 @@ class StudioLocation(OtfItemBase):
52
52
  ship_to_country_id: int = Field(..., alias="shipToCountryId")
53
53
  ship_to_country: str = Field(..., alias="shipToCountry")
54
54
  physical_address: str = Field(..., alias="physicalAddress")
55
- physical_address2: None = Field(..., alias="physicalAddress2")
55
+ physical_address2: str | None = Field(..., alias="physicalAddress2")
56
56
  physical_city: str = Field(..., alias="physicalCity")
57
57
  physical_state: str = Field(..., alias="physicalState")
58
58
  physical_postal_code: str = Field(..., alias="physicalPostalCode")
@@ -120,7 +120,7 @@ class MemberPurchase(OtfItemBase):
120
120
  status: str
121
121
  member_service_id: int | None = Field(..., alias="memberServiceId")
122
122
  member_membership_id: int | None = Field(..., alias="memberMembershipId")
123
- member_fee_id: None = Field(..., alias="memberFeeId")
123
+ member_fee_id: int | None = Field(..., alias="memberFeeId")
124
124
  pos_contract_id: int | None = Field(..., alias="posContractId")
125
125
  pos_product_id: int = Field(..., alias="posProductId")
126
126
  pos_description_id: int | None = Field(..., alias="posDescriptionId")
@@ -35,8 +35,8 @@ class Language(OtfItemBase):
35
35
 
36
36
  class StudioLocationLocalized(OtfItemBase):
37
37
  language: Language
38
- studio_name: None = Field(..., alias="studioName")
39
- studio_address: None = Field(..., alias="studioAddress")
38
+ studio_name: str | None = Field(..., alias="studioName")
39
+ studio_address: str | None = Field(..., alias="studioAddress")
40
40
 
41
41
 
42
42
  class StudioProfiles(OtfItemBase):
@@ -35,7 +35,7 @@ class RowData(OtfItemBase):
35
35
 
36
36
  class TelemetryItem(OtfItemBase):
37
37
  relative_timestamp: int = Field(..., alias="relativeTimestamp")
38
- hr: int
38
+ hr: int | None = None
39
39
  agg_splats: int = Field(..., alias="aggSplats")
40
40
  agg_calories: int = Field(..., alias="aggCalories")
41
41
  timestamp: datetime | None = Field(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: otf-api
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: Python OrangeTheory Fitness API Client
5
5
  License: MIT
6
6
  Author: Jessica Smith
@@ -1,35 +1,35 @@
1
- otf_api/__init__.py,sha256=z4nKmmBKrL1BuMh3E_emGRQUPyotvOREIXf5RTnHzU4,237
1
+ otf_api/__init__.py,sha256=9dl1vObg-jQX4JSv6kUWZnAklknfJet8UkivLcaxQ_0,237
2
2
  otf_api/api.py,sha256=QlRHXDwzbB97aCfacb_9FVox-5AuPLMweRQAZkz-EE0,34885
3
3
  otf_api/auth.py,sha256=XzwLSi5M3DyG7bE7DmWAzXF2y6fkJyAZxHUA9lpW25M,10231
4
- otf_api/models/__init__.py,sha256=3GHBOirQA4yu06cgD9pYmCU8u8_F9nxNHeSXDuFpe5A,1428
4
+ otf_api/models/__init__.py,sha256=bSElQBSVfwOV4KyFfa134WyCIqPctCXiDVjQkAgOfnc,1378
5
5
  otf_api/models/base.py,sha256=gsMf3XGKqc68CRC-Mp3ARdnXKCpbWWGttZ8pfUwuEu0,664
6
- otf_api/models/responses/__init__.py,sha256=xxwz-JwRd0upmI0VNdvInbAm2FOQvPo3pS0SEhWfkI4,1947
6
+ otf_api/models/responses/__init__.py,sha256=cbTfcMieu6Hc91NC2x7fLTacS5dAVuLZUJYKA99fhW4,1901
7
7
  otf_api/models/responses/body_composition_list.py,sha256=N1amk4sWzgiBFmnCUUlMGSwOh_XGucqW_8MvE0XsRKY,12271
8
- otf_api/models/responses/book_class.py,sha256=N3KydWoLOYpkG87O4qMqaBH27oHm3PwCzC60jCXUfHo,15517
9
- otf_api/models/responses/bookings.py,sha256=XwW6blHpw9imtXRnQJYahUgfrAeOcGZqfYE-oJZ8510,8467
10
- otf_api/models/responses/cancel_booking.py,sha256=nrvNwhlSw3tbd4qw0Jbgf0-OTjW1Qjg_ynNvC8fWPJQ,3905
8
+ otf_api/models/responses/book_class.py,sha256=2GLmGXkryUdRUCFNpuSxMAtKcZc9823LLqGcDsQdcK0,15605
9
+ otf_api/models/responses/bookings.py,sha256=0bKxwNCWt23sXB_PIANdyuperMmZJu1_UdBaUJb8xMI,6295
10
+ otf_api/models/responses/cancel_booking.py,sha256=O23utnhBs7oxmAgmbq7rD8EC2lvJjibg8Of4bGwAGvE,3922
11
11
  otf_api/models/responses/challenge_tracker_content.py,sha256=KKpSWyyg3viN0vf1Sg2zTMlMZExLe3I6wowmUPWvRCA,1423
12
- otf_api/models/responses/challenge_tracker_detail.py,sha256=2tHJTN2Mu8WenanuGa-P4Gijd7qbwI-jQlwPNqfhv2Q,3119
13
- otf_api/models/responses/classes.py,sha256=VxesbFyfRhohwkjiclqTtMPl8bNc5PJajveTHtDBQ2A,4731
14
- otf_api/models/responses/enums.py,sha256=Au8XhD-4T8ljiueUykFDc6Qz7kOoTlJ_kiDEx7nLVLM,1191
12
+ otf_api/models/responses/challenge_tracker_detail.py,sha256=82LZ0E7YsUXDYRbaXvMAaSjbYEo_Ys4cRGAXcgMTjbA,3143
13
+ otf_api/models/responses/classes.py,sha256=czg6BFNNt0_f-NaEPXS45qmRqVFmwK-laTyONu2jb7Q,3820
14
+ otf_api/models/responses/enums.py,sha256=qPhRrU-W7SF3W9aKPpq8al1rIlG_KXuvbJNTy7jPnDk,381
15
15
  otf_api/models/responses/favorite_studios.py,sha256=Ho6K_qhkp_MyS8xGiYBp3DeBdcL7xQh6_ZpaKW8QwTY,5071
16
16
  otf_api/models/responses/latest_agreement.py,sha256=aE8hbWE4Pgguw4Itah7a1SqwOLpJ6t9oODFwLQ8Wzo0,774
17
17
  otf_api/models/responses/lifetime_stats.py,sha256=n8pZOwvc2boGa98oAde4coJNjmv7V4Ekt3olTj28BUk,3387
18
- otf_api/models/responses/member_detail.py,sha256=qgP_gaiIi6Jr5SI7RSrj8l9p6aCbVK0fJX2LgI5Gazk,6031
18
+ otf_api/models/responses/member_detail.py,sha256=STVJagQdmEl2frY7lAsTdSFjoL_7HdAOSG2mbqtUYvM,6073
19
19
  otf_api/models/responses/member_membership.py,sha256=_z301T9DrdQW9vIgnx_LeZmkRhvMVhkxrn_v6DDfCUk,995
20
- otf_api/models/responses/member_purchases.py,sha256=ddKC8NFVwksNMSJWco-Ekiy7SmqFGkU8nmWV_5Ur0pA,6098
20
+ otf_api/models/responses/member_purchases.py,sha256=Gr0xAhrgNDXd5lGd2j7kwNm2_p1o3IGQDJS5LfVyebw,6116
21
21
  otf_api/models/responses/out_of_studio_workout_history.py,sha256=Nl2KGgErkI0rMpIYD8xisFZO_vp_Ffgflx2putIKebU,1722
22
22
  otf_api/models/responses/performance_summary_detail.py,sha256=U7GbVet_klwv7Joc8DiBJw4tjb3OmjoT19KGxorrNYo,1637
23
23
  otf_api/models/responses/performance_summary_list.py,sha256=JDJoQEYx9llg43YjZc7AeMatUNJ6Ah40MjoVZt0-dkQ,1354
24
- otf_api/models/responses/studio_detail.py,sha256=-ZCTCJ3MovI4ChHspvE2pG4OblvuZR_wAfpg5GNBa7U,5096
24
+ otf_api/models/responses/studio_detail.py,sha256=wZudL8uORrm4SRlPyRgwOrLLBEArQE3HuF9L3BKF6MY,5108
25
25
  otf_api/models/responses/studio_services.py,sha256=cnnSljjOLauWAdvbf3ujKfXkrCvBsQGCXoBTARhmIqQ,1849
26
- otf_api/models/responses/telemetry.py,sha256=MTI9fV9LniWU73xRfV_ZcdQeaeDLuaYMcQgL239lEAI,2012
26
+ otf_api/models/responses/telemetry.py,sha256=OtM3vI_KWYdWKpqMdMsav26sVVquflYl5KDHiNTWPus,2026
27
27
  otf_api/models/responses/telemetry_hr_history.py,sha256=vDcLb4wTHVBw8O0mGblUujHfJegkflOCWW-bnTXNCI0,763
28
28
  otf_api/models/responses/telemetry_max_hr.py,sha256=xKxH0fIlOqFyZv8UW98XsxF-GMoIs9gnCTAbu88ZQtg,266
29
29
  otf_api/models/responses/total_classes.py,sha256=WrKkWbq0eK8J0RC4qhZ5kmXnv_ZTDbyzsoRm7XKGlss,288
30
30
  otf_api/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- otf_api-0.6.2.dist-info/AUTHORS.md,sha256=FcNWMxpe8KDuTq4Qau0SUXsabQwGs9TGnMp1WkXRnj8,123
32
- otf_api-0.6.2.dist-info/LICENSE,sha256=UaPT9ynYigC3nX8n22_rC37n-qmTRKLFaHrtUwF9ktE,1071
33
- otf_api-0.6.2.dist-info/METADATA,sha256=0tZaD7tUe0X0oziRVennPiFXE1NhoLHXYZOeWXGhvGI,1989
34
- otf_api-0.6.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
35
- otf_api-0.6.2.dist-info/RECORD,,
31
+ otf_api-0.6.4.dist-info/AUTHORS.md,sha256=FcNWMxpe8KDuTq4Qau0SUXsabQwGs9TGnMp1WkXRnj8,123
32
+ otf_api-0.6.4.dist-info/LICENSE,sha256=UaPT9ynYigC3nX8n22_rC37n-qmTRKLFaHrtUwF9ktE,1071
33
+ otf_api-0.6.4.dist-info/METADATA,sha256=wwGIgTWoSZMygc-xuKWNrbDDG3ra-mai3tJ2myI7BNc,1989
34
+ otf_api-0.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
35
+ otf_api-0.6.4.dist-info/RECORD,,