openmodule 14.2.0rc0__tar.gz → 14.3.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.
Files changed (253) hide show
  1. {openmodule-14.2.0rc0 → openmodule-14.3.0}/ChangeLog +17 -6
  2. {openmodule-14.2.0rc0/openmodule.egg-info → openmodule-14.3.0}/PKG-INFO +1 -1
  3. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/testing.md +17 -0
  4. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/utils.md +22 -1
  5. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/access_service.py +5 -0
  6. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/base.py +5 -19
  7. openmodule-14.2.0rc0/openmodule/models/signal.py → openmodule-14.3.0/openmodule/models/signals.py +4 -4
  8. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/rpc/client.py +11 -8
  9. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/settings.py +9 -0
  10. openmodule-14.2.0rc0/openmodule/utils/signal.py → openmodule-14.3.0/openmodule/utils/signal_listener.py +8 -7
  11. {openmodule-14.2.0rc0 → openmodule-14.3.0/openmodule.egg-info}/PKG-INFO +1 -1
  12. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule.egg-info/SOURCES.txt +3 -3
  13. openmodule-14.3.0/openmodule.egg-info/pbr.json +1 -0
  14. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule.egg-info/requires.txt +1 -1
  15. openmodule-14.2.0rc0/openmodule_test/signal.py → openmodule-14.3.0/openmodule_test/signal_simulator.py +2 -2
  16. {openmodule-14.2.0rc0 → openmodule-14.3.0}/requirements.txt +1 -1
  17. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_model.py +1 -11
  18. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_signal.py +6 -5
  19. openmodule-14.2.0rc0/openmodule.egg-info/pbr.json +0 -1
  20. {openmodule-14.2.0rc0 → openmodule-14.3.0}/.gitlab-ci.yml +0 -0
  21. {openmodule-14.2.0rc0 → openmodule-14.3.0}/AUTHORS +0 -0
  22. {openmodule-14.2.0rc0 → openmodule-14.3.0}/LICENSE +0 -0
  23. {openmodule-14.2.0rc0 → openmodule-14.3.0}/README.md +0 -0
  24. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/access_service.md +0 -0
  25. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/anonymization.md +0 -0
  26. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/cleanup.md +0 -0
  27. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/coding_standard.md +0 -0
  28. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/commands.md +0 -0
  29. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/connection_status_listener.md +0 -0
  30. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/csv_export.md +0 -0
  31. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/database.md +0 -0
  32. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated.md +0 -0
  33. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/README.md +0 -0
  34. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/access_service/openmodule/models/access_service.py +0 -0
  35. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/access_service/openmodule/utils/access_service.py +0 -0
  36. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/access_service/openmodule_test/access_service.py +0 -0
  37. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/access_service/tests/test_utils_access_service.py +0 -0
  38. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/api/openmodule/utils/api.py +0 -0
  39. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/api/openmodule_test/api.py +0 -0
  40. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/api/tests/test_utils_api.py +0 -0
  41. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/package_reader/openmodule/utils/package_reader.py +0 -0
  42. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/package_reader/openmodule_test/fake_package_creator.py +0 -0
  43. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/deprecated_code/package_reader/tests/test_package_reader.py +0 -0
  44. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/event_sending.md +0 -0
  45. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/getting_started.md +0 -0
  46. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/health.md +0 -0
  47. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/images/broker.drawio.png +0 -0
  48. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/known_issues.md +0 -0
  49. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/migrations.md +0 -0
  50. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/package_reader.md +0 -0
  51. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/rpc.md +0 -0
  52. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/sentry.md +0 -0
  53. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/settings.md +0 -0
  54. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/settings_provider.md +0 -0
  55. {openmodule-14.2.0rc0 → openmodule-14.3.0}/docs/translation.md +0 -0
  56. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/__init__.py +0 -0
  57. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/alert.py +0 -0
  58. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/config.py +0 -0
  59. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/connection_status.py +0 -0
  60. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/core.py +0 -0
  61. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/database/custom_types.py +0 -0
  62. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/database/database.py +0 -0
  63. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/database/env.py +0 -0
  64. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/database/migration.py +0 -0
  65. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/dispatcher.py +0 -0
  66. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/health.py +0 -0
  67. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/logging.py +0 -0
  68. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/messaging.py +0 -0
  69. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/__init__.py +0 -0
  70. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/alert.py +0 -0
  71. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/io.py +0 -0
  72. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/kv_store.py +0 -0
  73. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/presence.py +0 -0
  74. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/privacy.py +0 -0
  75. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/rpc.py +0 -0
  76. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/settings.py +0 -0
  77. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/validation.py +0 -0
  78. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/models/vehicle.py +0 -0
  79. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/rpc/__init__.py +0 -0
  80. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/rpc/common.py +0 -0
  81. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/rpc/server.py +0 -0
  82. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/sentry.py +0 -0
  83. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/threading.py +0 -0
  84. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/__init__.py +0 -0
  85. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/access_service.py +0 -0
  86. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/charset.py +0 -0
  87. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/cleanup.py +0 -0
  88. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/csv_export.py +0 -0
  89. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/databox.py +0 -0
  90. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/db_helper.py +0 -0
  91. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/eventlog.py +0 -0
  92. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/io.py +0 -0
  93. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/kv_store.py +0 -0
  94. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/matching.py +0 -0
  95. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/misc_functions.py +0 -0
  96. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/package_reader.py +0 -0
  97. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/presence.py +0 -0
  98. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/schema.py +0 -0
  99. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/translation.py +0 -0
  100. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule/utils/validation.py +0 -0
  101. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule.egg-info/dependency_links.txt +0 -0
  102. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule.egg-info/not-zip-safe +0 -0
  103. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule.egg-info/top_level.txt +0 -0
  104. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_commands/__init__.py +0 -0
  105. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_commands/setup.cfg +0 -0
  106. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_commands/setup.py +0 -0
  107. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_commands/translate.py +0 -0
  108. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/__init__.py +0 -0
  109. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/alert.py +0 -0
  110. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/connection_status.py +0 -0
  111. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/core.py +0 -0
  112. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/database.py +0 -0
  113. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/eventlistener.py +0 -0
  114. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/files.py +0 -0
  115. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/gate.py +0 -0
  116. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/health.py +0 -0
  117. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/interrupt.py +0 -0
  118. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/io_simulator.py +0 -0
  119. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/package_reader.py +0 -0
  120. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/presence.py +0 -0
  121. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/requirements.txt +0 -0
  122. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/rpc.py +0 -0
  123. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/sentry.py +0 -0
  124. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/settings.py +0 -0
  125. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/setup.cfg +0 -0
  126. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/setup.py +0 -0
  127. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/utils.py +0 -0
  128. {openmodule-14.2.0rc0 → openmodule-14.3.0}/openmodule_test/zeromq.py +0 -0
  129. {openmodule-14.2.0rc0 → openmodule-14.3.0}/setup.cfg +0 -0
  130. {openmodule-14.2.0rc0 → openmodule-14.3.0}/setup.py +0 -0
  131. {openmodule-14.2.0rc0 → openmodule-14.3.0}/test-requirements.txt +0 -0
  132. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/__init__.py +0 -0
  133. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/config.py +0 -0
  134. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/database_models_migration.py +0 -0
  135. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/database_models_test.py +0 -0
  136. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic/README +0 -0
  137. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic/__init__.py +0 -0
  138. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic/env.py +0 -0
  139. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic/script.py.mako +0 -0
  140. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic/versions/ff26e54332f9_datetime_models.py +0 -0
  141. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/alembic.ini +0 -0
  142. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/invalid_database/makemigration.sh +0 -0
  143. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic/__init__.py +0 -0
  144. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic/env.py +0 -0
  145. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic/script.py.mako +0 -0
  146. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic/versions/812a3e5b8517_initial.py +0 -0
  147. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic/versions/a7ea100a784f_key_error.py +0 -0
  148. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/alembic.ini +0 -0
  149. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_double_column_delete_error/makemigration.sh +0 -0
  150. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic/__init__.py +0 -0
  151. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic/env.py +0 -0
  152. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic/script.py.mako +0 -0
  153. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic/versions/812a3e5b8517_initial.py +0 -0
  154. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic/versions/a7ea100a784f_no_such_table_error.py +0 -0
  155. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/alembic.ini +0 -0
  156. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_no_such_table_error/makemigration.sh +0 -0
  157. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/__init__.py +0 -0
  158. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/__init__.py +0 -0
  159. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/env.py +0 -0
  160. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/script.py.mako +0 -0
  161. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/versions/19789aa5361c_initial.py +0 -0
  162. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/versions/19d887929ae7_alter.py +0 -0
  163. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic/versions/__init__.py +0 -0
  164. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic.ini +0 -0
  165. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/alembic_migration_test_database.sqlite3 +0 -0
  166. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/migration_test_database/makemigration.sh +0 -0
  167. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/configs/config.py +0 -0
  168. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/configs/test_config.py +0 -0
  169. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/configs/test_config_1.py +0 -0
  170. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/standard_schemes/DEFAULT-10.yml +0 -0
  171. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/standard_schemes/DEFAULT-20.yml +0 -0
  172. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/standard_schemes/LEGACY-0.yml +0 -0
  173. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/locale/de/LC_MESSAGES/translation.mo +0 -0
  174. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/locale/de/LC_MESSAGES/translation.po +0 -0
  175. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/locale/en/LC_MESSAGES/translation.mo +0 -0
  176. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/locale/en/LC_MESSAGES/translation.po +0 -0
  177. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/locale/translation.pot +0 -0
  178. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/translation/translate.sh +0 -0
  179. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/A-10.yml +0 -0
  180. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/A-20.yml +0 -0
  181. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/DEFAULT-10.yml +0 -0
  182. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/DEFAULT-20.yml +0 -0
  183. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/DEFAULT-30.yml +0 -0
  184. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/LEGACY-0.yml +0 -0
  185. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/TEST-10.yml +0 -0
  186. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/TEST-20.yml +0 -0
  187. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/TEST-30.yml +0 -0
  188. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/resources/utils_matching/TEST-40.yml +0 -0
  189. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/sentry_main.py +0 -0
  190. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/__init__.py +0 -0
  191. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/env.py +0 -0
  192. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/script.py.mako +0 -0
  193. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/versions/7bd4fcd38fde_removed_nfc_and_pin.py +0 -0
  194. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/versions/9ca98a2e5674_added_parksettings_id.py +0 -0
  195. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic/versions/c821971f9230_initial.py +0 -0
  196. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/alembic.ini +0 -0
  197. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_access_service_database/makemigration.sh +0 -0
  198. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_alembic_migrations.py +0 -0
  199. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_alert.py +0 -0
  200. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_checks.py +0 -0
  201. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_config.py +0 -0
  202. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_connection_status.py +0 -0
  203. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_core.py +0 -0
  204. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/alembic/__init__.py +0 -0
  205. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/alembic/env.py +0 -0
  206. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/alembic/script.py.mako +0 -0
  207. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/alembic/versions/32b8c728abbf_initial.py +0 -0
  208. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/alembic.ini +0 -0
  209. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database/makemigration.sh +0 -0
  210. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_database.py +0 -0
  211. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_dispatcher.py +0 -0
  212. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_health.py +0 -0
  213. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_interrupt.py +0 -0
  214. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_io_listen.py +0 -0
  215. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic/__init__.py +0 -0
  216. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic/env.py +0 -0
  217. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic/script.py.mako +0 -0
  218. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic/versions/9c5c944221f4_deprecated_kv_entry_example.py +0 -0
  219. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic/versions/c55a69026a25_initial.py +0 -0
  220. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/alembic.ini +0 -0
  221. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_database/makemigration.sh +0 -0
  222. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic/README +0 -0
  223. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic/__init__.py +0 -0
  224. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic/env.py +0 -0
  225. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic/script.py.mako +0 -0
  226. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic/versions/cdb3214131a9_initial.py +0 -0
  227. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/alembic.ini +0 -0
  228. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_kv_store_multiple_database/makemigration.sh +0 -0
  229. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_logging.py +0 -0
  230. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_messaging.py +0 -0
  231. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_mockrpcclient.py +0 -0
  232. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_rpc.py +0 -0
  233. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_schema.py +0 -0
  234. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_sentry.py +0 -0
  235. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_test_alert.py +0 -0
  236. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_test_gate.py +0 -0
  237. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_test_zeromq.py +0 -0
  238. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_access_service.py +0 -0
  239. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_charset.py +0 -0
  240. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_cleanup.py +0 -0
  241. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_csv_export.py +0 -0
  242. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_databox.py +0 -0
  243. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_eventlog.py +0 -0
  244. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_kv_store.py +0 -0
  245. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_kv_store_multiple.py +0 -0
  246. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_matching.py +0 -0
  247. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_misc_functions.py +0 -0
  248. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_package_reader.py +0 -0
  249. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_presence.py +0 -0
  250. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_settings.py +0 -0
  251. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_validation.py +0 -0
  252. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tests/test_utils_vehicle.py +0 -0
  253. {openmodule-14.2.0rc0 → openmodule-14.3.0}/tox.ini +0 -0
