python-terminusgps 20.6.1__tar.gz → 20.7.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.
Potentially problematic release.
This version of python-terminusgps might be problematic. Click here for more details.
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/PKG-INFO +1 -2
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/conf.py +1 -1
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/index.rst +1 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/examples.rst +33 -8
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/index.rst +0 -1
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/pyproject.toml +1 -2
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/__init__.py +0 -1
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/resource.py +111 -1
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/unit.py +1 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/utils.py +0 -1
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/uv.lock +48 -50
- python_terminusgps-20.6.1/terminusgps/wialon/items/geofence.py +0 -60
- python_terminusgps-20.6.1/terminusgps/wialon/items/notification.py +0 -4
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/.gitignore +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/.readthedocs.yaml +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/COPYING +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/README.md +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/Makefile +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/make.bat +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/authorizenet/auth.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/authorizenet/index.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/authorizenet/profiles.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/aws/index.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/aws/secrets.rst +0 -0
- {python_terminusgps-20.6.1/docs/source/wialon → python_terminusgps-20.7.0/docs/source}/settings.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/twilio/caller.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/twilio/index.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/constants.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/errors.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/flags.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/items.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/session.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/docs/source/wialon/utils.rst +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/auth.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/base.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/customers.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/subscriptions.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/aws/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/aws/secrets.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/aws/ses.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/settings.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/twilio/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/twilio/caller.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/__init__.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/constants.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/flags.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/base.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/retranslator.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/route.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/unit_group.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/user.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/logger.py +0 -0
- {python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/session.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-terminusgps
|
|
3
|
-
Version: 20.
|
|
3
|
+
Version: 20.7.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://app.terminusgps.com/docs/apps/python-terminusgps/index.html
|
|
6
6
|
Project-URL: Repository, https://github.com/terminusgps/python-terminusgps
|
|
@@ -16,6 +16,5 @@ 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: lxml==4.9.4
|
|
20
19
|
Requires-Dist: python-wialon>=1.2.4
|
|
21
20
|
Requires-Dist: twilio>=9.4.5
|
|
@@ -10,7 +10,7 @@ from sphinxawesome_theme.postprocess import Icons
|
|
|
10
10
|
project = "python-terminusgps"
|
|
11
11
|
copyright = "2025, Terminus GPS, LLC"
|
|
12
12
|
author = "Terminus GPS, LLC"
|
|
13
|
-
release = "20.
|
|
13
|
+
release = "20.6.1"
|
|
14
14
|
|
|
15
15
|
# -- General configuration ---------------------------------------------------
|
|
16
16
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
@@ -2,34 +2,44 @@ Usage Examples
|
|
|
2
2
|
==============
|
|
3
3
|
|
|
4
4
|
===============================
|
|
5
|
-
Create a new
|
|
5
|
+
Create a new user and rename it
|
|
6
6
|
===============================
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
----------------------------------------------------------------------------------------------------------------------
|
|
9
|
+
1. Import :py:obj:`~terminusgps.wialon.session.WialonSession` and :py:obj:`~terminusgps.wialon.items.user.WialonUser`.
|
|
10
|
+
----------------------------------------------------------------------------------------------------------------------
|
|
9
11
|
|
|
10
12
|
Let's also import :py:obj:`~terminusgps.wialon.utils.generate_wialon_password` so we don't have to come up with a valid Wialon password ourselves.
|
|
11
13
|
|
|
12
14
|
.. code:: python
|
|
13
15
|
|
|
14
16
|
from terminusgps.wialon.session import WialonSession
|
|
15
|
-
from terminusgps.wialon.items import
|
|
17
|
+
from terminusgps.wialon.items import WialonUser
|
|
16
18
|
from terminusgps.wialon.utils import generate_wialon_password
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
----------------------------------------------------------------
|
|
21
|
+
2. Open the session in a context manager and instantiate a user.
|
|
22
|
+
----------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
When creating a new Wialon object, you *must* pass :py:obj:`None` as the ``id`` parameter.
|
|
25
|
+
|
|
26
|
+
It is recommended to only use keyword arguments when instantiating a :py:obj:`~terminusgps.wialon.items.base.WialonBase` object.
|
|
19
27
|
|
|
20
28
|
.. code:: python
|
|
21
29
|
|
|
22
30
|
with WialonSession(token="my_wialon_api_token") as session:
|
|
23
|
-
|
|
31
|
+
user = WialonUser(
|
|
24
32
|
id=None,
|
|
25
33
|
session=session,
|
|
26
|
-
creator_id="
|
|
34
|
+
creator_id="27884511", # Admin user id
|
|
27
35
|
name="test_user",
|
|
28
36
|
password=generate_wialon_password(32)
|
|
29
37
|
)
|
|
30
|
-
print(f"{
|
|
38
|
+
print(f"{user.name = }") # user.name = "test_user"
|
|
31
39
|
|
|
32
|
-
|
|
40
|
+
-----------------------------------------------------------------------------------------------------------
|
|
41
|
+
3. Within the context manager, :py:meth:`~terminusgps.wialon.items.base.WialonBase.rename` can be executed.
|
|
42
|
+
-----------------------------------------------------------------------------------------------------------
|
|
33
43
|
|
|
34
44
|
.. code:: python
|
|
35
45
|
|
|
@@ -37,6 +47,7 @@ Let's also import :py:obj:`~terminusgps.wialon.utils.generate_wialon_password` s
|
|
|
37
47
|
...
|
|
38
48
|
|
|
39
49
|
unit.rename("super_test_user")
|
|
50
|
+
print(f"{user.name = }") # user.name = "super_test_user"
|
|
40
51
|
# Session is logged out after exiting scope
|
|
41
52
|
|
|
42
53
|
-----------------
|
|
@@ -64,14 +75,18 @@ Full code example
|
|
|
64
75
|
Create an account and migrate a unit into it
|
|
65
76
|
============================================
|
|
66
77
|
|
|
78
|
+
------------------------------------------------------------------------------------------------------------------------------------------------
|
|
67
79
|
1. Import :py:obj:`~terminusgps.wialon.session.WialonSession`, :py:mod:`~terminusgps.wialon.items`, and :py:mod:`~terminusgps.wialon.constants`.
|
|
80
|
+
------------------------------------------------------------------------------------------------------------------------------------------------
|
|
68
81
|
|
|
69
82
|
.. code:: python
|
|
70
83
|
|
|
71
84
|
from terminusgps.wialon.session import WialonSession
|
|
72
85
|
from terminusgps.wialon import items, constants
|
|
73
86
|
|
|
87
|
+
--------------------------
|
|
74
88
|
2. Create an account user.
|
|
89
|
+
--------------------------
|
|
75
90
|
|
|
76
91
|
.. code:: python
|
|
77
92
|
|
|
@@ -84,7 +99,9 @@ Create an account and migrate a unit into it
|
|
|
84
99
|
password="super_secure_password1!",
|
|
85
100
|
)
|
|
86
101
|
|
|
102
|
+
--------------------------------------------
|
|
87
103
|
3. Create a resource using the account user.
|
|
104
|
+
--------------------------------------------
|
|
88
105
|
|
|
89
106
|
.. code:: python
|
|
90
107
|
|
|
@@ -97,7 +114,9 @@ Create an account and migrate a unit into it
|
|
|
97
114
|
name="account_resource",
|
|
98
115
|
)
|
|
99
116
|
|
|
117
|
+
------------------------------------------------------------------
|
|
100
118
|
4. Retrieve a :py:obj:`~terminusgps.wialon.items.unit.WialonUnit`.
|
|
119
|
+
------------------------------------------------------------------
|
|
101
120
|
|
|
102
121
|
.. code:: python
|
|
103
122
|
|
|
@@ -105,7 +124,9 @@ Create an account and migrate a unit into it
|
|
|
105
124
|
...
|
|
106
125
|
unit = items.WialonUnit(id="12345678", session=session)
|
|
107
126
|
|
|
127
|
+
------------------------------------------------
|
|
108
128
|
5. Grant the account user migration permissions.
|
|
129
|
+
------------------------------------------------
|
|
109
130
|
|
|
110
131
|
.. code:: python
|
|
111
132
|
|
|
@@ -113,7 +134,9 @@ Create an account and migrate a unit into it
|
|
|
113
134
|
...
|
|
114
135
|
account_user.grant_access(unit, access_mask=constants.ACCESSMASK_UNIT_MIGRATION)
|
|
115
136
|
|
|
137
|
+
--------------------------------------------------------
|
|
116
138
|
6. Transform the resource into an account and enable it.
|
|
139
|
+
--------------------------------------------------------
|
|
117
140
|
|
|
118
141
|
.. code:: python
|
|
119
142
|
|
|
@@ -122,7 +145,9 @@ Create an account and migrate a unit into it
|
|
|
122
145
|
account_resource.create_account("terminusgps_ext_hist")
|
|
123
146
|
account_resource.enable()
|
|
124
147
|
|
|
148
|
+
-------------------------------------
|
|
125
149
|
7. Migrate the unit into the account.
|
|
150
|
+
-------------------------------------
|
|
126
151
|
|
|
127
152
|
.. code:: python
|
|
128
153
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "python-terminusgps"
|
|
3
|
-
version = "20.
|
|
3
|
+
version = "20.7.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" } ]
|
|
@@ -17,7 +17,6 @@ dependencies = [
|
|
|
17
17
|
"authorizenet>=1.1.5",
|
|
18
18
|
"boto3>=1.34.144",
|
|
19
19
|
"django>=5.1.5",
|
|
20
|
-
"lxml==4.9.4",
|
|
21
20
|
"python-wialon>=1.2.4",
|
|
22
21
|
"twilio>=9.4.5",
|
|
23
22
|
]
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/resource.py
RENAMED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
from urllib.parse import quote_plus
|
|
2
|
+
|
|
1
3
|
from terminusgps.wialon import flags
|
|
2
4
|
from terminusgps.wialon.items.base import WialonBase
|
|
3
5
|
|
|
4
6
|
|
|
5
7
|
class WialonResource(WialonBase):
|
|
6
|
-
def create(
|
|
8
|
+
def create(
|
|
9
|
+
self, creator_id: str | int, name: str, skip_creator_check: bool = False
|
|
10
|
+
) -> int | None:
|
|
7
11
|
"""
|
|
8
12
|
Creates a new Wialon resource.
|
|
9
13
|
|
|
@@ -11,6 +15,8 @@ class WialonResource(WialonBase):
|
|
|
11
15
|
:type creator_id: :py:obj:`int` | :py:obj:`str`
|
|
12
16
|
:param name: A name for the resource.
|
|
13
17
|
:type name: :py:obj:`str`
|
|
18
|
+
:param skip_creator_check: Bypass object creation restrictions while creating the resource.
|
|
19
|
+
:type skip_creator_check: :py:obj:`bool`
|
|
14
20
|
:raises ValueError: If ``creator_id`` is not a digit.
|
|
15
21
|
:raises WialonError: If something goes wrong with Wialon.
|
|
16
22
|
:returns: The Wialon id for the new resource, if it was created.
|
|
@@ -25,6 +31,7 @@ class WialonResource(WialonBase):
|
|
|
25
31
|
"creatorId": creator_id,
|
|
26
32
|
"name": name,
|
|
27
33
|
"dataFlags": flags.DATAFLAG_UNIT_BASE,
|
|
34
|
+
"skipCreatorCheck": int(skip_creator_check),
|
|
28
35
|
}
|
|
29
36
|
)
|
|
30
37
|
return int(response.get("item", {}).get("id")) if response.get("item") else None
|
|
@@ -272,3 +279,106 @@ class WialonResource(WialonBase):
|
|
|
272
279
|
"denyBalance": deny_balance_val,
|
|
273
280
|
}
|
|
274
281
|
)
|
|
282
|
+
|
|
283
|
+
def create_driver(
|
|
284
|
+
self,
|
|
285
|
+
name: str,
|
|
286
|
+
code: str = "",
|
|
287
|
+
desc: str = "",
|
|
288
|
+
phone: str = "",
|
|
289
|
+
mobile_auth_code: str = "",
|
|
290
|
+
image_checksum: str = "",
|
|
291
|
+
image_ratio: str = "",
|
|
292
|
+
custom_fields: dict[str, str] | None = None,
|
|
293
|
+
) -> None:
|
|
294
|
+
"""
|
|
295
|
+
Creates a driver for the resource.
|
|
296
|
+
|
|
297
|
+
:param name: A name for the new driver.
|
|
298
|
+
:type name: :py:obj:`str`
|
|
299
|
+
:param code: A unique code for the new driver.
|
|
300
|
+
:type code: :py:obj:`str`
|
|
301
|
+
:param desc: Description for the driver.
|
|
302
|
+
:type desc: :py:obj:`str`
|
|
303
|
+
:param phone: A phone number beginning in a country code. No spaces.
|
|
304
|
+
:type phone: :py:obj:`str`
|
|
305
|
+
:param mobile_auth_code: Authentication code for Wialon mobile app.
|
|
306
|
+
:type mobile_auth_code: :py:obj:`str`
|
|
307
|
+
:param image_checksum: Checksum for driver image.
|
|
308
|
+
:type image_checksum: :py:obj:`str`
|
|
309
|
+
:param image_ratio: Driver image aspect ratio.
|
|
310
|
+
:type image_ratio: :py:obj:`float` | :py:obj:`None`
|
|
311
|
+
:param custom_fields: Additional custom fields to add to the driver.
|
|
312
|
+
:type custom_fields: :py:obj:`dict` | :py:obj:`None`
|
|
313
|
+
:raises WialonError: If something goes wrong calling the Wialon API.
|
|
314
|
+
:returns: Nothing.
|
|
315
|
+
:rtype: :py:obj:`None`
|
|
316
|
+
|
|
317
|
+
"""
|
|
318
|
+
params = {
|
|
319
|
+
"itemId": self.id,
|
|
320
|
+
"id": 0,
|
|
321
|
+
"callMode": "create",
|
|
322
|
+
"ej": {"apps": []},
|
|
323
|
+
"c": code,
|
|
324
|
+
"ds": desc,
|
|
325
|
+
"n": name,
|
|
326
|
+
"f": 1,
|
|
327
|
+
"pwd": mobile_auth_code,
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
if phone:
|
|
331
|
+
params.update({"p": quote_plus(phone)})
|
|
332
|
+
if custom_fields:
|
|
333
|
+
params.update({"jp": custom_fields})
|
|
334
|
+
response = self.session.wialon_api.resource_update_driver(**params)
|
|
335
|
+
print(f"{response = }")
|
|
336
|
+
|
|
337
|
+
def create_passenger(
|
|
338
|
+
self,
|
|
339
|
+
name: str,
|
|
340
|
+
code: str,
|
|
341
|
+
phone: str = "",
|
|
342
|
+
timezone: int | None = None,
|
|
343
|
+
image_checksum: str = "",
|
|
344
|
+
image_ratio: float | None = None,
|
|
345
|
+
custom_fields: dict[str, str] | None = None,
|
|
346
|
+
) -> None:
|
|
347
|
+
"""
|
|
348
|
+
Creates a passenger/tag for the resource.
|
|
349
|
+
|
|
350
|
+
:param name: A name for the new passenger.
|
|
351
|
+
:type name: :py:obj:`str`
|
|
352
|
+
:param code: A unique code for the new passenger.
|
|
353
|
+
:type code: :py:obj:`str`
|
|
354
|
+
:param phone: A phone number beginning in a country code. No spaces.
|
|
355
|
+
:type phone: :py:obj:`str`
|
|
356
|
+
:param timezone: A timezone integer.
|
|
357
|
+
:type timezone: :py:obj:`int` | :py:obj:`None`
|
|
358
|
+
:param image_checksum: Checksum for passenger image.
|
|
359
|
+
:type image_checksum: :py:obj:`str`
|
|
360
|
+
:param image_ratio: Passenger image aspect ratio.
|
|
361
|
+
:type image_ratio: :py:obj:`float` | :py:obj:`None`
|
|
362
|
+
:param custom_fields: Additional custom fields to add to the passenger.
|
|
363
|
+
:type custom_fields: :py:obj:`dict` | :py:obj:`None`
|
|
364
|
+
:raises WialonError: If something goes wrong calling the Wialon API.
|
|
365
|
+
:returns: Nothing.
|
|
366
|
+
:rtype: :py:obj:`None`
|
|
367
|
+
|
|
368
|
+
"""
|
|
369
|
+
params = {
|
|
370
|
+
"itemId": self.id,
|
|
371
|
+
"id": 0,
|
|
372
|
+
"callMode": "create",
|
|
373
|
+
"c": code,
|
|
374
|
+
"ck": image_checksum,
|
|
375
|
+
"r": image_ratio,
|
|
376
|
+
"n": name,
|
|
377
|
+
}
|
|
378
|
+
if phone:
|
|
379
|
+
params.update({"p": quote_plus(phone)})
|
|
380
|
+
if timezone:
|
|
381
|
+
params.update({"tz": timezone})
|
|
382
|
+
if custom_fields:
|
|
383
|
+
params.update({"jp": custom_fields})
|
|
384
|
+
self.session.wialon_api.resource_update_tag(**params)
|
|
@@ -199,6 +199,7 @@ class WialonUnit(WialonBase):
|
|
|
199
199
|
return list(dict.fromkeys(phone_numbers)) # Removes duplicate phone numbers
|
|
200
200
|
|
|
201
201
|
def clean_phone_numbers(self, phones: list[str]) -> list[str]:
|
|
202
|
+
"""Takes a list of phone numbers and returns a list of clean phone numbers."""
|
|
202
203
|
cleaned_phones = []
|
|
203
204
|
for num in phones:
|
|
204
205
|
if "," in num:
|
|
@@ -12,7 +12,7 @@ wheels = [
|
|
|
12
12
|
|
|
13
13
|
[[package]]
|
|
14
14
|
name = "aiohttp"
|
|
15
|
-
version = "3.11.
|
|
15
|
+
version = "3.11.13"
|
|
16
16
|
source = { registry = "https://pypi.org/simple" }
|
|
17
17
|
dependencies = [
|
|
18
18
|
{ name = "aiohappyeyeballs" },
|
|
@@ -23,40 +23,40 @@ dependencies = [
|
|
|
23
23
|
{ name = "propcache" },
|
|
24
24
|
{ name = "yarl" },
|
|
25
25
|
]
|
|
26
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
27
|
-
wheels = [
|
|
28
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
29
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
30
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
31
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
32
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
33
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
34
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
35
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
36
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
37
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
38
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
39
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
40
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
41
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
42
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
43
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
44
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
45
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
46
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
47
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
48
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
49
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
50
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
51
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
52
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
53
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
54
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
55
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
56
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
57
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
58
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
59
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
26
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b3/3f/c4a667d184c69667b8f16e0704127efc5f1e60577df429382b4d95fd381e/aiohttp-3.11.13.tar.gz", hash = "sha256:8ce789231404ca8fff7f693cdce398abf6d90fd5dae2b1847477196c243b1fbb", size = 7674284 }
|
|
27
|
+
wheels = [
|
|
28
|
+
{ url = "https://files.pythonhosted.org/packages/9a/a9/6657664a55f78db8767e396cc9723782ed3311eb57704b0a5dacfa731916/aiohttp-3.11.13-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2eabb269dc3852537d57589b36d7f7362e57d1ece308842ef44d9830d2dc3c90", size = 705054 },
|
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/3b/06/f7df1fe062d16422f70af5065b76264f40b382605cf7477fa70553a9c9c1/aiohttp-3.11.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b77ee42addbb1c36d35aca55e8cc6d0958f8419e458bb70888d8c69a4ca833d", size = 464440 },
|
|
30
|
+
{ url = "https://files.pythonhosted.org/packages/22/3a/8773ea866735754004d9f79e501fe988bdd56cfac7fdecbc8de17fc093eb/aiohttp-3.11.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55789e93c5ed71832e7fac868167276beadf9877b85697020c46e9a75471f55f", size = 456394 },
|
|
31
|
+
{ url = "https://files.pythonhosted.org/packages/7f/61/8e2f2af2327e8e475a2b0890f15ef0bbfd117e321cce1e1ed210df81bbac/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c929f9a7249a11e4aa5c157091cfad7f49cc6b13f4eecf9b747104befd9f56f2", size = 1682752 },
|
|
32
|
+
{ url = "https://files.pythonhosted.org/packages/24/ed/84fce816bc8da39aa3f6c1196fe26e47065fea882b1a67a808282029c079/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d33851d85537bbf0f6291ddc97926a754c8f041af759e0aa0230fe939168852b", size = 1737375 },
|
|
33
|
+
{ url = "https://files.pythonhosted.org/packages/d9/de/35a5ba9e3d21ebfda1ebbe66f6cc5cbb4d3ff9bd6a03e5e8a788954f8f27/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9229d8613bd8401182868fe95688f7581673e1c18ff78855671a4b8284f47bcb", size = 1793660 },
|
|
34
|
+
{ url = "https://files.pythonhosted.org/packages/ff/fe/0f650a8c7c72c8a07edf8ab164786f936668acd71786dd5885fc4b1ca563/aiohttp-3.11.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669dd33f028e54fe4c96576f406ebb242ba534dd3a981ce009961bf49960f117", size = 1692233 },
|
|
35
|
+
{ url = "https://files.pythonhosted.org/packages/a8/20/185378b3483f968c6303aafe1e33b0da0d902db40731b2b2b2680a631131/aiohttp-3.11.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c1b20a1ace54af7db1f95af85da530fe97407d9063b7aaf9ce6a32f44730778", size = 1619708 },
|
|
36
|
+
{ url = "https://files.pythonhosted.org/packages/a4/f9/d9c181750980b17e1e13e522d7e82a8d08d3d28a2249f99207ef5d8d738f/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5724cc77f4e648362ebbb49bdecb9e2b86d9b172c68a295263fa072e679ee69d", size = 1641802 },
|
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/50/c7/1cb46b72b1788710343b6e59eaab9642bd2422f2d87ede18b1996e0aed8f/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:aa36c35e94ecdb478246dd60db12aba57cfcd0abcad43c927a8876f25734d496", size = 1684678 },
|
|
38
|
+
{ url = "https://files.pythonhosted.org/packages/71/87/89b979391de840c5d7c34e78e1148cc731b8aafa84b6a51d02f44b4c66e2/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9b5b37c863ad5b0892cc7a4ceb1e435e5e6acd3f2f8d3e11fa56f08d3c67b820", size = 1646921 },
|
|
39
|
+
{ url = "https://files.pythonhosted.org/packages/a7/db/a463700ac85b72f8cf68093e988538faaf4e865e3150aa165cf80ee29d6e/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e06cf4852ce8c4442a59bae5a3ea01162b8fcb49ab438d8548b8dc79375dad8a", size = 1702493 },
|
|
40
|
+
{ url = "https://files.pythonhosted.org/packages/b8/32/1084e65da3adfb08c7e1b3e94f3e4ded8bd707dee265a412bc377b7cd000/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5194143927e494616e335d074e77a5dac7cd353a04755330c9adc984ac5a628e", size = 1735004 },
|
|
41
|
+
{ url = "https://files.pythonhosted.org/packages/a0/bb/a634cbdd97ce5d05c2054a9a35bfc32792d7e4f69d600ad7e820571d095b/aiohttp-3.11.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:afcb6b275c2d2ba5d8418bf30a9654fa978b4f819c2e8db6311b3525c86fe637", size = 1694964 },
|
|
42
|
+
{ url = "https://files.pythonhosted.org/packages/fd/cf/7d29db4e5c28ec316e5d2ac9ac9df0e2e278e9ea910e5c4205b9b64c2c42/aiohttp-3.11.13-cp312-cp312-win32.whl", hash = "sha256:7104d5b3943c6351d1ad7027d90bdd0ea002903e9f610735ac99df3b81f102ee", size = 411746 },
|
|
43
|
+
{ url = "https://files.pythonhosted.org/packages/65/a9/13e69ad4fd62104ebd94617f9f2be58231b50bb1e6bac114f024303ac23b/aiohttp-3.11.13-cp312-cp312-win_amd64.whl", hash = "sha256:47dc018b1b220c48089b5b9382fbab94db35bef2fa192995be22cbad3c5730c8", size = 438078 },
|
|
44
|
+
{ url = "https://files.pythonhosted.org/packages/87/dc/7d58d33cec693f1ddf407d4ab975445f5cb507af95600f137b81683a18d8/aiohttp-3.11.13-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9862d077b9ffa015dbe3ce6c081bdf35135948cb89116e26667dd183550833d1", size = 698372 },
|
|
45
|
+
{ url = "https://files.pythonhosted.org/packages/84/e7/5d88514c9e24fbc8dd6117350a8ec4a9314f4adae6e89fe32e3e639b0c37/aiohttp-3.11.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fbfef0666ae9e07abfa2c54c212ac18a1f63e13e0760a769f70b5717742f3ece", size = 461057 },
|
|
46
|
+
{ url = "https://files.pythonhosted.org/packages/96/1a/8143c48a929fa00c6324f85660cb0f47a55ed9385f0c1b72d4b8043acf8e/aiohttp-3.11.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:93a1f7d857c4fcf7cabb1178058182c789b30d85de379e04f64c15b7e88d66fb", size = 453340 },
|
|
47
|
+
{ url = "https://files.pythonhosted.org/packages/2f/1c/b8010e4d65c5860d62681088e5376f3c0a940c5e3ca8989cae36ce8c3ea8/aiohttp-3.11.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba40b7ae0f81c7029583a338853f6607b6d83a341a3dcde8bed1ea58a3af1df9", size = 1665561 },
|
|
48
|
+
{ url = "https://files.pythonhosted.org/packages/19/ed/a68c3ab2f92fdc17dfc2096117d1cfaa7f7bdded2a57bacbf767b104165b/aiohttp-3.11.13-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5b95787335c483cd5f29577f42bbe027a412c5431f2f80a749c80d040f7ca9f", size = 1718335 },
|
|
49
|
+
{ url = "https://files.pythonhosted.org/packages/27/4f/3a0b6160ce663b8ebdb65d1eedff60900cd7108838c914d25952fe2b909f/aiohttp-3.11.13-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7d474c5c1f0b9405c1565fafdc4429fa7d986ccbec7ce55bc6a330f36409cad", size = 1775522 },
|
|
50
|
+
{ url = "https://files.pythonhosted.org/packages/0b/58/9da09291e19696c452e7224c1ce8c6d23a291fe8cd5c6b247b51bcda07db/aiohttp-3.11.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e83fb1991e9d8982b3b36aea1e7ad27ea0ce18c14d054c7a404d68b0319eebb", size = 1677566 },
|
|
51
|
+
{ url = "https://files.pythonhosted.org/packages/3d/18/6184f2bf8bbe397acbbbaa449937d61c20a6b85765f48e5eddc6d84957fe/aiohttp-3.11.13-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4586a68730bd2f2b04a83e83f79d271d8ed13763f64b75920f18a3a677b9a7f0", size = 1603590 },
|
|
52
|
+
{ url = "https://files.pythonhosted.org/packages/04/94/91e0d1ca0793012ccd927e835540aa38cca98bdce2389256ab813ebd64a3/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fe4eb0e7f50cdb99b26250d9328faef30b1175a5dbcfd6d0578d18456bac567", size = 1618688 },
|
|
53
|
+
{ url = "https://files.pythonhosted.org/packages/71/85/d13c3ea2e48a10b43668305d4903838834c3d4112e5229177fbcc23a56cd/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2a8a6bc19818ac3e5596310ace5aa50d918e1ebdcc204dc96e2f4d505d51740c", size = 1658053 },
|
|
54
|
+
{ url = "https://files.pythonhosted.org/packages/12/6a/3242a35100de23c1e8d9e05e8605e10f34268dee91b00d9d1e278c58eb80/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f27eec42f6c3c1df09cfc1f6786308f8b525b8efaaf6d6bd76c1f52c6511f6a", size = 1616917 },
|
|
55
|
+
{ url = "https://files.pythonhosted.org/packages/f5/b3/3f99b6f0a9a79590a7ba5655dbde8408c685aa462247378c977603464d0a/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2a4a13dfbb23977a51853b419141cd0a9b9573ab8d3a1455c6e63561387b52ff", size = 1685872 },
|
|
56
|
+
{ url = "https://files.pythonhosted.org/packages/8a/2e/99672181751f280a85e24fcb9a2c2469e8b1a0de1746b7b5c45d1eb9a999/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:02876bf2f69b062584965507b07bc06903c2dc93c57a554b64e012d636952654", size = 1715719 },
|
|
57
|
+
{ url = "https://files.pythonhosted.org/packages/7a/cd/68030356eb9a7d57b3e2823c8a852709d437abb0fbff41a61ebc351b7625/aiohttp-3.11.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b992778d95b60a21c4d8d4a5f15aaab2bd3c3e16466a72d7f9bfd86e8cea0d4b", size = 1673166 },
|
|
58
|
+
{ url = "https://files.pythonhosted.org/packages/03/61/425397a9a2839c609d09fdb53d940472f316a2dbeaa77a35b2628dae6284/aiohttp-3.11.13-cp313-cp313-win32.whl", hash = "sha256:507ab05d90586dacb4f26a001c3abf912eb719d05635cbfad930bdbeb469b36c", size = 410615 },
|
|
59
|
+
{ url = "https://files.pythonhosted.org/packages/9c/54/ebb815bc0fe057d8e7a11c086c479e972e827082f39aeebc6019dd4f0862/aiohttp-3.11.13-cp313-cp313-win_amd64.whl", hash = "sha256:5ceb81a4db2decdfa087381b5fc5847aa448244f973e5da232610304e199e7b2", size = 436452 },
|
|
60
60
|
]
|
|
61
61
|
|
|
62
62
|
[[package]]
|
|
@@ -168,30 +168,30 @@ wheels = [
|
|
|
168
168
|
|
|
169
169
|
[[package]]
|
|
170
170
|
name = "boto3"
|
|
171
|
-
version = "1.36.
|
|
171
|
+
version = "1.36.26"
|
|
172
172
|
source = { registry = "https://pypi.org/simple" }
|
|
173
173
|
dependencies = [
|
|
174
174
|
{ name = "botocore" },
|
|
175
175
|
{ name = "jmespath" },
|
|
176
176
|
{ name = "s3transfer" },
|
|
177
177
|
]
|
|
178
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
178
|
+
sdist = { url = "https://files.pythonhosted.org/packages/79/af/2082fde2cbd81f8b60fd46e3ac07a0f841abfdb9818b818d560e42b5c444/boto3-1.36.26.tar.gz", hash = "sha256:523b69457eee55ac15aa707c0e768b2a45ca1521f95b2442931090633ec72458", size = 111027 }
|
|
179
179
|
wheels = [
|
|
180
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
180
|
+
{ url = "https://files.pythonhosted.org/packages/b1/a7/9081049e432f5130c6bd4d86f4db7a7729f812ebceda59baff69a06b19a5/boto3-1.36.26-py3-none-any.whl", hash = "sha256:f67d014a7c5a3cd540606d64d7cb9eec3600cf42acab1ac0518df9751ae115e2", size = 139178 },
|
|
181
181
|
]
|
|
182
182
|
|
|
183
183
|
[[package]]
|
|
184
184
|
name = "botocore"
|
|
185
|
-
version = "1.36.
|
|
185
|
+
version = "1.36.26"
|
|
186
186
|
source = { registry = "https://pypi.org/simple" }
|
|
187
187
|
dependencies = [
|
|
188
188
|
{ name = "jmespath" },
|
|
189
189
|
{ name = "python-dateutil" },
|
|
190
190
|
{ name = "urllib3" },
|
|
191
191
|
]
|
|
192
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
192
|
+
sdist = { url = "https://files.pythonhosted.org/packages/69/db/caa8778cf98ecbe0ad0efd7fbf673e2d036373386582e15dffff80bf16e1/botocore-1.36.26.tar.gz", hash = "sha256:4a63bcef7ecf6146fd3a61dc4f9b33b7473b49bdaf1770e9aaca6eee0c9eab62", size = 13574958 }
|
|
193
193
|
wheels = [
|
|
194
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
194
|
+
{ url = "https://files.pythonhosted.org/packages/dd/0c/a3eeca35b22ac8f441d412881582a5f3b8665de0269baf9fdeb8e86d7f1c/botocore-1.36.26-py3-none-any.whl", hash = "sha256:4e3f19913887a58502e71ef8d696fe7eaa54de7813ff73390cd5883f837dfa6e", size = 13360675 },
|
|
195
195
|
]
|
|
196
196
|
|
|
197
197
|
[[package]]
|
|
@@ -556,14 +556,13 @@ wheels = [
|
|
|
556
556
|
|
|
557
557
|
[[package]]
|
|
558
558
|
name = "python-terminusgps"
|
|
559
|
-
version = "20.
|
|
559
|
+
version = "20.7.0"
|
|
560
560
|
source = { editable = "." }
|
|
561
561
|
dependencies = [
|
|
562
562
|
{ name = "argparse" },
|
|
563
563
|
{ name = "authorizenet" },
|
|
564
564
|
{ name = "boto3" },
|
|
565
565
|
{ name = "django" },
|
|
566
|
-
{ name = "lxml" },
|
|
567
566
|
{ name = "python-wialon" },
|
|
568
567
|
{ name = "twilio" },
|
|
569
568
|
]
|
|
@@ -581,7 +580,6 @@ requires-dist = [
|
|
|
581
580
|
{ name = "authorizenet", specifier = ">=1.1.5" },
|
|
582
581
|
{ name = "boto3", specifier = ">=1.34.144" },
|
|
583
582
|
{ name = "django", specifier = ">=5.1.5" },
|
|
584
|
-
{ name = "lxml", specifier = "==4.9.4" },
|
|
585
583
|
{ name = "python-wialon", specifier = ">=1.2.4" },
|
|
586
584
|
{ name = "twilio", specifier = ">=9.4.5" },
|
|
587
585
|
]
|
|
@@ -632,11 +630,11 @@ wheels = [
|
|
|
632
630
|
|
|
633
631
|
[[package]]
|
|
634
632
|
name = "roman-numerals-py"
|
|
635
|
-
version = "3.
|
|
633
|
+
version = "3.1.0"
|
|
636
634
|
source = { registry = "https://pypi.org/simple" }
|
|
637
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
635
|
+
sdist = { url = "https://files.pythonhosted.org/packages/30/76/48fd56d17c5bdbdf65609abbc67288728a98ed4c02919428d4f52d23b24b/roman_numerals_py-3.1.0.tar.gz", hash = "sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d", size = 9017 }
|
|
638
636
|
wheels = [
|
|
639
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
637
|
+
{ url = "https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl", hash = "sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c", size = 7742 },
|
|
640
638
|
]
|
|
641
639
|
|
|
642
640
|
[[package]]
|
|
@@ -715,7 +713,7 @@ wheels = [
|
|
|
715
713
|
|
|
716
714
|
[[package]]
|
|
717
715
|
name = "sphinx"
|
|
718
|
-
version = "8.2.
|
|
716
|
+
version = "8.2.1"
|
|
719
717
|
source = { registry = "https://pypi.org/simple" }
|
|
720
718
|
dependencies = [
|
|
721
719
|
{ name = "alabaster" },
|
|
@@ -736,9 +734,9 @@ dependencies = [
|
|
|
736
734
|
{ name = "sphinxcontrib-qthelp" },
|
|
737
735
|
{ name = "sphinxcontrib-serializinghtml" },
|
|
738
736
|
]
|
|
739
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
737
|
+
sdist = { url = "https://files.pythonhosted.org/packages/99/4b/95bdb36eaee30698f2d244d52e1b9e58642af56525d4b02fcd0f7312c27c/sphinx-8.2.1.tar.gz", hash = "sha256:e4b932951b9c18b039f73b72e4e63afe967d90408700ec222b981ac24647c01e", size = 8321376 }
|
|
740
738
|
wheels = [
|
|
741
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
739
|
+
{ url = "https://files.pythonhosted.org/packages/cf/aa/282768cff0039b227a923cb65686539bb606e448c594d4fdee4d2c7765a1/sphinx-8.2.1-py3-none-any.whl", hash = "sha256:b5d2bb3cdf6207fcacde9f92085d2b97667b05b9c346eaec426ca4be8af505e9", size = 3589415 },
|
|
742
740
|
]
|
|
743
741
|
|
|
744
742
|
[[package]]
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
from django.db import models
|
|
2
|
-
|
|
3
|
-
from terminusgps.wialon.items.base import WialonBase
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class WialonGeofence(WialonBase):
|
|
7
|
-
def __new__(cls) -> "WialonGeofence":
|
|
8
|
-
raise NotImplementedError()
|
|
9
|
-
|
|
10
|
-
class WialonGeofenceShape(models.IntegerChoices):
|
|
11
|
-
LINE = 1
|
|
12
|
-
POLYGON = 2
|
|
13
|
-
CIRCLE = 3
|
|
14
|
-
|
|
15
|
-
class WialonGeofenceColor(models.IntegerChoices):
|
|
16
|
-
RED = int("ff0000", 16)
|
|
17
|
-
ORANGE = int("ff7b00", 16)
|
|
18
|
-
YELLOW = int("fffb00", 16)
|
|
19
|
-
GREEN = int("20ff00", 16)
|
|
20
|
-
BLUE = int("0090ff", 16)
|
|
21
|
-
PURPLE = int("7000ff", 16)
|
|
22
|
-
WHITE = int("f3f3f3", 16)
|
|
23
|
-
BLACK = int("030303", 16)
|
|
24
|
-
|
|
25
|
-
def create(
|
|
26
|
-
self,
|
|
27
|
-
resource_id: str | int,
|
|
28
|
-
name: str,
|
|
29
|
-
xpos: float,
|
|
30
|
-
ypos: float,
|
|
31
|
-
desc: str | None = None,
|
|
32
|
-
shape: int = WialonGeofenceShape.CIRCLE,
|
|
33
|
-
width: int = 100,
|
|
34
|
-
flags: int = 0x04,
|
|
35
|
-
color: int = WialonGeofenceColor.GREEN,
|
|
36
|
-
text_color: int = WialonGeofenceColor.BLACK,
|
|
37
|
-
text_size: int = 12,
|
|
38
|
-
min_zoom: int = 2,
|
|
39
|
-
max_zoom: int = 19,
|
|
40
|
-
) -> int | None:
|
|
41
|
-
response = self.session.wialon_api.resource_update_zone(
|
|
42
|
-
**{
|
|
43
|
-
"itemId": resource_id,
|
|
44
|
-
"id": 0,
|
|
45
|
-
"callMode": "create",
|
|
46
|
-
"n": name,
|
|
47
|
-
"d": desc if desc else name,
|
|
48
|
-
"t": shape,
|
|
49
|
-
"w": width,
|
|
50
|
-
"f": flags,
|
|
51
|
-
"c": color,
|
|
52
|
-
"tc": text_color,
|
|
53
|
-
"ts": text_size,
|
|
54
|
-
"min": min_zoom,
|
|
55
|
-
"max": max_zoom,
|
|
56
|
-
"p": [{"x": xpos, "y": ypos, "r": width}],
|
|
57
|
-
}
|
|
58
|
-
)
|
|
59
|
-
if response:
|
|
60
|
-
return int(response[0])
|
|
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-20.6.1 → python_terminusgps-20.7.0}/docs/source/authorizenet/profiles.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-20.6.1/docs/source/wialon → python_terminusgps-20.7.0/docs/source}/settings.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
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/profiles/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/authorizenet/subscriptions.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/retranslator.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_terminusgps-20.6.1 → python_terminusgps-20.7.0}/terminusgps/wialon/items/unit_group.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|