tesla-fleet-api 0.7.0__tar.gz → 0.7.2__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. {tesla_fleet_api-0.7.0/tesla_fleet_api.egg-info → tesla_fleet_api-0.7.2}/PKG-INFO +1 -1
  2. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/setup.py +1 -1
  3. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/__init__.py +1 -0
  4. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/const.py +1 -1
  5. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/exceptions.py +6 -1
  6. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/teslafleetapi.py +17 -1
  7. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2/tesla_fleet_api.egg-info}/PKG-INFO +1 -1
  8. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/LICENSE +0 -0
  9. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/README.md +0 -0
  10. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/setup.cfg +0 -0
  11. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/charging.py +0 -0
  12. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/energy.py +0 -0
  13. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/energyspecific.py +0 -0
  14. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/partner.py +0 -0
  15. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/teslafleetoauth.py +0 -0
  16. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/teslafleetopensource.py +0 -0
  17. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/teslemetry.py +0 -0
  18. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/tessie.py +0 -0
  19. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/user.py +0 -0
  20. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/vehicle.py +0 -0
  21. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api/vehiclespecific.py +0 -0
  22. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api.egg-info/SOURCES.txt +0 -0
  23. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api.egg-info/dependency_links.txt +0 -0
  24. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/tesla_fleet_api.egg-info/requires.txt +0 -0
  25. {tesla_fleet_api-0.7.0 → tesla_fleet_api-0.7.2}/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.7.0
3
+ Version: 0.7.2
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.7.0",
8
+ version="0.7.2",
9
9
  author="Brett Adams",
10
10
  author_email="hello@teslemetry.com",
11
11
  description="Tesla Fleet API library for Python",
@@ -15,6 +15,7 @@ from .vehiclespecific import VehicleSpecific
15
15
  __all__ = [
16
16
  "TeslaFleetApi",
17
17
  "TeslaFleetOAuth",
18
+ "TeslaFleetOpenSource",
18
19
  "Teslemetry",
19
20
  "Tessie",
20
21
  "Charging",
@@ -3,7 +3,7 @@
3
3
  from enum import Enum
4
4
  import logging
5
5
 
6
- VERSION = "0.7.0"
6
+ VERSION = "0.7.2"
7
7
  LOGGER = logging.getLogger(__package__)
8
8
  SERVERS = {
9
9
  "na": "https://fleet-api.prd.na.vn.cloud.tesla.com",
@@ -363,7 +363,12 @@ async def raise_for_status(resp: aiohttp.ClientResponse) -> None:
363
363
  elif resp.status == 424:
364
364
  raise InvalidResponse(data)
365
365
  elif resp.status == 429:
366
- raise RateLimited(data)
366
+ raise RateLimited(
367
+ {
368
+ "reset": resp.headers.get("RateLimit-Reset"),
369
+ "after": resp.headers.get("Retry-After"),
370
+ }
371
+ )
367
372
  elif resp.status == 451:
368
373
  raise ResourceUnavailableForLegalReasons(data)
369
374
  elif resp.status == 499:
@@ -1,7 +1,7 @@
1
1
  """Tesla Fleet API for Python."""
2
2
 
3
3
  from json import dumps
4
- from typing import Any
4
+ from typing import Any, Awaitable
5
5
  import aiohttp
6
6
 
7
7
  from .exceptions import raise_for_status, InvalidRegion, LibraryError, ResponseError
@@ -22,6 +22,7 @@ class TeslaFleetApi:
22
22
  server: str | None = None
23
23
  session: aiohttp.ClientSession
24
24
  headers: dict[str, str]
25
+ refresh_hook: Awaitable | None
25
26
 
26
27
  def __init__(
27
28
  self,
@@ -34,11 +35,13 @@ class TeslaFleetApi:
34
35
  partner_scope: bool = True,
35
36
  user_scope: bool = True,
36
37
  vehicle_scope: bool = True,
38
+ refresh_hook: Awaitable | None = None,
37
39
  ):
38
40
  """Initialize the Tesla Fleet API."""
39
41
 
40
42
  self.session = session
41
43
  self.access_token = access_token
44
+ self.refresh_hook = refresh_hook
42
45
 
43
46
  if server is not None:
44
47
  self.server = server
@@ -90,6 +93,11 @@ class TeslaFleetApi:
90
93
  if method == Method.GET and json is not None:
91
94
  raise ValueError("GET requests cannot have a body.")
92
95
 
96
+ # Call a pre-request hook if provided
97
+ if self.refresh_hook is not None:
98
+ if access_token := await self.refresh_hook():
99
+ self.access_token = access_token
100
+
93
101
  LOGGER.debug("Sending request to %s", path)
94
102
 
95
103
  # Remove None values from params and json
@@ -114,8 +122,16 @@ class TeslaFleetApi:
114
122
  LOGGER.debug("Response Status: %s", resp.status)
115
123
  if "x-txid" in resp.headers:
116
124
  LOGGER.debug("Response TXID: %s", resp.headers["x-txid"])
125
+ if "RateLimit-Reset" in resp.headers:
126
+ LOGGER.debug(
127
+ "Rate limit reset: %s", resp.headers.get("RateLimit-Reset")
128
+ )
129
+ if "Retry-After" in resp.headers:
130
+ LOGGER.debug("Retry after: %s", resp.headers.get("Retry-After"))
131
+
117
132
  if not resp.ok:
118
133
  await raise_for_status(resp)
134
+
119
135
  if not resp.content_type.lower().startswith("application/json"):
120
136
  LOGGER.debug("Response type is: %s", resp.content_type)
121
137
  raise ResponseError(status=resp.status, data=await resp.text())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tesla_fleet_api
3
- Version: 0.7.0
3
+ Version: 0.7.2
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
File without changes