@@ -1,13 +1,11 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
- v14.2.0.rc0
5
- -----------
4
+ v14.3.0
5
+ -------
6
6
 
7
- * improvements for signal simulator
8
- * test util for signals
9
- * fixed testcase
10
- * added SignalListener
7
+ * Om 912: SignalListener and SignalSimulator for testcases
8
+ * OM-1001: CostEntryData from settings models, added valid\_from and valid\_to to AccessCheckAccess and type hints for io/signals and io/inputs settings
11
9
 
12
10
  v14.1.1
13
11
  -------
@@ -180,6 +178,16 @@ v12.0.0
180
178
  * settings model 1.0
181
179
  * small fix in test utils
182
180
 
181
+ v12.0.0.rc1
182
+ -----------
183
+
184
+ * removed debug entries from kv store removed cost\_entries from AccessCheckAccess
185
+
186
+ v12.0.0.rc0
187
+ -----------
188
+
189
+ * Removed parking\_area\_id from AccessCheckAccess changed gate permission check in AccessService to new behavior
190
+
183
191
  v11.1.1
184
192
  -------
185
193
 
@@ -194,3 +202,6 @@ v11.1.0
194
202
  v11.0.3
195
203
  -------
196
204
 
205
+ * Fixed typo, added compute\_id as label to all metrics, convert all label values to string
206
+ * touch to get rid of skip ci on my commit
207
+ * docs update [skip ci]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openmodule
3
- Version: 14.2.0rc0
3
+ Version: 14.3.0
4
4
  Summary: Libraries for developing the arivo openmodule
