python-terminusgps 25.1.0__tar.gz → 26.0.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.

Files changed (231) hide show
  1. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/PKG-INFO +1 -1
  2. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/pyproject.toml +1 -1
  3. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/twilio/validators.py +6 -0
  4. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/base.py +30 -38
  5. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/unit.py +2 -2
  6. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/session.py +4 -5
  7. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/utils.py +30 -27
  8. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/uv.lock +60 -60
  9. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/.gitignore +0 -0
  10. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/COPYING +0 -0
  11. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/README.md +0 -0
  12. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/Makefile +0 -0
  13. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/coverage/c.txt +0 -0
  14. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/coverage/python.txt +0 -0
  15. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/coverage/undoc.pickle +0 -0
  16. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/authorizenet/auth.doctree +0 -0
  17. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/authorizenet/index.doctree +0 -0
  18. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/authorizenet/profiles.doctree +0 -0
  19. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/authorizenet/utils.doctree +0 -0
  20. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/aws/index.doctree +0 -0
  21. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/aws/secrets.doctree +0 -0
  22. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/environment.pickle +0 -0
  23. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/index.doctree +0 -0
  24. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/settings.doctree +0 -0
  25. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/twilio/caller.doctree +0 -0
  26. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/twilio/index.doctree +0 -0
  27. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/twilio/settings.doctree +0 -0
  28. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/constants.doctree +0 -0
  29. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/errors.doctree +0 -0
  30. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/examples.doctree +0 -0
  31. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/flags.doctree +0 -0
  32. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/index.doctree +0 -0
  33. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/items.doctree +0 -0
  34. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/session.doctree +0 -0
  35. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/settings.doctree +0 -0
  36. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/doctrees/wialon/utils.doctree +0 -0
  37. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/index.html +0 -0
  38. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/auth.html +0 -0
  39. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/errors.html +0 -0
  40. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/addresses.html +0 -0
  41. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/base.html +0 -0
  42. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/customers.html +0 -0
  43. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/profiles/payments.html +0 -0
  44. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/authorizenet/utils.html +0 -0
  45. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/aws/secrets.html +0 -0
  46. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/twilio/caller.html +0 -0
  47. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/base.html +0 -0
  48. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/geofence.html +0 -0
  49. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/notification.html +0 -0
  50. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/resource.html +0 -0
  51. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/retranslator.html +0 -0
  52. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/route.html +0 -0
  53. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/unit.html +0 -0
  54. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/unit_group.html +0 -0
  55. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/items/user.html +0 -0
  56. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/session.html +0 -0
  57. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/terminusgps/wialon/utils.html +0 -0
  58. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_modules/wialon/api.html +0 -0
  59. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/authorizenet/auth.rst.txt +0 -0
  60. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/authorizenet/index.rst.txt +0 -0
  61. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/authorizenet/profiles.rst.txt +0 -0
  62. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/authorizenet/utils.rst.txt +0 -0
  63. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/aws/index.rst.txt +0 -0
  64. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/aws/secrets.rst.txt +0 -0
  65. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/index.rst.txt +0 -0
  66. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/settings.rst.txt +0 -0
  67. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/twilio/caller.rst.txt +0 -0
  68. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/twilio/index.rst.txt +0 -0
  69. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/twilio/settings.rst.txt +0 -0
  70. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/constants.rst.txt +0 -0
  71. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/errors.rst.txt +0 -0
  72. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/examples.rst.txt +0 -0
  73. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/flags.rst.txt +0 -0
  74. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/index.rst.txt +0 -0
  75. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/items.rst.txt +0 -0
  76. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/session.rst.txt +0 -0
  77. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/settings.rst.txt +0 -0
  78. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_sources/wialon/utils.rst.txt +0 -0
  79. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/0fc70aa4dfe4d16d7073.woff +0 -0
  80. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/583e3f428bf2362b546d.woff +0 -0
  81. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/5be6ec379613f10aea3f.woff +0 -0
  82. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/76c1862325ea6f70eeff.woff2 +0 -0
  83. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/83710c128240451d95af.woff +0 -0
  84. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  85. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/a63d39a1c104a2b3e87e.woff2 +0 -0
  86. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/autoclasstoc.css +0 -0
  87. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/awesome-docsearch.css +0 -0
  88. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/awesome-docsearch.js +0 -0
  89. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/awesome-sphinx-design.css +0 -0
  90. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/awesome-sphinx-design.js +0 -0
  91. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/b659956119f91f2342bc.woff2 +0 -0
  92. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/basic.css +0 -0
  93. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/bb50084be2b43ba7b98c.woff2 +0 -0
  94. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/ce1e40901d7a0d88d483.woff2 +0 -0
  95. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/badge_only.css +0 -0
  96. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  97. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  98. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  99. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  100. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  101. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.svg +0 -0
  102. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  103. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  104. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  105. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  106. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  107. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-bold.woff +0 -0
  108. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  109. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  110. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  111. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-normal.woff +0 -0
  112. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  113. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/css/theme.css +0 -0
  114. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/d04352f240062b100fba.woff2 +0 -0
  115. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/doctools.js +0 -0
  116. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/documentation_options.js +0 -0
  117. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/f1cdf5c21de970ee0592.woff +0 -0
  118. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fd994e8d90d9cab651b0.woff +0 -0
  119. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/file.png +0 -0
  120. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  121. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  122. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  123. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  124. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  125. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  126. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  127. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  128. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  129. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  130. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  131. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  132. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  133. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  134. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  135. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  136. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  137. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  138. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  139. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  140. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  141. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  142. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  143. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  144. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/jquery.js +0 -0
  145. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/js/badge_only.js +0 -0
  146. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/js/theme.js +0 -0
  147. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/js/versions.js +0 -0
  148. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/language_data.js +0 -0
  149. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/minus.png +0 -0
  150. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/plus.png +0 -0
  151. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/pygments.css +0 -0
  152. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/searchtools.js +0 -0
  153. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/sphinx_highlight.js +0 -0
  154. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/theme.css +0 -0
  155. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/theme.js +0 -0
  156. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/_static/theme.js.LICENSE.txt +0 -0
  157. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/authorizenet/auth.html +0 -0
  158. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/authorizenet/index.html +0 -0
  159. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/authorizenet/profiles.html +0 -0
  160. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/authorizenet/utils.html +0 -0
  161. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/aws/index.html +0 -0
  162. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/aws/secrets.html +0 -0
  163. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/genindex.html +0 -0
  164. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/index.html +0 -0
  165. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/objects.inv +0 -0
  166. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/py-modindex.html +0 -0
  167. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/search.html +0 -0
  168. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/searchindex.js +0 -0
  169. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/settings.html +0 -0
  170. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/twilio/caller.html +0 -0
  171. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/twilio/index.html +0 -0
  172. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/twilio/settings.html +0 -0
  173. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/constants.html +0 -0
  174. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/errors.html +0 -0
  175. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/examples.html +0 -0
  176. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/flags.html +0 -0
  177. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/index.html +0 -0
  178. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/items.html +0 -0
  179. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/session.html +0 -0
  180. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/settings.html +0 -0
  181. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/html/wialon/utils.html +0 -0
  182. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/linkcheck/output.json +0 -0
  183. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/build/linkcheck/output.txt +0 -0
  184. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/make.bat +0 -0
  185. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/authorizenet/auth.rst +0 -0
  186. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/authorizenet/index.rst +0 -0
  187. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/authorizenet/profiles.rst +0 -0
  188. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/authorizenet/utils.rst +0 -0
  189. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/aws/index.rst +0 -0
  190. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/aws/secrets.rst +0 -0
  191. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/conf.py +0 -0
  192. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/index.rst +0 -0
  193. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/settings.rst +0 -0
  194. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/twilio/caller.rst +0 -0
  195. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/twilio/index.rst +0 -0
  196. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/constants.rst +0 -0
  197. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/errors.rst +0 -0
  198. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/examples.rst +0 -0
  199. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/flags.rst +0 -0
  200. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/index.rst +0 -0
  201. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/items.rst +0 -0
  202. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/session.rst +0 -0
  203. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/docs/source/wialon/utils.rst +0 -0
  204. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/__init__.py +0 -0
  205. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/__init__.py +0 -0
  206. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/auth.py +0 -0
  207. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/errors.py +0 -0
  208. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/profiles/__init__.py +0 -0
  209. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/profiles/addresses.py +0 -0
  210. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/profiles/base.py +0 -0
  211. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/profiles/customers.py +0 -0
  212. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/profiles/payments.py +0 -0
  213. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/subscriptions/__init__.py +0 -0
  214. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/subscriptions/subscriptions.py +0 -0
  215. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/authorizenet/utils.py +0 -0
  216. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/aws/__init__.py +0 -0
  217. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/aws/secrets.py +0 -0
  218. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/aws/ses.py +0 -0
  219. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/settings.py +0 -0
  220. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/twilio/__init__.py +0 -0
  221. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/twilio/caller.py +0 -0
  222. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/__init__.py +0 -0
  223. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/constants.py +0 -0
  224. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/flags.py +0 -0
  225. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/__init__.py +0 -0
  226. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/resource.py +0 -0
  227. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/retranslator.py +0 -0
  228. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/route.py +0 -0
  229. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/unit_group.py +0 -0
  230. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/items/user.py +0 -0
  231. {python_terminusgps-25.1.0 → python_terminusgps-26.0.0}/terminusgps/wialon/logger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-terminusgps
