pySmartHashtag 0.14.2__tar.gz → 0.14.3__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 (113) hide show
  1. {pysmarthashtag-0.14.2/pySmartHashtag.egg-info → pysmarthashtag-0.14.3}/PKG-INFO +1 -1
  2. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3/pySmartHashtag.egg-info}/PKG-INFO +1 -1
  3. pysmarthashtag-0.14.3/pySmartHashtag.egg-info/scm_version.json +8 -0
  4. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_charging_states.py +25 -0
  5. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/battery.py +8 -0
  6. pysmarthashtag-0.14.2/pySmartHashtag.egg-info/scm_version.json +0 -8
  7. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.devcontainer.json +0 -0
  8. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.github/copilot-instructions.md +0 -0
  9. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.github/dependabot.yml +0 -0
  10. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.github/workflows/python-package.yml +0 -0
  11. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.github/workflows/python-publish.yml +0 -0
  12. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.gitignore +0 -0
  13. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.pre-commit-config.yaml +0 -0
  14. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.vscode/launch.json +0 -0
  15. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/.vscode/settings.json +0 -0
  16. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/AUTHORS +0 -0
  17. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/CODE_OF_CONDUCT.md +0 -0
  18. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/CONTRIBUTING.md +0 -0
  19. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/ChangeLog +0 -0
  20. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/LICENSE +0 -0
  21. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/README.md +0 -0
  22. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pySmartHashtag.egg-info/SOURCES.txt +0 -0
  23. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pySmartHashtag.egg-info/dependency_links.txt +0 -0
  24. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pySmartHashtag.egg-info/requires.txt +0 -0
  25. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pySmartHashtag.egg-info/scm_file_list.json +0 -0
  26. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pySmartHashtag.egg-info/top_level.txt +0 -0
  27. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pyproject.toml +0 -0
  28. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/__init__.py +0 -0
  29. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/account.py +0 -0
  30. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/__init__.py +0 -0
  31. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/authentication.py +0 -0
  32. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/client.py +0 -0
  33. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/log_sanitizer.py +0 -0
  34. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/ssl_context.py +0 -0
  35. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/api/utils.py +0 -0
  36. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/cli.py +0 -0
  37. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/const.py +0 -0
  38. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/charging.py +0 -0
  39. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/climate.py +0 -0
  40. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/horn_light.py +0 -0
  41. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/journal.py +0 -0
  42. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/lock.py +0 -0
  43. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/telematics.py +0 -0
  44. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/control/windows.py +0 -0
  45. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/models.py +0 -0
  46. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/__init__.py +0 -0
  47. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/common.py +0 -0
  48. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/conftest.py +0 -0
  49. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/Human_and_vehicle_relationship_does_not_exist.json +0 -0
  50. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/api_access.json +0 -0
  51. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/auth_context.url +0 -0
  52. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/auth_intermediate.url +0 -0
  53. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/auth_result.url +0 -0
  54. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/charging_success.json +0 -0
  55. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/climate_success.json +0 -0
  56. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/dc_charge_info.json +0 -0
  57. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/journal_response.json +0 -0
  58. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/journal_toggle_success.json +0 -0
  59. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/login_result.json +0 -0
  60. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/ota_response.json +0 -0
  61. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/soc_80.json +0 -0
  62. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/soc_90.json +0 -0
  63. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/token_expired.json +0 -0
  64. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/trackpoints_response.json +0 -0
  65. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/vehicle_info.json +0 -0
  66. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/vehicle_info2.json +0 -0
  67. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/vehicle_info_dc_charging.json +0 -0
  68. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/vehicle_response.json +0 -0
  69. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/replys/vehicle_result.json +0 -0
  70. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_account.py +0 -0
  71. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_actions.py +0 -0
  72. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_authentication_backoff.py +0 -0
  73. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_charging.py +0 -0
  74. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_charging_limit.py +0 -0
  75. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_cli.py +0 -0
  76. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_climate_status.py +0 -0
  77. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_climate_zaf.py +0 -0
  78. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_dc_charge_info.py +0 -0
  79. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_dc_charging.py +0 -0
  80. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_endpoint_urls.py +0 -0
  81. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_horn_light_control.py +0 -0
  82. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_journal.py +0 -0
  83. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_journal_control.py +0 -0
  84. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_journal_pagination.py +0 -0
  85. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_lock_control.py +0 -0
  86. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_log_sanitizer.py +0 -0
  87. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_missing_fields.py +0 -0
  88. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_ota_info.py +0 -0
  89. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_send_destination.py +0 -0
  90. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_ssl_context.py +0 -0
  91. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_token_lifecycle.py +0 -0
  92. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_tracked_vins.py +0 -0
  93. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_trackpoints.py +0 -0
  94. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_vehicle_state.py +0 -0
  95. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_vin_headers.py +0 -0
  96. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/tests/test_window_control.py +0 -0
  97. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/__init__.py +0 -0
  98. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/climate.py +0 -0
  99. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/journal.py +0 -0
  100. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/maintenance.py +0 -0
  101. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/position.py +0 -0
  102. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/running.py +0 -0
  103. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/safety.py +0 -0
  104. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/tires.py +0 -0
  105. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/trackpoints.py +0 -0
  106. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/vehicle.py +0 -0
  107. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/pysmarthashtag/vehicle/vehicle_state.py +0 -0
  108. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/requirements-cli.txt +0 -0
  109. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/requirements-test.txt +0 -0
  110. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/requirements.txt +0 -0
  111. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/run.sh +0 -0
  112. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/setup.cfg +0 -0
  113. {pysmarthashtag-0.14.2 → pysmarthashtag-0.14.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pySmartHashtag
3
- Version: 0.14.2
3
+ Version: 0.14.3
4
4
  Summary: A python library to get information from Smart #1, #3 and #5 web API
5
5
  Home-page: https://github.com/dasBasti/pySmartHashtag
6
6
  Author: dasBasti
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pySmartHashtag
3
- Version: 0.14.2
3
+ Version: 0.14.3
4
4
  Summary: A python library to get information from Smart #1, #3 and #5 web API
5
5
  Home-page: https://github.com/dasBasti/pySmartHashtag
6
6
  Author: dasBasti
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.14.3",
3
+ "distance": 0,
4
+ "node": "g4f052f88b2fecb9584483cd8ece22e82af303cd7",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-11"
8
+ }
@@ -117,3 +117,28 @@ class TestChargerConnectionState:
117
117
  assert battery is not None
