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.
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/benchmark.yml +2 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/regression-test.yml +1 -1
- otanalytics-0.7.5/.github/workflows/system-test.yml +34 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/test.yml +2 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.gitignore +6 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.pre-commit-config.yaml +19 -18
- otanalytics-0.7.5/.run/pytest-acceptance-tests.run.xml +19 -0
- otanalytics-0.7.5/.run/pytest-benchmark-tests.run.xml +19 -0
- otanalytics-0.7.5/.run/pytest-regression-tests.run.xml +19 -0
- otanalytics-0.7.5/.run/pytest-unit-tests.run.xml +19 -0
- otanalytics-0.7.5/CONTEXT.md +56 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_filter.py +2 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_project.py +3 -3
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/dummy_viewmodel.py +193 -67
- otanalytics-0.7.5/OTAnalytics/adapter_ui/file_export_dto.py +31 -0
- otanalytics-0.7.5/OTAnalytics/adapter_ui/local_file_providers.py +57 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/ui_factory.py +1 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/view_model.py +4 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/traffic_counting.py +6 -3
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/traffic_counting_specification.py +12 -5
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/application.py +75 -13
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/config.py +9 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/config_specification.py +1 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/datastore.py +6 -51
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/eventlist.py +12 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/event_list.py +2 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/road_user_assignments.py +4 -0
- otanalytics-0.7.5/OTAnalytics/application/export_path_builder.py +54 -0
- otanalytics-0.7.5/OTAnalytics/application/files.py +19 -0
- otanalytics-0.7.5/OTAnalytics/application/key_prefix.py +34 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/cli_parser.py +1 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/config_parser.py +23 -0
- otanalytics-0.7.5/OTAnalytics/application/parser/track_parser.py +54 -0
- otanalytics-0.7.5/OTAnalytics/application/progress.py +195 -0
- otanalytics-0.7.5/OTAnalytics/application/project_location.py +43 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/resources/resource_manager.py +25 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/run_configuration.py +1 -1
- otanalytics-0.7.5/OTAnalytics/application/startup_config.py +54 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/state.py +28 -0
- otanalytics-0.7.5/OTAnalytics/application/upload_otconfig.py +24 -0
- otanalytics-0.7.5/OTAnalytics/application/use_cases/ask_for_load_window.py +47 -0
- otanalytics-0.7.5/OTAnalytics/application/use_cases/config.py +85 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/config_has_changed.py +4 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/export_events.py +24 -2
- otanalytics-0.7.5/OTAnalytics/application/use_cases/flow_repository.py +116 -0
- otanalytics-0.7.5/OTAnalytics/application/use_cases/load_otconfig.py +130 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/load_otflow.py +5 -6
- otanalytics-0.7.5/OTAnalytics/application/use_cases/load_track_files.py +188 -0
- otanalytics-0.7.5/OTAnalytics/application/use_cases/provide_input_files.py +35 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/quick_save_configuration.py +2 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_state.py +4 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/road_user_assignment_export.py +53 -12
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/suggest_save_path.py +58 -5
- otanalytics-0.7.5/OTAnalytics/application/use_cases/track_export.py +31 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_statistics_export.py +47 -13
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/event.py +26 -0
- otanalytics-0.7.5/OTAnalytics/domain/georeference.py +56 -0
- otanalytics-0.7.5/OTAnalytics/domain/load_window.py +65 -0
- otanalytics-0.7.5/OTAnalytics/domain/progress.py +161 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track.py +12 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/filtered_track_dataset.py +3 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/track_dataset.py +33 -0
- otanalytics-0.7.5/OTAnalytics/domain/transfer_mode.py +8 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/file_helpers.py +7 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/filter_polars_track_dataset.py +11 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/polars_track_store.py +225 -13
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/python_track_store.py +19 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/polars_geometry_store.py +367 -120
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_store.py +37 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/argparse_cli_parser.py +8 -6
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/convert_ottrk_to_feathers.py +28 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/export.py +55 -16
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/feathers_parser.py +22 -86
- otanalytics-0.7.5/OTAnalytics/plugin_parser/georeference_parsing.py +30 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/otconfig_parser.py +118 -39
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/ottrk_dataformat.py +15 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/otvision_parser.py +13 -6
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/pandas_parser.py +8 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/road_user_assignment_export.py +11 -6
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/streaming_parser.py +2 -5
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/track_export.py +31 -51
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/track_statistics_export.py +25 -16
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/eventlist_exporter/eventlist_exporter.py +38 -17
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/track_viz.py +7 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/cleanup.py +58 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/config/env_vars.py +76 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/config/parsing.py +126 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/config/s3.py +33 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/download.py +37 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/download_objects.py +106 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/filename_timestamp.py +44 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/list_objects.py +45 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/otconfig_upload.py +15 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/project_location.py +37 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/s3_file_providers.py +267 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/select_objects.py +45 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/store.py +47 -0
- otanalytics-0.7.5/OTAnalytics/plugin_s3/upload.py +46 -0
- otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/track_dataset_writer.py +42 -0
- otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/domain.py +30 -0
- otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/pandas.py +44 -0
- otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers/polars.py +43 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/application_starter.py +38 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/base_application.py +57 -9
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/cli.py +66 -44
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/ctk_ui_factory.py +20 -21
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_filter.py +5 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/helpers.py +12 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_export_counts.py +76 -10
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_export_file.py +56 -14
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/gui_application.py +30 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_application.py +155 -3
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/export_counts_dialog.py +101 -36
- otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_chooser_dialog.py +279 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_picker.py +21 -12
- otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/dialogs/load_window_dialog.py +128 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/constants.py +9 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/forms.py +14 -2
- otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/nicegui/progressbar.py +215 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/container.py +3 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/visualization_offset_slider_form.py +7 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/analysis_form/container.py +4 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/container.py +0 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/container.py +115 -7
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form/layers_form.py +15 -2
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/ui_factory.py +80 -21
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/visualization/counts/counts_plotter.py +3 -1
- otanalytics-0.7.5/OTAnalytics/version.py +1 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/PKG-INFO +4 -3
- {otanalytics-0.7.3 → otanalytics-0.7.5}/README.md +1 -1
- {otanalytics-0.7.3 → otanalytics-0.7.5}/pyproject.toml +12 -0
- otanalytics-0.7.5/tests/acceptance/conftest.py +150 -0
- otanalytics-0.7.5/tests/acceptance/test_create_important_test_data.py +313 -0
- otanalytics-0.7.5/tests/acceptance/test_export_track_statistics.py +62 -0
- otanalytics-0.7.5/tests/acceptance/test_filters_navigation_buttons.py +454 -0
- otanalytics-0.7.5/tests/acceptance/test_load_from_s3.py +234 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_project_information.py +7 -10
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_sections_and_flows.py +32 -24
- otanalytics-0.7.5/tests/acceptance/test_tracks_add_and_display.py +213 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/acceptance/test_video_import_and_display.py +11 -12
- otanalytics-0.7.3/tests/benchmark_otanalytics.py → otanalytics-0.7.5/tests/benchmark/test_benchmark_otanalytics.py +3 -2
- otanalytics-0.7.5/tests/data/acceptance/all_tracks.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_assigned_to_flows.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_intersecting_sections.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_not_assigned_to_flows.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/highlight_tracks_not_intersecting_sections.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/offset_before.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/start_end_all.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/start_end_assigned_to_flows.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/start_end_intersecting_sections.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/start_end_not_assigned_to_flows.png +0 -0
- otanalytics-0.7.5/tests/data/acceptance/start_end_not_intersecting_sections.png +0 -0
- otanalytics-0.7.5/tests/data/sections_created_test_file.otconfig +87 -0
- otanalytics-0.7.5/tests/data/track_statistics_reference.csv +2 -0
- otanalytics-0.7.5/tests/integration/OTAnalytics/plugin_s3/test_load_from_rustfs.py +252 -0
- otanalytics-0.7.5/tests/system/OTAnalytics/plugin_ui/test_cli.py +209 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_loading.py +118 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_otconfig.py +254 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_dummy_viewmodel_save_otconfig.py +99 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/adapter_ui/test_helpers.py +27 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/adapter_ui/test_local_file_providers.py +94 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/analysis/test_traffic_counting.py +13 -4
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/parser/test_track_parser.py +156 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_current_key_prefix.py +58 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_datastore.py +2 -6
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_eventlist.py +95 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_export_path_builder.py +46 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_key_prefix.py +54 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_progress.py +191 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_project_location.py +57 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_run_configuration.py +2 -2
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_startup_config.py +68 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/test_upload_otconfig.py +30 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_config.py +154 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_config_has_changed.py +5 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_flow_repository.py +59 -7
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_load_otconfig.py +343 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_load_otflow.py +8 -8
- otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases/test_load_track_files.py +704 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_quick_save_configuration.py +17 -17
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_state.py +13 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_road_user_assignment_export.py +3 -2
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_suggest_save_path.py +1 -1
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_event.py +56 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_georeference.py +54 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_load_window.py +83 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_track.py +35 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/domain/test_transfer_mode.py +26 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_video.py +1 -1
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/test_filtered_track_dataset.py +8 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_cli/test_cli_application.py +16 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_filter_polars_track_store.py +50 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/test_polars_track_store.py +1535 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_python_track_store.py +119 -1
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_track_store.py +195 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/track_geometry_store/test_polars_geometry_store.py +1604 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/shapely/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/simple/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect_parallelization/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_number_of_tracks_to_be_validated/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/__init__.py +0 -0
- {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
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/conftest.py +32 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_convert_ottrk_to_feathers.py +68 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_export.py +34 -27
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_feathers_parser.py +281 -1
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_georeference_parsing.py +23 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_otconfig_key_prefix.py +162 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_otconfig_parser.py +104 -3
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_otconfig_substitution.py +186 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_otvision_parser.py +56 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_pandas_parser.py +87 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_road_user_assignment_export.py +163 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_parser/test_track_export.py +176 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_progress/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/test_eventlist_exporter.py +89 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_prototypes/track_visualization/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/test_env_vars.py +49 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/config/test_parsing.py +186 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_cleanup.py +108 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_download.py +58 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_download_objects.py +218 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_filename_timestamp.py +55 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_list_objects.py +126 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_otconfig_upload.py +36 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_project_location.py +72 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_read_video_name.py +130 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_s3_file_providers.py +321 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_select_objects.py +96 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_s3/test_upload.py +61 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/conftest.py +8 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_domain.py +116 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_pandas.py +113 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_polars.py +108 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_track_export/csv/test_track_dataset_writer.py +91 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_chooser_dialog.py +2 -1
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_load_window_dialog.py +201 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/nicegui/test_progressbar.py +279 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/remarks_form/test_container.py +84 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form/test_container.py +85 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/nicegui_gui/test_ui_factory.py +66 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_cli.py +157 -13
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_export_counts_dialog.py +90 -40
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_file_chooser_dialog.py +144 -10
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/test_nicegui_application.py +126 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/test_nicegui_preload.py +64 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/visualization/__init__.py +0 -0
- otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_ui/visualization/counts/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/visualization/counts/test_counts_plotter.py +7 -2
- otanalytics-0.7.5/tests/unit/__init__.py +0 -0
- otanalytics-0.7.5/tests/utils/__init__.py +0 -0
- otanalytics-0.7.5/tests/utils/app_environment.py +67 -0
- otanalytics-0.7.5/tests/utils/builders/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/event_builder.py +4 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/road_user_assignment.py +4 -0
- otanalytics-0.7.5/tests/utils/builders/s3_config_builder.py +34 -0
- otanalytics-0.7.5/tests/utils/builders/s3_store_builder.py +21 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_builder.py +4 -0
- otanalytics-0.7.5/tests/utils/playwright_helpers.py +1414 -0
- otanalytics-0.7.5/tests/utils/progress.py +24 -0
- otanalytics-0.7.5/tests/utils/rustfs_container.py +62 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/uv.lock +572 -302
- otanalytics-0.7.3/OTAnalytics/adapter_ui/file_export_dto.py +0 -8
- otanalytics-0.7.3/OTAnalytics/application/progress.py +0 -95
- otanalytics-0.7.3/OTAnalytics/application/use_cases/config.py +0 -52
- otanalytics-0.7.3/OTAnalytics/application/use_cases/flow_repository.py +0 -101
- otanalytics-0.7.3/OTAnalytics/application/use_cases/load_otconfig.py +0 -76
- otanalytics-0.7.3/OTAnalytics/application/use_cases/load_track_files.py +0 -76
- otanalytics-0.7.3/OTAnalytics/application/use_cases/track_export.py +0 -57
- otanalytics-0.7.3/OTAnalytics/domain/progress.py +0 -84
- otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/dialogs/file_chooser_dialog.py +0 -155
- otanalytics-0.7.3/OTAnalytics/version.py +0 -1
- otanalytics-0.7.3/tests/OTAnalytics/application/test_progress.py +0 -53
- otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_config.py +0 -53
- otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_load_otconfig.py +0 -164
- otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_load_track_files.py +0 -244
- otanalytics-0.7.3/tests/OTAnalytics/application/use_cases/test_track_export.py +0 -49
- otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/test_polars_track_store.py +0 -626
- otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/track_geometry_store/test_polars_geometry_store.py +0 -733
- otanalytics-0.7.3/tests/OTAnalytics/plugin_parser/test_road_user_assignment_export.py +0 -82
- otanalytics-0.7.3/tests/OTAnalytics/plugin_parser/test_track_export.py +0 -59
- otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes/test_eventlist_exporter.py +0 -15
- otanalytics-0.7.3/tests/acceptance/conftest.py +0 -86
- otanalytics-0.7.3/tests/utils/playwright_helpers.py +0 -599
- otanalytics-0.7.3/update_precommit.py +0 -272
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.editorconfig +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.flake8 +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/dependabot.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/acceptance-test.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/build-nightly.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/build-release.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/linter.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/release-pypi.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.github/workflows/release-testpypi.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.junie/guidelines.md +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Scalene-CLI (benchmark).run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Scalene-CLI.run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-CLI (benchmark files).run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-CLI.run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI (mit Benchmarkdaten).run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI (mit Testdaten).run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-GUI.run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/Start-WebUI (mit Testdaten).run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.run/pytest-in-tests.run.xml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.shellcheckrc +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.vscode/launch.json +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.vscode/settings.json +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/.yamllint.yaml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/LICENSE +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/__main__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_intersect/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_button_quick_save_config.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_canvas.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_canvas.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_offset.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_remark.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_track_plotting.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_frame_track_statistics.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_main_window.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_progressbar_popup.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/abstract_treeview_interface.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/cancel_export_counts.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/cancel_export_file.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/default_values.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/dto.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/file_selection_cancelled.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/flow_adapter.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/flow_dto.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/helpers.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/info_box.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/message_box.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/text_resources.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_ui/ui_texts.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_visualization/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/adapter_visualization/color_provider.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/intersect.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/analysis/road_user_assignment.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/exception.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/export_mode.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/export_formats/track_statistics.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/geometry.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/logger.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/deserializer.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/parser/flow_parser.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/playback.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/plotting.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/project.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/resources/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/track_filter.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/track_input_source.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/ui/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/ui/frame_control.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/add_new_remark.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/apply_cli_cuts.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/assignment_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/clear_repositories.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_events.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_intersection_events.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/create_road_user_assignments.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/cut_tracks_with_sections.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/editor/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/editor/section_editor.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/event_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/filter_visualization.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/flow_statistics.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/generate_flows.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/get_current_project.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/get_current_remark.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/highlight_intersections.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/inside_cutting_section.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/intersection_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/number_of_tracks_to_be_validated.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/preload_input_files.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_application.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/reset_project_config.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/revert_cuts.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/save_otflow.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/section_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/start_new_project.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/track_statistics.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/update_count_plots.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/update_project.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/application/use_cases/video_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/assets/OpenTrafficCam_800.png +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/common.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/date.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/files.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/filter.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/flow.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/geometry.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/intersect.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/observer.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/otc_classes.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/remark.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/section.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/tls8plus1_classes.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_dataset/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_id_provider.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/track_repository.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/types.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/domain/video.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/helpers/time_profiling.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_cli/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_cli/cli_application.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/filter_pandas_track_store.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/get_current_frame_track_segments.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/pandas_track_dataset_factory.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/polars_track_id_set.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_datastore/track_geometry_store/shapely_store.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/dataframe_filter.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_filter/pandas_track_id.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/shapely/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/shapely/mapping.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple/cut_tracks_with_sections.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect/simple_intersect.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/multiprocessing.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_intersect_parallelization/sequential.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/calculation_strategy.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/metric_rates_builder.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/svz/metric_rates.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_number_of_tracks_to_be_validated/tracks_as_dataframe_provider.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/dataformat_versions.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_parser/json_parser.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/lazy_tqdm_progressbar.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/multiprocessing_progress.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_progress/tqdm_progressbar.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/event_visualization.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/eventlist_exporter/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/cv2_image.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/numpy_image.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_prototypes/track_visualization/pil_image.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_track_input_source → otanalytics-0.7.5/OTAnalytics/plugin_s3}/__init__.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui → otanalytics-0.7.5/OTAnalytics/plugin_s3/config}/__init__.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/customtkinter_gui → otanalytics-0.7.5/OTAnalytics/plugin_track_export}/__init__.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui → otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv}/__init__.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/dialogs → otanalytics-0.7.5/OTAnalytics/plugin_track_export/csv/writers}/__init__.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/forms → otanalytics-0.7.5/OTAnalytics/plugin_track_input_source}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_track_input_source/single_batch.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_track_input_source/template.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui → otanalytics-0.7.5/OTAnalytics/plugin_ui}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/ctk_application.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements → otanalytics-0.7.5/OTAnalytics/plugin_ui/customtkinter_gui}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/abstract_ctk_canvas.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/abstract_ctk_frame.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/button_quick_save_config.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/canvas_observer.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/constants.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/custom_containers.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_analysis.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_bbox_offset.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_canvas.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_configuration.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_date_filter_control.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_files.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_flows.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_project.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_remarks.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_sections.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_track_plotting.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_track_statistics.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_tracks.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/frame_videos.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/gui.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/line_section.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/messagebox.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/scrollable_xy_frame.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/state.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/style.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_flows.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_progress.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_sections.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/toplevel_template.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/treeview_template.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/customtkinter_gui/utility_widgets.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/intersection_repository.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/config.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/edit_flow_dialog.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/edit_section_dialog.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/endpoints.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/file_utils.py +0 -0
- {otanalytics-0.7.3/OTAnalytics/plugin_ui/nicegui_gui/pages → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/forms}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/forms/offset_slider_form.py +0 -0
- {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
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/button_form.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/dialog.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/elements/table.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/nicegui_webserver.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/page_builder.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/circle.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/circle_resources.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/line.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/line_resources.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/polyline.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/section_resources.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/color.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/global_theme.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/theme/nicegui_layout_components.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/validation.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/page_builders/main_page_builder.py +0 -0
- {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
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_track_form/add_tracks_form.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/add_video_form/container.py +0 -0
- {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
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/canvas_form.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/container.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/canvas_and_files_form/files_form.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar/container.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/configuration_bar/project_form.py +0 -0
- {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
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/container.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/flow_form.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/sections_and_flow_form/sections_form.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/svz_metadata_form/svz_metadata_form.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/track_statistics_form/container.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics → otanalytics-0.7.5/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_filters_form}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers.py +0 -0
- {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
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/visualization_layers_form/container.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/pages/workspace.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/nicegui_gui/test_constants.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/application → otanalytics-0.7.5/OTAnalytics/plugin_ui/utils}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/utils/asyncio_helper.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/application/analysis → otanalytics-0.7.5/OTAnalytics/plugin_ui/visualization}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/application/resources → otanalytics-0.7.5/OTAnalytics/plugin_ui/visualization/counts}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_ui/visualization/visualization.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/OTAnalytics/plugin_video_processing/video_reader.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/clean-up-repository.sh +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/config.yml +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/convert_ottrk_to_feather.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/install.cmd +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/install.sh +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/install_dev.cmd +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/install_dev.sh +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/requirements.txt +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/scripts/check_clean_architecture.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/start_gui.cmd +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/start_gui.sh +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/application/ui → otanalytics-0.7.5/tests}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/application/use_cases → otanalytics-0.7.5/tests/acceptance}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/domain → otanalytics-0.7.5/tests/benchmark}/__init__.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/conftest.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Sample_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otconfig +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otflow +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/cyclists_2025-12-19_10-18-43.otconfig +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/section.json.bz2.otflow +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/test_name.otconfig +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/data/trucks_2025-12-19_10-19-22.otconfig +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/domain/track_dataset → otanalytics-0.7.5/tests/integration/OTAnalytics}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore → otanalytics-0.7.5/tests/integration/OTAnalytics/plugin_s3}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_datastore/track_geometry_store → otanalytics-0.7.5/tests/integration}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_filter → otanalytics-0.7.5/tests/regression}/__init__.py +0 -0
- /otanalytics-0.7.3/tests/regression_otanalytics.py → /otanalytics-0.7.5/tests/regression/test_regression_otanalytics.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect → otanalytics-0.7.5/tests/system/OTAnalytics}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect/shapely → otanalytics-0.7.5/tests/system/OTAnalytics/plugin_ui}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect/simple → otanalytics-0.7.5/tests/system}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_intersect_parallelization → otanalytics-0.7.5/tests/unit/OTAnalytics}/__init__.py +0 -0
- {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
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/adapter_intersect/test_mapping.py +0 -0
- {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
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_parser → otanalytics-0.7.5/tests/unit/OTAnalytics/application/analysis}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/analysis/test_road_user_assignment.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_progress → otanalytics-0.7.5/tests/unit/OTAnalytics/application/parser}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes → otanalytics-0.7.5/tests/unit/OTAnalytics/application/resources}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/resources/test_resource_manager.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_helpers.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_plotting.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_project.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_state.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/test_track_filter.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_prototypes/track_visualization → otanalytics-0.7.5/tests/unit/OTAnalytics/application/ui}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/ui/test_frame_control.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui → otanalytics-0.7.5/tests/unit/OTAnalytics/application/use_cases}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_apply_cli_cuts.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_clear_repositories.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_create_events.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_create_intersection_events.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_event_repository.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_filter_visualization.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_flows_statistics.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_generate_flows.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_get_current_project.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_get_road_user_assignments.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_highlight_intersections.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_inside_cutting_section.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_intersection_repository.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_preload_input_files.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_application.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_reset_project_config.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_revert_cuts.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_save_otflow.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_section_repository.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_start_new_project.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_repository.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_statistics.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_track_statistics_export.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_update_count_plots.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_update_project.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/application/use_cases/test_video_repository.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui/visualization → otanalytics-0.7.5/tests/unit/OTAnalytics/domain}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_date.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_files.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_filter.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_flow.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_geometry.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_observer.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_section.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/test_track_repository.py +0 -0
- {otanalytics-0.7.3/tests/OTAnalytics/plugin_ui/visualization/counts → otanalytics-0.7.5/tests/unit/OTAnalytics/domain/track_dataset}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/conftest.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/domain/track_dataset/test_track_dataset.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_cli}/__init__.py +0 -0
- {otanalytics-0.7.3/tests/acceptance → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/test_filter_pandas_track_store.py +0 -0
- {otanalytics-0.7.3/tests/utils → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_datastore/track_geometry_store}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_datastore/track_geometry_store/test_shapely_store.py +0 -0
- {otanalytics-0.7.3/tests/utils/builders → otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_filter}/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_filter/test_dataframe_filter.py +0 -0
- /otanalytics-0.7.3/tests/data/.gitkeep → /otanalytics-0.7.5/tests/unit/OTAnalytics/plugin_intersect/__init__.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect/simple/test_cut_tracks_with_sections.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect/test_intersect.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect_parallelization/test_multiprocessing.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_intersect_parallelization/test_sequential.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_number_of_tracks_to_be_validated/conftest.py +0 -0
- {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
- {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
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_argparse_cli_parser.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_json_parser.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_parser/test_streaming_parser.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_progress/test_multiprocessing_progress.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_prototypes/track_visualization/test_track_viz.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/conftest.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_extension_filtering.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/dialogs/test_file_picker.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_circle.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_line.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/nicegui_gui/nicegui/svg/test_polyline.py +0 -0
- {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
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_edit_flow_dialog.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_edit_section_dialog.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_flow_form.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_intersection_repository.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_sections_form.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_ui/test_svz_metadata_form.py +0 -0
- {otanalytics-0.7.3/tests → otanalytics-0.7.5/tests/unit}/OTAnalytics/plugin_video_processing/test_video_reader.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/assertions.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/constants.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/otanalytics_builders.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/ottrk_file_input_source.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/run_configuration.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_dataset_provider.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/builders/track_segment_builder.py +0 -0
- {otanalytics-0.7.3 → otanalytics-0.7.5}/tests/utils/state.py +0 -0
- {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
|
|
44
|
-
run: uv run pytest ./tests/
|
|
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:
|
|
@@ -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/
|
|
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:
|
|
17
|
+
- repo: https://github.com/OpenTrafficCam/dependency-update-pre-commit
|
|
18
|
+
rev: v0.2.0
|
|
18
19
|
hooks:
|
|
19
|
-
- id: update-
|
|
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==
|
|
43
|
+
- black==25.1.0
|
|
49
44
|
- customtkinter==5.2.2
|
|
50
|
-
- fastapi==0.
|
|
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==
|
|
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.
|
|
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==
|
|
69
|
-
- pytest-lazy-fixtures==1.
|
|
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.
|
|
72
|
-
-
|
|
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=""""/>
|
|
13
|
+
<option name="_new_parameters" value=""""/>
|
|
14
|
+
<option name="_new_additionalArguments" value=""""/>
|
|
15
|
+
<option name="_new_target" value=""$PROJECT_DIR$/tests/acceptance""/>
|
|
16
|
+
<option name="_new_targetType" value=""PATH""/>
|
|
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=""""/>
|
|
13
|
+
<option name="_new_parameters" value=""""/>
|
|
14
|
+
<option name="_new_additionalArguments" value=""""/>
|
|
15
|
+
<option name="_new_target" value=""$PROJECT_DIR$/tests/benchmark""/>
|
|
16
|
+
<option name="_new_targetType" value=""PATH""/>
|
|
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=""""/>
|
|
13
|
+
<option name="_new_parameters" value=""""/>
|
|
14
|
+
<option name="_new_additionalArguments" value=""""/>
|
|
15
|
+
<option name="_new_target" value=""$PROJECT_DIR$/tests/regression""/>
|
|
16
|
+
<option name="_new_targetType" value=""PATH""/>
|
|
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=""""/>
|
|
13
|
+
<option name="_new_parameters" value=""""/>
|
|
14
|
+
<option name="_new_additionalArguments" value=""""/>
|
|
15
|
+
<option name="_new_target" value=""$PROJECT_DIR$/tests/unit""/>
|
|
16
|
+
<option name="_new_targetType" value=""PATH""/>
|
|
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
|