3
- Version: 25.1.0
3
+ Version: 26.0.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-terminusgps"
3
- version = "25.1.0"
3
+ version = "26.0.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" } ]
@@ -11,6 +11,12 @@ def validate_phone_number(value: str) -> None:
11
11
  code="invalid",
12
12
  params={"value": value},
13
13
  )
14
+ if not value[1:].isdigit():
15
+ raise ValidationError(
16
+ _("Phone number must be '+' followed by a digit, got '%(value)s'"),
17
+ code="invalid",
18
+ params={"value": value},
19
+ )
14
20
  if len(value) < min_length:
15
21
  raise ValidationError(
16
22
  _("Phone number cannot be less than %(min)s characters, got %(len)s."),
@@ -128,78 +128,71 @@ class WialonBase:
128
128
  }
129
129
  )
130
130
 
131
- def add_cfield(self, field: tuple[str, str]) -> None:
131
+ def add_cfield(self, key: str, value: str) -> None:
132
132
  """
133
133
  Adds a custom field to the Wialon object.
134
134
 
135
- :param field: A tuple containing the name of the field and the value of the field.
136
- :type field: :py:obj:`tuple`
135
+ :param key: A key (name) for the custom field.
136
+ :type key: :py:obj:`str`
137
+ :param value: A value for the custom field.
138
+ :type value: :py:obj:`str`
137
139
  :returns: Nothing.
138
140
  :rtype: :py:obj:`None`
139
141
 
140
142
  """
141
143
 
142
144
  self.session.wialon_api.item_update_custom_field(
143
- **{
144
- "itemId": self.id,
145
- "id": 0,
146
- "callMode": "create",
147
- "n": field[0],
148
- "v": field[1],
149
- }
145
+ **{"itemId": self.id, "id": 0, "callMode": "create", "n": key, "v": value}
150
146
  )
151
147
 
152
- def update_cfield(self, field_id: int, field: tuple[str, str]) -> None:
148
+ def update_cfield(self, id: int, key: str, value: str) -> None:
153
149
  """
154
150
  Updates a custom field by id.
155
151
 
156
- :param field_id: The admin field id.
157
- :type field_id: :py:obj:`int`
158
- :param field: A tuple containing the name of the field and the value of the field.
159
- :type field: :py:obj:`tuple`
152
+ :param id: The admin field id.
153
+ :type id: :py:obj:`int`
154
+ :param field: A key (name) for the custom field.
155
+ :type field: :py:obj:`str`
156
+ :param field: A value for the custom field.
157
+ :type field: :py:obj:`str`
160
158
  :returns: Nothing.
161
159
  :rtype: :py:obj:`None`
162
160
 
163
161
  """
164
-
165
162
  self.session.wialon_api.item_update_custom_field(
166
- **{
167
- "itemId": self.id,
168
- "id": field_id,
169
- "callMode": "update",
170
- "n": field[0],
171
- "v": field[1],
172
- }
163
+ **{"itemId": self.id, "id": id, "callMode": "update", "n": key, "v": value}
173
164
  )
174
165
 
175
- def add_cproperty(self, property: tuple[str, str]) -> None:
166
+ def add_cproperty(self, key: str, value: str) -> None:
176
167
  """
177
168
  Adds a custom property to the Wialon object.
178
169
 
179
- :param property: A tuple containing the name of the property and the value of the property.
180
- :type property: :py:obj:`tuple`
170
+ :param key: A key (name) for the custom property.
171
+ :type key: :py:obj:`str`
172
+ :param value: A value for the custom property.
173
+ :type value: :py:obj:`str`
181
174
  :returns: Nothing.
182
175
  :rtype: :py:obj:`None`
183
176
 
184
177
  """
