carconnectivity-connector-skoda 0.2a5__tar.gz → 0.4__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.

Potentially problematic release.


This version of carconnectivity-connector-skoda might be problematic. Click here for more details.

Files changed (43) hide show
  1. carconnectivity_connector_skoda-0.4/CHANGELOG.md +40 -0
  2. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/PKG-INFO +2 -2
  3. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/pyproject.toml +1 -1
  4. carconnectivity_connector_skoda-0.4/setup_requirements.txt +6 -0
  5. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connector_skoda.egg-info/PKG-INFO +2 -2
  6. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connector_skoda.egg-info/SOURCES.txt +1 -0
  7. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connector_skoda.egg-info/requires.txt +1 -1
  8. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/_version.py +9 -4
  9. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/skoda_web_session.py +2 -0
  10. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/climatization.py +8 -6
  11. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/command_impl.py +4 -2
  12. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/connector.py +388 -151
  13. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/mqtt_client.py +14 -3
  14. carconnectivity_connector_skoda-0.4/src/carconnectivity_connectors/skoda/ui/connector_ui.py +39 -0
  15. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/vehicle.py +6 -0
  16. carconnectivity_connector_skoda-0.2a5/CHANGELOG.md +0 -18
  17. carconnectivity_connector_skoda-0.2a5/setup_requirements.txt +0 -3
  18. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.flake8 +0 -0
  19. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  21. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/dependabot.yml +0 -0
  22. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/workflows/build.yml +0 -0
  23. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/workflows/build_and_publish.yml +0 -0
  24. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.github/workflows/codeql-analysis.yml +0 -0
  25. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/.gitignore +0 -0
  26. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/LICENSE +0 -0
  27. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/Makefile +0 -0
  28. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/README.md +0 -0
  29. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/doc/Config.md +0 -0
  30. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/setup.cfg +0 -0
  31. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connector_skoda.egg-info/dependency_links.txt +0 -0
  32. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connector_skoda.egg-info/top_level.txt +0 -0
  33. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/__init__.py +0 -0
  34. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/__init__.py +0 -0
  35. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/auth_util.py +0 -0
  36. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py +0 -0
  37. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/my_skoda_session.py +0 -0
  38. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/openid_session.py +0 -0
  39. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/auth/session_manager.py +0 -0
  40. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/capability.py +0 -0
  41. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/charging.py +0 -0
  42. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/src/carconnectivity_connectors/skoda/error.py +0 -0
  43. {carconnectivity_connector_skoda-0.2a5 → carconnectivity_connector_skoda-0.4}/test/integration_test/carConnectivity.json +0 -0
@@ -0,0 +1,40 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
6
+ - No unreleased changes so far
7
+
8
+ ## [0.4] - 2025-03-02
9
+ ### Added
10
+ - Added better feedback when consent is needed
11
+ - added better access to connection state
12
+ - added better access to health state
13
+ - added attribute for vehicle in_motion
14
+ - added possibility to online change interval
15
+ - added named threads for better debugging
16
+ - added vehcile connection state
17
+ - added global vehicle state
18
+ - added maintainance objects
19
+ - added checks for min/max values with climatization temperatures
20
+ - improved error handling with commands
21
+
22
+ ## [0.3] - 2025-02-19
23
+ ### Added
24
+ - Added support for images
25
+ - Added tags to attributes
26
+ - Added support for webui via carconnectivity-plugin-webui
27
+
28
+ ## [0.2] - 2025-02-02
29
+ ### Added
30
+ - Wake Sleep command
31
+
32
+ ## [0.1] - 2025-01-25
33
+ Initial release, let's go and give this to the public to try out...
34
+ The API is not yet implemented completely but most functions already work
35
+
36
+ [unreleased]: https://github.com/tillsteinbach/CarConnectivity-connector-skoda/compare/v0.4...HEAD
37
+ [0.4]: https://github.com/tillsteinbach/CarConnectivity-connector-skoda/releases/tag/v0.4
38
+ [0.3]: https://github.com/tillsteinbach/CarConnectivity-connector-skoda/releases/tag/v0.3
39
+ [0.2]: https://github.com/tillsteinbach/CarConnectivity-connector-skoda/releases/tag/v0.2
40
+ [0.1]: https://github.com/tillsteinbach/CarConnectivity-connector-skoda/releases/tag/v0.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: carconnectivity-connector-skoda
3
- Version: 0.2a5
3
+ Version: 0.4
4
4
  Summary: CarConnectivity connector for Skoda services
