python-terminusgps 45.5.0__tar.gz → 45.6.1__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.
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/PKG-INFO +1 -1
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/conf.py +1 -1
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/pyproject.toml +1 -1
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/constants.py +23 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/controllers.py +7 -7
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/services.py +14 -8
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/uv.lock +1 -1
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/.github/workflows/sphinx.yml +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/.gitignore +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/.python-version +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/COPYING +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/README.md +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/Makefile +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/make.bat +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/requirements.txt +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/api.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/auth.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/constants.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/exceptions.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/index.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/usage.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/index.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/mixins.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/validators.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/constants.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/exceptions.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/index.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/items.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/session.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/wialon/usage.rst +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/__init__.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/__init__.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/__init__.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/address_profiles.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/customer_profiles.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/payment_profiles.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/subscriptions.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/transactions.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/auth.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/default_settings.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/mixins.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/validators.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/__init__.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/constants.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/flags.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/__init__.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/account.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/base.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/factory.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/resource.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/retranslator.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/route.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/unit.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/unit_group.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/user.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/session.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/utils.py +0 -0
- {python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/validators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-terminusgps
|
|
3
|
-
Version: 45.
|
|
3
|
+
Version: 45.6.1
|
|
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
|
|
@@ -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 = "45.
|
|
15
|
+
release = "45.6.1"
|
|
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 = "45.
|
|
3
|
+
version = "45.6.1"
|
|
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" } ]
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/constants.py
RENAMED
|
@@ -4,6 +4,29 @@ from django.db import models
|
|
|
4
4
|
from django.utils.translation import gettext_lazy as _
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
class CurrencyCode(models.TextChoices):
|
|
8
|
+
USD = "USD", _("United States Dollar")
|
|
9
|
+
"""US dollar."""
|
|
10
|
+
CAD = "CAD", _("Canadian Dollar")
|
|
11
|
+
"""Canadian dollar."""
|
|
12
|
+
GBP = "GBP", _("Great British Pound")
|
|
13
|
+
"""Great British pound."""
|
|
14
|
+
DKK = "DKK", _("Danish Krone")
|
|
15
|
+
"""Danish krone."""
|
|
16
|
+
NOK = "NOK", _("Norwegian Krone")
|
|
17
|
+
"""Norwegian krone."""
|
|
18
|
+
PLN = "PLN", _("Polish Złoty")
|
|
19
|
+
"""Polish zloty."""
|
|
20
|
+
SEK = "SEK", _("Swedish Krona")
|
|
21
|
+
"""Swedish krona."""
|
|
22
|
+
EUR = "EUR", _("Euro")
|
|
23
|
+
"""Euro."""
|
|
24
|
+
AUD = "AUD", _("Australian Dollar")
|
|
25
|
+
"""Australian dollar."""
|
|
26
|
+
NZD = "NZD", _("New Zealand Dollar")
|
|
27
|
+
"""New Zealand dollar."""
|
|
28
|
+
|
|
29
|
+
|
|
7
30
|
class SubscriptionStatus(models.TextChoices):
|
|
8
31
|
"""An Authorizenet subscription status."""
|
|
9
32
|
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/controllers.py
RENAMED
|
@@ -4,7 +4,7 @@ from lxml.objectify import ObjectifiedElement
|
|
|
4
4
|
|
|
5
5
|
def execute_controller(
|
|
6
6
|
controller: APIOperationBase, environment: str
|
|
7
|
-
) -> ObjectifiedElement
|
|
7
|
+
) -> ObjectifiedElement:
|
|
8
8
|
"""
|
|
9
9
|
Executes an Authorizenet API controller and returns its response.
|
|
10
10
|
|
|
@@ -15,19 +15,19 @@ def execute_controller(
|
|
|
15
15
|
:param merchant_auth: Authorizenet merchant authentication element.
|
|
16
16
|
:type merchant_auth: ~authorizenet.apicontractsv1.merchantAuthenticationType
|
|
17
17
|
:raises AuthorizenetControllerExecutionError: If the API call fails.
|
|
18
|
-
:returns: An Authorizenet API response
|
|
19
|
-
:rtype: ~lxml.objectify.ObjectifiedElement
|
|
18
|
+
:returns: An Authorizenet API response.
|
|
19
|
+
:rtype: ~lxml.objectify.ObjectifiedElement
|
|
20
20
|
|
|
21
21
|
"""
|
|
22
22
|
controller.setenvironment(environment)
|
|
23
23
|
controller.execute()
|
|
24
|
-
response = controller.getresponse()
|
|
24
|
+
response: ObjectifiedElement | None = controller.getresponse()
|
|
25
25
|
|
|
26
26
|
if response is None:
|
|
27
27
|
raise AuthorizenetControllerExecutionError(
|
|
28
28
|
message="Authorizenet controller response didn't exist.", code="1"
|
|
29
29
|
)
|
|
30
|
-
|
|
30
|
+
elif response is not None and response.messages.resultCode != "Ok":
|
|
31
31
|
raise AuthorizenetControllerExecutionError(
|
|
32
32
|
message=response.messages.message[0]["text"].text,
|
|
33
33
|
code=response.messages.message[0]["code"].text,
|
|
@@ -40,8 +40,8 @@ class AuthorizenetControllerExecutionError(Exception):
|
|
|
40
40
|
|
|
41
41
|
def __init__(self, message: str, code: str, *args, **kwargs) -> None:
|
|
42
42
|
super().__init__(message, *args, **kwargs)
|
|
43
|
-
self._message = message
|
|
44
|
-
self._code = code
|
|
43
|
+
self._message: str = message
|
|
44
|
+
self._code: str = code
|
|
45
45
|
|
|
46
46
|
def __str__(self) -> str:
|
|
47
47
|
return f"{self.code}: {self.message}"
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/services.py
RENAMED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from abc import ABC
|
|
2
1
|
from functools import cached_property
|
|
3
2
|
from typing import Callable
|
|
4
3
|
|
|
@@ -8,11 +7,14 @@ from django.core.exceptions import ImproperlyConfigured
|
|
|
8
7
|
from lxml.objectify import ObjectifiedElement
|
|
9
8
|
|
|
10
9
|
from .auth import get_environment, get_merchant_auth, get_validation_mode
|
|
11
|
-
from .controllers import
|
|
10
|
+
from .controllers import (
|
|
11
|
+
AuthorizenetControllerExecutionError,
|
|
12
|
+
execute_controller,
|
|
13
|
+
)
|
|
12
14
|
|
|
13
15
|
|
|
14
|
-
class AuthorizenetService
|
|
15
|
-
"""
|
|
16
|
+
class AuthorizenetService:
|
|
17
|
+
"""A service for safely interacting with the Authorizenet API."""
|
|
16
18
|
|
|
17
19
|
REQUIRED_SETTINGS = (
|
|
18
20
|
"MERCHANT_AUTH_ENVIRONMENT",
|
|
@@ -27,7 +29,7 @@ class AuthorizenetService(ABC):
|
|
|
27
29
|
if not hasattr(settings, setting):
|
|
28
30
|
raise ImproperlyConfigured(f"'{setting}' setting is required.")
|
|
29
31
|
|
|
30
|
-
def
|
|
32
|
+
def request(self, func: Callable, *args, **kwargs) -> ObjectifiedElement:
|
|
31
33
|
"""
|
|
32
34
|
Calls the Authorizenet API function with arguments and returns the result.
|
|
33
35
|
|
|
@@ -40,9 +42,13 @@ class AuthorizenetService(ABC):
|
|
|
40
42
|
:rtype: ~lxml.objectify.ObjectifiedElement
|
|
41
43
|
|
|
42
44
|
"""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
try:
|
|
46
|
+
request, controller_cls = func(*args, **kwargs)
|
|
47
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
48
|
+
controller = controller_cls(request)
|
|
49
|
+
return execute_controller(controller, self.environment)
|
|
50
|
+
except AuthorizenetControllerExecutionError:
|
|
51
|
+
raise
|
|
46
52
|
|
|
47
53
|
@cached_property
|
|
48
54
|
def merchantAuthentication(self) -> merchantAuthenticationType:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/constants.rst
RENAMED
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/docs/source/authorizenet/exceptions.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/__init__.py
RENAMED
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/authorizenet/api/transactions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/resource.py
RENAMED
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/retranslator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-45.5.0 → python_terminusgps-45.6.1}/terminusgps/wialon/items/unit_group.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|