118
118
  assert battery.charger_connection_status is None
119
119
  assert battery.charger_connection_state is None
120
+
121
+
122
+ class TestIsChargerConnected:
123
+ """The plug state must not depend on the car currently drawing power (issue #441)."""
124
+
125
+ def test_plugged_not_charging(self):
126
+ """Plugged in with chargerState NOT_CHARGING still counts as connected."""
127
+ battery = Battery.from_vehicle_data(create_vehicle_data("0", "2"))
128
+
129
+ assert battery is not None
130
+ assert battery.is_charger_connected is True
131
+
132
+ def test_not_connected(self):
133
+ """Unplugged stays disconnected."""
134
+ battery = Battery.from_vehicle_data(create_vehicle_data("0", "0"))
135
+
136
+ assert battery is not None
137
+ assert battery.is_charger_connected is False
138
+
139
+ def test_unknown_connection_code_does_not_connect(self):
140
+ """Codes the API adds later do not flip the plug state on their own."""
141
+ battery = Battery.from_vehicle_data(create_vehicle_data("0", "42"))
142
+
143
+ assert battery is not None
144
+ assert battery.is_charger_connected is False
@@ -304,6 +304,14 @@ class Battery(VehicleDataBase):
304
304
  if charger_conn is not None:
305
305
  retval["charger_connection_status"] = charger_conn
306
306
  retval["charger_connection_state"] = charger_connection_state_name(charger_conn)
307
+ # chargerState reports NOT_CHARGING for a plugged-in car that is not drawing power,
308
+ # so the connection code is the only reliable plug signal. See SmartHashtag issue #441.
309
+ if charger_conn in (
310
+ ChargerConnectionState.DC_CONNECTED,
311
+ ChargerConnectionState.PLUGGED_NOT_CHARGING,
312
+ ChargerConnectionState.CHARGING,
313
+ ):
314
+ retval["is_charger_connected"] = True
307
315
 
308
316
  charging_status = retval.get("charging_status")
309
317
  battery_percent = retval.get("remaining_battery_percent")
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.14.2",
3
- "distance": 0,
4
- "node": "gb73ae6cbc61e57756b26a7bb9ea3fd79957d7a89",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-10-10"
8
- }
File without changes
File without changes
File without changes