OTAnalytics 0.7.3__tar.gz → 0.7.5__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 (704) hide show
  1. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/benchmark.yml +2 -2
  2. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/regression-test.yml +1 -1
  3. otanalytics-0.7.5/.github/workflows/system-test.yml +34 -0
  4. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/test.yml +2 -2
  5. {otanalytics-0.7.3 → otanalytics-0.7.5}/.gitignore +6 -0
  6. {otanalytics-0.7.3 → otanalytics-0.7.5}/.pre-commit-config.yaml +19 -18
  7. otanalytics-0.7.5/.run/pytest-acceptance-tests.run.xml +19 -0
  8. otanalytics-0.7.5/.run/pytest-benchmark-tests.run.xml +19 -0
  9. otanalytics-0.7.5/.run/pytest-regression-tests.run.xml +19 -0
  10. otanalytics-0.7.5/.run/pytest-unit-tests.run.xml +19 -0
  11. otanalytics-0.7.5/CONTEXT.md +56 -0
  12. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_filter.py +2 -1
  13. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_project.py +3 -3
  14. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/dummy_viewmodel.py +193 -67
  15. otanalytics-0.7.5/OTAnalytics/adapter_ui/file_export_dto.py +31 -0
  16. otanalytics-0.7.5/OTAnalytics/adapter_ui/local_file_providers.py +57 -0
  17. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/ui_factory.py +1 -1
  18. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/view_model.py +4 -1
  19. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/traffic_counting.py +6 -3
  20. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/traffic_counting_specification.py +12 -5
  21. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/application.py +75 -13
  22. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/config.py +9 -0
  23. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/config_specification.py +1 -1
  24. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/datastore.py +6 -51
  25. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/eventlist.py +12 -0
  26. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/event_list.py +2 -0
  27. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/road_user_assignments.py +4 -0
  28. otanalytics-0.7.5/OTAnalytics/application/export_path_builder.py +54 -0
  29. otanalytics-0.7.5/OTAnalytics/application/files.py +19 -0
  30. otanalytics-0.7.5/OTAnalytics/application/key_prefix.py +34 -0
  31. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/cli_parser.py +1 -1
  32. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/config_parser.py +23 -0
  33. otanalytics-0.7.5/OTAnalytics/application/parser/track_parser.py +54 -0
  34. otanalytics-0.7.5/OTAnalytics/application/progress.py +195 -0
  35. otanalytics-0.7.5/OTAnalytics/application/project_location.py +43 -0
  36. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/resources/resource_manager.py +25 -0
  37. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/run_configuration.py +1 -1
  38. otanalytics-0.7.5/OTAnalytics/application/startup_config.py +54 -0
  39. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/state.py +28 -0
  40. otanalytics-0.7.5/OTAnalytics/application/upload_otconfig.py +24 -0
  41. otanalytics-0.7.5/OTAnalytics/application/use_cases/ask_for_load_window.py +47 -0
  42. otanalytics-0.7.5/OTAnalytics/application/use_cases/config.py +85 -0
  43. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/config_has_changed.py +4 -1
  44. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/export_events.py +24 -2
  45. otanalytics-0.7.5/OTAnalytics/application/use_cases/flow_repository.py +116 -0
  46. otanalytics-0.7.5/OTAnalytics/application/use_cases/load_otconfig.py +130 -0
  47. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/load_otflow.py +5 -6
  48. otanalytics-0.7.5/OTAnalytics/application/use_cases/load_track_files.py +188 -0
  49. otanalytics-0.7.5/OTAnalytics/application/use_cases/provide_input_files.py +35 -0
  50. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/quick_save_configuration.py +2 -2
  51. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_state.py +4 -0
  52. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/road_user_assignment_export.py +53 -12
  53. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/suggest_save_path.py +58 -5
  54. otanalytics-0.7.5/OTAnalytics/application/use_cases/track_export.py +31 -0
  55. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_statistics_export.py +47 -13
  56. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/event.py +26 -0
  57. otanalytics-0.7.5/OTAnalytics/domain/georeference.py +56 -0
  58. otanalytics-0.7.5/OTAnalytics/domain/load_window.py +65 -0
  59. otanalytics-0.7.5/OTAnalytics/domain/progress.py +161 -0
  60. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track.py +12 -0
  61. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/filtered_track_dataset.py +3 -0
  62. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/track_dataset.py +33 -0
  63. otanalytics-0.7.5/OTAnalytics/domain/transfer_mode.py +8 -0
  64. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/file_helpers.py +7 -2
  65. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/filter_polars_track_dataset.py +11 -0
  66. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/polars_track_store.py +225 -13
  67. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/python_track_store.py +19 -0
  68. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/polars_geometry_store.py +367 -120
  69. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_store.py +37 -0
  70. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/argparse_cli_parser.py +8 -6
  71. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/convert_ottrk_to_feathers.py +28 -2
  72. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/export.py +55 -16
  73. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/feathers_parser.py +22 -86
  74. otanalytics-0.7.5/OTAnalytics/plugin_parser/georeference_parsing.py +30 -0
  75. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/otconfig_parser.py +118 -39
  76. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/ottrk_dataformat.py +15 -0
  77. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/otvision_parser.py +13 -6
  78. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/pandas_parser.py +8 -0
  79. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/road_user_assignment_export.py +11 -6
  80. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/streaming_parser.py +2 -5
  81. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/track_export.py +31 -51
  82. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/track_statistics_export.py +25 -16
  83. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/eventlist_exporter/eventlist_exporter.py +38 -17
  84. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/track_viz.py +7 -0
  85. otanalytics-0.7.5/OTAnalytics/plugin_s3/cleanup.py +58 -0
  86. otanalytics-0.7.5/OTAnalytics/plugin_s3/config/env_vars.py +76 -0
  87. otanalytics-0.7.5/OTAnalytics/plugin_s3/config/parsing.py +126 -0
  88. otanalytics-0.7.5/OTAnalytics/plugin_s3/config/s3.py +33 -0
  89. otanalytics-0.7.5/OTAnalytics/plugin_s3/download.py +37 -0
  90. otanalytics-0.7.5/OTAnalytics/plugin_s3/download_objects.py +106 -0
  91. otanalytics-0.7.5/OTAnalytics/plugin_s3/filename_timestamp.py +44 -0
  92. otanalytics-0.7.5/OTAnalytics/plugin_s3/list_objects.py +45 -0
  93. otanalytics-0.7.5/OTAnalytics/plugin_s3/otconfig_upload.py +15 -0
  94. otanalytics-0.7.5/OTAnalytics/plugin_s3/project_location.py +37 -0
  95. otanalytics-0.7.5/OTAnalytics/plugin_s3/s3_file_providers.py +267 -0
  96. otanalytics-0.7.5/OTAnalytics/plugin_s3/select_objects.py +45 -0
  97. otanalytics-0.7.5/OTAnalytics/plugin_s3/store.py +47 -0
  98. otanalytics-0.7.5/OTAnalytics/plugin_s3/upload.py +46 -0
  99. otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/track_dataset_writer.py +42 -0
  100. otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/domain.py +30 -0
  101. otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/pandas.py +44 -0
  102. otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/polars.py +43 -0
  103. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/application_starter.py +38 -0
  104. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/base_application.py +57 -9
  105. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/cli.py +66 -44
  106. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/ctk_ui_factory.py +20 -21
  107. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_filter.py +5 -1
  108. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/helpers.py +12 -2
  109. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_export_counts.py +76 -10
  110. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_export_file.py +56 -14
  111. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/gui_application.py +30 -2
  112. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_application.py +155 -3
  113. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/export_counts_dialog.py +101 -36
  114. otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_chooser_dialog.py +279 -0
  115. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_picker.py +21 -12
  116. otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/dialogs/load_window_dialog.py +128 -0
  117. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/constants.py +9 -0
  118. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/forms.py +14 -2
  119. otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/nicegui/progressbar.py +215 -0
  120. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/container.py +3 -1
  121. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/visualization_offset_slider_form.py +7 -0
  122. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/analysis_form/container.py +4 -1
  123. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/container.py +0 -1
  124. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/container.py +115 -7
  125. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form/layers_form.py +15 -2
  126. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/ui_factory.py +80 -21
  127. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/visualization/counts/counts_plotter.py +3 -1
  128. otanalytics-0.7.5/OTAnalytics/version.py +1 -0
  129. {otanalytics-0.7.3 → otanalytics-0.7.5}/PKG-INFO +4 -3
  130. {otanalytics-0.7.3 → otanalytics-0.7.5}/README.md +1 -1
  131. {otanalytics-0.7.3 → otanalytics-0.7.5}/pyproject.toml +12 -0
  132. otanalytics-0.7.5/tests/acceptance/conftest.py +150 -0
  133. otanalytics-0.7.5/tests/acceptance/test_create_important_test_data.py +313 -0
  134. otanalytics-0.7.5/tests/acceptance/test_export_track_statistics.py +62 -0
  135. otanalytics-0.7.5/tests/acceptance/test_filters_navigation_buttons.py +454 -0
  136. otanalytics-0.7.5/tests/acceptance/test_load_from_s3.py +234 -0
  137. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_project_information.py +7 -10
  138. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_sections_and_flows.py +32 -24
  139. otanalytics-0.7.5/tests/acceptance/test_tracks_add_and_display.py +213 -0
  140. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_video_import_and_display.py +11 -12
  141. otanalytics-0.7.3/tests/benchmark_otanalytics.py → otanalytics-0.7.5/tests/benchmark/test_benchmark_otanalytics.py +3 -2
  142. otanalytics-0.7.5/tests/data/acceptance/all_tracks.png +0 -0
  143. otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_assigned_to_flows.png +0 -0
  144. otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_intersecting_sections.png +0 -0
  145. otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_not_assigned_to_flows.png +0 -0
  146. otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_not_intersecting_sections.png +0 -0
  147. otanalytics-0.7.5/tests/data/acceptance/offset_before.png +0 -0
  148. otanalytics-0.7.5/tests/data/acceptance/start_end_all.png +0 -0
  149. otanalytics-0.7.5/tests/data/acceptance/start_end_assigned_to_flows.png +0 -0
  150. otanalytics-0.7.5/tests/data/acceptance/start_end_intersecting_sections.png +0 -0
  151. otanalytics-0.7.5/tests/data/acceptance/start_end_not_assigned_to_flows.png +0 -0
  152. otanalytics-0.7.5/tests/data/acceptance/start_end_not_intersecting_sections.png +0 -0
  153. otanalytics-0.7.5/tests/data/sections_created_test_file.otconfig +87 -0
  154. otanalytics-0.7.5/tests/data/track_statistics_reference.csv +2 -0
  155. otanalytics-0.7.5/tests/integration/OTAnalytics/plugin_s3/test_load_from_rustfs.py +252 -0
  156. otanalytics-0.7.5/tests/system/OTAnalytics/plugin_ui/test_cli.py +209 -0
  157. otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_loading.py +118 -0
  158. otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_otconfig.py +254 -0
  159. otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_save_otconfig.py +99 -0
  160. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/adapter_ui/test_helpers.py +27 -0
  161. otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_local_file_providers.py +94 -0
  162. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/analysis/test_traffic_counting.py +13 -4
  163. otanalytics-0.7.5/tests/unit/OTAnalytics/application/parser/test_track_parser.py +156 -0
  164. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_current_key_prefix.py +58 -0
  165. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_datastore.py +2 -6
  166. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_eventlist.py +95 -0
  167. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_export_path_builder.py +46 -0
  168. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_key_prefix.py +54 -0
  169. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_progress.py +191 -0
  170. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_project_location.py +57 -0
  171. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_run_configuration.py +2 -2
  172. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_startup_config.py +68 -0
  173. otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_upload_otconfig.py +30 -0
  174. otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_config.py +154 -0
  175. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_config_has_changed.py +5 -0
  176. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_flow_repository.py +59 -7
  177. otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_load_otconfig.py +343 -0
  178. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_load_otflow.py +8 -8
  179. otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_load_track_files.py +704 -0
  180. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_quick_save_configuration.py +17 -17
  181. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_state.py +13 -0
  182. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_road_user_assignment_export.py +3 -2
  183. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_suggest_save_path.py +1 -1
  184. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_event.py +56 -0
  185. otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_georeference.py +54 -0
  186. otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_load_window.py +83 -0
  187. otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_track.py +35 -0
  188. otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_transfer_mode.py +26 -0
  189. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_video.py +1 -1
  190. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/test_filtered_track_dataset.py +8 -0
  191. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_cli/test_cli_application.py +16 -0
  192. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_filter_polars_track_store.py +50 -0
  193. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/test_polars_track_store.py +1535 -0
  194. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_python_track_store.py +119 -1
  195. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_track_store.py +195 -0
  196. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/track_geometry_store/test_polars_geometry_store.py +1604 -0
  197. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/shapely/__init__.py +0 -0
  198. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/simple/__init__.py +0 -0
  199. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect_parallelization/__init__.py +0 -0
  200. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_number_of_tracks_to_be_validated/__init__.py +0 -0
  201. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/__init__.py +0 -0
  202. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_number_of_tracks_to_be_validated/test_calculation_strategy.py +1 -1
  203. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/__init__.py +0 -0
  204. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/conftest.py +32 -0
  205. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_convert_ottrk_to_feathers.py +68 -0
  206. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_export.py +34 -27
  207. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_feathers_parser.py +281 -1
  208. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_georeference_parsing.py +23 -0
  209. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_otconfig_key_prefix.py +162 -0
  210. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_otconfig_parser.py +104 -3
  211. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_otconfig_substitution.py +186 -0
  212. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_otvision_parser.py +56 -0
  213. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_pandas_parser.py +87 -0
  214. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_road_user_assignment_export.py +163 -0
  215. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_track_export.py +176 -0
  216. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_progress/__init__.py +0 -0
  217. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/__init__.py +0 -0
  218. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/test_eventlist_exporter.py +89 -0
  219. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/track_visualization/__init__.py +0 -0
  220. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/__init__.py +0 -0
  221. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/__init__.py +0 -0
  222. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/test_env_vars.py +49 -0
  223. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/test_parsing.py +186 -0
  224. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_cleanup.py +108 -0
  225. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_download.py +58 -0
  226. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_download_objects.py +218 -0
  227. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_filename_timestamp.py +55 -0
  228. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_list_objects.py +126 -0
  229. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_otconfig_upload.py +36 -0
  230. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_project_location.py +72 -0
  231. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_read_video_name.py +130 -0
  232. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_s3_file_providers.py +321 -0
  233. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_select_objects.py +96 -0
  234. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_upload.py +61 -0
  235. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/__init__.py +0 -0
  236. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/__init__.py +0 -0
  237. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/conftest.py +8 -0
  238. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_domain.py +116 -0
  239. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_pandas.py +113 -0
  240. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_polars.py +108 -0
  241. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_track_dataset_writer.py +91 -0
  242. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/__init__.py +0 -0
  243. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_chooser_dialog.py +2 -1
  244. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_load_window_dialog.py +201 -0
  245. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/nicegui/test_progressbar.py +279 -0
  246. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/__init__.py +0 -0
  247. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/test_container.py +84 -0
  248. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/__init__.py +0 -0
  249. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/test_container.py +85 -0
  250. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/test_ui_factory.py +66 -0
  251. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_cli.py +157 -13
  252. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_export_counts_dialog.py +90 -40
  253. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_file_chooser_dialog.py +144 -10
  254. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/test_nicegui_application.py +126 -0
  255. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/test_nicegui_preload.py +64 -0
  256. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/visualization/__init__.py +0 -0
  257. otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/visualization/counts/__init__.py +0 -0
  258. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/visualization/counts/test_counts_plotter.py +7 -2
  259. otanalytics-0.7.5/tests/unit/__init__.py +0 -0
  260. otanalytics-0.7.5/tests/utils/__init__.py +0 -0
  261. otanalytics-0.7.5/tests/utils/app_environment.py +67 -0
  262. otanalytics-0.7.5/tests/utils/builders/__init__.py +0 -0
  263. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/event_builder.py +4 -0
  264. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/road_user_assignment.py +4 -0
  265. otanalytics-0.7.5/tests/utils/builders/s3_config_builder.py +34 -0
  266. otanalytics-0.7.5/tests/utils/builders/s3_store_builder.py +21 -0
  267. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_builder.py +4 -0
  268. otanalytics-0.7.5/tests/utils/playwright_helpers.py +1414 -0
  269. otanalytics-0.7.5/tests/utils/progress.py +24 -0
  270. otanalytics-0.7.5/tests/utils/rustfs_container.py +62 -0
  271. {otanalytics-0.7.3 → otanalytics-0.7.5}/uv.lock +572 -302
  272. otanalytics-0.7.3/OTAnalytics/adapter_ui/file_export_dto.py +0 -8
  273. otanalytics-0.7.3/OTAnalytics/application/progress.py +0 -95
  274. otanalytics-0.7.3/OTAnalytics/application/use_cases/config.py +0 -52
  275. otanalytics-0.7.3/OTAnalytics/application/use_cases/flow_repository.py +0 -101
  276. otanalytics-0.7.3/OTAnalytics/application/use_cases/load_otconfig.py +0 -76
  277. otanalytics-0.7.3/OTAnalytics/application/use_cases/load_track_files.py +0 -76
  278. otanalytics-0.7.3/OTAnalytics/application/use_cases/track_export.py +0 -57
  279. otanalytics-0.7.3/OTAnalytics/domain/progress.py +0 -84
  280. otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_chooser_dialog.py +0 -155
  281. otanalytics-0.7.3/OTAnalytics/version.py +0 -1
  282. otanalytics-0.7.3/tests/OTAnalytics/application/test_progress.py +0 -53
  283. otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_config.py +0 -53
  284. otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_load_otconfig.py +0 -164
  285. otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_load_track_files.py +0 -244
  286. otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_track_export.py +0 -49
  287. otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/test_polars_track_store.py +0 -626
  288. otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/track_geometry_store/test_polars_geometry_store.py +0 -733
  289. otanalytics-0.7.3/tests/OTAnalytics/plugin_parser/test_road_user_assignment_export.py +0 -82
  290. otanalytics-0.7.3/tests/OTAnalytics/plugin_parser/test_track_export.py +0 -59
  291. otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes/test_eventlist_exporter.py +0 -15
  292. otanalytics-0.7.3/tests/acceptance/conftest.py +0 -86
  293. otanalytics-0.7.3/tests/utils/playwright_helpers.py +0 -599
  294. otanalytics-0.7.3/update_precommit.py +0 -272
  295. {otanalytics-0.7.3 → otanalytics-0.7.5}/.editorconfig +0 -0
  296. {otanalytics-0.7.3 → otanalytics-0.7.5}/.flake8 +0 -0
  297. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/dependabot.yml +0 -0
  298. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/acceptance-test.yml +0 -0
  299. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/build-nightly.yml +0 -0
  300. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/build-release.yml +0 -0
  301. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/linter.yml +0 -0
  302. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/release-pypi.yml +0 -0
  303. {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/release-testpypi.yml +0 -0
  304. {otanalytics-0.7.3 → otanalytics-0.7.5}/.junie/guidelines.md +0 -0
  305. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Scalene-CLI (benchmark).run.xml +0 -0
  306. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Scalene-CLI.run.xml +0 -0
  307. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-CLI (benchmark files).run.xml +0 -0
  308. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-CLI.run.xml +0 -0
  309. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI (mit Benchmarkdaten).run.xml +0 -0
  310. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI (mit Testdaten).run.xml +0 -0
  311. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI.run.xml +0 -0
  312. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-WebUI (mit Testdaten).run.xml +0 -0
  313. {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/pytest-in-tests.run.xml +0 -0
  314. {otanalytics-0.7.3 → otanalytics-0.7.5}/.shellcheckrc +0 -0
  315. {otanalytics-0.7.3 → otanalytics-0.7.5}/.vscode/launch.json +0 -0
  316. {otanalytics-0.7.3 → otanalytics-0.7.5}/.vscode/settings.json +0 -0
  317. {otanalytics-0.7.3 → otanalytics-0.7.5}/.yamllint.yaml +0 -0
  318. {otanalytics-0.7.3 → otanalytics-0.7.5}/LICENSE +0 -0
  319. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/__init__.py +0 -0
  320. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/__main__.py +0 -0
  321. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_intersect/__init__.py +0 -0
  322. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/__init__.py +0 -0
  323. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_button_quick_save_config.py +0 -0
  324. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_canvas.py +0 -0
  325. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame.py +0 -0
  326. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_canvas.py +0 -0
  327. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_offset.py +0 -0
  328. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_remark.py +0 -0
  329. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_track_plotting.py +0 -0
  330. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_track_statistics.py +0 -0
  331. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_main_window.py +0 -0
  332. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_progressbar_popup.py +0 -0
  333. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_treeview_interface.py +0 -0
  334. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/cancel_export_counts.py +0 -0
  335. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/cancel_export_file.py +0 -0
  336. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/default_values.py +0 -0
  337. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/dto.py +0 -0
  338. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/file_selection_cancelled.py +0 -0
  339. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/flow_adapter.py +0 -0
  340. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/flow_dto.py +0 -0
  341. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/helpers.py +0 -0
  342. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/info_box.py +0 -0
  343. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/message_box.py +0 -0
  344. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/text_resources.py +0 -0
  345. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/ui_texts.py +0 -0
  346. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_visualization/__init__.py +0 -0
  347. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_visualization/color_provider.py +0 -0
  348. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/__init__.py +0 -0
  349. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/__init__.py +0 -0
  350. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/intersect.py +0 -0
  351. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/road_user_assignment.py +0 -0
  352. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/exception.py +0 -0
  353. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/__init__.py +0 -0
  354. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/export_mode.py +0 -0
  355. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/track_statistics.py +0 -0
  356. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/geometry.py +0 -0
  357. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/logger.py +0 -0
  358. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/__init__.py +0 -0
  359. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/deserializer.py +0 -0
  360. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/flow_parser.py +0 -0
  361. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/playback.py +0 -0
  362. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/plotting.py +0 -0
  363. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/project.py +0 -0
  364. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/resources/__init__.py +0 -0
  365. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/track_filter.py +0 -0
  366. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/track_input_source.py +0 -0
  367. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/ui/__init__.py +0 -0
  368. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/ui/frame_control.py +0 -0
  369. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/__init__.py +0 -0
  370. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/add_new_remark.py +0 -0
  371. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/apply_cli_cuts.py +0 -0
  372. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/assignment_repository.py +0 -0
  373. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/clear_repositories.py +0 -0
  374. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_events.py +0 -0
  375. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_intersection_events.py +0 -0
  376. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_road_user_assignments.py +0 -0
  377. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/cut_tracks_with_sections.py +0 -0
  378. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/editor/__init__.py +0 -0
  379. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/editor/section_editor.py +0 -0
  380. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/event_repository.py +0 -0
  381. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/filter_visualization.py +0 -0
  382. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/flow_statistics.py +0 -0
  383. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/generate_flows.py +0 -0
  384. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/get_current_project.py +0 -0
  385. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/get_current_remark.py +0 -0
  386. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/highlight_intersections.py +0 -0
  387. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/inside_cutting_section.py +0 -0
  388. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/intersection_repository.py +0 -0
  389. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/number_of_tracks_to_be_validated.py +0 -0
  390. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/preload_input_files.py +0 -0
  391. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_application.py +0 -0
  392. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_project_config.py +0 -0
  393. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/revert_cuts.py +0 -0
  394. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/save_otflow.py +0 -0
  395. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/section_repository.py +0 -0
  396. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/start_new_project.py +0 -0
  397. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_repository.py +0 -0
  398. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_statistics.py +0 -0
  399. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/update_count_plots.py +0 -0
  400. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/update_project.py +0 -0
  401. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/video_repository.py +0 -0
  402. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/assets/OpenTrafficCam_800.png +0 -0
  403. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/__init__.py +0 -0
  404. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/common.py +0 -0
  405. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/date.py +0 -0
  406. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/files.py +0 -0
  407. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/filter.py +0 -0
  408. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/flow.py +0 -0
  409. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/geometry.py +0 -0
  410. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/intersect.py +0 -0
  411. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/observer.py +0 -0
  412. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/otc_classes.py +0 -0
  413. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/remark.py +0 -0
  414. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/section.py +0 -0
  415. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/tls8plus1_classes.py +0 -0
  416. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/__init__.py +0 -0
  417. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_id_provider.py +0 -0
  418. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_repository.py +0 -0
  419. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/types.py +0 -0
  420. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/video.py +0 -0
  421. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/__init__.py +0 -0
  422. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/time_profiling.py +0 -0
  423. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_cli/__init__.py +0 -0
  424. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_cli/cli_application.py +0 -0
  425. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/__init__.py +0 -0
  426. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/filter_pandas_track_store.py +0 -0
  427. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/get_current_frame_track_segments.py +0 -0
  428. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/pandas_track_dataset_factory.py +0 -0
  429. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/polars_track_id_set.py +0 -0
  430. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/__init__.py +0 -0
  431. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/shapely_store.py +0 -0
  432. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/__init__.py +0 -0
  433. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/dataframe_filter.py +0 -0
  434. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/pandas_track_id.py +0 -0
  435. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/__init__.py +0 -0
  436. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/shapely/__init__.py +0 -0
  437. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/shapely/mapping.py +0 -0
  438. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple/__init__.py +0 -0
  439. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple/cut_tracks_with_sections.py +0 -0
  440. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple_intersect.py +0 -0
  441. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/__init__.py +0 -0
  442. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/multiprocessing.py +0 -0
  443. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/sequential.py +0 -0
  444. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/__init__.py +0 -0
  445. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/calculation_strategy.py +0 -0
  446. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/metric_rates_builder.py +0 -0
  447. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/__init__.py +0 -0
  448. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/metric_rates.py +0 -0
  449. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/number_of_tracks_to_be_validated.py +0 -0
  450. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/tracks_as_dataframe_provider.py +0 -0
  451. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/__init__.py +0 -0
  452. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/dataformat_versions.py +0 -0
  453. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/json_parser.py +0 -0
  454. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/__init__.py +0 -0
  455. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/lazy_tqdm_progressbar.py +0 -0
  456. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/multiprocessing_progress.py +0 -0
  457. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/tqdm_progressbar.py +0 -0
  458. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/__init__.py +0 -0
  459. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/event_visualization.py +0 -0
  460. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/eventlist_exporter/__init__.py +0 -0
  461. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/__init__.py +0 -0
  462. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/cv2_image.py +0 -0
  463. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/numpy_image.py +0 -0
  464. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/pil_image.py +0 -0
  465. {otanalytics-0.7.3/OTAnalytics/plugin_track_input_source → otanalytics-0.7.5/OTAnalytics/plugin_s3}/__init__.py +0 -0
  466. {otanalytics-0.7.3/OTAnalytics/plugin_ui → otanalytics-0.7.5/OTAnalytics/plugin_s3/config}/__init__.py +0 -0
  467. {otanalytics-0.7.3/OTAnalytics/plugin_ui/customtkinter_gui → otanalytics-0.7.5/OTAnalytics/plugin_track_export}/__init__.py +0 -0
  468. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui → otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv}/__init__.py +0 -0
  469. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/dialogs → otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers}/__init__.py +0 -0
  470. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/forms → otanalytics-0.7.5/OTAnalytics/plugin_track_input_source}/__init__.py +0 -0
  471. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_track_input_source/single_batch.py +0 -0
  472. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_track_input_source/template.py +0 -0
  473. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui → otanalytics-0.7.5/OTAnalytics/plugin_ui}/__init__.py +0 -0
  474. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/ctk_application.py +0 -0
  475. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements → otanalytics-0.7.5/OTAnalytics/plugin_ui/customtkinter_gui}/__init__.py +0 -0
  476. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/abstract_ctk_canvas.py +0 -0
  477. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/abstract_ctk_frame.py +0 -0
  478. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/button_quick_save_config.py +0 -0
  479. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/canvas_observer.py +0 -0
  480. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/constants.py +0 -0
  481. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/custom_containers.py +0 -0
  482. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_analysis.py +0 -0
  483. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_bbox_offset.py +0 -0
  484. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_canvas.py +0 -0
  485. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_configuration.py +0 -0
  486. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_date_filter_control.py +0 -0
  487. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_files.py +0 -0
  488. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_flows.py +0 -0
  489. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_project.py +0 -0
  490. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_remarks.py +0 -0
  491. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_sections.py +0 -0
  492. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_track_plotting.py +0 -0
  493. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_track_statistics.py +0 -0
  494. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_tracks.py +0 -0
  495. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_videos.py +0 -0
  496. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/gui.py +0 -0
  497. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/line_section.py +0 -0
  498. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/messagebox.py +0 -0
  499. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/scrollable_xy_frame.py +0 -0
  500. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/state.py +0 -0
  501. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/style.py +0 -0
  502. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_flows.py +0 -0
  503. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_progress.py +0 -0
  504. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_sections.py +0 -0
  505. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_template.py +0 -0
  506. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/treeview_template.py +0 -0
  507. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/utility_widgets.py +0 -0
  508. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/intersection_repository.py +0 -0
  509. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui}/__init__.py +0 -0
  510. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/config.py +0 -0
  511. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/page_builders → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/dialogs}/__init__.py +0 -0
  512. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/edit_flow_dialog.py +0 -0
  513. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/edit_section_dialog.py +0 -0
  514. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/endpoints.py +0 -0
  515. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/file_utils.py +0 -0
  516. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/forms}/__init__.py +0 -0
  517. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/forms/offset_slider_form.py +0 -0
  518. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/nicegui}/__init__.py +0 -0
  519. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/add_video_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements}/__init__.py +0 -0
  520. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/button_form.py +0 -0
  521. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/dialog.py +0 -0
  522. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/table.py +0 -0
  523. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/nicegui_webserver.py +0 -0
  524. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/page_builder.py +0 -0
  525. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/circle.py +0 -0
  526. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/circle_resources.py +0 -0
  527. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/line.py +0 -0
  528. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/line_resources.py +0 -0
  529. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/polyline.py +0 -0
  530. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/section_resources.py +0 -0
  531. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/analysis_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme}/__init__.py +0 -0
  532. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/color.py +0 -0
  533. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/global_theme.py +0 -0
  534. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/nicegui_layout_components.py +0 -0
  535. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/validation.py +0 -0
  536. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/page_builders}/__init__.py +0 -0
  537. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/page_builders/main_page_builder.py +0 -0
  538. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages}/__init__.py +0 -0
  539. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form}/__init__.py +0 -0
  540. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/add_tracks_form.py +0 -0
  541. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/add_video_form}/__init__.py +0 -0
  542. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_video_form/container.py +0 -0
  543. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/svz_metadata_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/analysis_form}/__init__.py +0 -0
  544. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/track_statistics_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form}/__init__.py +0 -0
  545. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/canvas_form.py +0 -0
  546. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/container.py +0 -0
  547. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/files_form.py +0 -0
  548. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar}/__init__.py +0 -0
  549. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar/container.py +0 -0
  550. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar/project_form.py +0 -0
  551. {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form}/__init__.py +0 -0
  552. {otanalytics-0.7.3/OTAnalytics/plugin_ui/utils → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form}/__init__.py +0 -0
  553. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/container.py +0 -0
  554. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/flow_form.py +0 -0
  555. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/sections_form.py +0 -0
  556. {otanalytics-0.7.3/OTAnalytics/plugin_ui/visualization → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/svz_metadata_form}/__init__.py +0 -0
  557. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/svz_metadata_form/svz_metadata_form.py +0 -0
  558. {otanalytics-0.7.3/OTAnalytics/plugin_ui/visualization/counts → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/track_statistics_form}/__init__.py +0 -0
  559. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/track_statistics_form/container.py +0 -0
  560. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters.py +0 -0
  561. {otanalytics-0.7.3/tests/OTAnalytics → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form}/__init__.py +0 -0
  562. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers.py +0 -0
  563. {otanalytics-0.7.3/tests/OTAnalytics/adapter_intersect → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form}/__init__.py +0 -0
  564. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form/container.py +0 -0
  565. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/workspace.py +0 -0
  566. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/test_constants.py +0 -0
  567. {otanalytics-0.7.3/tests/OTAnalytics/application → otanalytics-0.7.5/OTAnalytics/plugin_ui/utils}/__init__.py +0 -0
  568. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/utils/asyncio_helper.py +0 -0
  569. {otanalytics-0.7.3/tests/OTAnalytics/application/analysis → otanalytics-0.7.5/OTAnalytics/plugin_ui/visualization}/__init__.py +0 -0
  570. {otanalytics-0.7.3/tests/OTAnalytics/application/resources → otanalytics-0.7.5/OTAnalytics/plugin_ui/visualization/counts}/__init__.py +0 -0
  571. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/visualization/visualization.py +0 -0
  572. {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_video_processing/video_reader.py +0 -0
  573. {otanalytics-0.7.3 → otanalytics-0.7.5}/clean-up-repository.sh +0 -0
  574. {otanalytics-0.7.3 → otanalytics-0.7.5}/config.yml +0 -0
  575. {otanalytics-0.7.3 → otanalytics-0.7.5}/convert_ottrk_to_feather.py +0 -0
  576. {otanalytics-0.7.3 → otanalytics-0.7.5}/install.cmd +0 -0
  577. {otanalytics-0.7.3 → otanalytics-0.7.5}/install.sh +0 -0
  578. {otanalytics-0.7.3 → otanalytics-0.7.5}/install_dev.cmd +0 -0
  579. {otanalytics-0.7.3 → otanalytics-0.7.5}/install_dev.sh +0 -0
  580. {otanalytics-0.7.3 → otanalytics-0.7.5}/requirements.txt +0 -0
  581. {otanalytics-0.7.3 → otanalytics-0.7.5}/scripts/check_clean_architecture.py +0 -0
  582. {otanalytics-0.7.3 → otanalytics-0.7.5}/start_gui.cmd +0 -0
  583. {otanalytics-0.7.3 → otanalytics-0.7.5}/start_gui.sh +0 -0
  584. {otanalytics-0.7.3/tests/OTAnalytics/application/ui → otanalytics-0.7.5/tests}/__init__.py +0 -0
  585. {otanalytics-0.7.3/tests/OTAnalytics/application/use_cases → otanalytics-0.7.5/tests/acceptance}/__init__.py +0 -0
  586. {otanalytics-0.7.3/tests/OTAnalytics/domain → otanalytics-0.7.5/tests/benchmark}/__init__.py +0 -0
  587. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/conftest.py +0 -0
  588. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Sample_FR20_2020-01-01_00-00-00.ottrk +0 -0
  589. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
  590. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otconfig +0 -0
  591. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otflow +0 -0
  592. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
  593. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
  594. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
  595. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/cyclists_2025-12-19_10-18-43.otconfig +0 -0
  596. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/section.json.bz2.otflow +0 -0
  597. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/test_name.otconfig +0 -0
  598. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/trucks_2025-12-19_10-19-22.otconfig +0 -0
  599. {otanalytics-0.7.3/tests/OTAnalytics/domain/track_dataset → otanalytics-0.7.5/tests/integration/OTAnalytics}/__init__.py +0 -0
  600. {otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore → otanalytics-0.7.5/tests/integration/OTAnalytics/plugin_s3}/__init__.py +0 -0
  601. {otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/track_geometry_store → otanalytics-0.7.5/tests/integration}/__init__.py +0 -0
  602. {otanalytics-0.7.3/tests/OTAnalytics/plugin_filter → otanalytics-0.7.5/tests/regression}/__init__.py +0 -0
  603. /otanalytics-0.7.3/tests/regression_otanalytics.py → /otanalytics-0.7.5/tests/regression/test_regression_otanalytics.py +0 -0
  604. {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect → otanalytics-0.7.5/tests/system/OTAnalytics}/__init__.py +0 -0
  605. {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect/shapely → otanalytics-0.7.5/tests/system/OTAnalytics/plugin_ui}/__init__.py +0 -0
  606. {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect/simple → otanalytics-0.7.5/tests/system}/__init__.py +0 -0
  607. {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect_parallelization → otanalytics-0.7.5/tests/unit/OTAnalytics}/__init__.py +0 -0
  608. {otanalytics-0.7.3/tests/OTAnalytics/plugin_number_of_tracks_to_be_validated → otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_intersect}/__init__.py +0 -0
  609. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/adapter_intersect/test_mapping.py +0 -0
  610. {otanalytics-0.7.3/tests/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz → otanalytics-0.7.5/tests/unit/OTAnalytics/application}/__init__.py +0 -0
  611. {otanalytics-0.7.3/tests/OTAnalytics/plugin_parser → otanalytics-0.7.5/tests/unit/OTAnalytics/application/analysis}/__init__.py +0 -0
  612. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/analysis/test_road_user_assignment.py +0 -0
  613. {otanalytics-0.7.3/tests/OTAnalytics/plugin_progress → otanalytics-0.7.5/tests/unit/OTAnalytics/application/parser}/__init__.py +0 -0
  614. {otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes → otanalytics-0.7.5/tests/unit/OTAnalytics/application/resources}/__init__.py +0 -0
  615. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/resources/test_resource_manager.py +0 -0
  616. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_helpers.py +0 -0
  617. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_plotting.py +0 -0
  618. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_project.py +0 -0
  619. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_state.py +0 -0
  620. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_track_filter.py +0 -0
  621. {otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes/track_visualization → otanalytics-0.7.5/tests/unit/OTAnalytics/application/ui}/__init__.py +0 -0
  622. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/ui/test_frame_control.py +0 -0
  623. {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui → otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases}/__init__.py +0 -0
  624. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_apply_cli_cuts.py +0 -0
  625. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_clear_repositories.py +0 -0
  626. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_create_events.py +0 -0
  627. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_create_intersection_events.py +0 -0
  628. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_event_repository.py +0 -0
  629. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_filter_visualization.py +0 -0
  630. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_flows_statistics.py +0 -0
  631. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_generate_flows.py +0 -0
  632. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_get_current_project.py +0 -0
  633. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_get_road_user_assignments.py +0 -0
  634. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_highlight_intersections.py +0 -0
  635. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_inside_cutting_section.py +0 -0
  636. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_intersection_repository.py +0 -0
  637. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_preload_input_files.py +0 -0
  638. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_application.py +0 -0
  639. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_project_config.py +0 -0
  640. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_revert_cuts.py +0 -0
  641. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_save_otflow.py +0 -0
  642. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_section_repository.py +0 -0
  643. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_start_new_project.py +0 -0
  644. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_repository.py +0 -0
  645. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_statistics.py +0 -0
  646. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_statistics_export.py +0 -0
  647. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_update_count_plots.py +0 -0
  648. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_update_project.py +0 -0
  649. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_video_repository.py +0 -0
  650. {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui/visualization → otanalytics-0.7.5/tests/unit/OTAnalytics/domain}/__init__.py +0 -0
  651. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_date.py +0 -0
  652. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_files.py +0 -0
  653. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_filter.py +0 -0
  654. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_flow.py +0 -0
  655. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_geometry.py +0 -0
  656. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_observer.py +0 -0
  657. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_section.py +0 -0
  658. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_track_repository.py +0 -0
  659. {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui/visualization/counts → otanalytics-0.7.5/tests/unit/OTAnalytics/domain/track_dataset}/__init__.py +0 -0
  660. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/conftest.py +0 -0
  661. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/test_track_dataset.py +0 -0
  662. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_cli}/__init__.py +0 -0
  663. {otanalytics-0.7.3/tests/acceptance → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore}/__init__.py +0 -0
  664. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_filter_pandas_track_store.py +0 -0
  665. {otanalytics-0.7.3/tests/utils → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/track_geometry_store}/__init__.py +0 -0
  666. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/track_geometry_store/test_shapely_store.py +0 -0
  667. {otanalytics-0.7.3/tests/utils/builders → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_filter}/__init__.py +0 -0
  668. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_filter/test_dataframe_filter.py +0 -0
  669. /otanalytics-0.7.3/tests/data/.gitkeep → /otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/__init__.py +0 -0
  670. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect/simple/test_cut_tracks_with_sections.py +0 -0
  671. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect/test_intersect.py +0 -0
  672. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect_parallelization/test_multiprocessing.py +0 -0
  673. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect_parallelization/test_sequential.py +0 -0
  674. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_number_of_tracks_to_be_validated/conftest.py +0 -0
  675. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/test_number_of_tracks_to_be_validated.py +0 -0
  676. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_number_of_tracks_to_be_validated/test_tracks_as_dataframe_provider.py +0 -0
  677. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_argparse_cli_parser.py +0 -0
  678. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_json_parser.py +0 -0
  679. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_streaming_parser.py +0 -0
  680. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_progress/test_multiprocessing_progress.py +0 -0
  681. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_prototypes/track_visualization/test_track_viz.py +0 -0
  682. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/conftest.py +0 -0
  683. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_extension_filtering.py +0 -0
  684. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_picker.py +0 -0
  685. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_circle.py +0 -0
  686. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_line.py +0 -0
  687. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_polyline.py +0 -0
  688. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/test_canvas_form.py +0 -0
  689. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_edit_flow_dialog.py +0 -0
  690. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_edit_section_dialog.py +0 -0
  691. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_flow_form.py +0 -0
  692. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_intersection_repository.py +0 -0
  693. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_sections_form.py +0 -0
  694. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_svz_metadata_form.py +0 -0
  695. {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_video_processing/test_video_reader.py +0 -0
  696. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/assertions.py +0 -0
  697. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/constants.py +0 -0
  698. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/otanalytics_builders.py +0 -0
  699. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/ottrk_file_input_source.py +0 -0
  700. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/run_configuration.py +0 -0
  701. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_dataset_provider.py +0 -0
  702. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_segment_builder.py +0 -0
  703. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/state.py +0 -0
  704. {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/ui_helpers.py +0 -0
@@ -40,8 +40,8 @@ jobs:
40
40
  - name: Install the project
41
41
  shell: bash
42
42
  run: uv sync --locked --dev
43
- - name: Run regression tests
44
- run: uv run pytest ./tests/benchmark_otanalytics.py --benchmark-json output.json
43
+ - name: Run benchmark tests
44
+ run: uv run pytest ./tests/benchmark --benchmark-json output.json
45
45
  - name: Store benchmark result
46
46
  uses: benchmark-action/github-action-benchmark@v1
47
47
  with:
@@ -39,4 +39,4 @@ jobs:
39
39
  shell: bash
40
40
  run: uv sync --locked --dev
41
41
  - name: Run regression tests
42
- run: uv run pytest ./tests/regression_otanalytics.py
42
+ run: uv run pytest ./tests/regression
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: System Test With Pytest
3
+
4
+ on:
5
+ # Run tests each time a PR is opened or changed.
6
+ # Allow other Workflows (e.g., build workflows) to call this workflow.
7
+ pull_request:
8
+ workflow_call:
9
+
10
+ permissions: read-all
11
+
12
+ jobs:
13
+ test:
14
+ name: Execute system tests across various operating systems and Python versions.
15
+ strategy:
16
+ matrix:
17
+ os: [ubuntu-latest, windows-latest]
18
+ py: ["3.12"]
19
+ fail-fast: true
20
+ runs-on: ${{ matrix.os }}
21
+ steps:
22
+ - name: Checkout repository
23
+ uses: actions/checkout@v6
24
+ - name: Set up Python ${{ matrix.py }}
25
+ uses: actions/setup-python@v6
26
+ with:
27
+ python-version: ${{ matrix.py }}
28
+ - name: Run Python System Tests
29
+ uses: platomo/test-python-app-action@v4
30
+ timeout-minutes: 60
31
+ with:
32
+ py-version: ${{ matrix.py }}
33
+ package-path: OTAnalytics
34
+ test-path: tests/system
@@ -25,10 +25,10 @@ jobs:
25
25
  uses: actions/setup-python@v6
26
26
  with:
27
27
  python-version: ${{ matrix.py }}
28
- - name: Run Python Tests
28
+ - name: Run Python Unit Tests
29
29
  uses: platomo/test-python-app-action@v4
30
30
  timeout-minutes: 60
31
31
  with:
32
32
  py-version: ${{ matrix.py }}
33
33
  package-path: OTAnalytics
34
- test-path: tests/OTAnalytics
34
+ test-path: tests/unit
@@ -3,6 +3,12 @@ data/
3
3
  !tests/data
4
4
  tests/data/OTCamera19_FR20_2023-05-24*
5
5
  tests/scripts/
6
+ .envrc
7
+ # Where S3_USER_SOURCE stages downloaded tracks and videos while running
8
+ .cache-otanalytics/
9
+
10
+ # Anthropic Claude
11
+ .claude/rules/shared
6
12
 
7
13
  # Byte-compiled / optimized / DLL files
8
14
  __pycache__/
@@ -14,15 +14,10 @@ repos:
14
14
  - id: requirements-txt-fixer
15
15
  - id: check-executables-have-shebangs
16
16
  - id: detect-private-key
17
- - repo: local
17
+ - repo: https://github.com/OpenTrafficCam/dependency-update-pre-commit
18
+ rev: v0.2.0
18
19
  hooks:
19
- - id: update-type-stubs
20
- name: Check for Type Stubs and Update Config
21
- entry: ./update_precommit.py
22
- language: system
23
- files: ^requirements.*\.txt$
24
- stages:
25
- - pre-commit
20
+ - id: update-mypy-dependencies
26
21
  - repo: https://github.com/PyCQA/flake8
27
22
  rev: 7.3.0
28
23
  hooks:
@@ -45,36 +40,42 @@ repos:
45
40
  entry: mypy OTAnalytics tests --config-file=pyproject.toml
46
41
  additional_dependencies:
47
42
  - av==13.0.0
48
- - black==24.8.0
43
+ - black==25.1.0
49
44
  - customtkinter==5.2.2
50
- - fastapi==0.116.2
51
- - hatch-requirements-txt==0.4.1
45
+ - fastapi==0.128.0
52
46
  - ijson==3.3.0
53
47
  - interrogate==1.7.0
54
- - isort==5.13.2
48
+ - isort==6.0.1
55
49
  - matplotlib==3.10.0
50
+ - minio==7.2.20
56
51
  - more-itertools==10.7.0
57
52
  - mypy==1.16.1
58
53
  - nicegui==2.24.1
59
54
  - numpy==2.1.1
60
55
  - opencv-python-headless==4.10.0.84
61
- - pandas-stubs==2.2.3.241126
56
+ - pandas-stubs==2.3.2.250926
62
57
  - pandas==2.3.3
58
+ - playwright==1.55.0
63
59
  - polars==1.32.3
64
60
  - pre-commit==4.1.0
65
61
  - pyarrow==21.0.0
66
62
  - pytest-asyncio==0.24.0
67
63
  - pytest-benchmark==5.1.0
68
- - pytest-cov==6.0.0
69
- - pytest-lazy-fixtures==1.1.2
64
+ - pytest-cov==7.0.0
65
+ - pytest-lazy-fixtures==1.4.0
66
+ - pytest-playwright==0.7.1
67
+ - pytest-timeout==2.4.0
70
68
  - pytest==8.3.4
71
- - starlette==0.48.0
72
- - twine==6.1.0
69
+ - starlette==0.49.1
70
+ - testcontainers==4.13.1
71
+ - twine==6.2.0
73
72
  - types-PyYAML
73
+ - types-aioboto3
74
+ - types-aiobotocore-s3==2.26.0
74
75
  - types-flake8
75
76
  - types-openpyxl
76
77
  - types-pillow
77
- - types-pywin32
78
+ - types-pywin32; sys_platform == "win32"
78
79
  - types-requests
79
80
  - types-seaborn
80
81
  - types-selenium
@@ -0,0 +1,19 @@
1
+ <component name="ProjectRunConfigurationManager">
2
+ <configuration default="false" name="pytest-acceptance-tests" type="tests" factoryName="py.test">
3
+ <module name="OTAnalytics"/>
4
+ <option name="INTERPRETER_OPTIONS" value=""/>
5
+ <option name="PARENT_ENVS" value="true"/>
6
+ <option name="SDK_HOME" value=""/>
7
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>
8
+ <option name="IS_MODULE_SDK" value="true"/>
9
+ <option name="ADD_CONTENT_ROOTS" value="true"/>
10
+ <option name="ADD_SOURCE_ROOTS" value="true"/>
11
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py"/>
12
+ <option name="_new_keywords" value="&quot;&quot;"/>
13
+ <option name="_new_parameters" value="&quot;&quot;"/>
14
+ <option name="_new_additionalArguments" value="&quot;&quot;"/>
15
+ <option name="_new_target" value="&quot;$PROJECT_DIR$/tests/acceptance&quot;"/>
16
+ <option name="_new_targetType" value="&quot;PATH&quot;"/>
17
+ <method v="2"/>
18
+ </configuration>
19
+ </component>
@@ -0,0 +1,19 @@
1
+ <component name="ProjectRunConfigurationManager">
2
+ <configuration default="false" name="pytest-benchmark-tests" type="tests" factoryName="py.test">
3
+ <module name="OTAnalytics"/>
4
+ <option name="INTERPRETER_OPTIONS" value=""/>
5
+ <option name="PARENT_ENVS" value="true"/>
6
+ <option name="SDK_HOME" value=""/>
7
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>
8
+ <option name="IS_MODULE_SDK" value="true"/>
9
+ <option name="ADD_CONTENT_ROOTS" value="true"/>
10
+ <option name="ADD_SOURCE_ROOTS" value="true"/>
11
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py"/>
12
+ <option name="_new_keywords" value="&quot;&quot;"/>
13
+ <option name="_new_parameters" value="&quot;&quot;"/>
14
+ <option name="_new_additionalArguments" value="&quot;&quot;"/>
15
+ <option name="_new_target" value="&quot;$PROJECT_DIR$/tests/benchmark&quot;"/>
16
+ <option name="_new_targetType" value="&quot;PATH&quot;"/>
17
+ <method v="2"/>
18
+ </configuration>
19
+ </component>
@@ -0,0 +1,19 @@
1
+ <component name="ProjectRunConfigurationManager">
2
+ <configuration default="false" name="pytest-regression-tests" type="tests" factoryName="py.test">
3
+ <module name="OTAnalytics"/>
4
+ <option name="INTERPRETER_OPTIONS" value=""/>
5
+ <option name="PARENT_ENVS" value="true"/>
6
+ <option name="SDK_HOME" value=""/>
7
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>
8
+ <option name="IS_MODULE_SDK" value="true"/>
9
+ <option name="ADD_CONTENT_ROOTS" value="true"/>
10
+ <option name="ADD_SOURCE_ROOTS" value="true"/>
11
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py"/>
12
+ <option name="_new_keywords" value="&quot;&quot;"/>
13
+ <option name="_new_parameters" value="&quot;&quot;"/>
14
+ <option name="_new_additionalArguments" value="&quot;&quot;"/>
15
+ <option name="_new_target" value="&quot;$PROJECT_DIR$/tests/regression&quot;"/>
16
+ <option name="_new_targetType" value="&quot;PATH&quot;"/>
17
+ <method v="2"/>
18
+ </configuration>
19
+ </component>
@@ -0,0 +1,19 @@
1
+ <component name="ProjectRunConfigurationManager">
2
+ <configuration default="false" name="pytest-unit-tests" type="tests" factoryName="py.test">
3
+ <module name="OTAnalytics"/>
4
+ <option name="INTERPRETER_OPTIONS" value=""/>
5
+ <option name="PARENT_ENVS" value="true"/>
6
+ <option name="SDK_HOME" value=""/>
7
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"/>
8
+ <option name="IS_MODULE_SDK" value="true"/>
9
+ <option name="ADD_CONTENT_ROOTS" value="true"/>
10
+ <option name="ADD_SOURCE_ROOTS" value="true"/>
11
+ <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py"/>
12
+ <option name="_new_keywords" value="&quot;&quot;"/>
13
+ <option name="_new_parameters" value="&quot;&quot;"/>
14
+ <option name="_new_additionalArguments" value="&quot;&quot;"/>
15
+ <option name="_new_target" value="&quot;$PROJECT_DIR$/tests/unit&quot;"/>
16
+ <option name="_new_targetType" value="&quot;PATH&quot;"/>
17
+ <method v="2"/>
18
+ </configuration>
19
+ </component>
@@ -0,0 +1,56 @@
1
+ # OTAnalytics
2
+
3
+ Traffic analysis on road user trajectories: OTAnalytics loads Tracks recorded by
4
+ OTVision, lets a user define Sections and Flows over them, and counts the road
5
+ users crossing those Sections.
6
+
7
+ ## Language
8
+
9
+ ### Obtaining input files
10
+
11
+ **Transfer Mode**:
12
+ Where an OTAnalytics instance obtains its Track and Video files — the local
13
+ filesystem, or an S3 bucket. Fixed for the lifetime of the process by the
14
+ startup configuration; it is not something a user switches while working.
15
+ _Avoid_: storage backend, data source (both suggest a per-load choice).
16
+
17
+ **Startup Configuration**:
18
+ The environment variables naming the Transfer Mode and, in S3 mode, the bucket
19
+ and credentials. Fixed for the lifetime of the process. Deliberately not a file.
20
+ Says what a deployment may authenticate to, never which project it holds: the
21
+ Key Prefix comes from the **otconfig** instead, because that is per-project and
22
+ varies per lease. Credentials must never travel in an otconfig, since users save
23
+ and share those files.
24
+ _Avoid_: config file (there isn't one, and it invites confusion with otconfig).
25
+
26
+ **Key Prefix**:
27
+ The S3 prefix a project's Tracks and Videos live under, covering one camera or
28
+ site. A property of the project, declared by its otconfig, and required there in
29
+ S3 mode — so opening a different project moves where an instance reads from,
30
+ within the one configured bucket. Until a project is loaded there is no Key
31
+ Prefix and nothing can be listed.
32
+ _Avoid_: path, folder (S3 has neither); startup configuration (it is per-project,
33
+ unlike the bucket and credentials).
34
+
35
+ **User Source**:
36
+ The local directory that downloaded objects are written into, mirroring their S3
37
+ keys, so that a Track file and its Video land side by side. Named after
38
+ OTCloud's `S3_USER_SOURCE` for cross-repo consistency, though the name conveys
39
+ little on its own. Its contents do not survive a restart.
40
+ _Avoid_: cache (implies reuse across runs, which there is none of).
41
+
42
+ **Load Window**:
43
+ The start and end time a user selects to decide which Tracks and Videos to load.
44
+ Bounded by a configured maximum duration, because continuous processing produces
45
+ far more data than can be held at once. An over-long selection is _clamped_ —
46
+ its end snaps to the maximum and the user is told — never rejected.
47
+ _Avoid_: time range, date range (`DateRange` already means the filter applied to
48
+ already-loaded Tracks, which is a different thing).
49
+
50
+ **Track File Provider** / **Video File Provider**:
51
+ What a request for input files is asked of. Each implementation owns its own way
52
+ of asking the user, so nothing downstream knows where files came from: the local
53
+ one opens a file chooser, the S3 one asks for a Load Window and downloads. This
54
+ is the seam that makes the Transfer Mode interchangeable.
55
+ _Avoid_: file loader, importer (both suggest they also parse, which they do not —
56
+ they only obtain paths).
@@ -1,9 +1,10 @@
1
1
  from abc import ABC, abstractmethod
2
2
 
3
+ from OTAnalytics.adapter_ui.abstract_frame import AbstractFrame
3
4
  from OTAnalytics.adapter_ui.dto import DateRangeDto
4
5
 
5
6
 
6
- class AbstractFrameFilter(ABC):
7
+ class AbstractFrameFilter(AbstractFrame, ABC):
7
8
  @abstractmethod
8
9
  def _introduce_to_viewmodel(self) -> None:
9
10
  pass
@@ -1,9 +1,9 @@
1
- from abc import abstractmethod
1
+ from abc import ABC, abstractmethod
2
2
  from datetime import datetime
3
3
  from typing import Optional
4
4
 
5
5
 
6
- class AbstractFrameProject:
6
+ class AbstractFrameProject(ABC):
7
7
  @abstractmethod
8
8
  def introduce_to_viewmodel(self) -> None:
9
9
  pass
@@ -17,7 +17,7 @@ class AbstractFrameProject:
17
17
  raise NotImplementedError
18
18
 
19
19
 
20
- class AbstractFrameSvzMetadata:
20
+ class AbstractFrameSvzMetadata(ABC):
21
21
  @abstractmethod
22
22
  def introduce_to_viewmodel(self) -> None:
23
23
  pass