python-terminusgps 37.0.0__tar.gz → 37.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.
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/PKG-INFO +3 -1
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/pyproject.toml +3 -1
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/controllers.py +5 -1
- python_terminusgps-37.1.0/terminusgps/authorizenet/items/address_profiles.py +126 -0
- python_terminusgps-37.1.0/terminusgps/authorizenet/items/base.py +68 -0
- python_terminusgps-37.1.0/terminusgps/authorizenet/items/customer_profiles.py +227 -0
- python_terminusgps-37.1.0/terminusgps/authorizenet/items/payment_profiles.py +253 -0
- python_terminusgps-37.1.0/terminusgps/wialon/tests/test_items.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/validators.py +8 -7
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/uv.lock +30 -1
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/.gitignore +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/COPYING +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/README.md +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/Makefile +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/coverage/c.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/coverage/python.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/coverage/undoc.pickle +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/auth.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/constants.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/controllers.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/examples.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/profiles.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/subscriptions.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/authorizenet/utils.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/aws/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/aws/notifications.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/aws/secrets.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/aws/speech.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/aws/utils.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/django/forms.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/django/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/django/mixins.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/django/settings.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/django/validators.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/environment.pickle +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/mixins.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/settings.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/twilio/caller.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/twilio/examples.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/twilio/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/twilio/settings.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/validators.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/constants.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/errors.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/examples.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/flags.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/index.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/items.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/session.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/settings.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/doctrees/wialon/utils.doctree +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/auth.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/constants.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/controllers.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/errors.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/addresses.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/base.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/customers.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/payments.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/subscriptions.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/subscriptions/subscriptions.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/authorizenet/utils.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/aws/notifications.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/aws/secrets.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/aws/speech.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/forms/fields.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/forms/renderer.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/forms/widgets.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/forms.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/mixins.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/django/validators.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/mixins.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/twilio/caller.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/constants.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/flags.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/base.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/geofence.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/notification.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/resource.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/retranslator.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/route.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/unit.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/unit_group.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/items/user.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/session.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/terminusgps/wialon/utils.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_modules/wialon/api.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/auth.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/constants.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/controllers.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/examples.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/profiles.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/subscriptions.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/authorizenet/utils.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/aws/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/aws/notifications.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/aws/secrets.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/aws/speech.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/aws/utils.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/django/forms.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/django/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/django/mixins.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/django/settings.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/django/validators.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/mixins.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/settings.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/twilio/caller.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/twilio/examples.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/twilio/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/twilio/settings.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/validators.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/constants.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/errors.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/examples.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/flags.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/index.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/items.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/session.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/settings.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_sources/wialon/utils.rst.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/0fc70aa4dfe4d16d7073.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/583e3f428bf2362b546d.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/5be6ec379613f10aea3f.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/76c1862325ea6f70eeff.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/83710c128240451d95af.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/autoclasstoc.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/awesome-docsearch.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/awesome-docsearch.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/awesome-sphinx-design.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/awesome-sphinx-design.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/b659956119f91f2342bc.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/basic.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/bb50084be2b43ba7b98c.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/ce1e40901d7a0d88d483.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/badge_only.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/custom.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/custom.css.map +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/theme.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/theme.css.map +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/theme.min.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/css/theme.min.css.map +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/d04352f240062b100fba.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/doctools.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/documentation_options.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/f1cdf5c21de970ee0592.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fd994e8d90d9cab651b0.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/file.png +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/font/fontello.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/font/fontello.svg +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/font/fontello.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/font/fontello.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/font/fontello.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/jquery.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/js/badge_only.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/js/theme.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/js/versions.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/language_data.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/minus.png +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/plus.png +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/pygments.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/searchtools.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/sphinx_highlight.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/theme.css +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/theme.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/_static/theme.js.LICENSE.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/auth.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/constants.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/controllers.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/examples.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/profiles.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/subscriptions.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/authorizenet/utils.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/aws/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/aws/notifications.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/aws/secrets.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/aws/speech.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/aws/utils.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/django/forms.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/django/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/django/mixins.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/django/settings.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/django/validators.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/genindex.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/mixins.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/objects.inv +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/py-modindex.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/search.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/searchindex.js +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/settings.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/twilio/caller.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/twilio/examples.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/twilio/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/twilio/settings.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/validators.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/constants.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/errors.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/examples.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/flags.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/index.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/items.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/session.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/settings.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/html/wialon/utils.html +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/linkcheck/output.json +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/build/linkcheck/output.txt +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/make.bat +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/auth.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/constants.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/controllers.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/examples.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/profiles.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/authorizenet/utils.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/aws/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/aws/notifications.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/aws/secrets.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/conf.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/django/forms.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/django/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/django/mixins.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/django/settings.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/django/validators.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/twilio/caller.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/twilio/examples.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/twilio/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/constants.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/errors.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/examples.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/flags.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/index.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/items.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/session.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/docs/source/wialon/utils.rst +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/auth.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/constants.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/authorizenet/tests → python_terminusgps-37.1.0/terminusgps/authorizenet/items}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/base.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/customers.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/profiles/subscriptions.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/aws → python_terminusgps-37.1.0/terminusgps/authorizenet/tests}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/tests/test_auth.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/tests/test_profiles.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/tests/test_utils.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/utils.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/aws/tests → python_terminusgps-37.1.0/terminusgps/aws}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/aws/notifications.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/aws/secrets.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/django → python_terminusgps-37.1.0/terminusgps/aws/tests}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/aws/tests/test_notifications.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/aws/tests/test_secrets.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/wialon → python_terminusgps-37.1.0/terminusgps/django}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/forms/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/forms/fields.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/forms/forms.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/forms/renderer.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/forms/widgets.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/mixins.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/settings.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/tests/test_forms.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/tests/test_mixins.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/tests/test_utils.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/utils.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/django/validators.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/twilio/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/twilio/caller.py +0 -0
- {python_terminusgps-37.0.0/terminusgps/wialon/tests → python_terminusgps-37.1.0/terminusgps/wialon}/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/constants.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/flags.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/base.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/resource.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/retranslator.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/route.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/unit.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/unit_group.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/items/user.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/session.py +0 -0
- /python_terminusgps-37.0.0/terminusgps/wialon/tests/test_items.py → /python_terminusgps-37.1.0/terminusgps/wialon/tests/__init__.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/tests/test_session.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/wialon/tests/test_utils.py +0 -0
- {python_terminusgps-37.0.0 → python_terminusgps-37.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: 37.
|
|
3
|
+
Version: 37.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
|
|
@@ -20,6 +20,8 @@ Requires-Dist: django>=5.1.5
|
|
|
20
20
|
Requires-Dist: loguru>=0.7.3
|
|
21
21
|
Requires-Dist: matplotlib>=3.10.1
|
|
22
22
|
Requires-Dist: pandas>=2.2.3
|
|
23
|
+
Requires-Dist: pillow-heif>=0.22.0
|
|
24
|
+
Requires-Dist: pillow>=11.2.1
|
|
23
25
|
Requires-Dist: python-wialon>=1.2.4
|
|
24
26
|
Requires-Dist: pyzbar>=0.1.9
|
|
25
27
|
Requires-Dist: twilio>=9.4.5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "python-terminusgps"
|
|
3
|
-
version = "37.
|
|
3
|
+
version = "37.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" } ]
|
|
@@ -21,6 +21,8 @@ dependencies = [
|
|
|
21
21
|
"loguru>=0.7.3",
|
|
22
22
|
"matplotlib>=3.10.1",
|
|
23
23
|
"pandas>=2.2.3",
|
|
24
|
+
"pillow-heif>=0.22.0",
|
|
25
|
+
"pillow>=11.2.1",
|
|
24
26
|
"python-wialon>=1.2.4",
|
|
25
27
|
"pyzbar>=0.1.9",
|
|
26
28
|
"twilio>=9.4.5",
|
{python_terminusgps-37.0.0 → python_terminusgps-37.1.0}/terminusgps/authorizenet/controllers.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
1
3
|
from authorizenet.apicontrollersbase import APIOperationBase
|
|
2
4
|
|
|
3
5
|
from .auth import get_environment
|
|
@@ -7,7 +9,9 @@ class AuthorizenetControllerExecutor:
|
|
|
7
9
|
"""Allows objects to use :py:meth:`execute_controller` to execute Authorizenet API controllers."""
|
|
8
10
|
|
|
9
11
|
@staticmethod
|
|
10
|
-
def execute_controller(
|
|
12
|
+
def execute_controller(
|
|
13
|
+
controller: APIOperationBase,
|
|
14
|
+
) -> dict[str, typing.Any] | None:
|
|
11
15
|
"""
|
|
12
16
|
Executes an Authorizenet API controller and returns its response.
|
|
13
17
|
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from authorizenet import apicontractsv1, apicontrollers
|
|
4
|
+
|
|
5
|
+
from .base import AuthorizenetBase
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AuthorizenetAddressProfile(AuthorizenetBase):
|
|
9
|
+
"""An Authorizenet address profile."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, customerProfileId: int | str, *args, **kwargs) -> None:
|
|
12
|
+
super().__init__(*args, **kwargs)
|
|
13
|
+
if isinstance(customerProfileId, str) and not customerProfileId.isdigit():
|
|
14
|
+
raise ValueError(
|
|
15
|
+
f"'customerProfileId' can only contain digits, got '{customerProfileId}'."
|
|
16
|
+
)
|
|
17
|
+
self.customerProfileId = customerProfileId
|
|
18
|
+
|
|
19
|
+
def _authorizenet_create_customer_shipping_address(
|
|
20
|
+
self, address: apicontractsv1.customerAddressType, default: bool = False
|
|
21
|
+
) -> dict[str, typing.Any] | None:
|
|
22
|
+
"""
|
|
23
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.createCustomerShippingAddressRequest` using the Authorizenet API.
|
|
24
|
+
|
|
25
|
+
`createCustomerShippingAddressRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-shipping-address>`_
|
|
26
|
+
|
|
27
|
+
:param address: A customer address object.
|
|
28
|
+
:type address: :py:obj:`~authorizenet.apicontractsv1.customerAddressType`
|
|
29
|
+
:param default: Whether or not to set the address profile as default.
|
|
30
|
+
:type default: :py:obj:`bool`
|
|
31
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
32
|
+
:returns: An Authorizenet API response, if any.
|
|
33
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
34
|
+
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
request = apicontractsv1.createCustomerShippingAddressRequest()
|
|
38
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
39
|
+
request.customerProfileId = self.customerProfileId
|
|
40
|
+
request.address = address
|
|
41
|
+
request.defaultShippingAddress = str(default).lower()
|
|
42
|
+
|
|
43
|
+
return self.execute_controller(
|
|
44
|
+
apicontrollers.createCustomerShippingAddressController(request)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def _authorizenet_get_customer_shipping_address(
|
|
48
|
+
self,
|
|
49
|
+
) -> dict[str, typing.Any] | None:
|
|
50
|
+
"""
|
|
51
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.getCustomerShippingAddressRequest` using the Authorizenet API.
|
|
52
|
+
|
|
53
|
+
`getCustomerShippingAddressRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-get-customer-shipping-address>`_
|
|
54
|
+
|
|
55
|
+
:raises AssertionError: If :py:attr:`id` wasn't set.
|
|
56
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
57
|
+
:returns: An Authorizenet API response, if any.
|
|
58
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
59
|
+
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
assert self.id, "Address profile id wasn't set."
|
|
63
|
+
|
|
64
|
+
request = apicontractsv1.getCustomerShippingAddressRequest()
|
|
65
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
66
|
+
request.customerProfileId = self.customerProfileId
|
|
67
|
+
request.customerAddressId = self.id
|
|
68
|
+
|
|
69
|
+
return self.execute_controller(
|
|
70
|
+
apicontrollers.getCustomerShippingAddressController(request)
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
def _authorizenet_update_customer_shipping_address(
|
|
74
|
+
self, address: apicontractsv1.customerAddressType, default: bool = False
|
|
75
|
+
) -> dict[str, typing.Any] | None:
|
|
76
|
+
"""
|
|
77
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.updateCustomerShippingAddress` using the Authorizenet API.
|
|
78
|
+
|
|
79
|
+
`updateCustomerShippingAddressRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-update-customer-shipping-address>`_
|
|
80
|
+
|
|
81
|
+
:param address: A customer address object.
|
|
82
|
+
:type address: :py:obj:`~authorizenet.apicontractsv1.customerAddressType`
|
|
83
|
+
:param default: Whether or not to set the address profile as default.
|
|
84
|
+
:type default: :py:obj:`bool`
|
|
85
|
+
:raises AssertionError: If :py:attr:`id` wasn't set.
|
|
86
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
87
|
+
:returns: An Authorizenet API response, if any.
|
|
88
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
89
|
+
|
|
90
|
+
"""
|
|
91
|
+
request = apicontractsv1.updateCustomerShippingAddressRequest()
|
|
92
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
93
|
+
request.customerProfileId = self.customerProfileId
|
|
94
|
+
request.address = address
|
|
95
|
+
request.address.customerAddressId = self.id
|
|
96
|
+
request.defaultShippingAddress = str(default).lower()
|
|
97
|
+
|
|
98
|
+
return self.execute_controller(
|
|
99
|
+
apicontrollers.updateCustomerShippingAddressController(request)
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
def _authorizenet_delete_customer_shipping_address(
|
|
103
|
+
self,
|
|
104
|
+
) -> dict[str, typing.Any] | None:
|
|
105
|
+
"""
|
|
106
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.deleteCustomerShippingAddress` using the Authorizenet API.
|
|
107
|
+
|
|
108
|
+
`deleteCustomerShippingAddressRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-delete-customer-shipping-address>`_
|
|
109
|
+
|
|
110
|
+
:raises AssertionError: If :py:attr:`id` wasn't set.
|
|
111
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
112
|
+
:returns: An Authorizenet API response, if any.
|
|
113
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
114
|
+
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
assert self.id, "Address profile id wasn't set."
|
|
118
|
+
|
|
119
|
+
request = apicontractsv1.deleteCustomerShippingAddressRequest()
|
|
120
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
121
|
+
request.customerProfileId = self.customerProfileId
|
|
122
|
+
request.customerAddressId = self.id
|
|
123
|
+
|
|
124
|
+
return self.execute_controller(
|
|
125
|
+
apicontrollers.deleteCustomerShippingAddressController(request)
|
|
126
|
+
)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from authorizenet import apicontractsv1
|
|
2
|
+
|
|
3
|
+
from terminusgps.authorizenet.auth import get_merchant_auth, get_validation_mode
|
|
4
|
+
from terminusgps.authorizenet.controllers import AuthorizenetControllerExecutor
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AuthorizenetBase(AuthorizenetControllerExecutor):
|
|
8
|
+
"""Base class for Authorizenet objects."""
|
|
9
|
+
|
|
10
|
+
def __init__(self, id: int | str | None = None, *args, **kwargs) -> None:
|
|
11
|
+
"""
|
|
12
|
+
Sets :py:attr:`id` if provided.
|
|
13
|
+
|
|
14
|
+
:returns: Nothing.
|
|
15
|
+
:rtype: :py:obj:`None`
|
|
16
|
+
|
|
17
|
+
"""
|
|
18
|
+
self.id = id
|
|
19
|
+
|
|
20
|
+
def __str__(self) -> str:
|
|
21
|
+
"""Returns the object in format: '#<ID>' if :py:attr:`id` is set."""
|
|
22
|
+
return f"#{self.id}" if self.id else ""
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def id(self) -> str | None:
|
|
26
|
+
"""
|
|
27
|
+
An Authorizenet generated id.
|
|
28
|
+
|
|
29
|
+
:type: :py:obj:`str` | :py:obj:`None`
|
|
30
|
+
|
|
31
|
+
"""
|
|
32
|
+
return self._id
|
|
33
|
+
|
|
34
|
+
@id.setter
|
|
35
|
+
def id(self, other: int | str | None) -> None:
|
|
36
|
+
"""
|
|
37
|
+
Sets :py:attr:`id` to ``other``.
|
|
38
|
+
|
|
39
|
+
:raises ValueError: If ``other`` was provided as a string containing non-digit characters.
|
|
40
|
+
:returns: Nothing.
|
|
41
|
+
:rtype: :py:obj:`None`
|
|
42
|
+
|
|
43
|
+
"""
|
|
44
|
+
if isinstance(other, str) and not other.isdigit():
|
|
45
|
+
raise ValueError(f"'id' can only contain digit characters, got '{other}'.")
|
|
46
|
+
self._id = str(other) if other is not None else None
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def merchantAuthentication(self) -> apicontractsv1.merchantAuthenticationType:
|
|
50
|
+
"""
|
|
51
|
+
Current merchant authentication object to authenticate Authorizenet API calls.
|
|
52
|
+
|
|
53
|
+
:returns: A merchant authentication object.
|
|
54
|
+
:rtype: :py:obj:`~authorizenet.apicontractsv1.merchantAuthenticationType`
|
|
55
|
+
|
|
56
|
+
"""
|
|
57
|
+
return get_merchant_auth()
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def validationMode(self) -> str:
|
|
61
|
+
"""
|
|
62
|
+
Current Authorizenet API validation mode.
|
|
63
|
+
|
|
64
|
+
:returns: An Authorizenet API validation mode string.
|
|
65
|
+
:rtype: :py:obj:`str`
|
|
66
|
+
|
|
67
|
+
"""
|
|
68
|
+
return get_validation_mode()
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from authorizenet import apicontractsv1, apicontrollers
|
|
4
|
+
|
|
5
|
+
from .base import AuthorizenetBase
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AuthorizenetCustomerProfile(AuthorizenetBase):
|
|
9
|
+
"""An Authorizenet customer profile."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, email: str, merchant_id: str, *args, **kwargs) -> None:
|
|
12
|
+
"""
|
|
13
|
+
Sets :py:attr:`_email` and :py:attr:`_merchant_id`.
|
|
14
|
+
|
|
15
|
+
:param email: An email address.
|
|
16
|
+
:type email: :py:obj:`str`
|
|
17
|
+
:param merchant_id: A merchant designated id string.
|
|
18
|
+
:type merchant_id: :py:obj:`str`
|
|
19
|
+
:returns: Nothing.
|
|
20
|
+
:rtype: :py:obj:`None`
|
|
21
|
+
|
|
22
|
+
"""
|
|
23
|
+
super().__init__(*args, **kwargs)
|
|
24
|
+
self._email = email
|
|
25
|
+
self._merchant_id = merchant_id
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def email(self) -> str:
|
|
29
|
+
"""An email address assigned to the customer profile."""
|
|
30
|
+
return str(self._email)
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def merchant_id(self) -> str:
|
|
34
|
+
"""A merchant designated id assigned to the customer profile."""
|
|
35
|
+
return str(self._merchant_id)
|
|
36
|
+
|
|
37
|
+
@email.setter
|
|
38
|
+
def email(self, other: str) -> None:
|
|
39
|
+
"""Sets :py:attr:`email` to ``other``."""
|
|
40
|
+
self._email = str(other)
|
|
41
|
+
|
|
42
|
+
@merchant_id.setter
|
|
43
|
+
def merchant_id(self, other: str) -> None:
|
|
44
|
+
"""Sets :py:attr:`merchant_id` to ``other``."""
|
|
45
|
+
self._merchant_id = str(other)
|
|
46
|
+
|
|
47
|
+
def create(self, desc: str | None = None, validate: bool = False) -> int:
|
|
48
|
+
"""
|
|
49
|
+
Creates an Authorizenet customer profile and returns its id as an integer.
|
|
50
|
+
|
|
51
|
+
If successfully created, sets :py:attr:`id` to the new customer profile id.
|
|
52
|
+
|
|
53
|
+
:param desc: An optional customer profile description. Default is :py:obj:`None`
|
|
54
|
+
:type desc: :py:obj:`str` | :py:obj:`None`
|
|
55
|
+
:param validate: Whether or not to validate a payment on the new customer profile. Default is :py:obj:`False`.
|
|
56
|
+
:type validate: :py:obj:`bool`
|
|
57
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
58
|
+
:returns: A customer profile id integer.
|
|
59
|
+
:rtype: :py:obj:`int`
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
profile = apicontractsv1.customerProfileType()
|
|
64
|
+
profile.merchantCustomerId = self.merchant_id
|
|
65
|
+
if desc:
|
|
66
|
+
profile.description = desc
|
|
67
|
+
|
|
68
|
+
response = self._authorizenet_create_customer_profile(profile, validate)
|
|
69
|
+
profile_id = int(response.customerProfileId)
|
|
70
|
+
self.id = profile_id
|
|
71
|
+
|
|
72
|
+
return profile_id
|
|
73
|
+
|
|
74
|
+
def delete(self) -> None:
|
|
75
|
+
"""
|
|
76
|
+
Deletes the Authorizenet customer profile.
|
|
77
|
+
|
|
78
|
+
If successfully deleted, sets :py:attr:`id` to :py:obj:`None`.
|
|
79
|
+
|
|
80
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
81
|
+
:returns: Nothing.
|
|
82
|
+
:rtype: :py:obj:`None`
|
|
83
|
+
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
if self.id:
|
|
87
|
+
self._authorizenet_delete_customer_profile()
|
|
88
|
+
self._id = None
|
|
89
|
+
|
|
90
|
+
def update(self, desc: str | None = None, validate: bool = False) -> None:
|
|
91
|
+
"""
|
|
92
|
+
Updates the Authorizenet customer profile if :py:attr:`id` is set.
|
|
93
|
+
|
|
94
|
+
:param desc: An optional customer profile description. Default is :py:obj:`None`
|
|
95
|
+
:type desc: :py:obj:`str` | :py:obj:`None`
|
|
96
|
+
:param validate: Whether or not to validate a payment on the customer profile. Default is :py:obj:`False`.
|
|
97
|
+
:type validate: :py:obj:`bool`
|
|
98
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
99
|
+
:returns: Nothing.
|
|
100
|
+
:rtype: :py:obj:`None`
|
|
101
|
+
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
if self.id:
|
|
105
|
+
profile = apicontractsv1.customerProfileExType()
|
|
106
|
+
profile.customerProfileId = self.id
|
|
107
|
+
profile.merchantCustomerId = self.merchant_id
|
|
108
|
+
profile.email = self.email
|
|
109
|
+
if desc is not None:
|
|
110
|
+
profile.description = desc
|
|
111
|
+
|
|
112
|
+
self._authorizenet_update_customer_profile(profile, validate)
|
|
113
|
+
|
|
114
|
+
def _authorizenet_get_customer_profile(
|
|
115
|
+
self, issuer_info: bool = False
|
|
116
|
+
) -> dict[str, typing.Any] | None:
|
|
117
|
+
"""
|
|
118
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.getCustomerProfileRequest` using the Authorizenet API.
|
|
119
|
+
|
|
120
|
+
`getCustomerProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-get-customer-profile>`_
|
|
121
|
+
|
|
122
|
+
:param issuer_info: Whether or not to include issuer information in the response. Default is :py:obj:`False`.
|
|
123
|
+
:type issuer_info: :py:obj:`bool`
|
|
124
|
+
:raises AssertionError: If none of :py:attr:`id`, :py:attr:`email` or :py:attr:`merchant_id` were set.
|
|
125
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
126
|
+
:returns: An Authorizenet API response, if any.
|
|
127
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
128
|
+
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
assert any([self.id, self.email, self.merchant_id]), (
|
|
132
|
+
"At least one of 'id', 'email' or 'merchant_id' must be set."
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
request = apicontractsv1.getCustomerProfileRequest()
|
|
136
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
137
|
+
request.includeIssuerInfo = str(issuer_info).lower()
|
|
138
|
+
|
|
139
|
+
if self.id:
|
|
140
|
+
request.customerProfileId = self.id
|
|
141
|
+
if self.email:
|
|
142
|
+
request.email = self.email
|
|
143
|
+
if self.merchant_id:
|
|
144
|
+
request.customerMerchantId = self.merchant_id
|
|
145
|
+
|
|
146
|
+
return self.execute_controller(
|
|
147
|
+
apicontrollers.getCustomerProfileController(request)
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
def _authorizenet_create_customer_profile(
|
|
151
|
+
self, profile: apicontractsv1.customerProfileType, validate: bool = False
|
|
152
|
+
) -> dict[str, typing.Any] | None:
|
|
153
|
+
"""
|
|
154
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.createCustomerProfileRequest` using the Authorizenet API.
|
|
155
|
+
|
|
156
|
+
`createCustomerProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-create-customer-profile>`_
|
|
157
|
+
|
|
158
|
+
:param profile: A customer profile object.
|
|
159
|
+
:type profile: :py:obj:`~authorizenet.apicontractsv1.customerProfileType`
|
|
160
|
+
:param validate: Whether or not to validate a payment profile for the customer profile. Default is :py:obj:`False`.
|
|
161
|
+
:type validate: :py:obj:`bool`
|
|
162
|
+
:raises AuthorizenetControllerExecutionError: If ``validate`` was :py:obj:`True` but validation was forbidden.
|
|
163
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
164
|
+
:returns: An Authorizenet API response, if any.
|
|
165
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
166
|
+
|
|
167
|
+
"""
|
|
168
|
+
request = apicontractsv1.createCustomerProfileRequest()
|
|
169
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
170
|
+
request.profile = profile
|
|
171
|
+
if validate:
|
|
172
|
+
request.validationMode = self.validationMode
|
|
173
|
+
|
|
174
|
+
return self.execute_controller(
|
|
175
|
+
apicontrollers.createCustomerProfileController(request)
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
def _authorizenet_update_customer_profile(
|
|
179
|
+
self, profile: apicontractsv1.customerProfileExType, validate: bool = False
|
|
180
|
+
) -> dict[str, typing.Any] | None:
|
|
181
|
+
"""
|
|
182
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.updateCustomerProfileRequest` using the Authorizenet API.
|
|
183
|
+
|
|
184
|
+
`updateCustomerProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-update-customer-profile>`_
|
|
185
|
+
|
|
186
|
+
:param profile: A customer profile ex object.
|
|
187
|
+
:type profile: :py:obj:`~authorizenet.apicontractsv1.customerProfileExType`
|
|
188
|
+
:param validate: Whether or not to validate a payment profile for the customer profile. Default is :py:obj:`False`.
|
|
189
|
+
:type validate: :py:obj:`bool`
|
|
190
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
191
|
+
:returns: An Authorizenet API response, if any.
|
|
192
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
193
|
+
|
|
194
|
+
"""
|
|
195
|
+
|
|
196
|
+
request = apicontractsv1.updateCustomerProfileRequest()
|
|
197
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
198
|
+
request.profile = profile
|
|
199
|
+
if validate:
|
|
200
|
+
request.validationMode = self.validationMode
|
|
201
|
+
|
|
202
|
+
return self.execute_controller(
|
|
203
|
+
apicontrollers.updateCustomerProfileController(request)
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
def _authorizenet_delete_customer_profile(self) -> dict[str, typing.Any] | None:
|
|
207
|
+
"""
|
|
208
|
+
Executes a :py:obj:`~authorizenet.apicontractsv1.deleteCustomerProfileRequest` using the Authorizenet API.
|
|
209
|
+
|
|
210
|
+
`deleteCustomerProfileRequest <https://developer.authorize.net/api/reference/index.html#customer-profiles-delete-customer-profile>`_
|
|
211
|
+
|
|
212
|
+
:raises AssertionError: If :py:attr:`id` wasn't set.
|
|
213
|
+
:raises AuthorizenetControllerExecutionError: If something goes wrong during an Authorizenet API call.
|
|
214
|
+
:returns: An Authorizenet API response, if any.
|
|
215
|
+
:rtype: :py:obj:`dict` | :py:obj:`None`
|
|
216
|
+
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
assert self.id, "Customer profile id wasn't set."
|
|
220
|
+
|
|
221
|
+
request = apicontractsv1.deleteCustomerProfileRequest()
|
|
222
|
+
request.merchantAuthentication = self.merchantAuthentication
|
|
223
|
+
request.customerProfileId = self.id
|
|
224
|
+
|
|
225
|
+
return self.execute_controller(
|
|
226
|
+
apicontrollers.deleteCustomerProfileController(request)
|
|
227
|
+
)
|