python-terminusgps 43.2.0__tar.gz → 43.3.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.

Potentially problematic release.


This version of python-terminusgps might be problematic. Click here for more details.

Files changed (67) hide show
  1. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/PKG-INFO +1 -1
  2. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/constants.rst +3 -0
  3. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/conf.py +1 -1
  4. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/pyproject.toml +1 -1
  5. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/controllers.py +2 -2
  6. python_terminusgps-43.3.0/terminusgps/django/forms/renderer.py +5 -0
  7. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/uv.lock +1 -1
  8. python_terminusgps-43.2.0/terminusgps/django/forms/__init__.py +0 -1
  9. python_terminusgps-43.2.0/terminusgps/django/forms/fields.py +0 -57
  10. python_terminusgps-43.2.0/terminusgps/django/forms/renderer.py +0 -10
  11. python_terminusgps-43.2.0/terminusgps/django/forms/widgets.py +0 -56
  12. python_terminusgps-43.2.0/terminusgps/django/utils.py +0 -7
  13. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/.github/workflows/sphinx.yml +0 -0
  14. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/.gitignore +0 -0
  15. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/.python-version +0 -0
  16. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/COPYING +0 -0
  17. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/README.md +0 -0
  18. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/Makefile +0 -0
  19. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/make.bat +0 -0
  20. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/requirements.txt +0 -0
  21. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/api.rst +0 -0
  22. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/auth.rst +0 -0
  23. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/controllers.rst +0 -0
  24. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/index.rst +0 -0
  25. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/usage.rst +0 -0
  26. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/authorizenet/validators.rst +0 -0
  27. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/django/forms.rst +0 -0
  28. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/django/index.rst +0 -0
  29. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/django/mixins.rst +0 -0
  30. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/django/settings.rst +0 -0
  31. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/django/validators.rst +0 -0
  32. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/index.rst +0 -0
  33. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/wialon/index.rst +0 -0
  34. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/wialon/items.rst +0 -0
  35. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/docs/source/wialon/session.rst +0 -0
  36. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/__init__.py +0 -0
  37. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/__init__.py +0 -0
  38. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/__init__.py +0 -0
  39. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/address_profiles.py +0 -0
  40. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/customer_profiles.py +0 -0
  41. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/payment_profiles.py +0 -0
  42. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/subscriptions.py +0 -0
  43. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/api/transactions.py +0 -0
  44. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/auth.py +0 -0
  45. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/constants.py +0 -0
  46. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/authorizenet/validators.py +0 -0
  47. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/django/__init__.py +0 -0
  48. {python_terminusgps-43.2.0/terminusgps/wialon → python_terminusgps-43.3.0/terminusgps/django/forms}/__init__.py +0 -0
  49. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/django/mixins.py +0 -0
  50. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/django/settings.py +0 -0
  51. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/django/validators.py +0 -0
  52. /python_terminusgps-43.2.0/terminusgps/django/forms/forms.py → /python_terminusgps-43.3.0/terminusgps/wialon/__init__.py +0 -0
  53. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/constants.py +0 -0
  54. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/flags.py +0 -0
  55. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/__init__.py +0 -0
  56. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/account.py +0 -0
  57. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/base.py +0 -0
  58. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/factory.py +0 -0
  59. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/resource.py +0 -0
  60. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/retranslator.py +0 -0
  61. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/route.py +0 -0
  62. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/unit.py +0 -0
  63. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/unit_group.py +0 -0
  64. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/items/user.py +0 -0
  65. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/session.py +0 -0
  66. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/utils.py +0 -0
  67. {python_terminusgps-43.2.0 → python_terminusgps-43.3.0}/terminusgps/wialon/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 43.2.0
3
+ Version: 43.3.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
@@ -7,3 +7,6 @@ Constants
7
7
 
8
8
  .. autoclass:: AuthorizenetSubscriptionStatus
9
9
  :members:
10
+
11
+ .. autoclass:: AuthorizenetSubscriptionIntervalUnit
12
+ :members:
@@ -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 = "43.2.0"
15
+ release = "43.3.0"
16
16
 
17
17
  # -- General configuration ---------------------------------------------------
18
18
  # 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 = "43.2.0"
