python-terminusgps 45.5.0__tar.gz → 45.6.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-45.5.0 → python_terminusgps-45.6.0}/PKG-INFO +1 -1
  2. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/conf.py +1 -1
  3. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/pyproject.toml +1 -1
  4. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/services.py +15 -8
  5. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/uv.lock +1 -1
  6. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/.github/workflows/sphinx.yml +0 -0
  7. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/.gitignore +0 -0
  8. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/.python-version +0 -0
  9. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/COPYING +0 -0
  10. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/README.md +0 -0
  11. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/Makefile +0 -0
  12. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/make.bat +0 -0
  13. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/requirements.txt +0 -0
  14. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/api.rst +0 -0
  15. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/auth.rst +0 -0
  16. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/constants.rst +0 -0
  17. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/exceptions.rst +0 -0
  18. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/index.rst +0 -0
  19. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/authorizenet/usage.rst +0 -0
  20. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/index.rst +0 -0
  21. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/mixins.rst +0 -0
  22. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/validators.rst +0 -0
  23. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/constants.rst +0 -0
  24. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/exceptions.rst +0 -0
  25. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/index.rst +0 -0
  26. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/items.rst +0 -0
  27. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/session.rst +0 -0
  28. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/docs/source/wialon/usage.rst +0 -0
  29. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/__init__.py +0 -0
  30. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/__init__.py +0 -0
  31. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/__init__.py +0 -0
  32. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/address_profiles.py +0 -0
  33. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/customer_profiles.py +0 -0
  34. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/payment_profiles.py +0 -0
  35. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/subscriptions.py +0 -0
  36. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/api/transactions.py +0 -0
  37. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/auth.py +0 -0
  38. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/constants.py +0 -0
  39. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/authorizenet/controllers.py +0 -0
  40. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/default_settings.py +0 -0
  41. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/mixins.py +0 -0
  42. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/validators.py +0 -0
  43. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/__init__.py +0 -0
  44. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/constants.py +0 -0
  45. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/flags.py +0 -0
  46. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/__init__.py +0 -0
  47. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/account.py +0 -0
  48. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/base.py +0 -0
  49. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/factory.py +0 -0
  50. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/resource.py +0 -0
  51. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/retranslator.py +0 -0
  52. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/route.py +0 -0
  53. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/unit.py +0 -0
  54. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/unit_group.py +0 -0
  55. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/items/user.py +0 -0
  56. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/session.py +0 -0
  57. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/utils.py +0 -0
  58. {python_terminusgps-45.5.0 → python_terminusgps-45.6.0}/terminusgps/wialon/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 45.5.0
3
+ Version: 45.6.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
@@ -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.5.0"
15
+ release = "45.6.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 = "45.5.0"
3
+ version = "45.6.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" } ]
@@ -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 execute_controller
10
+ from .controllers import (
11
+ AuthorizenetControllerExecutionError,
12
+ execute_controller,
13
+ )
12
14
 
13
15
 
14
- class AuthorizenetService(ABC):
15
- """Base class for services that interact with the Authorizenet API."""
16
+ class AuthorizenetService:
17
+ """A service that safely interacts 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 call_api(self, func: Callable, *args, **kwargs) -> ObjectifiedElement:
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
 
@@ -35,14 +37,19 @@ class AuthorizenetService(ABC):
35
37
  :type func: ~typing.Callable
36
38
  :param args: Positional arguments for the API call.
37
39
  :param kwargs: Keyword arguments for the API call.
40
+ :raises ValueError: If any function arguments were invalid.
38
41
  :raises ~terminusgps.authorizenet.controllers.AuthorizenetControllerExecutionError: If the API call failed.
39
42
  :returns: The Authorizenet API call response.
40
43
  :rtype: ~lxml.objectify.ObjectifiedElement
41
44
 
42
45
  """
43
- request, controller_cls = func(*args, **kwargs)
44
- request.merchantAuthentication = self.merchantAuthentication
45
- return execute_controller(controller_cls(request), self.environment)
46
+ try:
47
+ request, controller_cls = func(*args, **kwargs)
48
+ request.merchantAuthentication = self.merchantAuthentication
49
+ controller = controller_cls(request)
50
+ return execute_controller(controller, self.environment)
51
+ except AuthorizenetControllerExecutionError | ValueError:
52
+ raise
46
53
 
47
54
  @cached_property
48
55
  def merchantAuthentication(self) -> merchantAuthenticationType:
@@ -298,7 +298,7 @@ wheels = [
298
298
 
299
299
  [[package]]
300
300
  name = "python-terminusgps"
301
- version = "45.5.0"
301
+ version = "45.6.0"
302
302
  source = { editable = "." }
303
303
  dependencies = [
304
304
  { name = "authorizenet" },