5
5
  Home-page: https://gitlab.com/arivo-public/device-python/openmodule.git
6
6
  Author: ARIVO
@@ -267,6 +267,23 @@ presence_sim.enter(self.presence_sim.vehicle().lpr("A", "G ARIVO1"))
267
267
  on_enter.wait_for_call()
268
268
  ```
269
269
 
270
+ ### SignalSimulator
271
+
272
+ Util class for simulating signals
273
+
274
+ ```python
275
+ signal_simulator = SignalSimulator(lambda x: core().publish(x, "signal"))
276
+ # add_signal registers signals for RPC callbacks but does not emit signal message
277
+ signal_simulator.add_signal(False, None, SignalType.open, gate="einfahrt") # generates correct signal einfahrt-open
278
+ signal_simulator.add_signal(True, {"a": "b"}, SignalType.custom, signal_name="custom1")
279
+ # (change and) emit signals message
280
+ signal_simulator.set_signal("einfahrt-open", True)
281
+ signal_simulator.set_signal("custom1", True, {"a": "c"})
282
+ # register signal RPCs with callbacks from signal_simulator, which will automatically answer with correct response
283
+ rpc_server.register_handler("signal", "trigger_signals", TriggerSignalsRequest, TriggerSignalsResponse,
284
+ signal_simulator.trigger_signal_callback, register_schema=False)
285
+ ```
286
+
270
287
  ### MockRPCClient
271
288
 
272
289
  This is a fake RPCClient where you can either specify callback functions for RPCs or even the responses.
@@ -15,7 +15,28 @@ presence_listener = PresenceListener(core.messages)
15
15
  presence_listener.on_enter.append(some_function)
16
16
  ```
