otf-api 0.8.2__tar.gz → 0.9.1__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 (64) hide show
  1. {otf_api-0.8.2 → otf_api-0.9.1}/PKG-INFO +21 -10
  2. otf_api-0.9.1/README.md +30 -0
  3. {otf_api-0.8.2 → otf_api-0.9.1}/pyproject.toml +9 -11
  4. otf_api-0.9.1/src/otf_api/__init__.py +10 -0
  5. otf_api-0.9.1/src/otf_api/api.py +1182 -0
  6. otf_api-0.9.1/src/otf_api/auth/__init__.py +4 -0
  7. otf_api-0.9.1/src/otf_api/auth/auth.py +234 -0
  8. otf_api-0.9.1/src/otf_api/auth/user.py +66 -0
  9. otf_api-0.9.1/src/otf_api/auth/utils.py +129 -0
  10. otf_api-0.9.1/src/otf_api/exceptions.py +51 -0
  11. otf_api-0.9.1/src/otf_api/filters.py +97 -0
  12. otf_api-0.9.1/src/otf_api/logging.py +19 -0
  13. otf_api-0.9.1/src/otf_api/models/__init__.py +48 -0
  14. {otf_api-0.8.2 → otf_api-0.9.1}/src/otf_api/models/body_composition_list.py +47 -50
  15. otf_api-0.9.1/src/otf_api/models/bookings.py +95 -0
  16. otf_api-0.9.1/src/otf_api/models/challenge_tracker_content.py +59 -0
  17. otf_api-0.9.1/src/otf_api/models/challenge_tracker_detail.py +88 -0
  18. otf_api-0.9.1/src/otf_api/models/classes.py +71 -0
  19. otf_api-0.9.1/src/otf_api/models/enums.py +165 -0
  20. otf_api-0.9.1/src/otf_api/models/lifetime_stats.py +90 -0
  21. otf_api-0.9.1/src/otf_api/models/member_detail.py +121 -0
  22. otf_api-0.9.1/src/otf_api/models/member_membership.py +26 -0
  23. otf_api-0.9.1/src/otf_api/models/member_purchases.py +29 -0
  24. otf_api-0.9.1/src/otf_api/models/mixins.py +48 -0
  25. otf_api-0.9.1/src/otf_api/models/notifications.py +17 -0
  26. otf_api-0.9.1/src/otf_api/models/out_of_studio_workout_history.py +32 -0
  27. otf_api-0.9.1/src/otf_api/models/performance_summary_detail.py +84 -0
  28. otf_api-0.9.1/src/otf_api/models/performance_summary_list.py +50 -0
  29. otf_api-0.9.1/src/otf_api/models/studio_detail.py +62 -0
  30. otf_api-0.9.1/src/otf_api/models/studio_services.py +36 -0
  31. {otf_api-0.8.2 → otf_api-0.9.1}/src/otf_api/models/telemetry.py +14 -5
  32. otf_api-0.9.1/src/otf_api/utils.py +134 -0
  33. otf_api-0.8.2/AUTHORS.md +0 -9
  34. otf_api-0.8.2/README.md +0 -21
  35. otf_api-0.8.2/src/otf_api/__init__.py +0 -7
  36. otf_api-0.8.2/src/otf_api/api.py +0 -963
  37. otf_api-0.8.2/src/otf_api/auth.py +0 -316
  38. otf_api-0.8.2/src/otf_api/exceptions.py +0 -18
  39. otf_api-0.8.2/src/otf_api/models/__init__.py +0 -59
  40. otf_api-0.8.2/src/otf_api/models/book_class.py +0 -89
  41. otf_api-0.8.2/src/otf_api/models/bookings.py +0 -119
  42. otf_api-0.8.2/src/otf_api/models/cancel_booking.py +0 -49
  43. otf_api-0.8.2/src/otf_api/models/challenge_tracker_content.py +0 -38
  44. otf_api-0.8.2/src/otf_api/models/challenge_tracker_detail.py +0 -68
  45. otf_api-0.8.2/src/otf_api/models/classes.py +0 -80
  46. otf_api-0.8.2/src/otf_api/models/enums.py +0 -87
  47. otf_api-0.8.2/src/otf_api/models/favorite_studios.py +0 -106
  48. otf_api-0.8.2/src/otf_api/models/latest_agreement.py +0 -21
  49. otf_api-0.8.2/src/otf_api/models/lifetime_stats.py +0 -76
  50. otf_api-0.8.2/src/otf_api/models/member_detail.py +0 -141
  51. otf_api-0.8.2/src/otf_api/models/member_membership.py +0 -25
  52. otf_api-0.8.2/src/otf_api/models/member_purchases.py +0 -135
  53. otf_api-0.8.2/src/otf_api/models/mixins.py +0 -44
  54. otf_api-0.8.2/src/otf_api/models/out_of_studio_workout_history.py +0 -41
  55. otf_api-0.8.2/src/otf_api/models/performance_summary_detail.py +0 -79
  56. otf_api-0.8.2/src/otf_api/models/performance_summary_list.py +0 -68
  57. otf_api-0.8.2/src/otf_api/models/studio_detail.py +0 -109
  58. otf_api-0.8.2/src/otf_api/models/studio_services.py +0 -57
  59. otf_api-0.8.2/src/otf_api/models/telemetry_hr_history.py +0 -34
  60. otf_api-0.8.2/src/otf_api/models/telemetry_max_hr.py +0 -13
  61. otf_api-0.8.2/src/otf_api/models/total_classes.py +0 -8
  62. {otf_api-0.8.2 → otf_api-0.9.1}/LICENSE +0 -0
  63. {otf_api-0.8.2 → otf_api-0.9.1}/src/otf_api/models/base.py +0 -0
  64. {otf_api-0.8.2 → otf_api-0.9.1}/src/otf_api/py.typed +0 -0
