python-terminusgps 21.2.0__py3-none-any.whl → 22.0.2__py3-none-any.whl
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.
- {python_terminusgps-21.2.0.dist-info → python_terminusgps-22.0.2.dist-info}/METADATA +5 -1
- {python_terminusgps-21.2.0.dist-info → python_terminusgps-22.0.2.dist-info}/RECORD +9 -7
- terminusgps/authorizenet/profiles/base.py +42 -0
- terminusgps/opencv/__init__.py +0 -0
- terminusgps/opencv/barcodes.py +31 -0
- terminusgps/wialon/items/resource.py +8 -6
- terminusgps/wialon/items/unit.py +1 -1
- {python_terminusgps-21.2.0.dist-info → python_terminusgps-22.0.2.dist-info}/WHEEL +0 -0
- {python_terminusgps-21.2.0.dist-info → python_terminusgps-22.0.2.dist-info}/licenses/COPYING +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-terminusgps
|
|
3
|
-
Version:
|
|
3
|
+
Version: 22.0.2
|
|
4
4
|
Summary: Provides abstractions/utilities for working with Wialon API, Authorize.NET API, AWS API, and more.
|
|
5
5
|
Project-URL: Documentation, https://app.terminusgps.com/docs/apps/python-terminusgps/index.html
|
|
6
6
|
Project-URL: Repository, https://github.com/terminusgps/python-terminusgps
|
|
@@ -16,5 +16,9 @@ Requires-Dist: argparse>=1.4.0
|
|
|
16
16
|
Requires-Dist: authorizenet>=1.1.5
|
|
17
17
|
Requires-Dist: boto3>=1.34.144
|
|
18
18
|
Requires-Dist: django>=5.1.5
|
|
19
|
+
Requires-Dist: matplotlib>=3.10.1
|
|
20
|
+
Requires-Dist: opencv-python>=4.11.0.86
|
|
21
|
+
Requires-Dist: pyqt6>=6.8.1
|
|
19
22
|
Requires-Dist: python-wialon>=1.2.4
|
|
23
|
+
Requires-Dist: pyzbar>=0.1.9
|
|
20
24
|
Requires-Dist: twilio>=9.4.5
|
|
@@ -5,12 +5,14 @@ terminusgps/authorizenet/auth.py,sha256=JuP-l23PRnsnufda5f29Y61K9yhT6p6pRMEH5KGz
|
|
|
5
5
|
terminusgps/authorizenet/subscriptions.py,sha256=_SfaTYS_3rgHNqQuvZ59TK_zDFymU64sAzj9FCyqYyU,2217
|
|
6
6
|
terminusgps/authorizenet/profiles/__init__.py,sha256=QKjMKcXpCSCEhv6LBCz0yGP8t0VxAyKyYRS4_HLYnxQ,114
|
|
7
7
|
terminusgps/authorizenet/profiles/addresses.py,sha256=ffAi3LcEOB3Xsr9f4N_PfjSZcN3I9dTKNamoAmnLpo4,3838
|
|
8
|
-
terminusgps/authorizenet/profiles/base.py,sha256=
|
|
8
|
+
terminusgps/authorizenet/profiles/base.py,sha256=G7lXIYrWk5m1_MLuZT0xBs5vabKAUVbk9eZHl8Rahl8,3378
|
|
9
9
|
terminusgps/authorizenet/profiles/customers.py,sha256=iEuNFP6PHuGdFQftgxxKpQFYaGw8IWLjsOaugvEOA-g,4513
|
|
10
10
|
terminusgps/authorizenet/profiles/payments.py,sha256=qOWp-gO6qBCADP98WjoNCHm-jtq7DY5-moiPsOnT5yI,5263
|
|
11
11
|
terminusgps/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
terminusgps/aws/secrets.py,sha256=kgRA77rs0mD4berWRLkPtJLOe4Grf--o5f8NzwQqXCk,360
|
|
13
13
|
terminusgps/aws/ses.py,sha256=sDca2GjMaZvUt3kUPtGCpcqHiOkij9lMV1ogZofgYUU,2372
|
|
14
|
+
terminusgps/opencv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
terminusgps/opencv/barcodes.py,sha256=NmdpUnixlGJI-6shbKGcb6-M_IZvgSZJRDVSsI7pcFg,669
|
|
14
16
|
terminusgps/twilio/__init__.py,sha256=dYo41F2jft_eHDWSUtSpKGSRG1bewq_qClqilUJZkYM,33
|
|
15
17
|
terminusgps/twilio/caller.py,sha256=nHCIwUulo-C_v2orsp6OY0nuJA6YetSkxpMTwrRQ-uA,1831
|
|
16
18
|
terminusgps/wialon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -21,13 +23,13 @@ terminusgps/wialon/session.py,sha256=6xg65LZz6cebWclTQp1KRLvPss0aM-bWhAmmwiDOlMg
|
|
|
21
23
|
terminusgps/wialon/utils.py,sha256=HUuBgkqJzzsFHGKPgf_YAE0e5Oui8xdaYtb9fv_ibOc,6344
|
|
22
24
|
terminusgps/wialon/items/__init__.py,sha256=3BVthghekMvhMQSzQgBMlD_phxmKSmp3Zvmo-z0O8Bs,211
|
|
23
25
|
terminusgps/wialon/items/base.py,sha256=EAtzlnCvB7WTu3iX1bV1-S9TvwXc-Eez7e0X4TMiK9U,6943
|
|
24
|
-
terminusgps/wialon/items/resource.py,sha256=
|
|
26
|
+
terminusgps/wialon/items/resource.py,sha256=qmQKEakJa9LH5YkI9-iBDA0hsotc5ctcwdb7kZuXdfQ,14549
|
|
25
27
|
terminusgps/wialon/items/retranslator.py,sha256=8q9EDc92w92MElnHIeEzH3Ra4kiPXrx4t9V5nPDZuRU,3728
|
|
26
28
|
terminusgps/wialon/items/route.py,sha256=PTJx1gmT_PGz7nlSSUS2VzjYD-aAuvkEOIdIFneUSSQ,1148
|
|
27
|
-
terminusgps/wialon/items/unit.py,sha256
|
|
29
|
+
terminusgps/wialon/items/unit.py,sha256=-jQL5Alvz77FZWteYNM9VNX15jtCufI-DWRRj3hRsgA,8539
|
|
28
30
|
terminusgps/wialon/items/unit_group.py,sha256=vGVJMBY1BrKK0tP-C1DCIz4Bh6P-HKRnKY1g8g95UIs,5031
|
|
29
31
|
terminusgps/wialon/items/user.py,sha256=INwAibQVmjNNelepQXMfDevgJqMvIjHHgEjAMLRvhB0,7082
|
|
30
|
-
python_terminusgps-
|
|
31
|
-
python_terminusgps-
|
|
32
|
-
python_terminusgps-
|
|
33
|
-
python_terminusgps-
|
|
32
|
+
python_terminusgps-22.0.2.dist-info/METADATA,sha256=1YPz8oMH4ULPwmgyGVls3OiNRkzULUwCQLTMZ7746pA,1043
|
|
33
|
+
python_terminusgps-22.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
34
|
+
python_terminusgps-22.0.2.dist-info/licenses/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
35
|
+
python_terminusgps-22.0.2.dist-info/RECORD,,
|
|
@@ -36,18 +36,42 @@ class AuthorizenetProfileBase:
|
|
|
36
36
|
|
|
37
37
|
@property
|
|
38
38
|
def merchantCustomerId(self) -> str:
|
|
39
|
+
"""
|
|
40
|
+
An internally designated customer id.
|
|
41
|
+
|
|
42
|
+
:type: :py:obj:`str`
|
|
43
|
+
|
|
44
|
+
"""
|
|
39
45
|
return str(self._merchantCustomerId)
|
|
40
46
|
|
|
41
47
|
@property
|
|
42
48
|
def id(self) -> str:
|
|
49
|
+
"""
|
|
50
|
+
An Authorizenet generated id.
|
|
51
|
+
|
|
52
|
+
:type: :py:obj:`str`
|
|
53
|
+
|
|
54
|
+
"""
|
|
43
55
|
return str(self._id)
|
|
44
56
|
|
|
45
57
|
@property
|
|
46
58
|
def merchantAuthentication(self) -> merchantAuthenticationType:
|
|
59
|
+
"""
|
|
60
|
+
Merchant authentication for Authorizenet API calls.
|
|
61
|
+
|
|
62
|
+
:type: :py:obj:`~authorizenet.apicontractsv1.merchantAuthenticationType`
|
|
63
|
+
|
|
64
|
+
"""
|
|
47
65
|
return get_merchant_auth()
|
|
48
66
|
|
|
49
67
|
@property
|
|
50
68
|
def environment(self) -> str:
|
|
69
|
+
"""
|
|
70
|
+
Environment for Authorizenet API calls to execute within.
|
|
71
|
+
|
|
72
|
+
:type: :py:obj:`str`
|
|
73
|
+
|
|
74
|
+
"""
|
|
51
75
|
return get_environment()
|
|
52
76
|
|
|
53
77
|
@abstractmethod
|
|
@@ -73,12 +97,30 @@ class AuthorizenetSubProfileBase(AuthorizenetProfileBase):
|
|
|
73
97
|
|
|
74
98
|
@property
|
|
75
99
|
def validationMode(self) -> str:
|
|
100
|
+
"""
|
|
101
|
+
The validation mode for Authorizenet API calls.
|
|
102
|
+
|
|
103
|
+
:type: :py:obj:`str`
|
|
104
|
+
|
|
105
|
+
"""
|
|
76
106
|
return get_validation_mode()
|
|
77
107
|
|
|
78
108
|
@property
|
|
79
109
|
def default(self) -> str:
|
|
110
|
+
"""
|
|
111
|
+
Whether or not the sub profile is set as default in Authorizenet.
|
|
112
|
+
|
|
113
|
+
:type: :py:obj:`str`
|
|
114
|
+
|
|
115
|
+
"""
|
|
80
116
|
return str(self._default).lower()
|
|
81
117
|
|
|
82
118
|
@property
|
|
83
119
|
def customerProfileId(self) -> str:
|
|
120
|
+
"""
|
|
121
|
+
An Authorizenet generated customer profile id.
|
|
122
|
+
|
|
123
|
+
:py:obj:`str`
|
|
124
|
+
|
|
125
|
+
"""
|
|
84
126
|
return str(self._customerProfileId)
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import cv2 as cv
|
|
2
|
+
from pyzbar.pyzbar import decode
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def read_barcode(filepath: str) -> None:
|
|
6
|
+
img = cv.imread(filepath)
|
|
7
|
+
barcodes = decode(img)
|
|
8
|
+
|
|
9
|
+
if not barcodes:
|
|
10
|
+
raise ValueError("No barcodes detected.")
|
|
11
|
+
|
|
12
|
+
for barcode in barcodes:
|
|
13
|
+
(x, y, w, h) = barcode.rect
|
|
14
|
+
cv.rectangle(img, (x - 10, y - 10), (x + w + 10, y + h + 10), (255, 0, 0), 2)
|
|
15
|
+
|
|
16
|
+
print(f"{barcode.data = }")
|
|
17
|
+
print(f"{barcode.type = }")
|
|
18
|
+
|
|
19
|
+
cv.imshow("Image", img)
|
|
20
|
+
cv.waitKey(0)
|
|
21
|
+
cv.destroyAllWindows()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def main() -> None:
|
|
25
|
+
filepath = "/home/blake/sift_keypoints.jpg"
|
|
26
|
+
read_barcode(filepath)
|
|
27
|
+
return
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if __name__ == "__main__":
|
|
31
|
+
main()
|
|
@@ -58,12 +58,14 @@ class WialonResource(WialonBase):
|
|
|
58
58
|
:type: :py:obj:`bool`
|
|
59
59
|
|
|
60
60
|
"""
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
)
|
|
61
|
+
return (
|
|
62
|
+
bool(
|
|
63
|
+
self.session.wialon_api.get_account_data(
|
|
64
|
+
**{"itemId": self.id, "type": 1}
|
|
65
|
+
).get("dealerRights")
|
|
66
|
+
)
|
|
67
|
+
if self.is_account
|
|
68
|
+
else False
|
|
67
69
|
)
|
|
68
70
|
|
|
69
71
|
@property
|
terminusgps/wialon/items/unit.py
CHANGED
|
@@ -249,5 +249,5 @@ class WialonUnit(WialonBase):
|
|
|
249
249
|
**{"unitId": self.id}
|
|
250
250
|
)
|
|
251
251
|
if response:
|
|
252
|
-
dirty_phones = [driver[0].get("ph") for
|
|
252
|
+
dirty_phones = [driver[0].get("ph") for driver in response.values()]
|
|
253
253
|
return self.clean_phone_numbers(dirty_phones)
|
|
File without changes
|
{python_terminusgps-21.2.0.dist-info → python_terminusgps-22.0.2.dist-info}/licenses/COPYING
RENAMED
|
File without changes
|