17
17
 
18
- ### Databox Upload
18
+ ## Signals
19
+
20
+ Helper class for listening on signals.
21
+ ```python
22
+ from openmodule.utils.signal_listener import SignalListener, FilterType
23
+
24
+ signal_listener = SignalListener(core.messages, core.rpc_client)
25
+ # register a listener for a signal with a filter_type specifying when the function should be called and optional tag
26
+ signal_listener.add_listener("gate1-open", FilterType.any_edge, some_function, tag="tag1")
27
+ signal_listener.add_listener("gate2-present_decision", FilterType.any_change, some_function2, tag="tag2")
28
+ # get the current value (and additional_data) of a signal, if unknown then RPC is called to get value
29
+ value = signal_listener.get_value("gate1-open")
30
+ value, additional_data = signal_listener.get_value_and_additional_data("gate1-open")
31
+ # trigger resending of signals via trigger_signals RPC for registered signals with specific tag
32
+ # or all registered signals if tag is None
33
+ signal_listener.trigger_signals(tag="tag1")
34
+ # remove listeners with specific tag or all if tag is None
35
+ signal_listener.remove_listener(tag="tag1")
36
+ ```
37
+
38
+
39
+ ## Databox Upload
19
40
 
20
41
  In the openmodule we have a utils function to simplify the upload with the databox service. The prerequisite is,
