tesla-fleet-api 1.0.13__py3-none-any.whl → 1.0.15__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.
@@ -1,3 +1,8 @@
1
+ """Tesla Fleet API"""
2
+
3
+ __author__ = "hello@teslemetry.com"
4
+ __version__ = "1.0.15"
5
+
1
6
  from tesla_fleet_api.tesla.fleet import TeslaFleetApi
2
7
  from tesla_fleet_api.tesla.bluetooth import TeslaBluetooth
3
8
  from tesla_fleet_api.tesla.oauth import TeslaFleetOAuth
tesla_fleet_api/const.py CHANGED
@@ -3,7 +3,6 @@
3
3
  from enum import Enum
4
4
  import logging
5
5
 
6
- VERSION = "1.0.13"
7
6
  LOGGER = logging.getLogger(__package__)
8
7
  SERVERS = {
9
8
  "na": "https://fleet-api.prd.na.vn.cloud.tesla.com",
@@ -4,10 +4,10 @@ from tesla_fleet_api.tesla.fleet import TeslaFleetApi
4
4
  from tesla_fleet_api.tesla.bluetooth import TeslaBluetooth
5
5
  from tesla_fleet_api.tesla.oauth import TeslaFleetOAuth
6
6
  from tesla_fleet_api.tesla.charging import Charging
7
- from tesla_fleet_api.tesla.energysite import EnergySites
7
+ from tesla_fleet_api.tesla.energysite import EnergySites, EnergySite
8
8
  from tesla_fleet_api.tesla.partner import Partner
9
9
  from tesla_fleet_api.tesla.user import User
10
- from tesla_fleet_api.tesla.vehicle import Vehicles, VehiclesBluetooth, VehicleFleet, VehicleSigned, VehicleBluetooth
10
+ from tesla_fleet_api.tesla.vehicle import Vehicles, VehiclesBluetooth, VehicleFleet, VehicleSigned, VehicleBluetooth, Vehicle
11
11
 
12
12
  __all__ = [
13
13
  "TeslaFleetApi",
@@ -15,9 +15,11 @@ __all__ = [
15
15
  "TeslaFleetOAuth",
16
16
  "Charging",
17
17
  "EnergySites",
18
+ "EnergySite",
18
19
  "Partner",
19
20
  "User",
20
21
  "Vehicles",
22
+ "Vehicle",
21
23
  "VehiclesBluetooth",
22
24
  "VehicleFleet",
23
25
  "VehicleSigned",
@@ -6,8 +6,8 @@ import aiohttp
6
6
 
7
7
  from tesla_fleet_api.tesla.tesla import Tesla
8
8
  from tesla_fleet_api.exceptions import raise_for_status, InvalidRegion, LibraryError, ResponseError
9
- from tesla_fleet_api.const import SERVERS, Method, LOGGER, VERSION
10
-
9
+ from tesla_fleet_api.const import SERVERS, Method, LOGGER
10
+ from tesla_fleet_api import __version__ as VERSION
11
11
 
12
12
  # Based on https://developer.tesla.com/docs/fleet-api
13
13
  class TeslaFleetApi(Tesla):
@@ -4,10 +4,12 @@ from tesla_fleet_api.tesla.vehicle.vehicles import Vehicles, VehiclesBluetooth
4
4
  from tesla_fleet_api.tesla.vehicle.fleet import VehicleFleet
5
5
  from tesla_fleet_api.tesla.vehicle.bluetooth import VehicleBluetooth
6
6
  from tesla_fleet_api.tesla.vehicle.signed import VehicleSigned
7
+ from tesla_fleet_api.tesla.vehicle.vehicle import Vehicle
7
8
 
8
9
  __all__ = [
9
10
  "Vehicles",
10
11
  "VehiclesBluetooth",
12
+ "Vehicle",
11
13
  "VehicleFleet",
12
14
  "VehicleBluetooth",
13
15
  "VehicleSigned",
@@ -1,6 +1,6 @@
1
1
  from tesla_fleet_api.teslemetry.teslemetry import Teslemetry
2
2
  from tesla_fleet_api.tesla.charging import Charging
3
- from tesla_fleet_api.tesla.energysite import EnergySites
3
+ from tesla_fleet_api.tesla.energysite import EnergySites, EnergySite
4
4
  from tesla_fleet_api.tesla.user import User
5
5
  from tesla_fleet_api.teslemetry.vehicles import TeslemetryVehicles as Vehicles, TeslemetryVehicle as Vehicle
6
6
 
@@ -8,6 +8,7 @@ __all__ = [
8
8
  "Teslemetry",
9
9
  "Charging",
10
10
  "EnergySites",
11
+ "EnergySite",
11
12
  "User",
12
13
  "Vehicles",
13
14
  "Vehicle",
@@ -2,9 +2,6 @@ from typing import Any
2
2
 
3
3
  import aiohttp
4
4
 
5
- from tesla_fleet_api.tesla.charging import Charging
6
- from tesla_fleet_api.tesla.energysite import EnergySites
7
- from tesla_fleet_api.tesla.user import User
8
5
  from tesla_fleet_api.teslemetry.vehicles import TeslemetryVehicles
9
6
  from tesla_fleet_api.const import LOGGER, Method
10
7
  from tesla_fleet_api.tesla import TeslaFleetApi
@@ -12,6 +9,7 @@ from tesla_fleet_api.tesla import TeslaFleetApi
12
9
  class Teslemetry(TeslaFleetApi):
13
10
 
14
11
  server = "https://api.teslemetry.com"
12
+ Vehicles = TeslemetryVehicles
15
13
 
16
14
  def __init__(
17
15
  self,
@@ -23,10 +21,10 @@ class Teslemetry(TeslaFleetApi):
23
21
  self.session = session
24
22
  self.access_token = access_token
25
23
 
26
- self.charging = Charging(self)
27
- self.energySites = EnergySites(self)
28
- self.user = User(self)
29
- self.vehicles = TeslemetryVehicles(self)
24
+ self.charging = self.Charging(self)
25
+ self.energySites = self.EnergySites(self)
26
+ self.user = self.User(self)
27
+ self.vehicles = self.Vehicles(self)
30
28
 
31
29
  async def ping(self) -> dict[str, bool]:
32
30
  """Send a ping."""
@@ -1,6 +1,6 @@
1
1
  from tesla_fleet_api.tessie.tessie import Tessie
2
2
  from tesla_fleet_api.tesla.charging import Charging
3
- from tesla_fleet_api.tesla.energysite import EnergySites
3
+ from tesla_fleet_api.tesla.energysite import EnergySites, EnergySite
4
4
  from tesla_fleet_api.tesla.user import User
5
5
  from tesla_fleet_api.tessie.vehicles import TessieVehicles as Vehicles, TessieVehicle as Vehicle
6
6
 
@@ -8,6 +8,7 @@ __all__ = [
8
8
  "Tessie",
9
9
  "Charging",
10
10
  "EnergySites",
11
+ "EnergySite",
11
12
  "User",
12
13
  "Vehicles",
13
14
  "Vehicle",
@@ -11,6 +11,7 @@ from tesla_fleet_api.tessie.vehicles import TessieVehicles
11
11
  class Tessie(TeslaFleetApi):
12
12
 
13
13
  server="https://api.tessie.com"
14
+ Vehicles = TessieVehicles
14
15
 
15
16
  def __init__(
16
17
  self,
@@ -22,10 +23,10 @@ class Tessie(TeslaFleetApi):
22
23
  self.session = session
23
24
  self.access_token = access_token
24
25
 
25
- self.charging = Charging(self)
26
- self.energySites = EnergySites(self)
27
- self.user = User(self)
28
- self.vehicles = TessieVehicles(self)
26
+ self.charging = self.Charging(self)
27
+ self.energySites = self.EnergySites(self)
28
+ self.user = self.User(self)
29
+ self.vehicles = self.Vehicles(self)
29
30
 
30
31
  async def scopes(self) -> list[str]:
31
32
  """Get user scopes."""
@@ -39,7 +40,7 @@ class Tessie(TeslaFleetApi):
39
40
  """Find the server URL for the Tesla Fleet API."""
40
41
  raise NotImplementedError("Do not use this function for Tessie.")
41
42
 
42
- async def vehicles(self, only_active: bool = False) -> Any:
43
+ async def list_vehicles(self, only_active: bool = False) -> Any:
43
44
  """Get vehicles."""
44
45
  return await self._request(
45
46
  Method.GET, "vehicles", params={"only_active": only_active}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tesla_fleet_api
3
- Version: 1.0.13
3
+ Version: 1.0.15
4
4
  Summary: Tesla Fleet API library for Python
5
5
  Home-page: https://github.com/Teslemetry/python-tesla-fleet-api
6
6
  Author: Brett Adams
@@ -1,17 +1,16 @@
1
- tesla_fleet_api/__init__.py,sha256=3DZMoZ-5srW-7SooAjqcRubQDuZPY8rMKH7eqIp4qtg,392
2
- tesla_fleet_api/const.py,sha256=5-oJdYgUuRnEr7ZwnJGoYXWLViNVxfFPmkYHzC5SAYs,3900
1
+ tesla_fleet_api/__init__.py,sha256=RvG6SPNWla8OcNsp9xQZBUHoGxWoU2NnnxQdd0lsXyg,475
2
+ tesla_fleet_api/const.py,sha256=cu9jvvFTLOw56bL78lIPWJKlb35T9CYACI5pBT6DBQI,3881
3
3
  tesla_fleet_api/exceptions.py,sha256=GvjJBR77xGt2g3vhiAxcNtysj-e1Me7F-9PwO9dyzOo,35430
4
- tesla_fleet_api/ratecalculator.py,sha256=4lz8yruUeouHXh_3ezsXX-CTpIegp1T1J4VuRV_qdHA,1791
5
- tesla_fleet_api/tesla/__init__.py,sha256=1XjIJWgHsYHLw9qgiVRh4FrHVOH9V8tGF0hE92PQhX8,769
4
+ tesla_fleet_api/tesla/__init__.py,sha256=ahqqQigZbXfysOpo28qUudUfWrQfKRpD_1az368Sjr0,823
6
5
  tesla_fleet_api/tesla/bluetooth.py,sha256=lyPRVf1YdcElrYBsKOMCaLwMPE9rO7Iw1a6nE7VUZ94,2369
7
6
  tesla_fleet_api/tesla/charging.py,sha256=D7I7cAf-3-95sIjyP6wpVqCq9Cppj6U-VPFQGpQQ8bs,1704
8
7
  tesla_fleet_api/tesla/energysite.py,sha256=vStffklBQfQNAO_1wrHLFu7BlBCTVVbLh7_IrAUL3wg,6131
9
- tesla_fleet_api/tesla/fleet.py,sha256=L82pVz7GJ8wKkUGqvvYnx9Kc13Bpu9LhDtmt4CV7H0g,5388
8
+ tesla_fleet_api/tesla/fleet.py,sha256=3pPwPM4LNm5glZxQzS0DieOYVljp0laXaQxVagw258U,5429
10
9
  tesla_fleet_api/tesla/oauth.py,sha256=aWBsWmnM-QxzaU8W9TXVNxGsYn_LraXnpexwdE8wOqo,4104
11
10
  tesla_fleet_api/tesla/partner.py,sha256=e-l6sEP6-IupjFEQieSUjhhvRXF3aL4ebPNahcGFRCE,1238
12
11
  tesla_fleet_api/tesla/tesla.py,sha256=Gs8-L3OsEMhs1N_vdDx-E46bOHKGowXTBxmRiP8NKh4,2391
13
12
  tesla_fleet_api/tesla/user.py,sha256=w8rwiAOIFjuDus8M0RpZ0wucJtw8kYFKtJfYVk7Ekr0,1194
14
- tesla_fleet_api/tesla/vehicle/__init__.py,sha256=EYqPyPjaD9JP846c1iGBkk697VZ-eY_tcHntDixhDGE,425
13
+ tesla_fleet_api/tesla/vehicle/__init__.py,sha256=DKQA9lIAGcya5cHj4AsNc04pcQSVHn18htTrsvN_fRs,498
15
14
  tesla_fleet_api/tesla/vehicle/bluetooth.py,sha256=rMxKOrc8T3Wz_sbuGYFot4ffCbOVP2jFSCd5tVuSWv0,21035
16
15
  tesla_fleet_api/tesla/vehicle/commands.py,sha256=L3apfGwry-IBuSSLbuoPPjW_q4new2xTr6Iy_kUa2pA,51268
17
16
  tesla_fleet_api/tesla/vehicle/fleet.py,sha256=K9BVZj6CChJSDSMFroa7Cz0KrsYWj32ILtQumarkLaU,32080
@@ -38,14 +37,14 @@ tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.py,sha256=PDv9TfiXnNs6sQ0D5vBrsSSP
38
37
  tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.pyi,sha256=cyK1uyRtDjRVqVlyl5uRQYY1RhFlWSJheLg3PGfs-_s,28524
39
38
  tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.py,sha256=bqyFJM-1qZ7W9XKREINhYZx8yXAudmq6W8_Pdfkhbkk,44711
40
39
  tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.pyi,sha256=sAUW_9aVB8NqJCnhZjXMLfqfePLVZv_7PfSKZKEBaQA,74251
41
- tesla_fleet_api/teslemetry/__init__.py,sha256=Vh7mh2r0L-7Oh-tIs5sAtHmE3OWV7UtyIbeazlTTHcc,434
42
- tesla_fleet_api/teslemetry/teslemetry.py,sha256=wcZOD1GnZ4lwC9LoicuSNbZ3z-ka9I4m1AMZP4LDYCY,3088
40
+ tesla_fleet_api/teslemetry/__init__.py,sha256=BFi16_y-1wRF8XhtgHsYM22eT8T1hTAGJ10S3Q9rWHI,464
41
+ tesla_fleet_api/teslemetry/teslemetry.py,sha256=pDMeb7QcjdQv7UU6O44WPDBWusZzvtyGjmhWW5r7bsw,2979
43
42
  tesla_fleet_api/teslemetry/vehicles.py,sha256=IJMRKb3jrW9ZSdJrCQ5wOYYZGVbFvSVza24Zpdh4d_0,2067
44
- tesla_fleet_api/tessie/__init__.py,sha256=WCH4z4WCjYEcSqQRwpWydZ6yulWA6422l4J55XfPmPg,406
45
- tesla_fleet_api/tessie/tessie.py,sha256=uhg0oOIxpwDvlvdBhKHeF3AGR2PzmdBgzh2-_EkmSq0,2617
43
+ tesla_fleet_api/tessie/__init__.py,sha256=8HiaMLz1RueRoT5PSF1Y7iRr0-RV6ujgOH2RBSSUFk4,436
44
+ tesla_fleet_api/tessie/tessie.py,sha256=UByX0BmDcqLPiW8ofNuGmMcjXvaWRn3taC68Ji80Yf8,2666
46
45
  tesla_fleet_api/tessie/vehicles.py,sha256=Cdp0pt2Z8bzK5T9wQ8_KubGSZ3Gevx1Q18kqJqEUxfs,1011
47
- tesla_fleet_api-1.0.13.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
48
- tesla_fleet_api-1.0.13.dist-info/METADATA,sha256=x8_qvQ6DGF46nxDlnUTnRpekd6j65bT_rSCmfXPN_fo,6960
49
- tesla_fleet_api-1.0.13.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
50
- tesla_fleet_api-1.0.13.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
51
- tesla_fleet_api-1.0.13.dist-info/RECORD,,
46
+ tesla_fleet_api-1.0.15.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
47
+ tesla_fleet_api-1.0.15.dist-info/METADATA,sha256=td8AWGYdz8eJ-6BwoY4OHOScSonFjsAqcM0zvhQ3KuA,6960
48
+ tesla_fleet_api-1.0.15.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
49
+ tesla_fleet_api-1.0.15.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
50
+ tesla_fleet_api-1.0.15.dist-info/RECORD,,
@@ -1,60 +0,0 @@
1
- """Rate Calculator helper"""
2
-
3
- import time
4
-
5
- DAY = 24 * 60 * 60
6
-
7
-
8
- class RateCalculator:
9
- """Calculate the consumption and remaining rate of a rate limit."""
10
-
11
- def __init__(
12
- self,
13
- limit: int,
14
- period: int = 86400,
15
- min_wait: int = 0,
16
- max_wait: int | None = None,
17
- factor: int = 5,
18
- ) -> None:
19
- """Initialize the rate calculator."""
20
- self.limit: int = limit
21
- self.period: int = period
22
- self.history: list[int] = []
23
- self.start = time.time()
24
- self.min_wait = min_wait
25
- self.max_wait = max_wait if max_wait is not None else period
26
- self.factor = factor
27
-
28
- def constrain(self, value: float) -> float:
29
- """Constrain a value between min and max."""
30
- return max(self.min_wait, min(self.max_wait, value))
31
-
32
- def consume(self, timestamp: int | None = None) -> None:
33
- """Consume a unit of the rate limit."""
34
- now = timestamp or int(time.time() + 1)
35
- self.history.append(now)
36
-
37
- def calculate(self, timestamp: int | None = None) -> float:
38
- """Return the ideal delay to avoid rate limiting."""
39
-
40
- count = len(self.history)
41
- if count == 0:
42
- return self.min_wait
43
-
44
- now = timestamp or int(time.time())
45
-
46
- while self.history and self.history[0] < now - self.period:
47
- self.history.pop(0)
48
-
49
- remaining = self.limit - count
50
-
51
- if remaining <= 0:
52
- # The wait until a request is available
53
- return self.constrain(self.history[abs(remaining)] + self.period - now)
54
-
55
- return self.constrain(self.period / remaining / self.factor)
56
-
57
- @property
58
- def count(self) -> int:
59
- """Return the number of requests in the current period."""
60
- return len(self.history)