185
-
186
178
  self.session.wialon_api.item_update_custom_property(
187
- **{"itemId": self.id, "name": property[0], "value": property[1]}
179
+ **{"itemId": self.id, "name": key, "value": value}
188
180
  )
189
181
 
190
- def add_profile_field(self, field: tuple[str, str]) -> None:
182
+ def add_profile_field(self, key: str, value: str) -> None:
191
183
  """
192
184
  Adds a profile field to the Wialon object.
193
185
 
194
- :param field: A tuple containing the name of the field and the value of the field.
195
- :type field: :py:obj:`tuple`
186
+ :param key: A key (name) for the profile field.
187
+ :type key: :py:obj:`str`
188
+ :param value: A value for the profile field.
189
+ :type value: :py:obj:`str`
196
190
  :returns: Nothing.
197
191
  :rtype: :py:obj:`None`
198
192
 
199
193
  """
200
-
201
194
  self.session.wialon_api.item_update_profile_field(
202
- **{"itemId": self.id, "n": field[0], "v": field[1]}
195
+ **{"itemId": self.id, "n": key, "v": value}
203
196
  )
204
197
 
205
198
  def delete(self) -> None:
@@ -211,12 +204,11 @@ class WialonBase:
211
204
  :rtype: :py:obj:`None`
212
205
 
213
206
  """
214
-
215
207
  self.session.wialon_api.item_delete_item(**{"itemId": self.id})
216
208
 
217
209
  @property
218
- def cfields(self) -> dict:
219
- """Custom fields associated with the Wialon object."""
210
+ def cfields(self) -> dict[str, str]:
211
+ """Custom fields for the Wialon object."""
220
212
  response = self.session.wialon_api.core_search_item(
221
213
  **{"id": self.id, "flags": flags.DATAFLAG_UNIT_CUSTOM_FIELDS}
222
214
  )
@@ -224,8 +216,8 @@ class WialonBase:
224
216
  return {field["n"]: field["v"] for field in fields.values()} if fields else {}
225
217
 
226
218
  @property
227
- def afields(self) -> dict:
228
- """Admin fields associated with the Wialon object."""
219
+ def afields(self) -> dict[str, str]:
220
+ """Admin fields for the Wialon object."""
229
221
  response = self.session.wialon_api.core_search_item(
230
222
  **{"id": self.id, "flags": flags.DATAFLAG_UNIT_ADMIN_FIELDS}
231
223
  )
@@ -48,7 +48,7 @@ class WialonUnit(WialonBase):
48
48
  ),
49
49
  }
50
50
  )
51
- if response is not None:
51
+ if response:
52
52
  item = response.get("item", {})
53
53
  self._imei_number = item.get("uid")
54
54
  self._active = item.get("act", False)
@@ -194,7 +194,7 @@ class WialonUnit(WialonBase):
194
194
  """
195
195
  Retrieves all phone numbers assigned to the unit.
196
196
 
197
- This includes any attached drivers, custom/admin fields, or otherwise assigned phone numbers.
197
+ This includes any attached drivers, custom/admin fields or otherwise assigned phone numbers.
198
198
 
199
199
  :raises WialonError: If something goes wrong with Wialon.
200
200
  :returns: A list of phone numbers.
@@ -3,10 +3,9 @@ import datetime
3
3
  import logging
4
4
  import typing
5
5
 
6
+ import wialon.api
6
7
  from django.conf import settings
7
8
  from django.utils import timezone
8
- from wialon.api import Wialon as WialonBase
9
- from wialon.api import WialonError
10
9
 
11
10
  from terminusgps.wialon.logger import WialonLogger
12
11
 
@@ -21,7 +20,7 @@ class WialonAPICall:
21
20
  error: Exception | None = None
22
21
 
23
22
 
24
- class Wialon(WialonBase):
23
+ class Wialon(wialon.api.Wialon):
25
24
  def __init__(self, log_level: int = logging.INFO, *args, **kwargs) -> None:
26
25
  super().__init__(*args, **kwargs)
27
26
  self.call_history: list[WialonAPICall] = []
@@ -48,7 +47,7 @@ class Wialon(WialonBase):
48
47
  call_record.result = result
49
48
  self.logger.debug(f"Executed '{action_name}' successfully.")
50
49
  return result
51
- except WialonError as e:
50
+ except wialon.api.WialonError as e:
52
51
  call_record.error = e
53
52
  self.logger.warning(f"Failed to execute '{action_name}': '{e}'")
54
53
  return
@@ -275,7 +274,7 @@ class WialonSession:
275
274
  self._set_login_response(response)
276
275
  self.logger.debug(f"Logged into Wialon API session '{response.get('eid')}'")
277
276
  return response.get("eid")
278
- except (WialonError, AssertionError) as e:
277
+ except (wialon.api.WialonError, AssertionError) as e:
279
278
  self.logger.critical(f"Failed to login to Wialon API: '{e}'")
280
279
  raise
281
280
 
@@ -49,7 +49,7 @@ def get_id_from_imei(imei: str, session: WialonSession) -> str | None:
49
49
  if not imei.isdigit():
50
50
  raise ValueError(f"'imei' must be a digit, got '{imei}'.")
51
51
 