21
42
  that the upload folder `/data/om_service_databox_1/upload` is mounted correctly in the compose file to the `settings.DATABOX_UPLOAD_DIR` (default: `/upload`)
@@ -65,12 +65,17 @@ class AccessCheckAccess(OpenModuleModel):
65
65
  category: AccessCategory # category used for sorting and eventlog
66
66
  used_medium: Medium # medium of the access
67
67
  access_data: Dict # complete access data, will be used only for display and debug purposes
68
+ valid_from: Optional[datetime] # access is valid from this time. Only used for reservations
69
+ valid_to: Optional[datetime] # access is valid until this time. Only used for reservations
68
70
 
69
71
  accepted: bool # if access service decided access can enter
70
72
  reject_reason: Optional[AccessCheckRejectReason] # only if not accepted: reason for not accepted
71
73
  # additional infos shown in events if reject reason is "custom". Required if reject_reason == "custom"
72
74
  supplementary_infos: Optional[str]
73
75
 
76
+ _tz_valid_from = timezone_validator("valid_from")
77
+ _tz_valid_to = timezone_validator("valid_to")
78
+
74
79
  @root_validator(skip_on_failure=True)
75
80
  def root_validation(cls, values):
76
81
  # if category is handauf, medium_display_name must be set
@@ -5,16 +5,17 @@ from datetime import datetime
5
5
  from decimal import Decimal
6
6
  from enum import Enum
7
7
  from json.encoder import ESCAPE_ASCII
8
- from typing import Optional, Union
8
+ from typing import Optional, Union, Dict
9
9
 
10
10
  import orjson
11
11
  import zmq
12
12
  from dateutil.tz import UTC
13
- from pydantic import Field, BaseModel, validator, root_validator
13
+ from pydantic import Field, BaseModel, validator
14
14
  from pydantic.main import ROOT_KEY
15
15
 
16
16
  from openmodule import config, sentry
17
17
  from openmodule.config import settings
18
+ from settings_models.settings.common import CostEntryData as SettingsModelsCostEntryData
18
19
 
19
20
 
20
21
  def _donotuse(v, *, default):
@@ -171,20 +172,5 @@ class Gateway(OpenModuleModel):
171
172
  return f"{self.gate}/{self.direction}"
172
173
 
173
174
 
174
- class CostEntryData(OpenModuleModel):
175
- entry_type: str
176
- value: Optional[Union[int, str]]
177
- group: Optional[str]
178
- account_id: str
179
- source: Optional[str] # if None, source will be set to service name on default: e.g. "service_iocontroller"
180
- source_id: Optional[str]
181
- idempotency_key: Optional[str]
182
-
183
- @root_validator
184
- def set_value_type(cls, values):
185
- if values["entry_type"] in ["rate_change", "rate_validation", "partial_rate_change"]:
186
- values["value"] = str(values["value"])
187
- elif values["entry_type"] in ["static_cost", "pending_static_cost", "amount_validation", "time_validation"
188
- "payment"]:
189
- values["value"] = int(values["value"])
190
- return values
175
+ # to be not breaking
176
+ CostEntryData = SettingsModelsCostEntryData
@@ -20,10 +20,10 @@ class SignalType(str, Enum):
20
20
  class SignalMessage(ZMQMessage):
21
21
  signal: str
22
22
  type: Union[SignalType, str] # union so we can add new types without updating all services using signals
23
- gate: Optional[str]
24
- parking_area_id: Optional[str]
23
+ gate: Optional[str] = None
24
+ parking_area_id: Optional[str] = None
25
25
  value: bool
26
- additional_data: Optional[Dict]
26
+ additional_data: Optional[Dict] = None
27
27
 
28
28
 
29
29
  class GetSignalValueRequest(OpenModuleModel):
@@ -32,7 +32,7 @@ class GetSignalValueRequest(OpenModuleModel):
32
32
 
33
33
  class GetSignalValueResponse(OpenModuleModel):
34
34
  value: bool
35
- additional_data: Optional[Dict]
35
+ additional_data: Optional[Dict] = None
36
36
 
37
37
 
38
38
  class TriggerSignalsRequest(OpenModuleModel):
@@ -2,7 +2,7 @@ import logging
2
2
  import threading
3
3
  import time
4
4
  import warnings
5
- from typing import Dict, Optional, List, Type
5
+ from typing import Dict, Optional, List, Type, TypeVar
6
6
  from uuid import uuid4
7
7
 
8
8
  import pydantic
