python-terminusgps 41.0.0__tar.gz → 41.1.0__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 (70) hide show
  1. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/PKG-INFO +1 -1
  2. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/conf.py +1 -1
  3. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/pyproject.toml +1 -1
  4. python_terminusgps-41.1.0/terminusgps/wialon/factory.py +58 -0
  5. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/resource.py +1 -1
  6. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/unit_group.py +1 -1
  7. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/uv.lock +1 -1
  8. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/.gitignore +0 -0
  9. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/COPYING +0 -0
  10. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/README.md +0 -0
  11. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/Makefile +0 -0
  12. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/make.bat +0 -0
  13. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/auth.rst +0 -0
  14. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/constants.rst +0 -0
  15. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/controllers.rst +0 -0
  16. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/examples.rst +0 -0
  17. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/index.rst +0 -0
  18. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/profiles.rst +0 -0
  19. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/subscriptions.rst +0 -0
  20. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/utils.rst +0 -0
  21. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/authorizenet/validators.rst +0 -0
  22. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/django/forms.rst +0 -0
  23. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/django/index.rst +0 -0
  24. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/django/mixins.rst +0 -0
  25. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/django/settings.rst +0 -0
  26. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/django/validators.rst +0 -0
  27. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/index.rst +0 -0
  28. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/constants.rst +0 -0
  29. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/errors.rst +0 -0
  30. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/examples.rst +0 -0
  31. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/flags.rst +0 -0
  32. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/index.rst +0 -0
  33. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/items.rst +0 -0
  34. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/session.rst +0 -0
  35. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/docs/source/wialon/utils.rst +0 -0
  36. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/__init__.py +0 -0
  37. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/__init__.py +0 -0
  38. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/auth.py +0 -0
  39. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/constants.py +0 -0
  40. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/controllers.py +0 -0
  41. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
  42. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
  43. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/profiles/customers.py +0 -0
  44. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
  45. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/subscriptions.py +0 -0
  46. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/utils.py +0 -0
  47. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/authorizenet/validators.py +0 -0
  48. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/__init__.py +0 -0
  49. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/forms/__init__.py +0 -0
  50. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/forms/fields.py +0 -0
  51. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/forms/forms.py +0 -0
  52. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/forms/renderer.py +0 -0
  53. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/forms/widgets.py +0 -0
  54. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/mixins.py +0 -0
  55. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/settings.py +0 -0
  56. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/utils.py +0 -0
  57. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/django/validators.py +0 -0
  58. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/__init__.py +0 -0
  59. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/constants.py +0 -0
  60. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/flags.py +0 -0
  61. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/__init__.py +0 -0
  62. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/account.py +0 -0
  63. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/base.py +0 -0
  64. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/retranslator.py +0 -0
  65. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/route.py +0 -0
  66. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/unit.py +0 -0
  67. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/items/user.py +0 -0
  68. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/session.py +0 -0
  69. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/utils.py +0 -0
  70. {python_terminusgps-41.0.0 → python_terminusgps-41.1.0}/terminusgps/wialon/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 41.0.0
3
+ Version: 41.1.0
4
4
  Summary: Provides abstractions/utilities for working with Wialon API, Authorize.NET API, AWS API, and more.
5
5
  Project-URL: Documentation, https://docs.terminusgps.com
6
6
  Project-URL: Repository, https://github.com/terminusgps/python-terminusgps
@@ -18,7 +18,7 @@ django.setup()
18
18
  project = "python-terminusgps"
19
19
  copyright = "2025, Terminus GPS, LLC"
20
20
  author = "Terminus GPS, LLC"
21
- release = "40.1.4"
21
+ release = "41.1.0"
22
22
 
23
23
  # -- General configuration ---------------------------------------------------
24
24
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-terminusgps"
3
- version = "41.0.0"
3
+ version = "41.1.0"
4
4
  description = "Provides abstractions/utilities for working with Wialon API, Authorize.NET API, AWS API, and more."
5
5
  readme = "README.md"
