python-terminusgps 20.3.0__tar.gz → 20.4.1__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.

Files changed (50) hide show
  1. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/PKG-INFO +1 -1
  2. python_terminusgps-20.4.1/docs/Makefile +20 -0
  3. python_terminusgps-20.4.1/docs/make.bat +35 -0
  4. python_terminusgps-20.4.1/docs/source/conf.py +32 -0
  5. python_terminusgps-20.4.1/docs/source/index.rst +18 -0
  6. python_terminusgps-20.4.1/docs/source/wialon/constants.rst +6 -0
  7. python_terminusgps-20.4.1/docs/source/wialon/flags.rst +6 -0
  8. python_terminusgps-20.4.1/docs/source/wialon/glossary.rst +2 -0
  9. python_terminusgps-20.4.1/docs/source/wialon/index.rst +18 -0
  10. python_terminusgps-20.4.1/docs/source/wialon/utils.rst +36 -0
  11. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/pyproject.toml +1 -1
  12. python_terminusgps-20.4.1/terminusgps/__init__.py +0 -0
  13. python_terminusgps-20.4.1/terminusgps/authorizenet/__init__.py +0 -0
  14. python_terminusgps-20.4.1/terminusgps/aws/__init__.py +0 -0
  15. python_terminusgps-20.4.1/terminusgps/wialon/__init__.py +0 -0
  16. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/unit.py +16 -1
  17. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/uv.lock +51 -41
  18. python_terminusgps-20.3.0/terminusgps/__init__.py +0 -20
  19. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/.gitignore +0 -0
  20. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/COPYING +0 -0
  21. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/README.md +0 -0
  22. /python_terminusgps-20.3.0/terminusgps/authorizenet/__init__.py → /python_terminusgps-20.4.1/docs/source/authorizenet/index.rst +0 -0
  23. /python_terminusgps-20.3.0/terminusgps/aws/__init__.py → /python_terminusgps-20.4.1/docs/source/aws/index.rst +0 -0
  24. /python_terminusgps-20.3.0/terminusgps/wialon/__init__.py → /python_terminusgps-20.4.1/docs/source/twilio/index.rst +0 -0
  25. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/auth.py +0 -0
  26. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/profiles/__init__.py +0 -0
  27. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/profiles/addresses.py +0 -0
  28. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/profiles/base.py +0 -0
  29. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/profiles/customers.py +0 -0
  30. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/profiles/payments.py +0 -0
  31. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/authorizenet/subscriptions.py +0 -0
  32. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/aws/secrets.py +0 -0
  33. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/aws/ses.py +0 -0
  34. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/settings.py +0 -0
  35. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/twilio/__init__.py +0 -0
  36. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/twilio/caller.py +0 -0
  37. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/constants.py +0 -0
  38. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/flags.py +0 -0
  39. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/__init__.py +0 -0
  40. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/base.py +0 -0
  41. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/geofence.py +0 -0
  42. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/notification.py +0 -0
  43. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/resource.py +0 -0
  44. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/retranslator.py +0 -0
  45. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/route.py +0 -0
  46. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/unit_group.py +0 -0
  47. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/items/user.py +0 -0
  48. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/logger.py +0 -0
  49. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/session.py +0 -0
  50. {python_terminusgps-20.3.0 → python_terminusgps-20.4.1}/terminusgps/wialon/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 20.3.0