@@ -1,17 +1,16 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: otf-api
3
- Version: 0.8.2
3
+ Version: 0.9.1
4
4
  Summary: Python OrangeTheory Fitness API Client
5
5
  License: MIT
6
6
  Author: Jessica Smith
7
7
  Author-email: j.smith.git1@gmail.com
8
- Requires-Python: >=3.10,<4.0
8
+ Requires-Python: >=3.11,<4.0
9
9
  Classifier: Development Status :: 4 - Beta
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
16
15
  Classifier: Programming Language :: Python :: 3.12
17
16
  Classifier: Programming Language :: Python :: 3.13
@@ -19,12 +18,15 @@ Classifier: Topic :: Internet :: WWW/HTTP
19
18
  Classifier: Topic :: Software Development :: Libraries
20
19
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
21
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Dist: aiohttp (==3.10.*)
21
+ Requires-Dist: attrs (>=24.3.0,<25.0.0)
22
+ Requires-Dist: httpx (>=0.27.2)
23
23
  Requires-Dist: humanize (>=4.9.0,<5.0.0)
24
24
  Requires-Dist: inflection (==0.5.*)
25
+ Requires-Dist: mypy-boto3-cognito-idp (>=1.35.93,<2.0.0)
25
26
  Requires-Dist: pint (==0.24.*)
26
27
  Requires-Dist: pycognito (==2024.5.1)
27
- Requires-Dist: pydantic (==2.7.3)
28
+ Requires-Dist: pydantic (>=2.7.3)
29
+ Requires-Dist: yarl (>=1.18.3,<2.0.0)
28
30
  Project-URL: Documentation, https://otf-api.readthedocs.io/en/stable/
29
31
  Description-Content-Type: text/markdown
30
32
 
@@ -42,11 +44,20 @@ pip install otf-api
42
44
 
43
45
  ## Overview
44
46
 
45
- To use the API, you need to create an instance of the `Otf` class, providing your email address and password. This will authenticate you with the API and allow you to make requests. When the `Otf` object is created it automatically grabs your member details and home studio, to simplify the process of making requests.
47
+ To use the API, you need to create an instance of the `Otf` class. This will authenticate you with the API and allow you to make requests. When the `Otf` object is created it automatically grabs your member details and home studio, to simplify the process of making requests.
46
48
 
49
+ You can either pass an `OtfUser` object to the `OtfClass` or you can pass nothing and allow it to prompt you for your username and password.
47
50
 
48
- See the [examples](./examples) for more information on how to use the API.
51
+ You can also export environment variables `OTF_EMAIL` and `OTF_PASSWORD` to get these from the environment.
49
52
 
50
- Disclaimer:
51
- This project is in no way affiliated with OrangeTheory Fitness.
53
+ ```python
54
+ from otf_api import Otf, OtfUser
55
+
56
+ otf = Otf()
57
+
58
+ # OR
59
+
60
+ otf = Otf(user=OtfUser(<email_address>,<password>))
61
+
62
+ ```
52
63
 
