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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 21.2.0
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=IooSz_PTeq23IIgq6upx2CcpWEOXgK3mFNylADYlF3I,2553
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=J2HRSbGwGcfTcaurMI0oms5XcmUjf887GJVaXLfyA-o,14551
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=oNqLdblY6uWd08FCInSix9gzDYk-O1YdgbkENZ-1vjs,8541
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-21.2.0.dist-info/METADATA,sha256=eSyk_vdKqPA1np55nwimM-J2Wnq8c9j0pZdlK5XgQs8,912
31
- python_terminusgps-21.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
32
- python_terminusgps-21.2.0.dist-info/licenses/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
33
- python_terminusgps-21.2.0.dist-info/RECORD,,
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
- if not self.is_account:
62
- return False # Resources cannot have dealer rights
63
- return bool(
64
- self.session.wialon_api.get_account_data(
65
- **{"itemId": self.id, "type": 1}
66
- ).get("dealerRights")
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
@@ -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 _, driver in response.items()]
252
+ dirty_phones = [driver[0].get("ph") for driver in response.values()]
253
253
  return self.clean_phone_numbers(dirty_phones)