3
+ Version: 20.4.1
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
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ %SPHINXBUILD% >NUL 2>NUL
14
+ if errorlevel 9009 (
15
+ echo.
16
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
+ echo.installed, then set the SPHINXBUILD environment variable to point
18
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
+ echo.may add the Sphinx directory to PATH.
20
+ echo.
21
+ echo.If you don't have Sphinx installed, grab it from
22
+ echo.https://www.sphinx-doc.org/
23
+ exit /b 1
24
+ )
25
+
26
+ if "%1" == "" goto help
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,32 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ # -- Project information -----------------------------------------------------
7
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
8
+
9
+ project = "python-terminusgps"
10
+ copyright = "2025, Terminus GPS, LLC"
11
+ author = "Terminus GPS, LLC"
12
+ release = "20.4.0"
13
+
14
+ # -- General configuration ---------------------------------------------------
15
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
16
+
17
+ extensions = [
18
+ "sphinx.ext.autodoc",
19
+ "sphinx.ext.autosummary",
20
+ "sphinx.ext.intersphinx",
21
+ "sphinx.ext.viewcode",
22
+ ]
23
+
24
+ templates_path = ["_templates"]
25
+ exclude_patterns = []
26
+
27
+
28
+ # -- Options for HTML output -------------------------------------------------
29
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
30
+
31
+ html_theme = "sphinx_rtd_theme"
32
+ html_static_path = ["_static"]
@@ -0,0 +1,18 @@
1
+ .. python-terminusgps documentation master file, created by
2
+ sphinx-quickstart on Wed Feb 19 10:39:57 2025.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ python-terminusgps documentation
7
+ ================================
8
+
9
+ Add your content using ``reStructuredText`` syntax. See the
10
+ `reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html>`_
11
+ documentation for details.
12
+
13
+
14
+ .. toctree::
15
+ :maxdepth: 2
16
+ :caption: Contents:
17
+
18
+ wialon/index.rst
@@ -0,0 +1,6 @@
1
+ Constants
2
+ =========
3
+
4
+ .. autosummary::
5
+
6
+ terminusgps.wialon.constants
@@ -0,0 +1,6 @@
1
+ Flags
2
+ =====
3
+
4
+ .. autosummary::
5
+
6
+ terminusgps.wialon.flags
@@ -0,0 +1,2 @@
1
+ Glossary
2
+ ========
@@ -0,0 +1,18 @@
1
+ .. python-terminusgps documentation master file, created by
2
+ sphinx-quickstart on Wed Feb 19 10:39:57 2025.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ Wialon API
7
+ ==========
8
+
9
+ :py:mod:`terminusgps` offers the :py:mod:`wialon` package; a Python library that makes it simple to operate within the Wialon API.
10
+
11
+ .. toctree::
12
+ :maxdepth: 2
13
+ :caption: Contents:
14
+
15
+ constants.rst
16
+ flags.rst
17
+ glossary.rst
18
+ utils.rst
@@ -0,0 +1,36 @@
1
+ Utilities
2
+ =========
3
+
4
+ =========
5
+ Functions
6
+ =========
7
+
8
+ .. currentmodule:: terminusgps.wialon.utils
9
+
10
+ .. autosummary::
11
+
12
+ get_hw_type_id
13
+ get_id_from_iccid
14
+ get_wialon_cls
15
+ get_vin_info
16
+ is_unique
17
+ generate_wialon_password
18
+
19
+ =====
20
+ Usage
21
+ =====
22
+
23
+ .. code:: python
24
+
25
+ from terminusgps.wialon.session import WialonSession
26
+ from terminusgps.wialon.utils import get_id_from_iccid, generate_wialon_password
27
+
28
+ # Generate random Wialon compliant passwords
29
+ password_0 = generate_wialon_password(16)
30
+ password_1 = generate_wialon_password(32)
31
+ password_2 = generate_wialon_password(64)
32
+
33
+ # Retrieve unit id from IMEI #
34
+ with WialonSession() as session:
35
+ unit_id = get_id_from_iccid("869084062183235", session=session)
36
+ print(f"{unit_id = }") # unit_id = 28006231
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-terminusgps"
3
- version = "20.3.0"
3
+ version = "20.4.1"
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" } ]
File without changes
File without changes
@@ -39,10 +39,21 @@ class WialonUnit(WialonBase):
39
39
  def populate(self) -> None:
40
40
  super().populate()
41
41
  response = self.session.wialon_api.core_search_item(
42
- **{"id": self.id, "flags": flags.DATAFLAG_UNIT_ADVANCED_PROPERTIES}
42
+ **{
43
+ "id": self.id,
44
+ "flags": sum(
45
+ [flags.DATAFLAG_UNIT_ADVANCED_PROPERTIES, flags.DATAFLAG_UNIT_IMAGE]
46
+ ),
47
+ }
43
48
  ).get("item", {})
44
49
  self._imei_number = response.get("uid")
45
50
  self._active = response.get("act", False)
51
+ self._image_uri = response.get("uri")
52
+
53
+ def get_position(self) -> dict:
54
+ return self.session.wialon_api.core_search_item(
55
+ **{"id": self.id, "flags": flags.DATAFLAG_UNIT_POSITION}
56
+ )
46
57
 
47
58
  @property
48
59
  def available_commands(self) -> dict:
@@ -50,6 +61,10 @@ class WialonUnit(WialonBase):
50
61
  **{"deviceTypeId": 0, "unitId": self.id}
51
62
  )
52
63
 
64
+ @property
65
+ def image_uri(self) -> str:
66
+ return self._image_uri
67
+
53
68
  @property
54
69
  def imei_number(self) -> int | None:
55
70
  if self._imei_number:
@@ -141,30 +141,30 @@ wheels = [
141
141
 
142
142
  [[package]]
143
143
  name = "boto3"
144
- version = "1.36.17"
144
+ version = "1.36.23"
145
145
  source = { registry = "https://pypi.org/simple" }
146
146
  dependencies = [
147
147
  { name = "botocore" },
148
148
  { name = "jmespath" },
149
149
  { name = "s3transfer" },
150
150
  ]
151
- sdist = { url = "https://files.pythonhosted.org/packages/10/21/906f0d797ab4678fadccf7d0dbc897fa3deca1c8e8e30f7932920345bf0a/boto3-1.36.17.tar.gz", hash = "sha256:5ecae20e780a3ce9afb3add532b61c466a8cb8960618e4fa565b3883064c1346", size = 110976 }
151
+ sdist = { url = "https://files.pythonhosted.org/packages/05/54/a91d274f50bbe8fbd16ecea8bfd60249d0dc1ca50874e3a06119c6e5723a/boto3-1.36.23.tar.gz", hash = "sha256:006800604c34382873521b20890b758eea7109d699696ece932131259d0a4658", size = 111094 }
152
152
  wheels = [
153
- { url = "https://files.pythonhosted.org/packages/f0/2d/b599c7cdeb774aa227ea602c7a3216127318add8f887b59352b899cc7576/boto3-1.36.17-py3-none-any.whl", hash = "sha256:59bcf0c4b04d9cc36f8b418ad17ab3c4a99a21a175d2fad7096aa21cbe84630b", size = 139178 },
153
+ { url = "https://files.pythonhosted.org/packages/e8/b5/2217a8ebb59bbc5f28dc10d3184b1f7e238f1929d211e69298421f912411/boto3-1.36.23-py3-none-any.whl", hash = "sha256:d59642672b1f35f55f47b317693241ce53333816f47c9e72fcc8fd0e9adc6a87", size = 139179 },
154
154
  ]
155
155
 
156
156
  [[package]]
157
157
  name = "botocore"
158
- version = "1.36.17"
158
+ version = "1.36.23"
159
159
  source = { registry = "https://pypi.org/simple" }
160
160
  dependencies = [
161
161
  { name = "jmespath" },
162
162
  { name = "python-dateutil" },
163
163
  { name = "urllib3" },
164
164
  ]
165
- sdist = { url = "https://files.pythonhosted.org/packages/f8/42/76ed22d63f91eb8b7bf0a68f653b75a5a9909cac0616cd53797d6a8073be/botocore-1.36.17.tar.gz", hash = "sha256:cec13e0a7ce78e71aad0b397581b4e81824c7981ef4c261d2e296d200c399b09", size = 13514828 }
165
+ sdist = { url = "https://files.pythonhosted.org/packages/25/d4/e93bcf4f825faa25c2ff27b653cd9e976226df527445f8c414198020c967/botocore-1.36.23.tar.gz", hash = "sha256:9feaa2d876f487e718a5fd80a35fa401042b518c0c75117d3e1ea39a567439e7", size = 13571101 }
166
166
  wheels = [
167
- { url = "https://files.pythonhosted.org/packages/fa/f1/dac56ef12a14fac9dd16dc20d99644d84d03b886ade1d9d21fb6b0ad05e9/botocore-1.36.17-py3-none-any.whl", hash = "sha256:069858b2fd693548035d7fd53a774e37e4260fea64e0ac9b8a3aee904f9321df", size = 13341585 },
167
+ { url = "https://files.pythonhosted.org/packages/7c/93/a566604998182dd354aa6bab3c5b0393077a2ce4b97e18713d94c362da06/botocore-1.36.23-py3-none-any.whl", hash = "sha256:886730e79495a2e153842725ebdf85185c8277cdf255b3b5879cd097ddc7fcc3", size = 13355279 },
168
168
  ]
169
169
 
170
170
  [[package]]
@@ -504,7 +504,7 @@ wheels = [
504
504
 
505
505
  [[package]]
506
506
  name = "python-terminusgps"
507
- version = "20.3.0"
507
+ version = "20.4.1"
508
508
  source = { editable = "." }
509
509
  dependencies = [
510
510
  { name = "argparse" },
@@ -574,6 +574,15 @@ wheels = [
574
574
  { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 },
575
575
  ]
576
576
 
577
+ [[package]]
578
+ name = "roman-numerals-py"
579
+ version = "3.0.0"
580
+ source = { registry = "https://pypi.org/simple" }
581
+ sdist = { url = "https://files.pythonhosted.org/packages/9e/78/9491ab144c9cb2d97aa74d6f632bd6f4be67957de03f945a23a67415d859/roman_numerals_py-3.0.0.tar.gz", hash = "sha256:91199c4373658c03d87d9fe004f4a5120a20f6cb192be745c2377cce274ef41c", size = 8970 }
582
+ wheels = [
583
+ { url = "https://files.pythonhosted.org/packages/27/d0/a3a2fed015e95b9e81619182adc472540f9786183febfaef8b7c5e909418/roman_numerals_py-3.0.0-py3-none-any.whl", hash = "sha256:a1421ce66b3eab7e8735065458de3fa5c4a46263d50f9f4ac8f0e5e7701dd125", size = 4416 },
584
+ ]
585
+
577
586
  [[package]]
578
587
  name = "s3transfer"
579
588
  version = "0.11.2"
@@ -588,37 +597,37 @@ wheels = [
588
597
 
589
598
  [[package]]
590
599
  name = "simplejson"
591
- version = "3.19.3"
592
- source = { registry = "https://pypi.org/simple" }
593
- sdist = { url = "https://files.pythonhosted.org/packages/3d/29/085111f19717f865eceaf0d4397bf3e76b08d60428b076b64e2a1903706d/simplejson-3.19.3.tar.gz", hash = "sha256:8e086896c36210ab6050f2f9f095a5f1e03c83fa0e7f296d6cba425411364680", size = 85237 }
594
- wheels = [
595
- { url = "https://files.pythonhosted.org/packages/20/15/513fea93fafbdd4993eacfcb762965b2ff3d29e618c029e2956174d68c4b/simplejson-3.19.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:66a0399e21c2112acacfebf3d832ebe2884f823b1c7e6d1363f2944f1db31a99", size = 92921 },
596
- { url = "https://files.pythonhosted.org/packages/a4/4f/998a907ae1a6c104dc0ee48aa248c2478490152808d34d8e07af57f396c3/simplejson-3.19.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6ef9383c5e05f445be60f1735c1816163c874c0b1ede8bb4390aff2ced34f333", size = 75311 },
597
- { url = "https://files.pythonhosted.org/packages/db/44/acd6122201e927451869d45952b9ab1d3025cdb5e61548d286d08fbccc08/simplejson-3.19.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:42e5acf80d4d971238d4df97811286a044d720693092b20a56d5e56b7dcc5d09", size = 74964 },
598
- { url = "https://files.pythonhosted.org/packages/27/ca/d0a1e8f16e1bbdc0b8c6d88166f45f565ed7285f53928cfef3b6ce78f14d/simplejson-3.19.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0b0efc7279d768db7c74d3d07f0b5c81280d16ae3fb14e9081dc903e8360771", size = 150106 },
599
- { url = "https://files.pythonhosted.org/packages/63/59/0554b78cf26c98e2b9cae3f44723bd72c2394e2afec1a14eedc6211f7187/simplejson-3.19.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0552eb06e7234da892e1d02365cd2b7b2b1f8233aa5aabdb2981587b7cc92ea0", size = 158347 },
600
- { url = "https://files.pythonhosted.org/packages/b2/fe/9f30890352e431e8508cc569912d3322147d3e7e4f321e48c0adfcb4c97d/simplejson-3.19.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf6a3b9a7d7191471b464fe38f684df10eb491ec9ea454003edb45a011ab187", size = 148456 },
601
- { url = "https://files.pythonhosted.org/packages/37/e3/663a09542ee021d4131162f7a164cb2e7f04ef48433a67591738afbf12ea/simplejson-3.19.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7017329ca8d4dca94ad5e59f496e5fc77630aecfc39df381ffc1d37fb6b25832", size = 152190 },
602
- { url = "https://files.pythonhosted.org/packages/31/20/4e0c4d35e10ff6465003bec304316d822a559a1c38c66ef6892ca199c207/simplejson-3.19.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:67a20641afebf4cfbcff50061f07daad1eace6e7b31d7622b6fa2c40d43900ba", size = 149846 },
603
- { url = "https://files.pythonhosted.org/packages/08/7a/46e2e072cac3987cbb05946f25167f0ad2fe536748e7405953fd6661a486/simplejson-3.19.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:dd6a7dabcc4c32daf601bc45e01b79175dde4b52548becea4f9545b0a4428169", size = 151714 },
604
- { url = "https://files.pythonhosted.org/packages/7f/7d/dbeeac10eb61d5d8858d0bb51121a21050d281dc83af4c557f86da28746c/simplejson-3.19.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:08f9b443a94e72dd02c87098c96886d35790e79e46b24e67accafbf13b73d43b", size = 158777 },
605
- { url = "https://files.pythonhosted.org/packages/fc/8f/a98bdbb799c6a4a884b5823db31785a96ba895b4b0f4d8ac345d6fe98bbf/simplejson-3.19.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa97278ae6614346b5ca41a45a911f37a3261b57dbe4a00602048652c862c28b", size = 154230 },
606
- { url = "https://files.pythonhosted.org/packages/b1/db/852eebceb85f969ae40e06babed1a93d3bacb536f187d7a80ff5823a5979/simplejson-3.19.3-cp312-cp312-win32.whl", hash = "sha256:ef28c3b328d29b5e2756903aed888960bc5df39b4c2eab157ae212f70ed5bf74", size = 74002 },
607
- { url = "https://files.pythonhosted.org/packages/fe/68/9f0e5df0651cb79ef83cba1378765a00ee8038e6201cc82b8e7178a7778e/simplejson-3.19.3-cp312-cp312-win_amd64.whl", hash = "sha256:1e662336db50ad665777e6548b5076329a94a0c3d4a0472971c588b3ef27de3a", size = 75596 },
608
- { url = "https://files.pythonhosted.org/packages/93/3a/5896821ed543899fcb9c4256c7e71bb110048047349a00f42bc8b8fb379f/simplejson-3.19.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0959e6cb62e3994b5a40e31047ff97ef5c4138875fae31659bead691bed55896", size = 92931 },
609
- { url = "https://files.pythonhosted.org/packages/39/15/5d33d269440912ee40d856db0c8be2b91aba7a219690ab01f86cb0edd590/simplejson-3.19.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7a7bfad839c624e139a4863007233a3f194e7c51551081f9789cba52e4da5167", size = 75318 },
610
- { url = "https://files.pythonhosted.org/packages/2a/8d/2e7483a2bf7ec53acf7e012bafbda79d7b34f90471dda8e424544a59d484/simplejson-3.19.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afab2f7f2486a866ff04d6d905e9386ca6a231379181a3838abce1f32fbdcc37", size = 74971 },
611
- { url = "https://files.pythonhosted.org/packages/4d/9d/9bdf34437c8834a7cf7246f85e9d5122e30579f512c10a0c2560e994294f/simplejson-3.19.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00313681015ac498e1736b304446ee6d1c72c5b287cd196996dad84369998f7", size = 150112 },
612
- { url = "https://files.pythonhosted.org/packages/a7/e2/1f2ae2d89eaf85f6163c82150180aae5eaa18085cfaf892f8a57d4c51cbd/simplejson-3.19.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d936ae682d5b878af9d9eb4d8bb1fdd5e41275c8eb59ceddb0aeed857bb264a2", size = 158354 },
613
- { url = "https://files.pythonhosted.org/packages/60/83/26f610adf234c8492b3f30501e12f2271e67790f946c6898fe0c58aefe99/simplejson-3.19.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c6657485393f2e9b8177c77a7634f13ebe70d5e6de150aae1677d91516ce6b", size = 148455 },
614
- { url = "https://files.pythonhosted.org/packages/b5/4b/109af50006af77133653c55b5b91b4bd2d579ff8254ce11216c0b75f911b/simplejson-3.19.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a6a750d3c7461b1c47cfc6bba8d9e57a455e7c5f80057d2a82f738040dd1129", size = 152191 },
615
- { url = "https://files.pythonhosted.org/packages/75/dc/108872a8825cbd99ae6f4334e0490ff1580367baf12198bcaf988f6820ba/simplejson-3.19.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ea7a4a998c87c5674a27089e022110a1a08a7753f21af3baf09efe9915c23c3c", size = 149954 },
616
- { url = "https://files.pythonhosted.org/packages/eb/be/deec1d947a5d0472276ab4a4d1a9378dc5ee27f3dc9e54d4f62ffbad7a08/simplejson-3.19.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6300680d83a399be2b8f3b0ef7ef90b35d2a29fe6e9c21438097e0938bbc1564", size = 151812 },
617
- { url = "https://files.pythonhosted.org/packages/e9/58/4ee130702d36b1551ef66e7587eefe56651f3669255bf748cd71691e2434/simplejson-3.19.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ab69f811a660c362651ae395eba8ce84f84c944cea0df5718ea0ba9d1e4e7252", size = 158880 },
618
- { url = "https://files.pythonhosted.org/packages/0f/e1/59cc6a371b60f89e3498d9f4c8109f6b7359094d453f5fe80b2677b777b0/simplejson-3.19.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:256e09d0f94d9c3d177d9e95fd27a68c875a4baa2046633df387b86b652f5747", size = 154344 },
619
- { url = "https://files.pythonhosted.org/packages/79/45/1b36044670016f5cb25ebd92497427d2d1711ecb454d00f71eb9a00b77cc/simplejson-3.19.3-cp313-cp313-win32.whl", hash = "sha256:2c78293470313aefa9cfc5e3f75ca0635721fb016fb1121c1c5b0cb8cc74712a", size = 74002 },
620
- { url = "https://files.pythonhosted.org/packages/e2/58/b06226e6b0612f2b1fa13d5273551da259f894566b1eef32249ddfdcce44/simplejson-3.19.3-cp313-cp313-win_amd64.whl", hash = "sha256:3bbcdc438dc1683b35f7a8dc100960c721f922f9ede8127f63bed7dfded4c64c", size = 75599 },
621
- { url = "https://files.pythonhosted.org/packages/0d/e7/f9fafbd4f39793a20cc52e77bbd766f7384312526d402c382928dc7667f6/simplejson-3.19.3-py3-none-any.whl", hash = "sha256:49cc4c7b940d43bd12bf87ec63f28cbc4964fc4e12c031cc8cd01650f43eb94e", size = 57004 },
600
+ version = "3.20.1"
601
+ source = { registry = "https://pypi.org/simple" }
602
+ sdist = { url = "https://files.pythonhosted.org/packages/af/92/51b417685abd96b31308b61b9acce7ec50d8e1de8fbc39a7fd4962c60689/simplejson-3.20.1.tar.gz", hash = "sha256:e64139b4ec4f1f24c142ff7dcafe55a22b811a74d86d66560c8815687143037d", size = 85591 }
603
+ wheels = [
604
+ { url = "https://files.pythonhosted.org/packages/8d/eb/34c16a1ac9ba265d024dc977ad84e1659d931c0a700967c3e59a98ed7514/simplejson-3.20.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f31c4a3a7ab18467ee73a27f3e59158255d1520f3aad74315edde7a940f1be23", size = 93100 },
605
+ { url = "https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6", size = 75464 },
606
+ { url = "https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832", size = 75112 },
607
+ { url = "https://files.pythonhosted.org/packages/fe/36/1f3609a2792f06cd4b71030485f78e91eb09cfd57bebf3116bf2980a8bac/simplejson-3.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:000602141d0bddfcff60ea6a6e97d5e10c9db6b17fd2d6c66199fa481b6214bb", size = 150182 },
608
+ { url = "https://files.pythonhosted.org/packages/2f/b0/053fbda38b8b602a77a4f7829def1b4f316cd8deb5440a6d3ee90790d2a4/simplejson-3.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af8377a8af78226e82e3a4349efdde59ffa421ae88be67e18cef915e4023a595", size = 158363 },
609
+ { url = "https://files.pythonhosted.org/packages/d1/4b/2eb84ae867539a80822e92f9be4a7200dffba609275faf99b24141839110/simplejson-3.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15c7de4c88ab2fbcb8781a3b982ef883696736134e20b1210bca43fb42ff1acf", size = 148415 },
610
+ { url = "https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49", size = 152213 },
611
+ { url = "https://files.pythonhosted.org/packages/50/12/143f447bf6a827ee9472693768dc1a5eb96154f8feb140a88ce6973a3cfa/simplejson-3.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fc0f523ce923e7f38eb67804bc80e0a028c76d7868500aa3f59225574b5d0453", size = 150048 },
612
+ { url = "https://files.pythonhosted.org/packages/5e/ea/dd9b3e8e8ed710a66f24a22c16a907c9b539b6f5f45fd8586bd5c231444e/simplejson-3.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76461ec929282dde4a08061071a47281ad939d0202dc4e63cdd135844e162fbc", size = 151668 },
613
+ { url = "https://files.pythonhosted.org/packages/99/af/ee52a8045426a0c5b89d755a5a70cc821815ef3c333b56fbcad33c4435c0/simplejson-3.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19c2da8c043607bde4d4ef3a6b633e668a7d2e3d56f40a476a74c5ea71949f", size = 158840 },
614
+ { url = "https://files.pythonhosted.org/packages/68/db/ab32869acea6b5de7d75fa0dac07a112ded795d41eaa7e66c7813b17be95/simplejson-3.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2578bedaedf6294415197b267d4ef678fea336dd78ee2a6d2f4b028e9d07be3", size = 154212 },
615
+ { url = "https://files.pythonhosted.org/packages/fa/7a/e3132d454977d75a3bf9a6d541d730f76462ebf42a96fea2621498166f41/simplejson-3.20.1-cp312-cp312-win32.whl", hash = "sha256:339f407373325a36b7fd744b688ba5bae0666b5d340ec6d98aebc3014bf3d8ea", size = 74101 },
616
+ { url = "https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17", size = 75736 },
617
+ { url = "https://files.pythonhosted.org/packages/c4/03/0f453a27877cb5a5fff16a975925f4119102cc8552f52536b9a98ef0431e/simplejson-3.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:71e849e7ceb2178344998cbe5ade101f1b329460243c79c27fbfc51c0447a7c3", size = 93109 },
618
+ { url = "https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29", size = 75475 },
619
+ { url = "https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb", size = 75112 },
620
+ { url = "https://files.pythonhosted.org/packages/45/86/ea9835abb646755140e2d482edc9bc1e91997ed19a59fd77ae4c6a0facea/simplejson-3.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1336ba7bcb722ad487cd265701ff0583c0bb6de638364ca947bb84ecc0015d1", size = 150245 },
621
+ { url = "https://files.pythonhosted.org/packages/12/b4/53084809faede45da829fe571c65fbda8479d2a5b9c633f46b74124d56f5/simplejson-3.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e975aac6a5acd8b510eba58d5591e10a03e3d16c1cf8a8624ca177491f7230f0", size = 158465 },
622
+ { url = "https://files.pythonhosted.org/packages/a9/7d/d56579468d1660b3841e1f21c14490d103e33cf911886b22652d6e9683ec/simplejson-3.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a6dd11ee282937ad749da6f3b8d87952ad585b26e5edfa10da3ae2536c73078", size = 148514 },
623
+ { url = "https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6", size = 152262 },
624
+ { url = "https://files.pythonhosted.org/packages/32/84/f0fdb3625292d945c2bd13a814584603aebdb38cfbe5fe9be6b46fe598c4/simplejson-3.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f5aee2a4cb6b146bd17333ac623610f069f34e8f31d2f4f0c1a2186e50c594f0", size = 150164 },
625
+ { url = "https://files.pythonhosted.org/packages/95/51/6d625247224f01eaaeabace9aec75ac5603a42f8ebcce02c486fbda8b428/simplejson-3.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:652d8eecbb9a3b6461b21ec7cf11fd0acbab144e45e600c817ecf18e4580b99e", size = 151795 },
626
+ { url = "https://files.pythonhosted.org/packages/7f/d9/bb921df6b35be8412f519e58e86d1060fddf3ad401b783e4862e0a74c4c1/simplejson-3.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8c09948f1a486a89251ee3a67c9f8c969b379f6ffff1a6064b41fea3bce0a112", size = 159027 },
627
+ { url = "https://files.pythonhosted.org/packages/03/c5/5950605e4ad023a6621cf4c931b29fd3d2a9c1f36be937230bfc83d7271d/simplejson-3.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cbbd7b215ad4fc6f058b5dd4c26ee5c59f72e031dfda3ac183d7968a99e4ca3a", size = 154380 },
628
+ { url = "https://files.pythonhosted.org/packages/66/ad/b74149557c5ec1e4e4d55758bda426f5d2ec0123cd01a53ae63b8de51fa3/simplejson-3.20.1-cp313-cp313-win32.whl", hash = "sha256:ae81e482476eaa088ef9d0120ae5345de924f23962c0c1e20abbdff597631f87", size = 74102 },
629
+ { url = "https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc", size = 75736 },
630
+ { url = "https://files.pythonhosted.org/packages/4b/30/00f02a0a921556dd5a6db1ef2926a1bc7a8bbbfb1c49cfed68a275b8ab2b/simplejson-3.20.1-py3-none-any.whl", hash = "sha256:8a6c1bbac39fa4a79f83cbf1df6ccd8ff7069582a9fd8db1e52cea073bc2c697", size = 57121 },
622
631
  ]
623
632
 
624
633
  [[package]]
@@ -641,7 +650,7 @@ wheels = [
641
650
 
642
651
  [[package]]
643
652
  name = "sphinx"
644
- version = "8.1.3"
653
+ version = "8.2.0"
645
654
  source = { registry = "https://pypi.org/simple" }
646
655
  dependencies = [
647
656
  { name = "alabaster" },
@@ -653,6 +662,7 @@ dependencies = [
653
662
  { name = "packaging" },
654
663
  { name = "pygments" },
655
664
  { name = "requests" },
665
+ { name = "roman-numerals-py" },
656
666
  { name = "snowballstemmer" },
657
667
  { name = "sphinxcontrib-applehelp" },
658
668
  { name = "sphinxcontrib-devhelp" },
@@ -661,9 +671,9 @@ dependencies = [
661
671
  { name = "sphinxcontrib-qthelp" },
662
672
  { name = "sphinxcontrib-serializinghtml" },
663
673
  ]
664
- sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611 }
674
+ sdist = { url = "https://files.pythonhosted.org/packages/81/46/08fe30fc7a6b0e8ff1f502e44133d3a1bd9453d7ab884c2ac7f0ef280920/sphinx-8.2.0.tar.gz", hash = "sha256:5b0067853d6e97f3fa87563e3404ebd008fce03525b55b25da90706764da6215", size = 8321764 }
665
675
  wheels = [
666
- { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125 },
676
+ { url = "https://files.pythonhosted.org/packages/ef/4d/bbe0250199b9dfa8b25a1949ff13d81e7a6f3bfde37fe373a881bd78a37a/sphinx-8.2.0-py3-none-any.whl", hash = "sha256:3c0a40ff71ace28b316bde7387d93b9249a3688c202181519689b66d5d0aed53", size = 3589193 },
667
677
  ]
668
678
 
669
679
  [[package]]
@@ -1,20 +0,0 @@
1
- from django.conf import settings, ImproperlyConfigured
2
-
3
- if not hasattr(settings, "DEBUG"):
4
- raise ImproperlyConfigured("'DEBUG' setting is required.")
5
- if not hasattr(settings, "MERCHANT_AUTH_LOGIN_ID"):
6
- raise ImproperlyConfigured("'MERCHANT_AUTH_LOGIN_ID' setting is required.")
7
- if not hasattr(settings, "MERCHANT_AUTH_TRANSACTION_KEY"):
8
- raise ImproperlyConfigured("'MERCHANT_AUTH_TRANSACTION_KEY' setting is required.")
9
- if not hasattr(settings, "TWILIO_FROM_NUMBER"):
10
- raise ImproperlyConfigured("'TWILIO_FROM_NUMBER' setting is required.")
11
- if not hasattr(settings, "TWILIO_MESSAGING_SID"):
12
- raise ImproperlyConfigured("'TWILIO_MESSAGING_SID' setting is required.")
13
- if not hasattr(settings, "TWILIO_SID"):
14
- raise ImproperlyConfigured("'TWILIO_SID' setting is required.")
15
- if not hasattr(settings, "TWILIO_TOKEN"):
16
- raise ImproperlyConfigured("'TWILIO_TOKEN' setting is required.")
17
- if not hasattr(settings, "WIALON_TOKEN"):
18
- raise ImproperlyConfigured("'WIALON_TOKEN' setting is required.")
19
- if not hasattr(settings, "WIALON_ADMIN_ID"):
20
- raise ImproperlyConfigured("'WIALON_ADMIN_ID' setting is required.")