@@ -18,6 +18,9 @@ from openmodule.models.rpc import RPCResponse, RPCRequest, RPCErrorResult, RPCSe
18
18
  from openmodule.rpc.common import channel_to_response_topic, channel_to_request_topic
19
19
 
20
20
 
21
+ ResponseType = TypeVar('ResponseType', bound=OpenModuleModel)
22
+
23
+
21
24
  class RPCClient:
22
25
  class Exception(Exception):
23
26
  pass
@@ -54,11 +57,11 @@ class RPCClient:
54
57
  self.ready = threading.Event()
55
58
  self.cancelled = False
56
59
 
57
- def done(self):
60
+ def done(self) -> bool:
58
61
  return bool(self.response)
59
62
 
60
63
  @sentry.trace(op="rpc.result")
61
- def result(self, response_type: Type[OpenModuleModel], timeout=None):
64
+ def result(self, response_type: Type[ResponseType], timeout=None)-> ResponseType:
62
65
  if timeout and (timeout > self.timeout):
63
66
  warnings.warn("You cannot extend the timeout of an RPC after sending the request. "
64
67
  "The timeout will be limited to at most the initial timeout.", stacklevel=2)
@@ -91,8 +94,8 @@ class RPCClient:
91
94
  elif error_result.status == RPCServerError.error:
92
95
  raise RPCClient.RPCServerError(error_result.error)
93
96
  else:
94
- assert RPCClient.ServerUnknownError("RPCErrorResult successfully parsed but status not handled."
95
- " Implement this!")
97
+ raise RPCClient.ServerUnknownError("RPCErrorResult successfully parsed but status not handled."
98
+ " Implement this!")
96
99
  except pydantic.ValidationError as e:
97
100
  raise RPCClient.ValidationError(e.raw_errors, e.model)
98
101
 
@@ -158,7 +161,7 @@ class RPCClient:
158
161
  self.results.pop(rpc_id, None)
159
162
  self.sent_ids = {k: v for k, v in self.sent_ids.items() if v > now}
160
163
 
161
- def _call(self, channel: str, typ: str, request: Dict, timeout: float):
164
+ def _call(self, channel: str, typ: str, request: Dict, timeout: float) -> RPCEntry:
162
165
  rpc_id = str(uuid4())
163
166
 
164
167
  request = RPCRequest(rpc_id=rpc_id, name=settings.NAME, request=request, type=typ)
@@ -191,8 +194,8 @@ class RPCClient:
191
194
 
192
195
  return self._call(channel, type, request, timeout)
193
196
 
194
- def rpc(self, channel: str, type: str, request: [Dict, BaseModel], response_type: Type[OpenModuleModel],
195
- timeout: float = None) -> OpenModuleModel:
197
+ def rpc(self, channel: str, type: str, request: [Dict, BaseModel], response_type: Type[ResponseType],
198
+ timeout: float = None) -> ResponseType:
196
199
  with sentry.trace(name=f"{channel}/{type}", op="rpc"):
197
200
  entry = self.rpc_non_blocking(channel, type, request, timeout)
198
201
  return entry.result(response_type, timeout=timeout)
@@ -10,6 +10,7 @@ from settings_models.settings.device_keys import PairingKey, Certificate, Otp
10
10
  from settings_models.settings.enforcement import EnforcementSettings
11
11
  from settings_models.settings.gate_control import GateMode, DayMode
12
12
  from settings_models.settings.intercom import IntercomSettings
13
+ from settings_models.settings.io import SignalDefinitions, InputDefinitions
13
14
 
14
15
  from openmodule import sentry
15
16
  from openmodule.core import core
@@ -195,6 +196,14 @@ class SettingsProvider:
195
196
  def get(self, key: Literal["feature_flags"]) -> dict: # pragma: no cover
196
197
  ...
197
198
 
199
+ @overload
200
+ def get(self, key: Literal["io/signals"]) -> SignalDefinitions: # pragma: no cover
201
+ ...
202
+
203
+ @overload
204
+ def get(self, key: Literal["io/inputs"]) -> InputDefinitions: # pragma: no cover
205
+ ...
206
+
198
207
  def get(self, key: str, scope: str = "", custom_type: Optional[Type[T]] = None) -> Optional[T]:
199
208
  key_scope = join_key(key, scope)
200
209
  with self._cache_lock:
@@ -5,7 +5,7 @@ from typing import Optional, Dict, Callable, List, Tuple
5
5
 
6
6
  import zmq
7
7
  from openmodule.dispatcher import MessageDispatcher
