python-terminusgps 48.1.0__tar.gz → 49.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 (58) hide show
  1. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/PKG-INFO +2 -1
  2. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/conf.py +1 -1
  3. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/constants.rst +12 -1
  4. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/pyproject.toml +2 -1
  5. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/transactions.py +38 -0
  6. python_terminusgps-49.1.0/terminusgps/tests/authorizenet/__init__.py +0 -0
  7. python_terminusgps-49.1.0/terminusgps/tests/wialon/__init__.py +0 -0
  8. python_terminusgps-49.1.0/terminusgps/wialon/__init__.py +0 -0
  9. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/constants.py +34 -1
  10. python_terminusgps-49.1.0/uv.lock +1117 -0
  11. python_terminusgps-48.1.0/uv.lock +0 -611
  12. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/.github/workflows/sphinx.yml +0 -0
  13. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/.gitignore +0 -0
  14. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/.python-version +0 -0
  15. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/COPYING +0 -0
  16. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/README.md +0 -0
  17. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/Makefile +0 -0
  18. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/make.bat +0 -0
  19. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/requirements.txt +0 -0
  20. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/authorizenet/api.rst +0 -0
  21. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/authorizenet/constants.rst +0 -0
  22. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/authorizenet/index.rst +0 -0
  23. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/authorizenet/service.rst +0 -0
  24. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/index.rst +0 -0
  25. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/mixins.rst +0 -0
  26. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/validators.rst +0 -0
  27. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/exceptions.rst +0 -0
  28. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/index.rst +0 -0
  29. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/items.rst +0 -0
  30. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/session.rst +0 -0
  31. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/usage.rst +0 -0
  32. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/docs/source/wialon/utils.rst +0 -0
  33. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/__init__.py +0 -0
  34. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/__init__.py +0 -0
  35. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/__init__.py +0 -0
  36. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/address_profiles.py +0 -0
  37. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/customer_profiles.py +0 -0
  38. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/payment_profiles.py +0 -0
  39. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/api/subscriptions.py +0 -0
  40. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/constants.py +0 -0
  41. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/authorizenet/service.py +0 -0
  42. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/default_settings.py +0 -0
  43. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/mixins.py +0 -0
  44. {python_terminusgps-48.1.0/terminusgps/wialon → python_terminusgps-49.1.0/terminusgps/tests}/__init__.py +0 -0
  45. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/validators.py +0 -0
  46. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/flags.py +0 -0
  47. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/__init__.py +0 -0
  48. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/account.py +0 -0
  49. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/base.py +0 -0
  50. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/factory.py +0 -0
  51. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/resource.py +0 -0
  52. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/retranslator.py +0 -0
  53. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/route.py +0 -0
  54. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/unit.py +0 -0
  55. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/unit_group.py +0 -0
  56. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/items/user.py +0 -0
  57. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/session.py +0 -0
  58. {python_terminusgps-48.1.0 → python_terminusgps-49.1.0}/terminusgps/wialon/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 48.1.0
3
+ Version: 49.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://terminusgps.github.io/python-terminusgps
6
6
  Project-URL: Repository, https://github.com/terminusgps/python-terminusgps
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Python: >=3.12
14
14
  Requires-Dist: authorizenet>=1.1.5
15
15
  Requires-Dist: django>=5.2.7
16
+ Requires-Dist: py-aiowialon>=1.3.5
16
17
  Requires-Dist: python-wialon>=1.2.4
17
18
  Description-Content-Type: text/markdown
18
19
 
@@ -12,7 +12,7 @@ sys.path.insert(0, os.path.abspath("../../"))
12
12
  project = "python-terminusgps"
13
13
  copyright = "2025, Terminus GPS, LLC"
14
14
  author = "Terminus GPS, LLC"
15
- release = "48.0.1"
15
+ release = "49.1.0"
16
16
 
17
17
  # -- General configuration ---------------------------------------------------
18
18
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -1,8 +1,19 @@
1
1
  Constants
2
2
  =========
3
3
 
4
- .. automodule:: terminusgps.wialon.constants
4
+ .. currentmodule:: terminusgps.wialon.constants
5
+
6
+ .. autoclass:: WialonMonthDayMask
7
+ :members:
8
+ :member-order: bysource
9
+
10
+ .. autoclass:: WialonMonthMask
5
11
  :members:
12
+ :member-order: bysource
13
+
14
+ .. autoclass:: WialonWeekDayMask
15
+ :members:
16
+ :member-order: bysource
6
17
 
7
18
  .. currentmodule:: terminusgps.wialon.flags
8
19
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-terminusgps"
3
- version = "48.1.0"
3
+ version = "49.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" } ]
@@ -14,6 +14,7 @@ requires-python = ">=3.12"
14
14
  dependencies = [
15
15
  "authorizenet>=1.1.5",
16
16
  "django>=5.2.7",
17
+ "py-aiowialon>=1.3.5",
17
18
  "python-wialon>=1.2.4",
18
19
  ]
