tesla-fleet-api 0.5.10__tar.gz → 0.5.12__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 (24) hide show
  1. {tesla_fleet_api-0.5.10/tesla_fleet_api.egg-info → tesla_fleet_api-0.5.12}/PKG-INFO +1 -1
  2. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/setup.py +1 -1
  3. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/const.py +1 -1
  4. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/exceptions.py +43 -3
  5. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/vehicle.py +3 -3
  6. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12/tesla_fleet_api.egg-info}/PKG-INFO +1 -1
  7. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/LICENSE +0 -0
  8. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/README.md +0 -0
  9. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/setup.cfg +0 -0
  10. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/__init__.py +0 -0
  11. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/charging.py +0 -0
  12. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/energy.py +0 -0
  13. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/energyspecific.py +0 -0
  14. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/partner.py +0 -0
  15. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/teslafleetapi.py +0 -0
  16. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/teslafleetoauth.py +0 -0
  17. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/teslemetry.py +0 -0
  18. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/tessie.py +0 -0
  19. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/user.py +0 -0
  20. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api/vehiclespecific.py +0 -0
  21. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api.egg-info/SOURCES.txt +0 -0
  22. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api.egg-info/dependency_links.txt +0 -0
  23. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api.egg-info/requires.txt +0 -0
  24. {tesla_fleet_api-0.5.10 → tesla_fleet_api-0.5.12}/tesla_fleet_api.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tesla_fleet_api
3
- Version: 0.5.10
3
+ Version: 0.5.12
4
4
  Summary: Tesla Fleet API library for Python
5
5
  Home-page: https://github.com/Teslemetry/tesla_fleet_api
6
6
  Author: Brett Adams
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="tesla_fleet_api",
8
- version="0.5.10",
8
+ version="0.5.12",
9
9
  author="Brett Adams",
10
10
  author_email="admin@teslemetry.com",
11
11
  description="Tesla Fleet API library for Python",
@@ -3,7 +3,7 @@
3
3
  from enum import Enum
4
4
  import logging
5
5
 
6
- VERSION = "0.5.10"
6
+ VERSION = "0.5.12"
7
7
  LOGGER = logging.getLogger(__package__)
8
8
  SERVERS = {
9
9
  "na": "https://fleet-api.prd.na.vn.cloud.tesla.com",
@@ -78,6 +78,14 @@ class MobileAccessDisabled(TeslaFleetError):
78
78
  key = "mobile_access_disabled"
79
79
 
80
80
 
81
+ class MissingToken(TeslaFleetError): # Teslemetry specific
82
+ """Teslemetry specific error when no access token is provided."""
83
+
84
+ message = "Missing access token."
85
+ status = 401
86
+ key = "missing_token"
87
+
88
+
81
89
  class InvalidToken(TeslaFleetError): # Teslemetry specific
82
90
  """Teslemetry specific error for invalid access token."""
83
91
 
@@ -94,6 +102,14 @@ class OAuthExpired(TeslaFleetError):
94
102
  key = "token expired (401)"
95
103
 
96
104
 
105
+ class LoginRequired(TeslaFleetError): # Native and Teslemetry
106
+ """The user has reset their password and a new auth code is required, or the refresh_token has already been used."""
107
+
108
+ message = "The user has reset their password and a new auth code is required, or the refresh_token has already been used."
109
+ status = 401
110
+ key = "login_required"
111
+
112
+
97
113
  class PaymentRequired(TeslaFleetError):
98
114
  """Payment is required in order to use the API (non-free account only)."""
99
115
 
@@ -101,7 +117,7 @@ class PaymentRequired(TeslaFleetError):
101
117
  status = 402
102
118
 
103
119
 
104
- class SubscriptionRequired(TeslaFleetError):
120
+ class SubscriptionRequired(TeslaFleetError): # Teslemetry specific
105
121
  """Subscription is required in order to use Teslemetry."""
106
122
 
107
123
  message = "Subscription is required in order to use Teslemetry."
@@ -132,6 +148,14 @@ class NotFound(TeslaFleetError):
132
148
  status = 404
133
149
 
134
150
 
151
+ class InvalidMethod(TeslaFleetError):
152
+ """The HTTP method is not allowed."""
153
+
154
+ message = "The HTTP method is not allowed."
155
+ status = 405
156
+ key = "invalid_method"
157
+
158
+
135
159
  class NotAllowed(TeslaFleetError):
136
160
  """The operation is not allowed."""
137
161
 
@@ -183,6 +207,13 @@ class Locked(TeslaFleetError):
183
207
  status = 423
184
208
 
185
209
 
210
+ class InvalidResponse(TeslaFleetError):
211
+ """The response from Tesla was invalid."""
212
+
213
+ message = "The response from Tesla was invalid."
214
+ status = 424
215
+
216
+
186
217
  class RateLimited(TeslaFleetError):
187
218
  """Account or server is rate limited."""
188
219
 
@@ -266,10 +297,15 @@ async def raise_for_status(resp: aiohttp.ClientResponse) -> None:
266
297
  raise InvalidRequest(data)
267
298
  elif resp.status == 401:
268
299
  if error:
269
- for exception in [OAuthExpired, MobileAccessDisabled]:
300
+ for exception in [
301
+ OAuthExpired,
302
+ MobileAccessDisabled,
303
+ LoginRequired,
304
+ MissingToken,
305
+ InvalidToken,
306
+ ]:
270
307
  if error == exception.key:
271
308
  raise exception(data)
272
- raise InvalidToken(data)
273
309
  # This error does not return a body
274
310
  raise OAuthExpired()
275
311
  elif resp.status == 402:
@@ -283,6 +319,8 @@ async def raise_for_status(resp: aiohttp.ClientResponse) -> None:
283
319
  elif resp.status == 404:
284
320
  raise NotFound(data)
285
321
  elif resp.status == 405:
322
+ if error == InvalidMethod.key:
323
+ raise InvalidMethod(data)
286
324
  raise NotAllowed(data)
287
325
  elif resp.status == 406:
288
326
  raise NotAcceptable(data)
@@ -296,6 +334,8 @@ async def raise_for_status(resp: aiohttp.ClientResponse) -> None:
296
334
  raise InvalidResource(data)
297
335
  elif resp.status == 423:
298
336
  raise Locked(data)
337
+ elif resp.status == 424:
338
+ raise InvalidResponse(data)
299
339
  elif resp.status == 429:
300
340
  raise RateLimited(data)
301
341
  elif resp.status == 451:
@@ -24,10 +24,10 @@ class Vehicle:
24
24
  def specific(self, vehicle_tag: str | int) -> VehicleSpecific:
25
25
  """Creates a class for each vehicle."""
26
26
  return VehicleSpecific(self, vehicle_tag)
27
-
27
+
28
28
  def pre2021(self, vin: str) -> bool:
29
- """Checks if a vehicle is pre-2021."""
30
- return vin[9] <= "L"
29
+ """Checks if a vehicle is a pre-2021 model S or X."""
30
+ return vin[9] <= "L" and vin[3] in ["S", "X"]
31
31
 
32
32
  async def actuate_trunk(
33
33
  self, vehicle_tag: str | int, which_trunk: Trunk | str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tesla_fleet_api
3
- Version: 0.5.10
3
+ Version: 0.5.12
4
4
  Summary: Tesla Fleet API library for Python
5
5
  Home-page: https://github.com/Teslemetry/tesla_fleet_api
6
6
  Author: Brett Adams