plexus-python-pulse-demeter 1.1.132__tar.gz → 1.1.134__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.
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/PKG-INFO +4 -4
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/README.md +54 -43
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business-seeder.dockerfile +43 -31
- plexus_python_pulse_demeter-1.1.134/k8s/local/example-business.dockerfile +89 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/pyproject.toml +7 -6
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/pipeline_endpoints.py +242 -151
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/pipeline_internal_endpoints.py +136 -81
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/tagging_endpoints.py +1 -1
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/pipeline.py +13 -13
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/pipeline.py +201 -161
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/tools/main.py +10 -10
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/flowutils.py +110 -96
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/PKG-INFO +4 -4
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/requires.txt +3 -3
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/pipeline_endpoints_test.py +1453 -1103
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/pipeline_internal_endpoints_test.py +352 -131
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/utils/flowutils_test.py +246 -255
- plexus_python_pulse_demeter-1.1.132/k8s/local/example-business.dockerfile +0 -87
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.dockerignore +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.editorconfig +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.github/workflows/pr.yml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.github/workflows/push.yml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.gitignore +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/MANIFEST.in +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/README.demeter.md +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/README.md +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/VERSION +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/alembic.ini +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/env.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/script.py.mako +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/versions/.gitkeep +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/docker/plexus-pulse-demeter-app.dockerfile +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/docker/plexus-pulse-demeter-tools.dockerfile +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/argo/plexus-pulse-demeter-pipeline-templates.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/deployment/plexus-pulse-demeter-app.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business-seeder.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/plexus-pulse-demeter-app.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/plexus-pulse-demeter-postgres.yaml +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/benchmark-nuscenes_detection.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/benchmark-nuscenes_tracking.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/dataset-metafile.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/layout-spec.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/sample-metafile.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/taxonomy-hierarchy.schema.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/pulse-demeter-dataset.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/extra_file +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset_intermixed/pulse-demeter-dataset.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/pulse-demeter-dataset.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/pulse-demeter-dataset.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_name_ref/pulse-demeter-dataset.json +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/setup.cfg +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/setup.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/catalog_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/catalog_internal_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/inventory_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/inventory_internal_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/user_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/workflow_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/workflow_internal_endpoints.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/database.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/vault.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/main.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/catalog.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/inventory.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/tagging.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/user.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/workflow.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/tools/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/config.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/datautils.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/SOURCES.txt +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/dependency_links.txt +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/entry_points.txt +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/not-zip-safe +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus_python_pulse_demeter.egg-info/top_level.txt +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/catalog_endpoints_1_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/catalog_endpoints_2_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/catalog_internal_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/inventory_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/inventory_internal_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/tagging_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/user_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/workflow_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/api/workflow_internal_endpoints_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/utils/__init__.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/utils/datautils_test.py +0 -0
- {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/testenv.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python-pulse-demeter
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.134
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -27,8 +27,8 @@ Requires-Dist: uvicorn; extra == "api"
|
|
|
27
27
|
Provides-Extra: cli
|
|
28
28
|
Requires-Dist: argcomplete; extra == "cli"
|
|
29
29
|
Provides-Extra: workflow
|
|
30
|
-
Requires-Dist: requests
|
|
31
|
-
Requires-Dist: pydantic
|
|
30
|
+
Requires-Dist: requests>=2.32; extra == "workflow"
|
|
31
|
+
Requires-Dist: pydantic>=2.11; extra == "workflow"
|
|
32
32
|
Provides-Extra: test
|
|
33
33
|
Requires-Dist: ddt>=1.7; extra == "test"
|
|
34
34
|
Requires-Dist: moto[s3,server]>=5.1; extra == "test"
|
|
@@ -36,4 +36,4 @@ Requires-Dist: pytest-cov>=5.0; extra == "test"
|
|
|
36
36
|
Requires-Dist: pytest-httpx2>=1.0; extra == "test"
|
|
37
37
|
Requires-Dist: pytest-order>=1.3; extra == "test"
|
|
38
38
|
Requires-Dist: pytest-postgresql>=6.1; extra == "test"
|
|
39
|
-
Requires-Dist: pytest>=
|
|
39
|
+
Requires-Dist: pytest>=9.2; extra == "test"
|
{plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/README.md
RENAMED
|
@@ -72,7 +72,7 @@ kubectl create -f k8s/local/example-business-seeder.yaml
|
|
|
72
72
|
|
|
73
73
|
Wait for the seeder to finish, then allow the `transform`, `concat`, and `repeat` schedules to process the message. Each
|
|
74
74
|
schedule runs once per minute, so completion can take several minutes. A successful run can have an empty batch; check
|
|
75
|
-
the persisted
|
|
75
|
+
the persisted stage inputs as well as the workflow status. List workflows and inspect a completed workflow's logs:
|
|
76
76
|
|
|
77
77
|
```sh
|
|
78
78
|
kubectl get workflows -n argo
|
|
@@ -85,25 +85,34 @@ Forward the API service in a separate terminal:
|
|
|
85
85
|
kubectl port-forward -n plexus-pulse service/plexus-pulse-demeter-app 8000:80
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Query the persisted
|
|
88
|
+
Query the persisted stage inputs from another terminal:
|
|
89
89
|
|
|
90
90
|
```sh
|
|
91
|
-
curl -fsS 'http://localhost:8000/pulse_demeter/pipeline/
|
|
91
|
+
curl -fsS 'http://localhost:8000/pulse_demeter/pipeline/stage_inputs/?pipeline_name=example_business%401'
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
For a fresh database with the default `hello world` input, the response's `
|
|
95
|
-
|
|
94
|
+
For a fresh database with the default `hello world` input, the response's `stage_inputs` list should contain four stage
|
|
95
|
+
inputs, all with `pipelineName: "example_business@1"` and `status: "SUCCEEDED"`:
|
|
96
96
|
|
|
97
|
-
| Producer → Consumer | `
|
|
98
|
-
|
|
99
|
-
| `source` → `transform` | `message`
|
|
100
|
-
| `transform` → `concat` | `lowered`
|
|
101
|
-
| `transform` → `concat` | `reversed`
|
|
102
|
-
| `concat` → `repeat` | `result`
|
|
97
|
+
| Producer → Consumer | `topic` | Expected `result` |
|
|
98
|
+
|------------------------|------------|---------------------------------------------------------------|
|
|
99
|
+
| `source` → `transform` | `message` | `{"lowered": "hello world", "reversed": "dlrow olleh"}` |
|
|
100
|
+
| `transform` → `concat` | `lowered` | `{"message": "hello worlddlrow olleh"}` |
|
|
101
|
+
| `transform` → `concat` | `reversed` | `{"message": "hello worlddlrow olleh"}` |
|
|
102
|
+
| `concat` → `repeat` | `result` | `{"message": "hello worlddlrow ollehhello worlddlrow olleh"}` |
|
|
103
103
|
|
|
104
|
-
Each
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
Each stage input's `outcome` should name its consumer stage. Query the persisted stage outputs as well:
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
curl -fsS 'http://localhost:8000/pulse_demeter/pipeline/stage_outputs/?pipeline_name=example_business%401'
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Join each input's `stageOutputUuid` to an output's `uuid` to find its `producerStage`, `topic`, `dedupKey`, and `data`;
|
|
111
|
+
these fields live on stage outputs, while execution status, `outcome`, and `result` live on stage inputs. All outputs
|
|
112
|
+
share the source message's SHA-256 `dedupKey`. There should be five outputs: the source message, the two transform
|
|
113
|
+
branches, the concatenated message, and the repeated message. The final value is stored in the`concat` → `repeat` stage
|
|
114
|
+
input's `result` and in the terminal `repeat` stage output's `data`. The terminal output is persisted even though it has
|
|
115
|
+
no downstream stage input.
|
|
107
116
|
|
|
108
117
|
The business workspace is under `$WORKSPACE_DIR/$WORKFLOW_UID` on the workflow's shared volume. The heartbeat process
|
|
109
118
|
may exit with code 143 when its workflow finishes.
|
|
@@ -113,38 +122,40 @@ may exit with code 143 when its workflow finishes.
|
|
|
113
122
|
### Stages and data flow
|
|
114
123
|
|
|
115
124
|
The [seeder](example-business-seeder.dockerfile) registers `example_business@1` if it does not exist, verifies the
|
|
116
|
-
topology if it does, and
|
|
117
|
-
deduplication key.
|
|
125
|
+
topology if it does, and creates a source stage output plus a linked `transform` stage input for each input message. The
|
|
126
|
+
message's SHA-256 digest is used as the deduplication key. Internal output creation does not fan out inputs
|
|
127
|
+
automatically, so the seeder explicitly creates the linked input with the topology's retry limit and properties.
|
|
128
|
+
The [business code](example-business.dockerfile) processes three stages:
|
|
118
129
|
|
|
119
130
|
1. `transform` consumes a source message and submits two outputs: the lowercase message (`lowered`) and the original
|
|
120
131
|
message reversed (`reversed`).
|
|
121
132
|
2. `concat` joins those outputs by deduplication key within the claimed batch, concatenates the lowercase and reversed
|
|
122
|
-
messages, and submits a `result` output. If only one branch is in the batch, it skips that
|
|
133
|
+
messages, and submits a `result` output. If only one branch is in the batch, it skips that stage input so it can be
|
|
123
134
|
claimed again later. The join does not fetch missing inputs or retain them outside the batch.
|
|
124
|
-
3. `repeat` consumes the concatenated message, doubles it, and records the result on its input
|
|
125
|
-
submits a `result` output, but the API creates downstream
|
|
126
|
-
this output.
|
|
135
|
+
3. `repeat` consumes the concatenated message, doubles it, and records the result on its stage input. It also
|
|
136
|
+
submits a `result` output, but the API creates downstream stage inputs only for declared consumers. No stage consumes
|
|
137
|
+
this output, but it is still persisted.
|
|
127
138
|
|
|
128
139
|
The [example resources](example-business.yaml) define one CronWorkflow per business stage, each with a claim limit of
|
|
129
|
-
1,000
|
|
130
|
-
`lowered`
|
|
131
|
-
deduplication keys across inputs; unmatched
|
|
140
|
+
1,000 stage inputs per incoming `(producer_stage, topic)` pair. A `concat` batch can therefore contain up to 1,000
|
|
141
|
+
`lowered` stage inputs and 1,000 `reversed` stage inputs, for a total of 2,000. The limit does not guarantee matching
|
|
142
|
+
deduplication keys across inputs; unmatched stage inputs still need to be skipped. `concurrencyPolicy: Forbid` prevents
|
|
132
143
|
overlapping runs of the same CronWorkflow; different stages can run concurrently. Their data dependencies are enforced
|
|
133
|
-
by the availability of
|
|
144
|
+
by the availability of stage inputs in PostgreSQL.
|
|
134
145
|
|
|
135
146
|
### Batch execution and the flow capsule
|
|
136
147
|
|
|
137
148
|
The [dispatcher](../argo/plexus-pulse-demeter-pipeline-templates.yaml) runs each scheduled batch in three steps:
|
|
138
149
|
|
|
139
150
|
1. **Initialize.** Unless a matching local capsule already exists, the worker recovers expired stage run attempts for
|
|
140
|
-
the pipeline and stage, then checks out a batch. Checkout creates a stage run, stage run attempt, and
|
|
141
|
-
attempts and claims up to the configured limit of eligible queued
|
|
142
|
-
|
|
151
|
+
the pipeline and stage, then checks out a batch. Checkout creates a stage run, stage run attempt, and stage input
|
|
152
|
+
attempts and claims up to the configured limit of eligible queued stage inputs per incoming `(producer_stage,
|
|
153
|
+
topic)` pair in one PostgreSQL transaction. Each input is ordered by priority, availability time, and sequence
|
|
143
154
|
number. The Argo workflow UID determines the stage run's deduplication key, so repeated checkout requests reuse the
|
|
144
|
-
same claim rather than claim more
|
|
155
|
+
same claim rather than claim more stage inputs. The worker saves the returned SQLite file as
|
|
145
156
|
`pulse-demeter-flow-capsule.db` in the shared workspace.
|
|
146
157
|
2. **Process.** A daemon sends a heartbeat every 60 seconds while the business container processes the capsule's fixed
|
|
147
|
-
batch. Business code records
|
|
158
|
+
batch. Business code records stage input results with `FlowCapsule.commit`, `fail`, or `skip`, and records downstream
|
|
148
159
|
outputs with `submit`. These calls write to the local capsule; they do not update PostgreSQL directly.
|
|
149
160
|
3. **Finalize.** The exit handler uses the Argo workflow status to decide whether to upload the capsule or report a
|
|
150
161
|
stage run failure, as described below.
|
|
@@ -152,24 +163,24 @@ The [dispatcher](../argo/plexus-pulse-demeter-pipeline-templates.yaml) runs each
|
|
|
152
163
|
### Completion, retries, and recovery
|
|
153
164
|
|
|
154
165
|
When Argo reports `Succeeded`, the worker freezes a SQLite snapshot and uploads it as the multipart `file` field to the
|
|
155
|
-
stage-run-attempt `commit/` endpoint. The API applies
|
|
156
|
-
transaction, then marks the stage run and stage run attempt as succeeded. Stage run
|
|
157
|
-
|
|
158
|
-
Business code should record a result for every
|
|
166
|
+
stage-run-attempt `commit/` endpoint. The API applies stage input results, persists stage outputs, and creates
|
|
167
|
+
downstream stage inputs in one transaction, then marks the stage run and stage run attempt as succeeded. Stage run
|
|
168
|
+
success does not imply every stage input succeeded: explicitly failed stage inputs and claimed stage inputs without a
|
|
169
|
+
result follow the stage input failure rules. Business code should record a result for every stage input.
|
|
159
170
|
|
|
160
|
-
A skipped attempt remains in history and its
|
|
161
|
-
are queued while their retry limit permits it, otherwise they become failed.
|
|
162
|
-
become eligible again after 60 seconds.
|
|
163
|
-
retry allowance.
|
|
171
|
+
A skipped attempt remains in history and its stage input is queued without consuming retry allowance. Failed stage
|
|
172
|
+
inputs are queued while their retry limit permits it, otherwise they become failed. Stage inputs requeued by a capsule
|
|
173
|
+
commit become eligible again after 60 seconds. Stage input attempt numbers continue increasing even when skips do not
|
|
174
|
+
consume retry allowance.
|
|
164
175
|
|
|
165
|
-
For any Argo status other than `Succeeded`, the worker calls `fail/` without uploading the capsule. Running
|
|
166
|
-
attempts become failed, and their
|
|
167
|
-
The separate `cancel/` API operation instead marks running attempts as cancelled and immediately requeues their
|
|
168
|
-
|
|
176
|
+
For any Argo status other than `Succeeded`, the worker calls `fail/` without uploading the capsule. Running stage input
|
|
177
|
+
attempts become failed, and their stage inputs are immediately eligible for another run if their retry limit permits it.
|
|
178
|
+
The separate `cancel/` API operation instead marks running attempts as cancelled and immediately requeues their stage
|
|
179
|
+
inputs without consuming retry allowance. The exit handler does not call `cancel/` automatically.
|
|
169
180
|
|
|
170
181
|
Recovery expires running stage run attempts whose last heartbeat is at least 30 minutes old, marks their stage runs
|
|
171
|
-
failed, and immediately requeues eligible
|
|
172
|
-
new initialization, rather than on an independent timer. Heartbeats and commits for expired or recovered attempts
|
|
182
|
+
failed, and immediately requeues eligible stage inputs under the same retry-limit rules as failure. Recovery runs during
|
|
183
|
+
a new initialization, rather than on an independent timer. Heartbeats and commits for expired or recovered attempts
|
|
173
184
|
receive HTTP 409.
|
|
174
185
|
|
|
175
186
|
The lifecycle endpoints are under `/pulse_demeter/pipeline`: `POST /stage_runs/recover/`, `POST /stage_runs/checkout/`,
|
|
@@ -10,7 +10,7 @@ import json
|
|
|
10
10
|
import urllib.error
|
|
11
11
|
import urllib.request
|
|
12
12
|
|
|
13
|
-
from plexus.pulse.demeter.app.models.pipeline import
|
|
13
|
+
from plexus.pulse.demeter.app.models.pipeline import Pipeline, StageInput, StageOutput
|
|
14
14
|
from plexus.pulse.demeter.app.core.pipeline import validate_topology
|
|
15
15
|
|
|
16
16
|
|
|
@@ -21,33 +21,33 @@ pipeline = Pipeline(
|
|
|
21
21
|
{
|
|
22
22
|
"name": "source",
|
|
23
23
|
"executor": "manual",
|
|
24
|
-
"
|
|
24
|
+
"topics": ["message"],
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"name": "transform",
|
|
28
28
|
"executor": "argo",
|
|
29
29
|
"props": {"normalization": "lowercase"},
|
|
30
30
|
"consume": [
|
|
31
|
-
{"producer": "source", "
|
|
31
|
+
{"producer": "source", "topic": "message", "max_retrials": 2},
|
|
32
32
|
],
|
|
33
|
-
"
|
|
33
|
+
"topics": ["lowered", "reversed"],
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"name": "concat",
|
|
37
37
|
"executor": "argo",
|
|
38
38
|
"consume": [
|
|
39
|
-
{"producer": "transform", "
|
|
40
|
-
{"producer": "transform", "
|
|
39
|
+
{"producer": "transform", "topic": "lowered", "max_retrials": 2},
|
|
40
|
+
{"producer": "transform", "topic": "reversed", "max_retrials": 2, "props": {"branch": "reversed"}},
|
|
41
41
|
],
|
|
42
|
-
"
|
|
42
|
+
"topics": ["result"],
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"name": "repeat",
|
|
46
46
|
"executor": "argo",
|
|
47
47
|
"consume": [
|
|
48
|
-
{"producer": "concat", "
|
|
48
|
+
{"producer": "concat", "topic": "result", "max_retrials": 2},
|
|
49
49
|
],
|
|
50
|
-
"
|
|
50
|
+
"topics": ["result"],
|
|
51
51
|
},
|
|
52
52
|
]
|
|
53
53
|
},
|
|
@@ -58,7 +58,8 @@ def main() -> None:
|
|
|
58
58
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
59
59
|
parser.add_argument("--api-url", default="http://localhost:8000")
|
|
60
60
|
parser.add_argument("--count", type=int, default=1, help="Number of distinct inputs per message")
|
|
61
|
-
parser.add_argument("--batch-size", type=int, default=1000,
|
|
61
|
+
parser.add_argument("--batch-size", type=int, default=1000,
|
|
62
|
+
help="Messages per batch (one output request and one input request)")
|
|
62
63
|
parser.add_argument("messages", nargs="+", help="Messages to process")
|
|
63
64
|
|
|
64
65
|
args = parser.parse_args()
|
|
@@ -76,7 +77,7 @@ def main() -> None:
|
|
|
76
77
|
with urllib.request.urlopen(request, timeout=30) as response:
|
|
77
78
|
return json.load(response)
|
|
78
79
|
except urllib.error.HTTPError as exc:
|
|
79
|
-
raise RuntimeError(f"{path}: HTTP {exc.code}: {exc.read().decode()}") from exc
|
|
80
|
+
raise RuntimeError(f"'{path}': HTTP '{exc.code}': {exc.read().decode()}") from exc
|
|
80
81
|
|
|
81
82
|
with urllib.request.urlopen(base + "/pipelines/", timeout=30) as response:
|
|
82
83
|
existing_pipelines = [Pipeline.model_validate(item) for item in json.load(response)]
|
|
@@ -84,7 +85,7 @@ def main() -> None:
|
|
|
84
85
|
if existing_pipeline is None:
|
|
85
86
|
post("/pipeline/", pipeline.model_dump(mode="json"))
|
|
86
87
|
elif validate_topology(existing_pipeline.topology) != validate_topology(pipeline.topology):
|
|
87
|
-
raise RuntimeError(f"existing pipeline {pipeline.name} has a different topology")
|
|
88
|
+
raise RuntimeError(f"existing pipeline '{pipeline.name}' has a different topology")
|
|
88
89
|
|
|
89
90
|
messages = (
|
|
90
91
|
message if args.count == 1 else f"{message} {index:05d}"
|
|
@@ -92,26 +93,37 @@ def main() -> None:
|
|
|
92
93
|
for index in range(args.count)
|
|
93
94
|
)
|
|
94
95
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
pipeline_name=pipeline.name,
|
|
100
|
-
producer_stage="source",
|
|
101
|
-
consumer_stage="transform",
|
|
102
|
-
stage_output="message",
|
|
103
|
-
work_item_name="input-" + digest[:16],
|
|
104
|
-
dedup_key=digest,
|
|
105
|
-
data={"message": message},
|
|
106
|
-
available_at=datetime.datetime.now(datetime.UTC),
|
|
107
|
-
)
|
|
108
|
-
work_items.append(db_work_item.model_dump(mode="json"))
|
|
109
|
-
|
|
96
|
+
source_input = next(
|
|
97
|
+
source for source in validate_topology(pipeline.topology).stage("transform").consume
|
|
98
|
+
if source.producer == "source" and source.topic == "message"
|
|
99
|
+
)
|
|
110
100
|
submitted = 0
|
|
111
|
-
for batch in itertools.batched(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
for batch in itertools.batched(messages, args.batch_size):
|
|
102
|
+
stage_outputs = [
|
|
103
|
+
StageOutput(
|
|
104
|
+
pipeline_name=pipeline.name,
|
|
105
|
+
producer_stage="source",
|
|
106
|
+
topic="message",
|
|
107
|
+
dedup_key=hashlib.sha256(message.encode()).hexdigest(),
|
|
108
|
+
data={"message": message},
|
|
109
|
+
).model_dump(mode="json")
|
|
110
|
+
for message in batch
|
|
111
|
+
]
|
|
112
|
+
created_stage_outputs = post("/stage_outputs/", stage_outputs)
|
|
113
|
+
stage_inputs = [
|
|
114
|
+
StageInput(
|
|
115
|
+
pipeline_name=pipeline.name,
|
|
116
|
+
stage_output_uuid=stage_output["uuid"],
|
|
117
|
+
consumer_stage="transform",
|
|
118
|
+
props=source_input.props,
|
|
119
|
+
max_retrials=source_input.max_retrials,
|
|
120
|
+
available_at=datetime.datetime.now(datetime.UTC),
|
|
121
|
+
).model_dump(mode="json")
|
|
122
|
+
for stage_output in created_stage_outputs
|
|
123
|
+
]
|
|
124
|
+
created_stage_inputs = post("/stage_inputs/", stage_inputs)
|
|
125
|
+
submitted += len(created_stage_inputs)
|
|
126
|
+
print(f"Submitted {submitted} messages as stage outputs and stage inputs", flush=True)
|
|
115
127
|
|
|
116
128
|
|
|
117
129
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
FROM ruyangshou/plexus-pulse-demeter-tools:latest
|
|
2
|
+
|
|
3
|
+
# language=python
|
|
4
|
+
COPY <<'EOF' /app/example_business.py
|
|
5
|
+
from plexus.pulse.demeter.utils import flowutils
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def main() -> None:
|
|
9
|
+
capsule = flowutils.capsule()
|
|
10
|
+
|
|
11
|
+
stage_run = capsule.stage_run()
|
|
12
|
+
stage = stage_run.stage
|
|
13
|
+
if stage not in {"transform", "concat", "repeat"}:
|
|
14
|
+
raise ValueError(f"unsupported example stage: '{stage}'")
|
|
15
|
+
|
|
16
|
+
stage_inputs = capsule.stage_inputs()
|
|
17
|
+
if stage == "transform":
|
|
18
|
+
for stage_input in stage_inputs:
|
|
19
|
+
message = str(stage_input.data.get("message", ""))
|
|
20
|
+
lowered_message, reversed_message = message.lower(), message[::-1]
|
|
21
|
+
|
|
22
|
+
capsule.submit(
|
|
23
|
+
topic="lowered",
|
|
24
|
+
dedup_key=stage_input.dedup_key,
|
|
25
|
+
data={"message": lowered_message},
|
|
26
|
+
)
|
|
27
|
+
capsule.submit(
|
|
28
|
+
topic="reversed",
|
|
29
|
+
dedup_key=stage_input.dedup_key,
|
|
30
|
+
data={"message": reversed_message},
|
|
31
|
+
)
|
|
32
|
+
capsule.commit(
|
|
33
|
+
stage_input.stage_input_uuid,
|
|
34
|
+
outcome=stage,
|
|
35
|
+
result={"lowered": lowered_message, "reversed": reversed_message},
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
print(f"{stage_input.stage_input_uuid}: {message!r} -> {lowered_message!r}, {reversed_message!r}", flush=True)
|
|
39
|
+
|
|
40
|
+
elif stage == "concat":
|
|
41
|
+
# Inner join the two branch outputs by the source message's digest.
|
|
42
|
+
# A digest is shared by all outputs for one source message.
|
|
43
|
+
lowered_by_key = {stage_input.dedup_key: stage_input
|
|
44
|
+
for stage_input in stage_inputs if stage_input.topic == "lowered"}
|
|
45
|
+
reversed_by_key = {stage_input.dedup_key: stage_input
|
|
46
|
+
for stage_input in stage_inputs if stage_input.topic == "reversed"}
|
|
47
|
+
joined_keys = lowered_by_key.keys() & reversed_by_key.keys()
|
|
48
|
+
|
|
49
|
+
for stage_input in stage_inputs:
|
|
50
|
+
if stage_input.dedup_key not in joined_keys:
|
|
51
|
+
capsule.skip(stage_input.stage_input_uuid)
|
|
52
|
+
|
|
53
|
+
for dedup_key in joined_keys:
|
|
54
|
+
lowered_stage_input = lowered_by_key[dedup_key]
|
|
55
|
+
reversed_stage_input = reversed_by_key[dedup_key]
|
|
56
|
+
lowered_message = lowered_stage_input.data.get("message", "")
|
|
57
|
+
reversed_message = reversed_stage_input.data.get("message", "")
|
|
58
|
+
concatenated_message = lowered_message + reversed_message
|
|
59
|
+
|
|
60
|
+
capsule.submit(
|
|
61
|
+
topic="result",
|
|
62
|
+
dedup_key=dedup_key,
|
|
63
|
+
data={"message": concatenated_message},
|
|
64
|
+
)
|
|
65
|
+
capsule.commit(lowered_stage_input.stage_input_uuid, outcome=stage, result={"message": concatenated_message})
|
|
66
|
+
capsule.commit(reversed_stage_input.stage_input_uuid, outcome=stage, result={"message": concatenated_message})
|
|
67
|
+
|
|
68
|
+
print(f"{dedup_key}: {concatenated_message!r}", flush=True)
|
|
69
|
+
|
|
70
|
+
else:
|
|
71
|
+
for stage_input in stage_inputs:
|
|
72
|
+
message = str(stage_input.data.get("message", ""))
|
|
73
|
+
repeated_message = message * 2
|
|
74
|
+
|
|
75
|
+
capsule.submit(
|
|
76
|
+
topic="result",
|
|
77
|
+
dedup_key=stage_input.dedup_key,
|
|
78
|
+
data={"message": repeated_message},
|
|
79
|
+
)
|
|
80
|
+
capsule.commit(stage_input.stage_input_uuid, outcome=stage, result={"message": repeated_message})
|
|
81
|
+
|
|
82
|
+
print(f"{stage_input.stage_input_uuid}: {message!r} -> {repeated_message!r}", flush=True)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
if __name__ == "__main__":
|
|
86
|
+
main()
|
|
87
|
+
EOF
|
|
88
|
+
|
|
89
|
+
ENTRYPOINT ["/app/venv/bin/python", "/app/example_business.py"]
|
|
@@ -31,8 +31,8 @@ cli = [
|
|
|
31
31
|
"argcomplete",
|
|
32
32
|
]
|
|
33
33
|
workflow = [
|
|
34
|
-
"requests>=2.32
|
|
35
|
-
"pydantic>=2.
|
|
34
|
+
"requests>=2.32",
|
|
35
|
+
"pydantic>=2.11",
|
|
36
36
|
]
|
|
37
37
|
test = [
|
|
38
38
|
"ddt>=1.7",
|
|
@@ -41,7 +41,7 @@ test = [
|
|
|
41
41
|
"pytest-httpx2>=1.0",
|
|
42
42
|
"pytest-order>=1.3",
|
|
43
43
|
"pytest-postgresql>=6.1",
|
|
44
|
-
"pytest>=
|
|
44
|
+
"pytest>=9.2",
|
|
45
45
|
]
|
|
46
46
|
|
|
47
47
|
[project]
|
|
@@ -82,8 +82,8 @@ cli = [
|
|
|
82
82
|
"argcomplete",
|
|
83
83
|
]
|
|
84
84
|
workflow = [
|
|
85
|
-
"requests>=2.32
|
|
86
|
-
"pydantic>=2.
|
|
85
|
+
"requests>=2.32",
|
|
86
|
+
"pydantic>=2.11",
|
|
87
87
|
]
|
|
88
88
|
test = [
|
|
89
89
|
"ddt>=1.7",
|
|
@@ -92,7 +92,7 @@ test = [
|
|
|
92
92
|
"pytest-httpx2>=1.0",
|
|
93
93
|
"pytest-order>=1.3",
|
|
94
94
|
"pytest-postgresql>=6.1",
|
|
95
|
-
"pytest>=
|
|
95
|
+
"pytest>=9.2",
|
|
96
96
|
]
|
|
97
97
|
|
|
98
98
|
[project.scripts]
|
|
@@ -109,6 +109,7 @@ namespaces = true
|
|
|
109
109
|
|
|
110
110
|
[tool.pytest.ini_options]
|
|
111
111
|
pythonpath = ["src"]
|
|
112
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
112
113
|
|
|
113
114
|
[tool.coverage.run]
|
|
114
115
|
branch = true
|