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.
Files changed (398) hide show
  1. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/PKG-INFO +4 -4
  2. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/README.md +54 -43
  3. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business-seeder.dockerfile +43 -31
  4. plexus_python_pulse_demeter-1.1.134/k8s/local/example-business.dockerfile +89 -0
  5. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/pyproject.toml +7 -6
  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
  7. {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
  8. {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
  9. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/pipeline.py +13 -13
  10. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/pipeline.py +201 -161
  11. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/tools/main.py +10 -10
  12. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/flowutils.py +110 -96
  13. {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
  14. {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
  15. {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
  16. {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
  17. {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
  18. plexus_python_pulse_demeter-1.1.132/k8s/local/example-business.dockerfile +0 -87
  19. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.dockerignore +0 -0
  20. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.editorconfig +0 -0
  21. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.github/workflows/pr.yml +0 -0
  22. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.github/workflows/push.yml +0 -0
  23. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/.gitignore +0 -0
  24. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/MANIFEST.in +0 -0
  25. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/README.demeter.md +0 -0
  26. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/README.md +0 -0
  27. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/VERSION +0 -0
  28. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/alembic.ini +0 -0
  29. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/env.py +0 -0
  30. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/script.py.mako +0 -0
  31. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/alembic/versions/.gitkeep +0 -0
  32. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/docker/plexus-pulse-demeter-app.dockerfile +0 -0
  33. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/docker/plexus-pulse-demeter-tools.dockerfile +0 -0
  34. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/argo/plexus-pulse-demeter-pipeline-templates.yaml +0 -0
  35. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/deployment/plexus-pulse-demeter-app.yaml +0 -0
  36. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business-seeder.yaml +0 -0
  37. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/example-business.yaml +0 -0
  38. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/plexus-pulse-demeter-app.yaml +0 -0
  39. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/k8s/local/plexus-pulse-demeter-postgres.yaml +0 -0
  40. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/benchmark-nuscenes_detection.schema.json +0 -0
  41. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/benchmark-nuscenes_tracking.schema.json +0 -0
  42. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/dataset-metafile.schema.json +0 -0
  43. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/layout-spec.schema.json +0 -0
  44. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/sample-metafile.schema.json +0 -0
  45. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/schemas/taxonomy-hierarchy.schema.json +0 -0
  46. {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
  47. {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
  48. {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
  49. {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
  50. {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
  51. {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
  52. {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
  53. {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
  54. {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
  55. {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
  56. {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
  57. {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
  58. {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
  59. {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
  60. {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
  61. {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
  62. {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
  63. {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
  64. {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
  65. {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
  66. {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
  67. {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
  68. {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
  69. {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
  70. {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
  71. {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
  72. {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
  73. {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
  74. {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
  75. {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
  76. {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
  77. {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
  78. {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
  79. {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
  80. {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
  81. {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
  82. {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
  83. {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
  84. {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
  85. {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
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {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
  93. {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
  94. {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
  95. {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
  96. {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
  97. {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
  98. {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
  99. {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
  100. {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
  101. {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
  102. {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
  103. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/bad_dataset/pulse-demeter-dataset.json +0 -0
  104. {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
  105. {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
  106. {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
  107. {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
  108. {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
  109. {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
  110. {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
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {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
  128. {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
  129. {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
  130. {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
  131. {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
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {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
  138. {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
  139. {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
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {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
  148. {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
  149. {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
  150. {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
  151. {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
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {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
  172. {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
  173. {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
  174. {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
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {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
  190. {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
  191. {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
  192. {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
  193. {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
  194. {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
  195. {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
  196. {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
  197. {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
  198. {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
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset/pulse-demeter-dataset.json +0 -0
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/resources/unittest/dataset_intermixed/pulse-demeter-dataset.json +0 -0
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {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
  299. {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
  300. {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
  301. {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
  302. {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
  303. {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
  304. {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
  305. {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
  306. {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
  307. {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
  308. {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
  309. {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
  310. {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
  311. {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
  312. {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
  313. {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
  314. {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
  315. {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
  316. {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
  317. {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
  318. {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
  319. {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
  320. {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
  321. {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
  322. {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
  323. {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
  324. {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
  325. {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
  326. {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
  327. {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
  328. {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
  329. {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
  330. {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
  331. {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
  332. {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
  333. {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
  334. {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
  335. {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
  336. {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
  337. {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
  338. {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
  339. {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
  340. {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
  341. {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
  342. {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
  343. {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
  344. {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
  345. {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
  346. {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
  347. {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
  348. {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
  349. {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
  350. {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
  351. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/setup.cfg +0 -0
  352. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/setup.py +0 -0
  353. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/__init__.py +0 -0
  354. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/__init__.py +0 -0
  355. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/api/__init__.py +0 -0
  356. {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
  357. {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
  358. {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
  359. {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
  360. {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
  361. {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
  362. {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
  363. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/__init__.py +0 -0
  364. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/database.py +0 -0
  365. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/core/vault.py +0 -0
  366. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/main.py +0 -0
  367. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/__init__.py +0 -0
  368. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/catalog.py +0 -0
  369. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/inventory.py +0 -0
  370. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/tagging.py +0 -0
  371. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/user.py +0 -0
  372. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/app/models/workflow.py +0 -0
  373. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/tools/__init__.py +0 -0
  374. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/__init__.py +0 -0
  375. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/config.py +0 -0
  376. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/src/plexus/pulse/demeter/utils/datautils.py +0 -0
  377. {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
  378. {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
  379. {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
  380. {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
  381. {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
  382. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/__init__.py +0 -0
  383. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/__init__.py +0 -0
  384. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/__init__.py +0 -0
  385. {plexus_python_pulse_demeter-1.1.132 → plexus_python_pulse_demeter-1.1.134}/test/plexus_tests/pulse/demeter/app/__init__.py +0 -0
  386. {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
  387. {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
  388. {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
  389. {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
  390. {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
  391. {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
  392. {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
  393. {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
  394. {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
  395. {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
  396. {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
  397. {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
  398. {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.132
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<3,>=2.32; extra == "workflow"
31
- Requires-Dist: pydantic<3,>=2.8; extra == "workflow"
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>=8.3; extra == "test"
39
+ Requires-Dist: pytest>=9.2; extra == "test"
@@ -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 work items as well as the workflow status. List workflows and inspect a completed workflow's logs:
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 work items from another terminal:
88
+ Query the persisted stage inputs from another terminal:
89
89
 
90
90
  ```sh
91
- curl -fsS 'http://localhost:8000/pulse_demeter/pipeline/work_items/?pipeline_name=example_business%401'
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 `work_items` list should contain four work
95
- items, all with `pipeline_name: "example_business@1"` and `status: "SUCCEEDED"`:
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 | `stage_output` | Expected `work_item_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"}` |
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 work item's `outcome` should name its consumer stage, and all four work items should share the source message's
105
- SHA-256 `dedup_key`. The final value is stored in the `concat` → `repeat` work item's `result`; no further work item
106
- is created for the terminal stage's output.
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 submits a source work item for each input message. The message's SHA-256 digest is used as the
117
- deduplication key. The [business code](example-business.dockerfile) processes three stages:
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 work item so it can be
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 work item. It also
125
- submits a `result` output, but the API creates downstream work items only for declared consumers. No stage consumes
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 work items per incoming `(producer_stage, stage_output)` pair. A `concat` batch can therefore contain up to 1,000
130
- `lowered` work items and 1,000 `reversed` work items, for a total of 2,000. The limit does not guarantee matching
131
- deduplication keys across inputs; unmatched work items still need to be skipped. `concurrencyPolicy: Forbid` prevents
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 work items in PostgreSQL.
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 work item
141
- attempts and claims up to the configured limit of eligible queued work items per incoming `(producer_stage,
142
- stage_output)` pair in one PostgreSQL transaction. Each input is ordered by priority, availability time, and sequence
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 work items. The worker saves the returned SQLite file as
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 work item results with `FlowCapsule.commit`, `fail`, or `skip`, and records downstream
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 work item results and creates downstream work items in one
156
- transaction, then marks the stage run and stage run attempt as succeeded. Stage run success does not imply every work
157
- item succeeded: explicitly failed work items and claimed work items without a result follow the work item failure rules.
158
- Business code should record a result for every work item.
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 work item is queued without consuming retry allowance. Failed work items
161
- are queued while their retry limit permits it, otherwise they become failed. Work items requeued by a capsule commit
162
- become eligible again after 60 seconds. Work item attempt numbers continue increasing even when skips do not consume
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 work item
166
- attempts become failed, and their work items are immediately eligible for another run if their retry limit permits it.
167
- The separate `cancel/` API operation instead marks running attempts as cancelled and immediately requeues their work
168
- items without consuming retry allowance. The exit handler does not call `cancel/` automatically.
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 work items under the same retry-limit rules as failure. Recovery runs during a
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 WorkItem, Pipeline
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
- "outputs": ["message"],
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", "output": "message", "max_retrials": 2},
31
+ {"producer": "source", "topic": "message", "max_retrials": 2},
32
32
  ],
33
- "outputs": ["lowered", "reversed"],
33
+ "topics": ["lowered", "reversed"],
34
34
  },
35
35
  {
36
36
  "name": "concat",
37
37
  "executor": "argo",
38
38
  "consume": [
39
- {"producer": "transform", "output": "lowered", "max_retrials": 2},
40
- {"producer": "transform", "output": "reversed", "max_retrials": 2, "props": {"branch": "reversed"}},
39
+ {"producer": "transform", "topic": "lowered", "max_retrials": 2},
40
+ {"producer": "transform", "topic": "reversed", "max_retrials": 2, "props": {"branch": "reversed"}},
41
41
  ],
42
- "outputs": ["result"],
42
+ "topics": ["result"],
43
43
  },
44
44
  {
45
45
  "name": "repeat",
46
46
  "executor": "argo",
47
47
  "consume": [
48
- {"producer": "concat", "output": "result", "max_retrials": 2},
48
+ {"producer": "concat", "topic": "result", "max_retrials": 2},
49
49
  ],
50
- "outputs": ["result"],
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, help="Work items per API request")
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
- work_items = []
96
- for message in messages:
97
- digest = hashlib.sha256(message.encode()).hexdigest()
98
- db_work_item = WorkItem(
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(work_items, args.batch_size):
112
- created_work_items = post("/work_items/", list(batch))
113
- submitted += len(created_work_items)
114
- print(f"Submitted {submitted}/{len(work_items)} work items", flush=True)
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,<3",
35
- "pydantic>=2.8,<3",
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>=8.3",
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,<3",
86
- "pydantic>=2.8,<3",
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>=8.3",
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