8
- from openmodule.models.signal import SignalMessage, SignalType, GetSignalValueRequest, GetSignalValueResponse, \
8
+ from openmodule.models.signals import SignalMessage, SignalType, GetSignalValueRequest, GetSignalValueResponse, \
9
9
  TriggerSignalsRequest, TriggerSignalsResponse
10
10
  from openmodule.rpc import RPCClient
11
11
 
@@ -56,10 +56,10 @@ class Signal:
56
56
  class Listener:
57
57
  def __init__(self, signal_name: str, filter_type: FilterType, callback: Callable[[Signal], None],
58
58
  tag: Optional[str]):
59
- self.signal_name = signal_name
60
- self.filter_type = filter_type
61
- self.callback = callback
62
- self.tag = tag
59
+ self.signal_name: str = signal_name
60
+ self.filter_type: FilterType = filter_type
61
+ self.callback: Callable[[Signal], None] = callback
62
+ self.tag: Optional[str] = tag
63
63
 
64
64
  def matches(self, signal_name: str, change_type: ChangeType) -> bool:
65
65
  return self.signal_name == signal_name and self.filter_type.matches_change(change_type)
@@ -128,6 +128,7 @@ class SignalListener:
128
128
  def trigger_signals(self, tag: Optional[str] = None, timeout: float = 3.0) -> bool:
129
129
  """
130
130
  :param tag: if given, only signals of listeners with given tag are triggered
131
+ :param timeout: timeout for trigger RPC. Default is 3.0
131
132
  """
132
133
  try:
133
134
  with self.listeners_lock:
@@ -163,12 +164,12 @@ class SignalListener:
163
164
  for listener in self.listeners:
164
165
  """
165
166
  Handles the registered listeners the same as the dispatcher.
166
- Is copied here because all messages are needed to keep current_states up to date.
167
+ Is copied here because all messages are needed to keep current_states up to date.
167
168
  """
168
169
  if listener.matches(message.signal, change_type):
169
170
  try:
170
171
  listener.callback(Signal(message, change_type))
171
172
  except zmq.ContextTerminated:
172
173
  raise
173
- except Exception as e:
174
+ except Exception:
174
175
  self.log.exception("Error in signal callback")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openmodule
3
- Version: 14.2.0rc0
3
+ Version: 14.3.0
4
4
  Summary: Libraries for developing the arivo openmodule
5
5
  Home-page: https://gitlab.com/arivo-public/device-python/openmodule.git
6
6
  Author: ARIVO
@@ -74,7 +74,7 @@ openmodule/models/presence.py
74
74
  openmodule/models/privacy.py
75
75
  openmodule/models/rpc.py
76
76
  openmodule/models/settings.py
77
- openmodule/models/signal.py
77
+ openmodule/models/signals.py
78
78
  openmodule/models/validation.py
79
79
  openmodule/models/vehicle.py
80
80
  openmodule/rpc/__init__.py
@@ -97,7 +97,7 @@ openmodule/utils/package_reader.py
97
97
  openmodule/utils/presence.py
98
98
  openmodule/utils/schema.py
99
99
  openmodule/utils/settings.py
100
- openmodule/utils/signal.py
100
+ openmodule/utils/signal_listener.py
101
101
  openmodule/utils/translation.py
102
102
  openmodule/utils/validation.py
103
103
  openmodule_commands/__init__.py
@@ -123,7 +123,7 @@ openmodule_test/sentry.py
123
123
  openmodule_test/settings.py
124
124
  openmodule_test/setup.cfg
125
125
  openmodule_test/setup.py
126
- openmodule_test/signal.py
126
+ openmodule_test/signal_simulator.py
127
127
  openmodule_test/utils.py
128
128
  openmodule_test/zeromq.py
129
129
  tests/__init__.py
@@ -0,0 +1 @@
1
+ {"git_version": "d1f88e5", "is_release": true}
@@ -9,7 +9,7 @@ alembic<2,>=1.5.4
9
9
  requests~=2.32
10
10
  python-dateutil>=2.7.2
11
11
  python-dotenv==0.15.0
12
- arivo-settings_models<2,>=1.2.0
12
+ arivo-settings_models<2,>=1.3.0
13
13
  arivo-schedule~=1.2.2
14
14
 
15
15
  [commands]
@@ -1,6 +1,6 @@
1
1
  from typing import Callable, Optional
2
2
 