6
6
  authors = [ {name = "Blake Nall", email = "blake@terminusgps.com" } ]
@@ -0,0 +1,58 @@
1
+ from terminusgps.wialon.items import (
2
+ WialonResource,
3
+ WialonRetranslator,
4
+ WialonRoute,
5
+ WialonUnit,
6
+ WialonUnitGroup,
7
+ WialonUser,
8
+ )
9
+ from terminusgps.wialon.items.base import WialonObject
10
+ from terminusgps.wialon.session import WialonSession
11
+
12
+ WIALON_ITEM_MAP = {
13
+ "avl_hw": None,
14
+ "avl_resource": WialonResource,
15
+ "avl_retranslator": WialonRetranslator,
16
+ "avl_unit": WialonUnit,
17
+ "avl_unit_group": WialonUnitGroup,
18
+ "user": WialonUser,
19
+ "avl_route": WialonRoute,
20
+ }
21
+
22
+
23
+ class WialonObjectCreationError(Exception):
24
+ """Raised when a factory fails to create a Wialon object."""
25
+
26
+
27
+ def create_wialon_object(
28
+ session: WialonSession, items_type: str, *args, **kwargs
29
+ ) -> WialonObject:
30
+ """
31
+ Creates an ``items_type`` object in Wialon and returns it as a Python object.
32
+
33
+ :param session: A valid Wialon API session.
34
+ :type session: :py:obj:`~terminusgps.wialon.session.WialonSession`
35
+ :param items_type: A Wialon items type string.
36
+ :type items_type: :py:obj:`str`
37
+ :param args: Positional arguments to pass to the Wialon object's :py:meth:`create` method.
38
+ :param kwargs: Keyword arguments to pass to the Wialon object's :py:meth:`create` method.
39
+ :raises WialonAPIError: If something went wrong calling the Wialon API.
40
+ :raises WialonObjectCreationError: If something went wrong creating the object in Wialon.
41
+ :returns: A Wialon object.
42
+ :rtype: :py:obj:`~terminusgps.wialon.items.base.WialonObject`
43
+
44
+ """
45
+ if items_type not in WIALON_ITEM_MAP:
46
+ raise ValueError(f"Unknown Wialon items type: '{items_type}'.")
47
+
48
+ cls = WIALON_ITEM_MAP.get(items_type)
49
+ if cls is None:
50
+ raise ValueError(f"Wialon items type '{items_type}' is not implemented.")
51
+
52
+ obj = cls(session)
53
+ obj.create(*args, **kwargs)
54
+ if not obj.id:
55
+ raise WialonObjectCreationError(
56
+ f"Failed to execute create({args = }, {kwargs = }) on '{obj}'."
57
+ )
58
+ return obj
@@ -30,7 +30,7 @@ class WialonResource(WialonObject):
30
30
  raise ValueError(f"'creator_id' must be a digit, got '{creator_id}'.")
31
31
  response = self.session.wialon_api.core_create_resource(
32
32
  **{
33
- "creator_id": int(creator_id),
33
+ "creatorId": int(creator_id),
34
34
  "name": name,
35
35
  "dataFlags": flags.DataFlag.RESOURCE_BASE,
36
36
  "skipCreatorCheck": int(skip_creator_check),
@@ -25,7 +25,7 @@ class WialonUnitGroup(WialonObject):
25
25
  raise ValueError(f"'creator_id' must be a digit, got '{creator_id}'.")
26
26
  response = self.session.wialon_api.core_create_unit_group(
27
27
  **{
28
- "creator_id": int(creator_id),
28
+ "creatorId": int(creator_id),
29
29
  "name": name,
30
30
  "dataFlags": flags.DataFlag.UNIT_BASE,
31
31
  }
@@ -298,7 +298,7 @@ wheels = [
298
298
 
299
299
  [[package]]
300
300
  name = "python-terminusgps"
301
- version = "41.0.0"
301
+ version = "41.1.0"
302
302
  source = { editable = "." }
303
303
  dependencies = [
304
304
  { name = "authorizenet" },