52
- results = session.wialon_api.core_search_items(
52
+ results: dict[str, typing.Any] | None = session.wialon_api.core_search_items(
53
53
  **{
54
54
  "spec": {
55
55
  "itemsType": "avl_unit",
@@ -66,7 +66,7 @@ def get_id_from_imei(imei: str, session: WialonSession) -> str | None:
66
66
  }
67
67
  )
68
68
 
69
- if results.get("totalItemsCount", 0) == 1:
69
+ if results and results.get("totalItemsCount", 0) == 1:
70
70
  return results["items"][0].get("id")
71
71
 
72
72
 
@@ -88,27 +88,25 @@ def get_id_from_iccid(iccid: str, session: WialonSession) -> str | None:
88
88
  return get_id_from_imei(imei=iccid, session=session)
89
89
 
90
90
 
91
- def get_wialon_cls(items_type: str) -> typing.Type[WialonBase]:
91
+ def get_wialon_cls(items_type: str) -> typing.Type[WialonBase] | None:
92
92
  """
93
- Returns a Wialon object class based on items_type.
93
+ Returns a Wialon object class based on ``items_type``.
94
+
95
+ Valid ``items_type`` are ``"user"``, ``"avl_unit"``, ``"avl_unit_group"`` and ``"avl_resource"``.
94
96
 
95
97
  :param items_type: A Wialon object type.
96
98
  :type items_type: :py:obj:`str`
97
99
  :returns: A subclass of :py:obj:`~terminusgps.wialon.items.base.WialonBase`.
98
- :rtype: :py:obj:`~terminusgps.wialon.items.base.WialonBase`
100
+ :rtype: :py:obj:`~terminusgps.wialon.items.base.WialonBase` | :py:obj:`None`
99
101
 
100
102
  """
101
- match items_type:
102
- case "user":
103
- return items.WialonUser
104
- case "avl_unit":
105
- return items.WialonUnit
106
- case "avl_unit_group":
107
- return items.WialonUnitGroup
108
- case "avl_resource":
109
- return items.WialonResource
110
- case _:
111
- raise ValueError(f"Invalid items_type, got '{items_type}'.")
103
+ items_map: dict[str, typing.Type[WialonBase]] = {
104
+ "user": items.WialonUser,
105
+ "avl_unit": items.WialonUnit,
106
+ "avl_unit_group": items.WialonUnitGroup,
107
+ "avl_resource": items.WialonResource,
108
+ }
109
+ return items_map.get(items_type)
112
110
 
113
111
 
114
112
  def get_vin_info(vin_number: str, session: WialonSession) -> dict:
@@ -123,15 +121,18 @@ def get_vin_info(vin_number: str, session: WialonSession) -> dict:
123
121
  :rtype: :py:obj:`dict`
124
122
 
125
123
  """
126
- response = session.wialon_api.unit_get_vin_info(**{"vin": vin_number}).get(
127
- "vin_lookup_result"
128
- )
129
- return (
130
- {field.get("n"): field.get("v") for field in response.get("pflds")}
131
- if "error" not in response.keys()
132
- else {}
124
+ response: dict[str, typing.Any] | None = session.wialon_api.unit_get_vin_info(
125
+ **{"vin": vin_number}
133
126
  )
134
127
 
128
+ if response is None or "error" in response.get("vin_lookup_result", {}).keys():
129
+ return {}
130
+
131
+ return {
132
+ field.get("n"): field.get("v")
133
+ for field in response.get("vin_lookup_result", {}).get("pflds")
134
+ }
135
+
135
136
 
136
137
  def is_unique(value: str, session: WialonSession, items_type: str = "avl_unit") -> bool:
137
138
  """
@@ -148,12 +149,14 @@ def is_unique(value: str, session: WialonSession, items_type: str = "avl_unit")
148
149
  :rtype: :py:obj:`bool`
149
150
 
150
151
  """
151
- return not bool(
152
- session.wialon_api.core_check_unique(
153
- **{"type": items_type, "value": value.strip()}
154
- ).get("result")
152
+ response = session.wialon_api.core_check_unique(
153
+ **{"type": items_type, "value": value.strip()}
155
154
  )
156
155
 
156
+ if not response:
157
+ return False
158
+ return bool(response.get("result"))
159
+
157
160
 
158
161
  def generate_wialon_password(length: int = 32) -> str:
159
162
  """
@@ -752,59 +752,59 @@ wheels = [
752
752
 
753
753
  [[package]]
754
754
  name = "propcache"
755
- version = "0.3.0"
756
- source = { registry = "https://pypi.org/simple" }
757
- sdist = { url = "https://files.pythonhosted.org/packages/92/76/f941e63d55c0293ff7829dd21e7cf1147e90a526756869a9070f287a68c9/propcache-0.3.0.tar.gz", hash = "sha256:a8fd93de4e1d278046345f49e2238cdb298589325849b2645d4a94c53faeffc5", size = 42722 }
758
- wheels = [
759
- { url = "https://files.pythonhosted.org/packages/8d/2c/921f15dc365796ec23975b322b0078eae72995c7b4d49eba554c6a308d70/propcache-0.3.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e53d19c2bf7d0d1e6998a7e693c7e87300dd971808e6618964621ccd0e01fe4e", size = 79867 },
760
- { url = "https://files.pythonhosted.org/packages/11/a5/4a6cc1a559d1f2fb57ea22edc4245158cdffae92f7f92afcee2913f84417/propcache-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a61a68d630e812b67b5bf097ab84e2cd79b48c792857dc10ba8a223f5b06a2af", size = 46109 },
761
- { url = "https://files.pythonhosted.org/packages/e1/6d/28bfd3af3a567ad7d667348e7f46a520bda958229c4d545ba138a044232f/propcache-0.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb91d20fa2d3b13deea98a690534697742029f4fb83673a3501ae6e3746508b5", size = 45635 },
762
- { url = "https://files.pythonhosted.org/packages/73/20/d75b42eaffe5075eac2f4e168f6393d21c664c91225288811d85451b2578/propcache-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67054e47c01b7b349b94ed0840ccae075449503cf1fdd0a1fdd98ab5ddc2667b", size = 242159 },
763
- { url = "https://files.pythonhosted.org/packages/a5/fb/4b537dd92f9fd4be68042ec51c9d23885ca5fafe51ec24c58d9401034e5f/propcache-0.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997e7b8f173a391987df40f3b52c423e5850be6f6df0dcfb5376365440b56667", size = 248163 },
764
- { url = "https://files.pythonhosted.org/packages/e7/af/8a9db04ac596d531ca0ef7dde518feaadfcdabef7b17d6a5ec59ee3effc2/propcache-0.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d663fd71491dde7dfdfc899d13a067a94198e90695b4321084c6e450743b8c7", size = 248794 },
765
- { url = "https://files.pythonhosted.org/packages/9d/c4/ecfc988879c0fd9db03228725b662d76cf484b6b46f7e92fee94e4b52490/propcache-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8884ba1a0fe7210b775106b25850f5e5a9dc3c840d1ae9924ee6ea2eb3acbfe7", size = 243912 },
766
- { url = "https://files.pythonhosted.org/packages/04/a2/298dd27184faa8b7d91cc43488b578db218b3cc85b54d912ed27b8c5597a/propcache-0.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa806bbc13eac1ab6291ed21ecd2dd426063ca5417dd507e6be58de20e58dfcf", size = 229402 },
767
- { url = "https://files.pythonhosted.org/packages/be/0d/efe7fec316ca92dbf4bc4a9ba49ca889c43ca6d48ab1d6fa99fc94e5bb98/propcache-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6f4d7a7c0aff92e8354cceca6fe223973ddf08401047920df0fcb24be2bd5138", size = 226896 },
768
- { url = "https://files.pythonhosted.org/packages/60/63/72404380ae1d9c96d96e165aa02c66c2aae6072d067fc4713da5cde96762/propcache-0.3.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:9be90eebc9842a93ef8335291f57b3b7488ac24f70df96a6034a13cb58e6ff86", size = 221447 },
769
- { url = "https://files.pythonhosted.org/packages/9d/18/b8392cab6e0964b67a30a8f4dadeaff64dc7022b5a34bb1d004ea99646f4/propcache-0.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bf15fc0b45914d9d1b706f7c9c4f66f2b7b053e9517e40123e137e8ca8958b3d", size = 222440 },
770
- { url = "https://files.pythonhosted.org/packages/6f/be/105d9ceda0f97eff8c06bac1673448b2db2a497444de3646464d3f5dc881/propcache-0.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a16167118677d94bb48bfcd91e420088854eb0737b76ec374b91498fb77a70e", size = 234104 },
771
- { url = "https://files.pythonhosted.org/packages/cb/c9/f09a4ec394cfcce4053d8b2a04d622b5f22d21ba9bb70edd0cad061fa77b/propcache-0.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41de3da5458edd5678b0f6ff66691507f9885f5fe6a0fb99a5d10d10c0fd2d64", size = 239086 },
772
- { url = "https://files.pythonhosted.org/packages/ea/aa/96f7f9ed6def82db67c972bdb7bd9f28b95d7d98f7e2abaf144c284bf609/propcache-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:728af36011bb5d344c4fe4af79cfe186729efb649d2f8b395d1572fb088a996c", size = 230991 },
773
- { url = "https://files.pythonhosted.org/packages/5a/11/bee5439de1307d06fad176f7143fec906e499c33d7aff863ea8428b8e98b/propcache-0.3.0-cp312-cp312-win32.whl", hash = "sha256:6b5b7fd6ee7b54e01759f2044f936dcf7dea6e7585f35490f7ca0420fe723c0d", size = 40337 },
774
- { url = "https://files.pythonhosted.org/packages/e4/17/e5789a54a0455a61cb9efc4ca6071829d992220c2998a27c59aeba749f6f/propcache-0.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:2d15bc27163cd4df433e75f546b9ac31c1ba7b0b128bfb1b90df19082466ff57", size = 44404 },
775
- { url = "https://files.pythonhosted.org/packages/3a/0f/a79dd23a0efd6ee01ab0dc9750d8479b343bfd0c73560d59d271eb6a99d4/propcache-0.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a2b9bf8c79b660d0ca1ad95e587818c30ccdb11f787657458d6f26a1ea18c568", size = 77287 },
776
- { url = "https://files.pythonhosted.org/packages/b8/51/76675703c90de38ac75adb8deceb3f3ad99b67ff02a0fa5d067757971ab8/propcache-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b0c1a133d42c6fc1f5fbcf5c91331657a1ff822e87989bf4a6e2e39b818d0ee9", size = 44923 },
777
- { url = "https://files.pythonhosted.org/packages/01/9b/fd5ddbee66cf7686e73c516227c2fd9bf471dbfed0f48329d095ea1228d3/propcache-0.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bb2f144c6d98bb5cbc94adeb0447cfd4c0f991341baa68eee3f3b0c9c0e83767", size = 44325 },
778
- { url = "https://files.pythonhosted.org/packages/13/1c/6961f11eb215a683b34b903b82bde486c606516c1466bf1fa67f26906d51/propcache-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1323cd04d6e92150bcc79d0174ce347ed4b349d748b9358fd2e497b121e03c8", size = 225116 },
779
- { url = "https://files.pythonhosted.org/packages/ef/ea/f8410c40abcb2e40dffe9adeed017898c930974650a63e5c79b886aa9f73/propcache-0.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b812b3cb6caacd072276ac0492d249f210006c57726b6484a1e1805b3cfeea0", size = 229905 },
780
- { url = "https://files.pythonhosted.org/packages/ef/5a/a9bf90894001468bf8e6ea293bb00626cc9ef10f8eb7996e9ec29345c7ed/propcache-0.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:742840d1d0438eb7ea4280f3347598f507a199a35a08294afdcc560c3739989d", size = 233221 },
781
- { url = "https://files.pythonhosted.org/packages/dd/ce/fffdddd9725b690b01d345c1156b4c2cc6dca09ab5c23a6d07b8f37d6e2f/propcache-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c6e7e4f9167fddc438cd653d826f2222222564daed4116a02a184b464d3ef05", size = 227627 },
782
- { url = "https://files.pythonhosted.org/packages/58/ae/45c89a5994a334735a3032b48e8e4a98c05d9536ddee0719913dc27da548/propcache-0.3.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a94ffc66738da99232ddffcf7910e0f69e2bbe3a0802e54426dbf0714e1c2ffe", size = 214217 },
783
- { url = "https://files.pythonhosted.org/packages/01/84/bc60188c3290ff8f5f4a92b9ca2d93a62e449c8daf6fd11ad517ad136926/propcache-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c6ec957025bf32b15cbc6b67afe233c65b30005e4c55fe5768e4bb518d712f1", size = 212921 },
784
- { url = "https://files.pythonhosted.org/packages/14/b3/39d60224048feef7a96edabb8217dc3f75415457e5ebbef6814f8b2a27b5/propcache-0.3.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:549722908de62aa0b47a78b90531c022fa6e139f9166be634f667ff45632cc92", size = 208200 },
785
- { url = "https://files.pythonhosted.org/packages/9d/b3/0a6720b86791251273fff8a01bc8e628bc70903513bd456f86cde1e1ef84/propcache-0.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5d62c4f6706bff5d8a52fd51fec6069bef69e7202ed481486c0bc3874912c787", size = 208400 },
786
- { url = "https://files.pythonhosted.org/packages/e9/4f/bb470f3e687790547e2e78105fb411f54e0cdde0d74106ccadd2521c6572/propcache-0.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:24c04f8fbf60094c531667b8207acbae54146661657a1b1be6d3ca7773b7a545", size = 218116 },
787
- { url = "https://files.pythonhosted.org/packages/34/71/277f7f9add469698ac9724c199bfe06f85b199542121a71f65a80423d62a/propcache-0.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7c5f5290799a3f6539cc5e6f474c3e5c5fbeba74a5e1e5be75587746a940d51e", size = 222911 },
788
- { url = "https://files.pythonhosted.org/packages/92/e3/a7b9782aef5a2fc765b1d97da9ec7aed2f25a4e985703608e73232205e3f/propcache-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4fa0e7c9c3cf7c276d4f6ab9af8adddc127d04e0fcabede315904d2ff76db626", size = 216563 },
789
- { url = "https://files.pythonhosted.org/packages/ab/76/0583ca2c551aa08ffcff87b2c6849c8f01c1f6fb815a5226f0c5c202173e/propcache-0.3.0-cp313-cp313-win32.whl", hash = "sha256:ee0bd3a7b2e184e88d25c9baa6a9dc609ba25b76daae942edfb14499ac7ec374", size = 39763 },
790
- { url = "https://files.pythonhosted.org/packages/80/ec/c6a84f9a36f608379b95f0e786c111d5465926f8c62f12be8cdadb02b15c/propcache-0.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:1c8f7d896a16da9455f882870a507567d4f58c53504dc2d4b1e1d386dfe4588a", size = 43650 },
791
- { url = "https://files.pythonhosted.org/packages/ee/95/7d32e3560f5bf83fc2f2a4c1b0c181d327d53d5f85ebd045ab89d4d97763/propcache-0.3.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e560fd75aaf3e5693b91bcaddd8b314f4d57e99aef8a6c6dc692f935cc1e6bbf", size = 82140 },
792
- { url = "https://files.pythonhosted.org/packages/86/89/752388f12e6027a5e63f5d075f15291ded48e2d8311314fff039da5a9b11/propcache-0.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:65a37714b8ad9aba5780325228598a5b16c47ba0f8aeb3dc0514701e4413d7c0", size = 47296 },
793
- { url = "https://files.pythonhosted.org/packages/1b/4c/b55c98d586c69180d3048984a57a5ea238bdeeccf82dbfcd598e935e10bb/propcache-0.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:07700939b2cbd67bfb3b76a12e1412405d71019df00ca5697ce75e5ef789d829", size = 46724 },
794
- { url = "https://files.pythonhosted.org/packages/0f/b6/67451a437aed90c4e951e320b5b3d7eb584ade1d5592f6e5e8f678030989/propcache-0.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c0fdbdf6983526e269e5a8d53b7ae3622dd6998468821d660d0daf72779aefa", size = 291499 },
795
- { url = "https://files.pythonhosted.org/packages/ee/ff/e4179facd21515b24737e1e26e02615dfb5ed29416eed4cf5bc6ac5ce5fb/propcache-0.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:794c3dd744fad478b6232289c866c25406ecdfc47e294618bdf1697e69bd64a6", size = 293911 },
796
- { url = "https://files.pythonhosted.org/packages/76/8d/94a8585992a064a23bd54f56c5e58c3b8bf0c0a06ae10e56f2353ae16c3d/propcache-0.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4544699674faf66fb6b4473a1518ae4999c1b614f0b8297b1cef96bac25381db", size = 293301 },
797
- { url = "https://files.pythonhosted.org/packages/b0/b8/2c860c92b4134f68c7716c6f30a0d723973f881c32a6d7a24c4ddca05fdf/propcache-0.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fddb8870bdb83456a489ab67c6b3040a8d5a55069aa6f72f9d872235fbc52f54", size = 281947 },
798
- { url = "https://files.pythonhosted.org/packages/cd/72/b564be7411b525d11757b713c757c21cd4dc13b6569c3b2b8f6d3c96fd5e/propcache-0.3.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f857034dc68d5ceb30fb60afb6ff2103087aea10a01b613985610e007053a121", size = 268072 },
799
- { url = "https://files.pythonhosted.org/packages/37/68/d94649e399e8d7fc051e5a4f2334efc567993525af083db145a70690a121/propcache-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02df07041e0820cacc8f739510078f2aadcfd3fc57eaeeb16d5ded85c872c89e", size = 275190 },
800
- { url = "https://files.pythonhosted.org/packages/d8/3c/446e125f5bbbc1922964dd67cb541c01cdb678d811297b79a4ff6accc843/propcache-0.3.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f47d52fd9b2ac418c4890aad2f6d21a6b96183c98021f0a48497a904199f006e", size = 254145 },
801
- { url = "https://files.pythonhosted.org/packages/f4/80/fd3f741483dc8e59f7ba7e05eaa0f4e11677d7db2077522b92ff80117a2a/propcache-0.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9ff4e9ecb6e4b363430edf2c6e50173a63e0820e549918adef70515f87ced19a", size = 257163 },
802
- { url = "https://files.pythonhosted.org/packages/dc/cf/6292b5ce6ed0017e6a89024a827292122cc41b6259b30ada0c6732288513/propcache-0.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ecc2920630283e0783c22e2ac94427f8cca29a04cfdf331467d4f661f4072dac", size = 280249 },
803
- { url = "https://files.pythonhosted.org/packages/e8/f0/fd9b8247b449fe02a4f96538b979997e229af516d7462b006392badc59a1/propcache-0.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:c441c841e82c5ba7a85ad25986014be8d7849c3cfbdb6004541873505929a74e", size = 288741 },
804
- { url = "https://files.pythonhosted.org/packages/64/71/cf831fdc2617f86cfd7f414cfc487d018e722dac8acc098366ce9bba0941/propcache-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c929916cbdb540d3407c66f19f73387f43e7c12fa318a66f64ac99da601bcdf", size = 277061 },
805
- { url = "https://files.pythonhosted.org/packages/42/78/9432542a35d944abeca9e02927a0de38cd7a298466d8ffa171536e2381c3/propcache-0.3.0-cp313-cp313t-win32.whl", hash = "sha256:0c3e893c4464ebd751b44ae76c12c5f5c1e4f6cbd6fbf67e3783cd93ad221863", size = 42252 },
806
- { url = "https://files.pythonhosted.org/packages/6f/45/960365f4f8978f48ebb56b1127adf33a49f2e69ecd46ac1f46d6cf78a79d/propcache-0.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:75e872573220d1ee2305b35c9813626e620768248425f58798413e9c39741f46", size = 46425 },
807
- { url = "https://files.pythonhosted.org/packages/b5/35/6c4c6fc8774a9e3629cd750dc24a7a4fb090a25ccd5c3246d127b70f9e22/propcache-0.3.0-py3-none-any.whl", hash = "sha256:67dda3c7325691c2081510e92c561f465ba61b975f481735aefdfc845d2cd043", size = 12101 },
755
+ version = "0.3.1"
756
+ source = { registry = "https://pypi.org/simple" }
757
+ sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 }
758
+ wheels = [
759
+ { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 },
760
+ { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 },
761
+ { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 },
762
+ { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 },
763
+ { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 },
764
+ { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 },
765
+ { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 },
766
+ { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 },
767
+ { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 },
768
+ { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 },
769
+ { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 },
770
+ { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 },
771
+ { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 },
772
+ { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 },
773
+ { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 },
774
+ { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 },
775
+ { url = "https://files.pythonhosted.org/packages/58/60/f645cc8b570f99be3cf46714170c2de4b4c9d6b827b912811eff1eb8a412/propcache-0.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f1528ec4374617a7a753f90f20e2f551121bb558fcb35926f99e3c42367164b8", size = 77865 },
776
+ { url = "https://files.pythonhosted.org/packages/6f/d4/c1adbf3901537582e65cf90fd9c26fde1298fde5a2c593f987112c0d0798/propcache-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc1915ec523b3b494933b5424980831b636fe483d7d543f7afb7b3bf00f0c10f", size = 45452 },
777
+ { url = "https://files.pythonhosted.org/packages/d1/b5/fe752b2e63f49f727c6c1c224175d21b7d1727ce1d4873ef1c24c9216830/propcache-0.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a110205022d077da24e60b3df8bcee73971be9575dec5573dd17ae5d81751111", size = 44800 },
778
+ { url = "https://files.pythonhosted.org/packages/62/37/fc357e345bc1971e21f76597028b059c3d795c5ca7690d7a8d9a03c9708a/propcache-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d249609e547c04d190e820d0d4c8ca03ed4582bcf8e4e160a6969ddfb57b62e5", size = 225804 },
779
+ { url = "https://files.pythonhosted.org/packages/0d/f1/16e12c33e3dbe7f8b737809bad05719cff1dccb8df4dafbcff5575002c0e/propcache-0.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ced33d827625d0a589e831126ccb4f5c29dfdf6766cac441d23995a65825dcb", size = 230650 },
780
+ { url = "https://files.pythonhosted.org/packages/3e/a2/018b9f2ed876bf5091e60153f727e8f9073d97573f790ff7cdf6bc1d1fb8/propcache-0.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4114c4ada8f3181af20808bedb250da6bae56660e4b8dfd9cd95d4549c0962f7", size = 234235 },
781
+ { url = "https://files.pythonhosted.org/packages/45/5f/3faee66fc930dfb5da509e34c6ac7128870631c0e3582987fad161fcb4b1/propcache-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:975af16f406ce48f1333ec5e912fe11064605d5c5b3f6746969077cc3adeb120", size = 228249 },
782
+ { url = "https://files.pythonhosted.org/packages/62/1e/a0d5ebda5da7ff34d2f5259a3e171a94be83c41eb1e7cd21a2105a84a02e/propcache-0.3.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a34aa3a1abc50740be6ac0ab9d594e274f59960d3ad253cd318af76b996dd654", size = 214964 },
783
+ { url = "https://files.pythonhosted.org/packages/db/a0/d72da3f61ceab126e9be1f3bc7844b4e98c6e61c985097474668e7e52152/propcache-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9cec3239c85ed15bfaded997773fdad9fb5662b0a7cbc854a43f291eb183179e", size = 222501 },
784
+ { url = "https://files.pythonhosted.org/packages/18/6d/a008e07ad7b905011253adbbd97e5b5375c33f0b961355ca0a30377504ac/propcache-0.3.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:05543250deac8e61084234d5fc54f8ebd254e8f2b39a16b1dce48904f45b744b", size = 217917 },
785
+ { url = "https://files.pythonhosted.org/packages/98/37/02c9343ffe59e590e0e56dc5c97d0da2b8b19fa747ebacf158310f97a79a/propcache-0.3.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5cb5918253912e088edbf023788de539219718d3b10aef334476b62d2b53de53", size = 217089 },
786
+ { url = "https://files.pythonhosted.org/packages/53/1b/d3406629a2c8a5666d4674c50f757a77be119b113eedd47b0375afdf1b42/propcache-0.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3bbecd2f34d0e6d3c543fdb3b15d6b60dd69970c2b4c822379e5ec8f6f621d5", size = 228102 },
787
+ { url = "https://files.pythonhosted.org/packages/cd/a7/3664756cf50ce739e5f3abd48febc0be1a713b1f389a502ca819791a6b69/propcache-0.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aca63103895c7d960a5b9b044a83f544b233c95e0dcff114389d64d762017af7", size = 230122 },
788
+ { url = "https://files.pythonhosted.org/packages/35/36/0bbabaacdcc26dac4f8139625e930f4311864251276033a52fd52ff2a274/propcache-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a0a9898fdb99bf11786265468571e628ba60af80dc3f6eb89a3545540c6b0ef", size = 226818 },
789
+ { url = "https://files.pythonhosted.org/packages/cc/27/4e0ef21084b53bd35d4dae1634b6d0bad35e9c58ed4f032511acca9d4d26/propcache-0.3.1-cp313-cp313-win32.whl", hash = "sha256:3a02a28095b5e63128bcae98eb59025924f121f048a62393db682f049bf4ac24", size = 40112 },
790
+ { url = "https://files.pythonhosted.org/packages/a6/2c/a54614d61895ba6dd7ac8f107e2b2a0347259ab29cbf2ecc7b94fa38c4dc/propcache-0.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:813fbb8b6aea2fc9659815e585e548fe706d6f663fa73dff59a1677d4595a037", size = 44034 },
791
+ { url = "https://files.pythonhosted.org/packages/5a/a8/0a4fd2f664fc6acc66438370905124ce62e84e2e860f2557015ee4a61c7e/propcache-0.3.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a444192f20f5ce8a5e52761a031b90f5ea6288b1eef42ad4c7e64fef33540b8f", size = 82613 },
792
+ { url = "https://files.pythonhosted.org/packages/4d/e5/5ef30eb2cd81576256d7b6caaa0ce33cd1d2c2c92c8903cccb1af1a4ff2f/propcache-0.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0fbe94666e62ebe36cd652f5fc012abfbc2342de99b523f8267a678e4dfdee3c", size = 47763 },
793
+ { url = "https://files.pythonhosted.org/packages/87/9a/87091ceb048efeba4d28e903c0b15bcc84b7c0bf27dc0261e62335d9b7b8/propcache-0.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f011f104db880f4e2166bcdcf7f58250f7a465bc6b068dc84c824a3d4a5c94dc", size = 47175 },
794
+ { url = "https://files.pythonhosted.org/packages/3e/2f/854e653c96ad1161f96194c6678a41bbb38c7947d17768e8811a77635a08/propcache-0.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e584b6d388aeb0001d6d5c2bd86b26304adde6d9bb9bfa9c4889805021b96de", size = 292265 },
795
+ { url = "https://files.pythonhosted.org/packages/40/8d/090955e13ed06bc3496ba4a9fb26c62e209ac41973cb0d6222de20c6868f/propcache-0.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a17583515a04358b034e241f952f1715243482fc2c2945fd99a1b03a0bd77d6", size = 294412 },
796
+ { url = "https://files.pythonhosted.org/packages/39/e6/d51601342e53cc7582449e6a3c14a0479fab2f0750c1f4d22302e34219c6/propcache-0.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5aed8d8308215089c0734a2af4f2e95eeb360660184ad3912686c181e500b2e7", size = 294290 },
797
+ { url = "https://files.pythonhosted.org/packages/3b/4d/be5f1a90abc1881884aa5878989a1acdafd379a91d9c7e5e12cef37ec0d7/propcache-0.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8e309ff9a0503ef70dc9a0ebd3e69cf7b3894c9ae2ae81fc10943c37762458", size = 282926 },
798
+ { url = "https://files.pythonhosted.org/packages/57/2b/8f61b998c7ea93a2b7eca79e53f3e903db1787fca9373af9e2cf8dc22f9d/propcache-0.3.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b655032b202028a582d27aeedc2e813299f82cb232f969f87a4fde491a233f11", size = 267808 },
799
+ { url = "https://files.pythonhosted.org/packages/11/1c/311326c3dfce59c58a6098388ba984b0e5fb0381ef2279ec458ef99bd547/propcache-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f64d91b751df77931336b5ff7bafbe8845c5770b06630e27acd5dbb71e1931c", size = 290916 },
800
+ { url = "https://files.pythonhosted.org/packages/4b/74/91939924b0385e54dc48eb2e4edd1e4903ffd053cf1916ebc5347ac227f7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:19a06db789a4bd896ee91ebc50d059e23b3639c25d58eb35be3ca1cbe967c3bf", size = 262661 },
801
+ { url = "https://files.pythonhosted.org/packages/c2/d7/e6079af45136ad325c5337f5dd9ef97ab5dc349e0ff362fe5c5db95e2454/propcache-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bef100c88d8692864651b5f98e871fb090bd65c8a41a1cb0ff2322db39c96c27", size = 264384 },
802
+ { url = "https://files.pythonhosted.org/packages/b7/d5/ba91702207ac61ae6f1c2da81c5d0d6bf6ce89e08a2b4d44e411c0bbe867/propcache-0.3.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:87380fb1f3089d2a0b8b00f006ed12bd41bd858fabfa7330c954c70f50ed8757", size = 291420 },
803
+ { url = "https://files.pythonhosted.org/packages/58/70/2117780ed7edcd7ba6b8134cb7802aada90b894a9810ec56b7bb6018bee7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e474fc718e73ba5ec5180358aa07f6aded0ff5f2abe700e3115c37d75c947e18", size = 290880 },
804
+ { url = "https://files.pythonhosted.org/packages/4a/1f/ecd9ce27710021ae623631c0146719280a929d895a095f6d85efb6a0be2e/propcache-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:17d1c688a443355234f3c031349da69444be052613483f3e4158eef751abcd8a", size = 287407 },
805
+ { url = "https://files.pythonhosted.org/packages/3e/66/2e90547d6b60180fb29e23dc87bd8c116517d4255240ec6d3f7dc23d1926/propcache-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:359e81a949a7619802eb601d66d37072b79b79c2505e6d3fd8b945538411400d", size = 42573 },
806
+ { url = "https://files.pythonhosted.org/packages/cb/8f/50ad8599399d1861b4d2b6b45271f0ef6af1b09b0a2386a46dbaf19c9535/propcache-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e7fb9a84c9abbf2b2683fa3e7b0d7da4d8ecf139a1c635732a8bda29c5214b0e", size = 46757 },
807
+ { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 },
808
808
  ]
809
809
 
810
810
  [[package]]
@@ -848,7 +848,7 @@ wheels = [
848
848
 
849
849
  [[package]]
850
850
  name = "python-terminusgps"
851
- version = "25.1.0"
851
+ version = "26.0.0"
852
852
  source = { editable = "." }
853
853
  dependencies = [
854
854
  { name = "argparse" },
@@ -1128,20 +1128,20 @@ wheels = [
1128
1128
 
1129
1129
  [[package]]
1130
1130
  name = "types-pyyaml"
1131
- version = "6.0.12.20241230"
1131
+ version = "6.0.12.20250326"
1132
1132
  source = { registry = "https://pypi.org/simple" }
1133
- sdist = { url = "https://files.pythonhosted.org/packages/9a/f9/4d566925bcf9396136c0a2e5dc7e230ff08d86fa011a69888dd184469d80/types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", size = 17078 }
1133
+ sdist = { url = "https://files.pythonhosted.org/packages/9b/66/f58e386be67589d5c3c9c0a368600783ac1321b7e6ee213c8f51848dbf0c/types_pyyaml-6.0.12.20250326.tar.gz", hash = "sha256:5e2d86d8706697803f361ba0b8188eef2999e1c372cd4faee4ebb0844b8a4190", size = 17346 }
1134
1134
  wheels = [
1135
- { url = "https://files.pythonhosted.org/packages/e8/c1/48474fbead512b70ccdb4f81ba5eb4a58f69d100ba19f17c92c0c4f50ae6/types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6", size = 20029 },
1135
+ { url = "https://files.pythonhosted.org/packages/e9/1e/5609fea65117db83cc060342d4f6810f3cf1d3453b9f81bfe5f03f679633/types_pyyaml-6.0.12.20250326-py3-none-any.whl", hash = "sha256:961871cfbdc1ad8ae3cb6ae3f13007262bcfc168adc513119755a6e4d5d7ed65", size = 20398 },
1136
1136
  ]
1137
1137
 
1138
1138
  [[package]]
1139
1139
  name = "typing-extensions"
1140
- version = "4.12.2"
1140
+ version = "4.13.0"
1141
1141
  source = { registry = "https://pypi.org/simple" }
1142
- sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 }
1142
+ sdist = { url = "https://files.pythonhosted.org/packages/0e/3e/b00a62db91a83fff600de219b6ea9908e6918664899a2d85db222f4fbf19/typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b", size = 106520 }
1143
1143
  wheels = [
1144
- { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 },
1144
+ { url = "https://files.pythonhosted.org/packages/e0/86/39b65d676ec5732de17b7e3c476e45bb80ec64eb50737a8dce1a4178aba1/typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5", size = 45683 },
1145
1145
  ]
1146
1146
 
1147
1147
  [[package]]