19
20
 
@@ -9,6 +9,7 @@ __all__ = [
9
9
  "authorize_credit_card",
10
10
  "capture_authorized_amount",
11
11
  "refund_credit_card",
12
+ "charge_customer_profile",
12
13
  ]
13
14
 
14
15
 
@@ -199,3 +200,40 @@ def void_transaction(
199
200
  apicontractsv1.transactionTypeEnum.voidTransaction
200
201
  )
201
202
  return request, apicontrollers.createTransactionController
203
+
204
+
205
+ def charge_customer_profile(
206
+ customer_profile_id: int,
207
+ payment_profile_id: int,
208
+ amount: Decimal,
209
+ line_items: apicontractsv1.ArrayOfLineItem | None = None,
210
+ ) -> tuple[ObjectifiedElement, type[APIOperationBase]]:
211
+ """
212
+ `Charges a customer profile <https://developer.authorize.net/api/reference/index.html#payment-transactions-charge-a-customer-profile>`_.
213
+
214
+ :param customer_profile_id: An Authorizenet customer profile id.
215
+ :type customer_profile_id: int
216
+ :param payment_profile_id: An Authorizenet payment profile id.
217
+ :type payment_profile_id: int
218
+ :param amount: Amount to change the customer profile.
219
+ :type amount: ~decimal.Decimal
220
+ :param line_items: An array of line items. Default is :py:obj:`None`.
221
+ :type line_items: ~apicontractsv1.ArrayOfLineItem | None
222
+ :returns: A tuple containing an Authorizenet API request element and controller class.
223
+ :rtype: tuple[~lxml.objectify.ObjectifiedElement, type[~authorizenet.apicontrollersbase.APIOperationBase]]
224
+
225
+ """
226
+ profile = apicontractsv1.customerProfilePaymentType()
227
+ profile.customerProfileId = str(customer_profile_id)
228
+ profile.paymentProfile = apicontractsv1.paymentProfile()
229
+ profile.paymentProfile.paymentProfileId = str(payment_profile_id)
230
+ request = apicontractsv1.createTransactionRequest()
231
+ request.transactionRequest = apicontractsv1.transactionRequestType()
232
+ request.transactionRequest.amount = amount
233
+ request.transactionRequest.profile = profile
234
+ request.transactionRequest.transactionType = (
235
+ apicontractsv1.transactionTypeEnum.authCaptureTransaction
236
+ )
237
+ if line_items is not None:
238
+ request.transactionRequest.lineItems = line_items
239
+ return request, apicontrollers.createTransactionController
@@ -41,36 +41,69 @@ WialonMonthDayMask = enum.IntEnum(
41
41
  }.items()
42
42
  },
43
43
  )
44
- """Wialon day of the month mask."""
44
+ """
45
+ Wialon day of the month mask.
46
+
47
+ Usage:
48
+
49
+ .. code::
50
+
51
+ # First of the month
52
+ >> WialonMonthDayMask.DAY_1
53
+ > 1
54
+ # 16th day of the month
55
+ >> WialonMonthDayMask.DAY_16
56
+ > 32768
57
+
58
+ """
45
59
 
46
60
 
47
61
  class WialonMonthMask(enum.IntEnum):
48
62
  """Wialon month mask."""
49
63
 
50
64
  JANUARY = 2**0
65
+ """January."""
51
66
  FEBRUARY = 2**1
67
+ """February."""
52
68
  MARCH = 2**2
69
+ """March."""
53
70
  APRIL = 2**3
71
+ """April."""
54
72
  MAY = 2**4
73
+ """May."""
55
74
  JUNE = 2**5
75
+ """June."""
56
76
  JULY = 2**6
77
+ """July."""
57
78
  AUGUST = 2**7
79
+ """August."""
58
80
  SEPTEMBER = 2**8
81
+ """September."""
59
82
  OCTOBER = 2**9
83
+ """October."""
60
84
  NOVEMBER = 2**10
85
+ """November."""
61
86
  DECEMBER = 2**11
87
+ """December."""
62
88
 
63
89
 
64
90
  class WialonWeekDayMask(enum.IntEnum):
65
91
  """Wialon day of the week mask."""
66
92
 
67
93
  MONDAY = 2**0
94
+ """Monday."""
68
95
  TUESDAY = 2**1
96
+ """Tuesday."""
69
97
  WEDNESDAY = 2**2
98
+ """Wednesday."""
70
99
  THURSDAY = 2**3
100
+ """Thursday."""
71
101
  FRIDAY = 2**4
102
+ """Friday."""
72
103
  SATURDAY = 2**5
104
+ """Saturday."""
73
105
  SUNDAY = 2**6
106
+ """Sunday."""
74
107
 
75
108
 
76
109
  class WialonLogAction(enum.StrEnum):