3
- from openmodule.models.signal import SignalMessage, TriggerSignalsRequest, TriggerSignalsResponse, \
3
+ from openmodule.models.signals import SignalMessage, TriggerSignalsRequest, TriggerSignalsResponse, \
4
4
  GetSignalValueRequest, GetSignalValueResponse, SignalType
5
5
  from openmodule.rpc import RPCClient
6
6
 
@@ -18,7 +18,7 @@ class SignalSimulator:
18
18
  signal_msg = SignalMessage(signal=signal_name, type=signal_type, gate=gate, parking_area_id=parking_area_id,
19
19
  value=value, additional_data=additional_data)
20
20
  elif signal_type == SignalType.parkinglot_full:
21
- signal_name = "parkinglot_full"
21
+ signal_name = signal_type.value
22
22
  signal_msg = SignalMessage(signal=signal_name, type=signal_type,
23
23
  value=value, additional_data=additional_data)
24
24
  elif signal_type == SignalType.area_full:
@@ -9,5 +9,5 @@ alembic>=1.5.4,<2
9
9
  requests~=2.32
10
10
  python-dateutil>=2.7.2
11
11
  python-dotenv==0.15.0
12
- arivo-settings_models>=1.2.0,<2
12
+ arivo-settings_models>=1.3.0,<2
13
13
  arivo-schedule~=1.2.2
@@ -1,5 +1,4 @@
1
1
  import json
2
-
3
2
  from datetime import datetime, timedelta
4
3
  from typing import Optional
5
4
  from unittest import TestCase
@@ -8,8 +7,7 @@ import freezegun
8
7
  import orjson
9
8
  from pydantic import ValidationError
10
9
 
11
- from openmodule import sentry
12
- from openmodule.models.base import OpenModuleModel, ZMQMessage, Gateway, timezone_validator, CostEntryData
10
+ from openmodule.models.base import OpenModuleModel, ZMQMessage, Gateway, timezone_validator
13
11
 
14
12
 
15
13
  class TestModel(OpenModuleModel):
@@ -138,11 +136,3 @@ class ZMQMessageTestCase(TestCase):
138
136
 
139
137
  res1.pop("timestamp")
140
138
  self.assertDictEqual(res1, {"name": "tä\nst", "type": "tö\tst"})
141
-
142
-
143
- class CostEntryDataTextCase(TestCase):
144
- def test_type_parsing(self):
145
- res = CostEntryData.parse_raw(b'{"entry_type": "static_cost", "value": 10, "account_id": "0"}')
146
- self.assertTrue(isinstance(res.value, int))
147
- res = CostEntryData.parse_raw(b'{"entry_type": "rate_change", "value": "10", "account_id": "0"}')
148
- self.assertTrue(isinstance(res.value, str))
@@ -1,7 +1,9 @@
1
- from openmodule.models.signal import SignalMessage, SignalType, TriggerSignalsRequest, TriggerSignalsResponse
1
+ from typing import Optional
2
+
3
+ from openmodule.models.signals import SignalMessage, SignalType, TriggerSignalsRequest, TriggerSignalsResponse
2
4
  from openmodule.rpc import RPCClient
3
- from openmodule.utils.signal import (SignalListener, GetSignalValueRequest, GetSignalValueResponse, FilterType,
4
- ChangeType, Signal)
5
+ from openmodule.utils.signal_listener import (SignalListener, GetSignalValueRequest, GetSignalValueResponse, FilterType,
6
+ ChangeType, Signal)
5
7
  from openmodule_test.core import OpenModuleCoreTestMixin
6
8
  from openmodule_test.eventlistener import MockEvent
7
9
  from openmodule_test.rpc import MockRPCClient
@@ -186,7 +188,7 @@ class TestSignalListener(OpenModuleCoreTestMixin):
186
188
  self.assertEqual(True, signal_listener.get_value("false"))
187
189
 
188
190
  def test_trigger(self):
189
- request = None
191
+ request: Optional[TriggerSignalsRequest] = None
190
192
  res = TriggerSignalsResponse(success=True)
191
193
  def trigger(req: TriggerSignalsRequest, _) -> bool:
192
194
  nonlocal request, res
@@ -227,4 +229,3 @@ class TestSignalListener(OpenModuleCoreTestMixin):
227
229
  with self.assertLogs() as log:
228
230
  self.assertEqual(False, signal_listener.trigger_signals())
229
231
  self.assertIn("Error while triggering signals.", str(log.output))
230
-
@@ -1 +0,0 @@
1
- {"git_version": "06249ea", "is_release": true}
File without changes
File without changes
File without changes
File without changes