3
+ version = "43.3.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" } ]
@@ -11,10 +11,10 @@ def execute_controller(
11
11
  Executes an Authorizenet API controller and returns its response.
12
12
 
13
13
  :param controller: An Authorizenet API controller.
14
- :type controller: :py:obj:`~authorizenet.apicontrollersbase.APIOperationBase`
14
+ :type controller: ~authorizenet.apicontrollersbase.APIOperationBase
15
15
  :raises AuthorizenetControllerExecutionError: If the API call fails.
16
16
  :returns: An Authorizenet API response, if any.
17
- :rtype: :py:obj:`~lxml.objectify.ObjectifiedElement` | :py:obj:`None`
17
+ :rtype: ~lxml.objectify.ObjectifiedElement | None
18
18
 
19
19
  """
20
20
  controller.setenvironment(get_environment())
@@ -0,0 +1,5 @@
1
+ from django.forms.renderers import TemplatesSetting
2
+
3
+
4
+ class TerminusgpsFormRenderer(TemplatesSetting):
5
+ field_template_name = "terminusgps/field.html"
@@ -298,7 +298,7 @@ wheels = [
298
298
 
299
299
  [[package]]
300
300
  name = "python-terminusgps"
301
- version = "43.2.0"
301
+ version = "43.3.0"
302
302
  source = { editable = "." }
303
303
  dependencies = [
304
304
  { name = "authorizenet" },
@@ -1 +0,0 @@
1
- from .forms import *
@@ -1,57 +0,0 @@
1
- from collections.abc import Sequence
2
-
3
- from authorizenet import apicontractsv1
4
- from django import forms
5
-
6
- from .widgets import AddressWidget, CreditCardWidget
7
-
8
-
9
- class CreditCardField(forms.MultiValueField):
10
- require_all_fields = True
11
-
12
- def __init__(self, fields=(), widget=CreditCardWidget(), *args, **kwargs) -> None:
13
- if not fields:
14
- fields = (
15
- forms.CharField(label="Card #"),
16
- forms.IntegerField(label="Expiry Month", min_value=1, max_value=12),
17
- forms.IntegerField(label="Expiry Year"),
18
- forms.CharField(label="CCV #"),
19
- )
20
- super().__init__(fields=fields, widget=widget, *args, **kwargs)
21
-
22
- def compress(self, data_list: Sequence[str]) -> apicontractsv1.creditCardType:
23
- """Compresses ``data_list`` into a :py:obj:`~authorizenet.apicontractsv1.creditCardType`."""
24
- return apicontractsv1.creditCardType(
25
- **{
26
- "cardNumber": data_list[0],
27
- "expirationDate": f"{data_list[1]}-{data_list[2]}",
28
- "cardCode": data_list[3],
29
- }
30
- )
31
-
32
-
33
- class AddressField(forms.MultiValueField):
34
- require_all_fields = True
35
-
36
- def __init__(self, fields=(), widget=AddressWidget(), *args, **kwargs) -> None:
37
- if not fields:
38
- fields = (
39
- forms.CharField(label="Street", max_length=128),
40
- forms.CharField(label="City", max_length=128),
41
- forms.CharField(label="State", max_length=64),
42
- forms.CharField(label="Zip #", min_length=5, max_length=10),
43
- forms.CharField(label="Country", max_length=2),
44
- )
45
- super().__init__(fields=fields, widget=widget, *args, **kwargs)
46
-
47
- def compress(self, data_list: Sequence[str]) -> apicontractsv1.customerAddressType:
48
- """Compresses ``data_list`` into a :py:obj:`~authorizenet.apicontractsv1.customerAddressType`."""
49
- return apicontractsv1.customerAddressType(
50
- **{
51
- "address": data_list[0],
52
- "city": data_list[1],
53
- "state": data_list[2],
54
- "zip": data_list[3],
55
- "country": data_list[4],
56
- }
57
- )
@@ -1,10 +0,0 @@
1
- from django.conf import settings
2
- from django.core.exceptions import ImproperlyConfigured
3
- from django.forms.renderers import TemplatesSetting
4
-
5
- if settings.configured and not hasattr(settings, "DEFAULT_FIELD_CLASS"):
6
- raise ImproperlyConfigured("'DEFAULT_FIELD_CLASS' setting is required.")
7
-
8
-
9
- class TerminusgpsFormRenderer(TemplatesSetting):
10
- field_template_name = "terminusgps/field.html"
@@ -1,56 +0,0 @@
1
- from authorizenet import apicontractsv1
2
- from django import forms
3
-
4
-
5
- class CaptchaWidget(forms.widgets.CheckboxInput):
6
- def get_context(self, name, value, attrs):
7
- context = super().get_context(name, value, attrs)
8
- print(f"{context = }")
9
- return context
10
-
11
- def check_test(self, value):
12
- return bool(value)
13
-
14
-
15
- class CreditCardWidget(forms.widgets.MultiWidget):
16
- def __init__(self, widgets=(), attrs: dict | None = None) -> None:
17
- if not widgets:
18
- widgets = [
19
- forms.TextInput(attrs=attrs),
20
- forms.TextInput(attrs=attrs),
21
- forms.TextInput(attrs=attrs),
22
- forms.TextInput(attrs=attrs),
23
- ]
24
- super().__init__(widgets=widgets, attrs=attrs)
25
-
26
- def decompress(
27
- self, value: apicontractsv1.creditCardType | None
28
- ) -> list[str | None]:
29
- """Decompresses a :py:attr:`~authorizenet.apicontractsv1.creditCardType` into a list of strings."""
30
- if value is None:
31
- return [None, None, None, None]
32
-
33
- expiry_parts = value.expirationDate.split("-")
34
- return [value.cardNumber, expiry_parts[0], expiry_parts[1], value.cardCode]
35
-
36
-
37
- class AddressWidget(forms.widgets.MultiWidget):
38
- def __init__(self, widgets=(), attrs: dict | None = None) -> None:
39
- if not widgets:
40
- widgets = [
41
- forms.TextInput(attrs=attrs),
42
- forms.TextInput(attrs=attrs),
43
- forms.TextInput(attrs=attrs),
44
- forms.TextInput(attrs=attrs),
45
- forms.TextInput(attrs=attrs),
46
- ]
47
- super().__init__(widgets=widgets, attrs=attrs)
48
-
49
- def decompress(
50
- self, value: apicontractsv1.customerAddressType | None
51
- ) -> list[str | None]:
52
- """Decompresses a :py:attr:`~authorizenet.apicontractsv1.customerAddressType` into a list of strings."""
53
- if value is None:
54
- return [None, None, None, None, None]
55
-
56
- return [value.address, value.city, value.state, value.country, value.zip]
@@ -1,7 +0,0 @@
1
- import numpy as np
2
- from PIL.Image import Image
3
- from pyzbar.pyzbar import decode
4
-
5
-
6
- def scan_barcode(img: np.ndarray | Image) -> list:
7
- return decode(img)