5
5
  Author: Till Steinbach
6
6
  License: MIT License
@@ -37,7 +37,7 @@ Classifier: Topic :: Software Development :: Libraries
37
37
  Requires-Python: >=3.8
38
38
  Description-Content-Type: text/markdown
39
39
  License-File: LICENSE
40
- Requires-Dist: carconnectivity>=0.3a2
40
+ Requires-Dist: carconnectivity>=0.4
41
41
  Requires-Dist: oauthlib~=3.2.2
42
42
  Requires-Dist: requests~=2.32.3
43
43
  Requires-Dist: jwt~=1.3.1
@@ -14,7 +14,7 @@ authors = [
14
14
  { name = "Till Steinbach" }
15
15
  ]
16
16
  dependencies = [
17
- "carconnectivity>=0.3a2",
17
+ "carconnectivity>=0.4",
18
18
  "oauthlib~=3.2.2",
19
19
  "requests~=2.32.3",
20
20
  "jwt~=1.3.1",
@@ -0,0 +1,6 @@
1
+ flake8~=7.1.2
2
+ pylint~=3.3.4
3
+ bandit~=1.8.3
4
+
5
+ # For UI only
6
+ Flask~=3.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: carconnectivity-connector-skoda
3
- Version: 0.2a5
3
+ Version: 0.4
4
4
  Summary: CarConnectivity connector for Skoda services
5
5
  Author: Till Steinbach
6
6
  License: MIT License
@@ -37,7 +37,7 @@ Classifier: Topic :: Software Development :: Libraries
37
37
  Requires-Python: >=3.8
38
38
  Description-Content-Type: text/markdown
39
39
  License-File: LICENSE
40
- Requires-Dist: carconnectivity>=0.3a2
40
+ Requires-Dist: carconnectivity>=0.4
41
41
  Requires-Dist: oauthlib~=3.2.2
42
42
  Requires-Dist: requests~=2.32.3
43
43
  Requires-Dist: jwt~=1.3.1
@@ -35,4 +35,5 @@ src/carconnectivity_connectors/skoda/auth/openid_session.py
35
35
  src/carconnectivity_connectors/skoda/auth/session_manager.py
36
36
  src/carconnectivity_connectors/skoda/auth/skoda_web_session.py
37
37
  src/carconnectivity_connectors/skoda/auth/helpers/blacklist_retry.py
38
+ src/carconnectivity_connectors/skoda/ui/connector_ui.py
38
39
  test/integration_test/carConnectivity.json
@@ -1,4 +1,4 @@
1
- carconnectivity>=0.3a2
1
+ carconnectivity>=0.4
2
2
  oauthlib~=3.2.2
3
3
  requests~=2.32.3
4
4
  jwt~=1.3.1
@@ -1,8 +1,13 @@
1
- # file generated by setuptools_scm
1
+ # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
3
6
  TYPE_CHECKING = False
4
7
  if TYPE_CHECKING:
5
- from typing import Tuple, Union
8
+ from typing import Tuple
9
+ from typing import Union
10
+
6
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
7
12
  else:
8
13
  VERSION_TUPLE = object
@@ -12,5 +17,5 @@ __version__: str
12
17
  __version_tuple__: VERSION_TUPLE
13
18
  version_tuple: VERSION_TUPLE
14
19
 
15
- __version__ = version = '0.2a5'
16
- __version_tuple__ = version_tuple = (0, 2)
20
+ __version__ = version = '0.4'
21
+ __version_tuple__ = version_tuple = (0, 4)
@@ -121,6 +121,8 @@ class SkodaWebSession(OpenIDSession):
121
121
  raise RetrievalError('Temporary server error during login')
122
122
 
123
123
  if 'Location' not in response.headers:
124
+ if 'consent' in url:
125
+ raise AuthenticationError('Could not find Location in headers, probably due to missing consent. Try visiting: ' + url)
124
126
  raise APICompatibilityError('Forwarding without Location in headers')
125
127
 
126
128
  url = response.headers['Location']
@@ -1,12 +1,12 @@
1
1
  """
2
- Module for charging for skoda vehicles.
2
+ Module for climatization for skoda vehicles.
3
3
  """
4
4
  from __future__ import annotations
5
5
  from typing import TYPE_CHECKING
6
6
 
7
7
  from carconnectivity.climatization import Climatization
8
8
  from carconnectivity.objects import GenericObject
9
- from carconnectivity.vehicle import ElectricVehicle
9
+ from carconnectivity.vehicle import GenericVehicle
10
10
 
11
11
  from carconnectivity_connectors.skoda.error import Error
12
12
 
@@ -21,13 +21,15 @@ class SkodaClimatization(Climatization): # pylint: disable=too-many-instance-at
21
21
  This class extends the Climatization class and includes an enumeration of various
22
22
  charging states specific to Skoda vehicles.
23
23
  """
24
- def __init__(self, vehicle: ElectricVehicle | None = None, origin: Optional[Climatization] = None) -> None:
24
+ def __init__(self, vehicle: GenericVehicle | None = None, origin: Optional[Climatization] = None) -> None:
25
25
  if origin is not None:
26
26
  super().__init__(origin=origin)
27
- self.settings: Climatization.Settings = SkodaClimatization.Settings(origin=origin.settings)
27
+ if not isinstance(self.settings, SkodaClimatization.Settings):
28
+ self.settings: Climatization.Settings = SkodaClimatization.Settings(parent=self, origin=origin.settings)
29
+ self.settings.parent = self
28
30
  else:
29
31
  super().__init__(vehicle=vehicle)
30
- self.settings: Climatization.Settings = SkodaClimatization.Settings(origin=self.settings)
32
+ self.settings: Climatization.Settings = SkodaClimatization.Settings(parent=self)
31
33
  self.errors: Dict[str, Error] = {}
32
34
 
33
35
  class Settings(Climatization.Settings):
@@ -36,6 +38,6 @@ class SkodaClimatization(Climatization): # pylint: disable=too-many-instance-at
36
38
  """
37
39
  def __init__(self, parent: Optional[GenericObject] = None, origin: Optional[Climatization.Settings] = None) -> None:
38
40
  if origin is not None:
39
- super().__init__(origin=origin)
41
+ super().__init__(parent=parent, origin=origin)
40
42
  else:
41
43
  super().__init__(parent=parent)
@@ -31,6 +31,8 @@ class SpinCommand(GenericCommand):
31
31
 
32
32
  @value.setter
33
33
  def value(self, new_value: Optional[Union[str, Dict]]) -> None:
34
+ # Execute early hooks before parsing the value
35
+ new_value = self._execute_on_set_hook(new_value, early_hook=True)
34
36
  if isinstance(new_value, str):
35
37
  parser = ThrowingArgumentParser(prog='', add_help=False, exit_on_error=False)
36
38
  parser.add_argument('command', help='Command to execute', type=SpinCommand.Command,
@@ -55,8 +57,8 @@ class SpinCommand(GenericCommand):
55
57
  raise ValueError('Invalid value for SpinCommand. '
56
58
  f'Command must be one of {SpinCommand.Command}')
57
59
  if self._is_changeable:
58
- for hook in self._on_set_hooks:
59
- new_value = hook(self, new_value)
60
+ # Execute late hooks before setting the value
61
+ new_value = self._execute_on_set_hook(new_value, early_hook=False)
60
62
  self._set_value(new_value)
61
63
  else:
62
64
  raise TypeError('You cannot set this attribute. Attribute is not mutable.')