@@ -0,0 +1,30 @@
1
+ Simple API client for interacting with the OrangeTheory Fitness APIs.
2
+
3
+ Review the [documentation](https://otf-api.readthedocs.io/en/stable/).
4
+
5
+
6
+ This library allows access to the OrangeTheory API to retrieve workouts and performance data, class schedules, studio information, and bookings.
7
+
8
+ ## Installation
9
+ ```bash
10
+ pip install otf-api
11
+ ```
12
+
13
+ ## Overview
14
+
15
+ To use the API, you need to create an instance of the `Otf` class. This will authenticate you with the API and allow you to make requests. When the `Otf` object is created it automatically grabs your member details and home studio, to simplify the process of making requests.
16
+
17
+ You can either pass an `OtfUser` object to the `OtfClass` or you can pass nothing and allow it to prompt you for your username and password.
18
+
19
+ You can also export environment variables `OTF_EMAIL` and `OTF_PASSWORD` to get these from the environment.
20
+
21
+ ```python
22
+ from otf_api import Otf, OtfUser
23
+
24
+ otf = Otf()
25
+
26
+ # OR
27
+
28
+ otf = Otf(user=OtfUser(<email_address>,<password>))
29
+
30
+ ```
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "otf-api"
3
- version = "0.8.2"
3
+ version = "0.9.1"
4
4
  description = "Python OrangeTheory Fitness API Client"
5
5
  authors = ["Jessica Smith <j.smith.git1@gmail.com>"]
6
6
  license = "MIT"
@@ -10,7 +10,7 @@ documentation = "https://otf-api.readthedocs.io/en/stable/"
10
10
  classifiers = [
11
11
  "Development Status :: 4 - Beta",
12
12
  "Intended Audience :: Developers",
13
- "Programming Language :: Python :: 3.10",
13
+ "Programming Language :: Python :: 3.11",
14
14
  "License :: OSI Approved :: MIT License",
15
15
  "Topic :: Software Development :: Libraries :: Python Modules",
16
16
  "Topic :: Software Development :: Libraries :: Application Frameworks",
@@ -21,31 +21,30 @@ classifiers = [
21
21
 
22
22
 
23
23
  [tool.poetry.dependencies]
24
- python = "^3.10"
25
- aiohttp = "3.10.*"
24
+ python = "^3.11"
25
+ attrs = "^24.3.0"
26
+ httpx = ">=0.27.2"
26
27
  humanize = "^4.9.0"
27
28
  inflection = "0.5.*"
28
29
  pint = "0.24.*"
29
30
  pycognito = "2024.5.1"
30
- pydantic = "2.7.3"
31
+ pydantic = ">=2.7.3"
32
+ yarl = "^1.18.3"
33
+ mypy-boto3-cognito-idp = "^1.35.93"
31
34
 
32
35
  [tool.poetry.group.dev.dependencies]
33
- aioresponses = "0.7.6"
34
- black = "^24.4.2"
35
36
  build = "1.2.1"
36
37
  bump-my-version = "^0.23.0"
37
- httpx = "^0.27.0"
38
38
  mypy = "1.10.0"
39
39
  pre-commit = "3.7.1"
40
40
  pytest = "8.2.2"
41
- pytest-asyncio = "0.23.7"
42
41
  pytest-cov = "5.0.0"
43
- pytest-loguru = "0.4.0"
44
42
  tox = "4.15.1"
45
43
  twine = "5.1.1"
46
44
 
47
45
 
48
46
  [tool.poetry.group.docs.dependencies]
47
+ griffe = "<1.0.0"
49
48
  griffe-fieldz = "0.1.2"
50
49
  mike = "2.1.1"
51
50
  mkdocs = "1.6.0"
@@ -62,7 +61,6 @@ mkdocstrings-python = "1.10.3"
62
61
  pkginfo = "<1.11"
63
62
  setuptools = "^70.0.0"
64
63
  virtualenv = "^20.26.2"
65
- griffe = "<1.0.0"
66
64
 
67
65
 
68
66
  [build-system]
@@ -0,0 +1,10 @@
1
+ from otf_api import logging # noqa # type: ignore
2
+
3
+ from otf_api.api import Otf
4
+ from otf_api import models
5
+ from otf_api.auth import OtfUser
6
+
7
+ __version__ = "0.9.1"
8
+
9
+
10
+ __all__ = ["Otf", "OtfUser", "models"]