tesla-fleet-api 0.5.11__tar.gz → 0.5.13__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.11/tesla_fleet_api.egg-info → tesla_fleet_api-0.5.13}/PKG-INFO +2 -2
  2. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/setup.py +2 -2
  3. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/const.py +1 -1
  4. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/exceptions.py +43 -3
  5. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/teslafleetapi.py +2 -0
  6. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/tessie.py +0 -1
  7. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13/tesla_fleet_api.egg-info}/PKG-INFO +2 -2
  8. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/LICENSE +0 -0
  9. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/README.md +0 -0
  10. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/setup.cfg +0 -0
  11. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/__init__.py +0 -0
  12. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/charging.py +0 -0
  13. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/energy.py +0 -0
  14. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/energyspecific.py +0 -0
  15. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/partner.py +0 -0
  16. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/teslafleetoauth.py +0 -0
  17. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/teslemetry.py +0 -0
  18. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/user.py +0 -0
  19. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/vehicle.py +0 -0
  20. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api/vehiclespecific.py +0 -0
  21. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api.egg-info/SOURCES.txt +0 -0
  22. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api.egg-info/dependency_links.txt +0 -0
  23. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api.egg-info/requires.txt +0 -0
  24. {tesla_fleet_api-0.5.11 → tesla_fleet_api-0.5.13}/tesla_fleet_api.egg-info/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tesla_fleet_api
3
- Version: 0.5.11
3
+ Version: 0.5.13
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
7
- Author-email: admin@teslemetry.com
7
+ Author-email: hello@teslemetry.com
8
8
  Classifier: Development Status :: 4 - Beta
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: License :: OSI Approved :: Apache Software License
@@ -5,9 +5,9 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="tesla_fleet_api",
8
- version="0.5.11",
8
+ version="0.5.13",
9
9
  author="Brett Adams",
10
- author_email="admin@teslemetry.com",
10
+ author_email="hello@teslemetry.com",
11
11
  description="Tesla Fleet API library for Python",
12
12
  long_description=long_description,
13
13
  long_description_content_type="text/markdown",
@@ -3,7 +3,7 @@
3
3
  from enum import Enum
4
4
  import logging
5
5
 
6
- VERSION = "0.5.11"
6
+ VERSION = "0.5.13"
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:
@@ -113,6 +113,7 @@ class TeslaFleetApi:
113
113
  params=params,
114
114
  ) as resp:
115
115
  LOGGER.debug("Response Status: %s", resp.status)
116
+ print(resp.headers)
116
117
  if self.raise_for_status and not resp.ok:
117
118
  await raise_for_status(resp)
118
119
  elif resp.status == 401 and resp.content_type != "application/json":
@@ -129,6 +130,7 @@ class TeslaFleetApi:
129
130
 
130
131
  data = await resp.text()
131
132
  LOGGER.debug("Response Text: %s", data)
133
+
132
134
  return data
133
135
 
134
136
  async def status(self) -> str:
@@ -19,7 +19,6 @@ class Tessie(TeslaFleetApi):
19
19
  raise_for_status=raise_for_status,
20
20
  partner_scope=False,
21
21
  user_scope=False,
22
- energy_scope=False,
23
22
  )
24
23
 
25
24
  async def find_server(self) -> str:
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tesla_fleet_api
3
- Version: 0.5.11
3
+ Version: 0.5.13
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
7
- Author-email: admin@teslemetry.com
7
+ Author-email: hello@teslemetry.com
8
8
  Classifier: Development Status :: 4 - Beta
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: License :: OSI Approved :: Apache Software License