plexus-python-pulse-demeter 1.1.131__tar.gz → 1.1.133__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.131 → plexus_python_pulse_demeter-1.1.133}/PKG-INFO +6 -3
  2. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/README.md +1 -1
  3. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/alembic/env.py +1 -3
  4. plexus_python_pulse_demeter-1.1.133/k8s/argo/plexus-pulse-demeter-pipeline-templates.yaml +171 -0
  5. plexus_python_pulse_demeter-1.1.133/k8s/local/README.md +177 -0
  6. plexus_python_pulse_demeter-1.1.133/k8s/local/example-business-seeder.dockerfile +121 -0
  7. plexus_python_pulse_demeter-1.1.133/k8s/local/example-business-seeder.yaml +32 -0
  8. plexus_python_pulse_demeter-1.1.133/k8s/local/example-business.dockerfile +87 -0
  9. plexus_python_pulse_demeter-1.1.133/k8s/local/example-business.yaml +120 -0
  10. plexus_python_pulse_demeter-1.1.133/k8s/local/plexus-pulse-demeter-app.yaml +64 -0
  11. plexus_python_pulse_demeter-1.1.133/k8s/local/plexus-pulse-demeter-postgres.yaml +125 -0
  12. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/pyproject.toml +13 -4
  13. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/__init__.py +4 -0
  14. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/catalog_endpoints.py +224 -198
  15. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/catalog_internal_endpoints.py +104 -90
  16. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/inventory_endpoints.py +22 -26
  17. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/inventory_internal_endpoints.py +56 -42
  18. plexus_python_pulse_demeter-1.1.133/src/plexus/pulse/demeter/app/api/pipeline_endpoints.py +809 -0
  19. plexus_python_pulse_demeter-1.1.133/src/plexus/pulse/demeter/app/api/pipeline_internal_endpoints.py +365 -0
  20. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/tagging_endpoints.py +24 -11
  21. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/user_endpoints.py +24 -10
  22. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/workflow_endpoints.py +221 -169
  23. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/api/workflow_internal_endpoints.py +64 -50
  24. plexus_python_pulse_demeter-1.1.133/src/plexus/pulse/demeter/app/core/pipeline.py +102 -0
  25. plexus_python_pulse_demeter-1.1.133/src/plexus/pulse/demeter/app/models/pipeline.py +647 -0
  26. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/tools/main.py +105 -22
  27. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/utils/datautils.py +9 -9
  28. plexus_python_pulse_demeter-1.1.133/src/plexus/pulse/demeter/utils/flowutils.py +534 -0
  29. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/PKG-INFO +6 -3
  30. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/SOURCES.txt +18 -2
  31. plexus_python_pulse_demeter-1.1.133/src/plexus_python_pulse_demeter.egg-info/entry_points.txt +2 -0
  32. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/requires.txt +6 -2
  33. plexus_python_pulse_demeter-1.1.133/test/plexus_tests/pulse/demeter/app/api/pipeline_endpoints_test.py +3551 -0
  34. plexus_python_pulse_demeter-1.1.133/test/plexus_tests/pulse/demeter/app/api/pipeline_internal_endpoints_test.py +1281 -0
  35. plexus_python_pulse_demeter-1.1.133/test/plexus_tests/pulse/demeter/app/utils/flowutils_test.py +1192 -0
  36. plexus_python_pulse_demeter-1.1.131/src/plexus_python_pulse_demeter.egg-info/entry_points.txt +0 -2
  37. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/.dockerignore +0 -0
  38. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/.editorconfig +0 -0
  39. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/.github/workflows/pr.yml +0 -0
  40. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/.github/workflows/push.yml +0 -0
  41. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/.gitignore +0 -0
  42. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/MANIFEST.in +0 -0
  43. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/README.demeter.md +0 -0
  44. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/VERSION +0 -0
  45. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/alembic/alembic.ini +0 -0
  46. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/alembic/script.py.mako +0 -0
  47. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/alembic/versions/.gitkeep +0 -0
  48. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/docker/plexus-pulse-demeter-app.dockerfile +0 -0
  49. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/docker/plexus-pulse-demeter-tools.dockerfile +0 -0
  50. /plexus_python_pulse_demeter-1.1.131/k8s/deployment/plexus-pulse-demeter-app.deployment.yaml → /plexus_python_pulse_demeter-1.1.133/k8s/deployment/plexus-pulse-demeter-app.yaml +0 -0
  51. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/benchmark-nuscenes_detection.schema.json +0 -0
  52. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/benchmark-nuscenes_tracking.schema.json +0 -0
  53. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/dataset-metafile.schema.json +0 -0
  54. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/layout-spec.schema.json +0 -0
  55. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/sample-metafile.schema.json +0 -0
  56. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/schemas/taxonomy-hierarchy.schema.json +0 -0
  57. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/lidar_points.pcd +0 -0
  58. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/pulse-demeter-sample.json +0 -0
  59. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_left_camera.png +0 -0
  60. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_right_camera.png +0 -0
  61. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_left_camera.png +0 -0
  62. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_right_camera.png +0 -0
  63. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_left_camera.png +0 -0
  64. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_right_camera.png +0 -0
  65. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/lidar_points.pcd +0 -0
  66. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/pulse-demeter-sample.json +0 -0
  67. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_left_camera.png +0 -0
  68. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_right_camera.png +0 -0
  69. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_left_camera.png +0 -0
  70. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_right_camera.png +0 -0
  71. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/lidar_points.pcd +0 -0
  72. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/pulse-demeter-sample.json +0 -0
  73. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_left_camera.png +0 -0
  74. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_right_camera.png +0 -0
  75. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_another_name-0-missing_file/pulse-demeter-sample.json +0 -0
  76. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/extra_file +0 -0
  77. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_left_camera.png +0 -0
  78. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_right_camera.png +0 -0
  79. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/lidar_points.pcd +0 -0
  80. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/pulse-demeter-sample.json +0 -0
  81. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_left_camera.png +0 -0
  82. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_right_camera.png +0 -0
  83. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_left_camera.png +0 -0
  84. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_right_camera.png +0 -0
  85. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/extra_file +0 -0
  86. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_left_camera.png +0 -0
  87. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_right_camera.png +0 -0
  88. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/lidar_points.pcd +0 -0
  89. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/pulse-demeter-sample.json +0 -0
  90. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_left_camera.png +0 -0
  91. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_right_camera.png +0 -0
  92. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_left_camera.png +0 -0
  93. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_right_camera.png +0 -0
  94. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/extra_file +0 -0
  95. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_left_camera.png +0 -0
  96. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_right_camera.png +0 -0
  97. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/lidar_points.pcd +0 -0
  98. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/pulse-demeter-sample.json +0 -0
  99. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_left_camera.png +0 -0
  100. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_right_camera.png +0 -0
  101. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_left_camera.png +0 -0
  102. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_right_camera.png +0 -0
  103. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/extra_file +0 -0
  104. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-0-extra_file/pulse-demeter-sample.json +0 -0
  105. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_left_camera.png +0 -0
  106. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_right_camera.png +0 -0
  107. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/lidar_points.pcd +0 -0
  108. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/pulse-demeter-sample.json +0 -0
  109. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_left_camera.png +0 -0
  110. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_right_camera.png +0 -0
  111. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_left_camera.png +0 -0
  112. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_right_camera.png +0 -0
  113. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/20200101T000000-brand_name-1-pattern_mismatch/pulse-demeter-sample.json +0 -0
  114. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset/pulse-demeter-dataset.json +0 -0
  115. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/lidar_points.pcd +0 -0
  116. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_left_camera.png +0 -0
  117. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/rear_right_camera.png +0 -0
  118. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_left_camera.png +0 -0
  119. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.000000/side_right_camera.png +0 -0
  120. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_left_camera.png +0 -0
  121. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/front_right_camera.png +0 -0
  122. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/lidar_points.pcd +0 -0
  123. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_left_camera.png +0 -0
  124. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000000.999999/side_right_camera.png +0 -0
  125. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_left_camera.png +0 -0
  126. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/front_right_camera.png +0 -0
  127. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/lidar_points.pcd +0 -0
  128. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_left_camera.png +0 -0
  129. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/20200101T000001.499999/rear_right_camera.png +0 -0
  130. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_another_name-0-missing_file/pulse-demeter-sample.json +0 -0
  131. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/extra_file +0 -0
  132. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_left_camera.png +0 -0
  133. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/front_right_camera.png +0 -0
  134. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/lidar_points.pcd +0 -0
  135. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_left_camera.png +0 -0
  136. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/rear_right_camera.png +0 -0
  137. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_left_camera.png +0 -0
  138. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.000001/side_right_camera.png +0 -0
  139. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/extra_file +0 -0
  140. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_left_camera.png +0 -0
  141. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/front_right_camera.png +0 -0
  142. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/lidar_points.pcd +0 -0
  143. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_left_camera.png +0 -0
  144. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/rear_right_camera.png +0 -0
  145. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_left_camera.png +0 -0
  146. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.500001/side_right_camera.png +0 -0
  147. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/extra_file +0 -0
  148. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_left_camera.png +0 -0
  149. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/front_right_camera.png +0 -0
  150. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/lidar_points.pcd +0 -0
  151. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_left_camera.png +0 -0
  152. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/rear_right_camera.png +0 -0
  153. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_left_camera.png +0 -0
  154. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/20200101T000001.999999/side_right_camera.png +0 -0
  155. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/extra_file +0 -0
  156. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-0-extra_file/pulse-demeter-sample.json +0 -0
  157. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_left_camera.png +0 -0
  158. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/front_right_camera.png +0 -0
  159. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/lidar_points.pcd +0 -0
  160. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_left_camera.png +0 -0
  161. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/rear_right_camera.png +0 -0
  162. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_left_camera.png +0 -0
  163. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/bad_directory_name/side_right_camera.png +0 -0
  164. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/20200101T000000-brand_name-1-pattern_mismatch/pulse-demeter-sample.json +0 -0
  165. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/bad_dataset_intermixed/pulse-demeter-dataset.json +0 -0
  166. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
  167. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
  168. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
  169. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/pulse-demeter-sample.json +0 -0
  170. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
  171. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
  172. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
  173. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
  174. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
  175. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
  176. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
  177. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/pulse-demeter-sample.json +0 -0
  178. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
  179. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
  180. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
  181. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
  182. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
  183. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
  184. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
  185. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/pulse-demeter-sample.json +0 -0
  186. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
  187. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
  188. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
  189. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
  190. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
  191. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
  192. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
  193. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
  194. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/pulse-demeter-sample.json +0 -0
  195. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
  196. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
  197. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
  198. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
  199. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
  200. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
  201. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
  202. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/pulse-demeter-sample.json +0 -0
  203. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
  204. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
  205. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
  206. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
  207. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
  208. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
  209. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
  210. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/pulse-demeter-sample.json +0 -0
  211. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
  212. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
  213. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
  214. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
  215. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
  216. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
  217. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
  218. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
  219. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/pulse-demeter-sample.json +0 -0
  220. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
  221. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
  222. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
  223. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
  224. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
  225. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
  226. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
  227. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/pulse-demeter-sample.json +0 -0
  228. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
  229. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
  230. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
  231. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
  232. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
  233. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset/pulse-demeter-dataset.json +0 -0
  234. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
  235. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
  236. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
  237. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
  238. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
  239. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
  240. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
  241. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
  242. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
  243. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
  244. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
  245. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
  246. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
  247. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
  248. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
  249. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
  250. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
  251. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
  252. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
  253. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
  254. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
  255. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
  256. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
  257. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
  258. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
  259. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
  260. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
  261. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
  262. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
  263. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
  264. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
  265. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
  266. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
  267. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
  268. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
  269. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
  270. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
  271. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
  272. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
  273. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
  274. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
  275. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
  276. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
  277. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
  278. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
  279. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
  280. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
  281. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
  282. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
  283. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
  284. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
  285. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
  286. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
  287. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
  288. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
  289. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
  290. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
  291. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
  292. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
  293. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_intermixed/pulse-demeter-dataset.json +0 -0
  294. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/front_left_camera.png +0 -0
  295. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/front_right_camera.png +0 -0
  296. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/lidar_points.pcd +0 -0
  297. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/pulse-demeter-sample.json +0 -0
  298. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_left_camera.png +0 -0
  299. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/rear_right_camera.png +0 -0
  300. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/side_left_camera.png +0 -0
  301. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.000000/side_right_camera.png +0 -0
  302. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/front_left_camera.png +0 -0
  303. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/front_right_camera.png +0 -0
  304. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/lidar_points.pcd +0 -0
  305. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/pulse-demeter-sample.json +0 -0
  306. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_left_camera.png +0 -0
  307. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/rear_right_camera.png +0 -0
  308. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/side_left_camera.png +0 -0
  309. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000000.999999/side_right_camera.png +0 -0
  310. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/front_left_camera.png +0 -0
  311. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/front_right_camera.png +0 -0
  312. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/lidar_points.pcd +0 -0
  313. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/pulse-demeter-sample.json +0 -0
  314. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_left_camera.png +0 -0
  315. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/rear_right_camera.png +0 -0
  316. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/side_left_camera.png +0 -0
  317. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/20200101T000001.499999/side_right_camera.png +0 -0
  318. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_another_name-0/pulse-demeter-sample.json +0 -0
  319. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/front_left_camera.png +0 -0
  320. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/front_right_camera.png +0 -0
  321. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/lidar_points.pcd +0 -0
  322. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/pulse-demeter-sample.json +0 -0
  323. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/rear_left_camera.png +0 -0
  324. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/rear_right_camera.png +0 -0
  325. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/side_left_camera.png +0 -0
  326. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.000001/side_right_camera.png +0 -0
  327. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/front_left_camera.png +0 -0
  328. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/front_right_camera.png +0 -0
  329. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/lidar_points.pcd +0 -0
  330. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/pulse-demeter-sample.json +0 -0
  331. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/rear_left_camera.png +0 -0
  332. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/rear_right_camera.png +0 -0
  333. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/side_left_camera.png +0 -0
  334. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.500001/side_right_camera.png +0 -0
  335. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/front_left_camera.png +0 -0
  336. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/front_right_camera.png +0 -0
  337. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/lidar_points.pcd +0 -0
  338. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/pulse-demeter-sample.json +0 -0
  339. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/rear_left_camera.png +0 -0
  340. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/rear_right_camera.png +0 -0
  341. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/side_left_camera.png +0 -0
  342. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/20200101T000001.999999/side_right_camera.png +0 -0
  343. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-0/pulse-demeter-sample.json +0 -0
  344. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/front_left_camera.png +0 -0
  345. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/front_right_camera.png +0 -0
  346. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/lidar_points.pcd +0 -0
  347. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/pulse-demeter-sample.json +0 -0
  348. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/rear_left_camera.png +0 -0
  349. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/rear_right_camera.png +0 -0
  350. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/side_left_camera.png +0 -0
  351. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.000999/side_right_camera.png +0 -0
  352. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/front_left_camera.png +0 -0
  353. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/front_right_camera.png +0 -0
  354. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/lidar_points.pcd +0 -0
  355. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/pulse-demeter-sample.json +0 -0
  356. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/rear_left_camera.png +0 -0
  357. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/rear_right_camera.png +0 -0
  358. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/side_left_camera.png +0 -0
  359. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/20200101T000001.999000/side_right_camera.png +0 -0
  360. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/20200101T000000-brand_name-1/pulse-demeter-sample.json +0 -0
  361. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/resources/unittest/dataset_name_ref/pulse-demeter-dataset.json +0 -0
  362. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/setup.cfg +0 -0
  363. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/setup.py +0 -0
  364. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/__init__.py +0 -0
  365. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/__init__.py +0 -0
  366. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/core/__init__.py +0 -0
  367. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/core/database.py +0 -0
  368. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/core/vault.py +0 -0
  369. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/main.py +0 -0
  370. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/__init__.py +0 -0
  371. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/catalog.py +0 -0
  372. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/inventory.py +0 -0
  373. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/tagging.py +0 -0
  374. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/user.py +0 -0
  375. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/app/models/workflow.py +0 -0
  376. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/tools/__init__.py +0 -0
  377. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/utils/__init__.py +0 -0
  378. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus/pulse/demeter/utils/config.py +0 -0
  379. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/dependency_links.txt +0 -0
  380. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/not-zip-safe +0 -0
  381. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/src/plexus_python_pulse_demeter.egg-info/top_level.txt +0 -0
  382. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/__init__.py +0 -0
  383. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/__init__.py +0 -0
  384. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/__init__.py +0 -0
  385. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/__init__.py +0 -0
  386. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/__init__.py +0 -0
  387. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/catalog_endpoints_1_test.py +0 -0
  388. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/catalog_endpoints_2_test.py +0 -0
  389. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/catalog_internal_endpoints_test.py +0 -0
  390. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/inventory_endpoints_test.py +0 -0
  391. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/inventory_internal_endpoints_test.py +0 -0
  392. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/tagging_endpoints_test.py +0 -0
  393. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/user_endpoints_test.py +0 -0
  394. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/workflow_endpoints_test.py +0 -0
  395. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/api/workflow_internal_endpoints_test.py +0 -0
  396. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/utils/__init__.py +0 -0
  397. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/test/plexus_tests/pulse/demeter/app/utils/datautils_test.py +0 -0
  398. {plexus_python_pulse_demeter-1.1.131 → plexus_python_pulse_demeter-1.1.133}/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.131
3
+ Version: 1.1.133
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -15,7 +15,7 @@ Requires-Dist: textcase
15
15
  Requires-Dist: plexus-python-common[all]>=1.1
16
16
  Requires-Dist: plexus-python-pulse-common[all]>=1.1
17
17
  Provides-Extra: all
18
- Requires-Dist: plexus-python-pulse-demeter[api,cli]; extra == "all"
18
+ Requires-Dist: plexus-python-pulse-demeter[api,cli,workflow]; extra == "all"
19
19
  Provides-Extra: api
20
20
  Requires-Dist: alembic; extra == "api"
21
21
  Requires-Dist: fastapi; extra == "api"
@@ -26,6 +26,9 @@ Requires-Dist: ujson; extra == "api"
26
26
  Requires-Dist: uvicorn; extra == "api"
27
27
  Provides-Extra: cli
28
28
  Requires-Dist: argcomplete; extra == "cli"
29
+ Provides-Extra: workflow
30
+ Requires-Dist: requests>=2.32; extra == "workflow"
31
+ Requires-Dist: pydantic>=2.11; extra == "workflow"
29
32
  Provides-Extra: test
30
33
  Requires-Dist: ddt>=1.7; extra == "test"
31
34
  Requires-Dist: moto[s3,server]>=5.1; extra == "test"
@@ -33,4 +36,4 @@ Requires-Dist: pytest-cov>=5.0; extra == "test"
33
36
  Requires-Dist: pytest-httpx2>=1.0; extra == "test"
34
37
  Requires-Dist: pytest-order>=1.3; extra == "test"
35
38
  Requires-Dist: pytest-postgresql>=6.1; extra == "test"
36
- Requires-Dist: pytest>=8.3; extra == "test"
39
+ Requires-Dist: pytest>=9.2; extra == "test"
@@ -80,5 +80,5 @@ kubectl create secret generic plexus-pulse-demeter-secrets \
80
80
  -n plexus-pulse
81
81
 
82
82
  # Apply Kubernetes manifests for Plexus Pulse components
83
- kubectl apply -f k8s/deployment/plexus-pulse-demeter-app.deployment.yaml -n plexus-pulse
83
+ kubectl apply -f k8s/deployment/plexus-pulse-demeter-app.yaml -n plexus-pulse
84
84
  ```
@@ -6,7 +6,7 @@ import sqlalchemy as sa
6
6
  from plexus.pulse.common.utils.ormutils import collect_model_tables
7
7
 
8
8
  from plexus.pulse.demeter.app.models import BaseModel
9
- from plexus.pulse.demeter.app.models import catalog, inventory, tagging, user, workflow
9
+ from plexus.pulse.demeter.app.models import catalog, inventory, pipeline, tagging, user, workflow # noqa: F401
10
10
 
11
11
  database_host = os.getenv("PULSE_DEMETER_DATABASE_HOST", "localhost")
12
12
  database_port = os.getenv("PULSE_DEMETER_DATABASE_PORT", "5432")
@@ -14,8 +14,6 @@ database_username = os.getenv("PULSE_DEMETER_DATABASE_USERNAME", "pulse")
14
14
  database_password = os.getenv("PULSE_DEMETER_DATABASE_PASSWORD", "pulse")
15
15
  database_database = os.getenv("PULSE_DEMETER_DATABASE_DATABASE", "pulse-demeter")
16
16
 
17
- print(inventory.__all__ + tagging.__all__ + catalog.__all__ + user.__all__ + workflow.__all__)
18
-
19
17
  url = sa.URL.create(
20
18
  drivername="postgresql+psycopg",
21
19
  host=database_host,
@@ -0,0 +1,171 @@
1
+ apiVersion: argoproj.io/v1alpha1
2
+ kind: WorkflowTemplate
3
+ metadata:
4
+ name: plexus-pulse-demeter-pipeline-operations
5
+ spec:
6
+ templates:
7
+ - name: initialize
8
+ inputs:
9
+ parameters:
10
+ - name: api-url
11
+ - name: pipeline-name
12
+ - name: stage
13
+ - name: workflow-uid
14
+ - name: argo-name
15
+ - name: argo-namespace
16
+ - name: claim-limit
17
+ container:
18
+ image: ruyangshou/plexus-pulse-demeter-tools:latest
19
+ imagePullPolicy: IfNotPresent
20
+ command: [ /app/venv/bin/pulse-demeter-tools ]
21
+ args: [ flow-ops, initialize ]
22
+ env:
23
+ - name: API_URL
24
+ value: "{{inputs.parameters.api-url}}"
25
+ - name: PIPELINE_NAME
26
+ value: "{{inputs.parameters.pipeline-name}}"
27
+ - name: STAGE
28
+ value: "{{inputs.parameters.stage}}"
29
+ - name: WORKFLOW_UID
30
+ value: "{{inputs.parameters.workflow-uid}}"
31
+ - name: ARGO_NAME
32
+ value: "{{inputs.parameters.argo-name}}"
33
+ - name: ARGO_NAMESPACE
34
+ value: "{{inputs.parameters.argo-namespace}}"
35
+ - name: CLAIM_LIMIT
36
+ value: "{{inputs.parameters.claim-limit}}"
37
+
38
+ - name: heartbeat
39
+ daemon: true
40
+ inputs:
41
+ parameters:
42
+ - name: api-url
43
+ - name: workflow-uid
44
+ container:
45
+ image: ruyangshou/plexus-pulse-demeter-tools:latest
46
+ imagePullPolicy: IfNotPresent
47
+ command: [ /app/venv/bin/pulse-demeter-tools ]
48
+ args: [ flow-ops, heartbeat ]
49
+ env:
50
+ - name: API_URL
51
+ value: "{{inputs.parameters.api-url}}"
52
+ - name: WORKFLOW_UID
53
+ value: "{{inputs.parameters.workflow-uid}}"
54
+
55
+ - name: finalize
56
+ inputs:
57
+ parameters:
58
+ - name: api-url
59
+ - name: workflow-uid
60
+ - name: workflow-status
61
+ container:
62
+ image: ruyangshou/plexus-pulse-demeter-tools:latest
63
+ imagePullPolicy: IfNotPresent
64
+ command: [ /app/venv/bin/pulse-demeter-tools ]
65
+ args: [ flow-ops, finalize ]
66
+ env:
67
+ - name: API_URL
68
+ value: "{{inputs.parameters.api-url}}"
69
+ - name: WORKFLOW_UID
70
+ value: "{{inputs.parameters.workflow-uid}}"
71
+ - name: WORKFLOW_STATUS
72
+ value: "{{inputs.parameters.workflow-status}}"
73
+
74
+ ---
75
+
76
+ apiVersion: argoproj.io/v1alpha1
77
+ kind: WorkflowTemplate
78
+ metadata:
79
+ name: plexus-pulse-demeter-pipeline-dispatcher
80
+ spec:
81
+ entrypoint: main
82
+ onExit: finalize
83
+ templateDefaults:
84
+ container:
85
+ volumeMounts:
86
+ - name: workdir
87
+ mountPath: "{{workflow.parameters.workspace-dir}}"
88
+ env:
89
+ - name: WORKSPACE_DIR
90
+ value: "{{workflow.parameters.workspace-dir}}"
91
+ volumeClaimTemplates:
92
+ - metadata:
93
+ name: workdir
94
+ spec:
95
+ accessModes: [ ReadWriteMany ]
96
+ resources:
97
+ requests:
98
+ storage: 1Gi
99
+ arguments:
100
+ parameters:
101
+ - name: workspace-dir
102
+ value: /workspace
103
+ - name: api-url
104
+ value: http://plexus-pulse-demeter-app.plexus-pulse.svc.cluster.local
105
+ - name: pipeline-name
106
+ value: pipeline_name@1.0.0
107
+ - name: stage
108
+ value: stage_name
109
+ - name: business-template
110
+ value: business-template
111
+ - name: claim-limit
112
+ value: "1000"
113
+ templates:
114
+ - name: main
115
+ steps:
116
+ - - name: initialize
117
+ templateRef:
118
+ name: plexus-pulse-demeter-pipeline-operations
119
+ template: initialize
120
+ arguments:
121
+ parameters:
122
+ - name: api-url
123
+ value: "{{workflow.parameters.api-url}}"
124
+ - name: pipeline-name
125
+ value: "{{workflow.parameters.pipeline-name}}"
126
+ - name: stage
127
+ value: "{{workflow.parameters.stage}}"
128
+ - name: workflow-uid
129
+ value: "{{workflow.uid}}"
130
+ - name: argo-name
131
+ value: "{{workflow.name}}"
132
+ - name: argo-namespace
133
+ value: "{{workflow.namespace}}"
134
+ - name: claim-limit
135
+ value: "{{workflow.parameters.claim-limit}}"
136
+ - - name: batch
137
+ template: batch
138
+ - name: batch
139
+ steps:
140
+ - - name: heartbeat
141
+ templateRef:
142
+ name: plexus-pulse-demeter-pipeline-operations
143
+ template: heartbeat
144
+ arguments:
145
+ parameters:
146
+ - name: api-url
147
+ value: "{{workflow.parameters.api-url}}"
148
+ - name: workflow-uid
149
+ value: "{{workflow.uid}}"
150
+ - - name: process
151
+ templateRef:
152
+ name: "{{workflow.parameters.business-template}}"
153
+ template: run
154
+ arguments:
155
+ parameters:
156
+ - name: workflow-uid
157
+ value: "{{workflow.uid}}"
158
+ - name: finalize
159
+ steps:
160
+ - - name: complete-stage-run
161
+ templateRef:
162
+ name: plexus-pulse-demeter-pipeline-operations
163
+ template: finalize
164
+ arguments:
165
+ parameters:
166
+ - name: api-url
167
+ value: "{{workflow.parameters.api-url}}"
168
+ - name: workflow-uid
169
+ value: "{{workflow.uid}}"
170
+ - name: workflow-status
171
+ value: "{{workflow.status}}"
@@ -0,0 +1,177 @@
1
+ # Run and validate the local example
2
+
3
+ This guide runs the example pipeline on a local `argo-local` kind cluster with PostgreSQL, the Demeter API, and Argo
4
+ Workflows. Run the commands from the repository root.
5
+
6
+ ## Prerequisites
7
+
8
+ - A running kind cluster named `argo-local`
9
+ - `kubectl`, `docker`, and `kind`
10
+ - An Argo Workflows installation with its namespace named `argo`
11
+
12
+ ## Start Demeter
13
+
14
+ Create the application namespace and database credentials:
15
+
16
+ ```sh
17
+ kubectl create namespace plexus-pulse
18
+ kubectl create secret generic plexus-pulse-demeter-db -n plexus-pulse \
19
+ --from-literal=username=pulse \
20
+ --from-literal=password='<local password>' \
21
+ --from-literal=database=pulse_demeter
22
+ ```
23
+
24
+ Build and load the required images into kind:
25
+
26
+ ```sh
27
+ docker build -f docker/plexus-pulse-demeter-app.dockerfile \
28
+ -t ruyangshou/plexus-pulse-demeter-app:latest .
29
+ kind load docker-image ruyangshou/plexus-pulse-demeter-app:latest --name argo-local
30
+
31
+ docker build -f docker/plexus-pulse-demeter-tools.dockerfile \
32
+ -t ruyangshou/plexus-pulse-demeter-tools:latest .
33
+ kind load docker-image ruyangshou/plexus-pulse-demeter-tools:latest --name argo-local
34
+
35
+ docker build -f k8s/local/example-business-seeder.dockerfile \
36
+ -t plexus-pulse-demeter-example-seeder:local .
37
+ kind load docker-image plexus-pulse-demeter-example-seeder:local --name argo-local
38
+
39
+ docker build -f k8s/local/example-business.dockerfile \
40
+ -t plexus-pulse-demeter-example:local .
41
+ kind load docker-image plexus-pulse-demeter-example:local --name argo-local
42
+
43
+ docker pull postgres:16-alpine
44
+ kind load docker-image postgres:16-alpine --name argo-local
45
+ ```
46
+
47
+ Start PostgreSQL, initialize the schema, and deploy the API:
48
+
49
+ ```sh
50
+ kubectl apply -f k8s/local/plexus-pulse-demeter-postgres.yaml
51
+ kubectl rollout status statefulset/plexus-pulse-demeter-postgres -n plexus-pulse --timeout=180s
52
+ kubectl wait --for=condition=complete job/plexus-pulse-demeter-postgres-init -n plexus-pulse --timeout=180s
53
+
54
+ kubectl apply -f k8s/local/plexus-pulse-demeter-app.yaml
55
+ kubectl rollout status deployment/plexus-pulse-demeter-app -n plexus-pulse --timeout=180s
56
+ ```
57
+
58
+ The initialization Job creates tables from the SQLModel definitions for a fresh installation. The repository does not
59
+ provide a migration for existing databases; apply an appropriate migration before reusing an older database.
60
+
61
+ ## Run the example
62
+
63
+ Install the Argo pipeline templates, apply the example resources, and start the seeder:
64
+
65
+ ```sh
66
+ kubectl apply -n argo -f k8s/argo/plexus-pulse-demeter-pipeline-templates.yaml
67
+ kubectl apply -n argo -f k8s/local/example-business.yaml
68
+ kubectl create -f k8s/local/example-business-seeder.yaml
69
+ ```
70
+
71
+ ## Validate the results
72
+
73
+ Wait for the seeder to finish, then allow the `transform`, `concat`, and `repeat` schedules to process the message. Each
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:
76
+
77
+ ```sh
78
+ kubectl get workflows -n argo
79
+ kubectl logs -n argo -l workflows.argoproj.io/workflow=<workflow-name> -c main --prefix
80
+ ```
81
+
82
+ Forward the API service in a separate terminal:
83
+
84
+ ```sh
85
+ kubectl port-forward -n plexus-pulse service/plexus-pulse-demeter-app 8000:80
86
+ ```
87
+
88
+ Query the persisted work items from another terminal:
89
+
90
+ ```sh
91
+ curl -fsS 'http://localhost:8000/pulse_demeter/pipeline/work_items/?pipeline_name=example_business%401'
92
+ ```
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"`:
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"}` |
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.
107
+
108
+ The business workspace is under `$WORKSPACE_DIR/$WORKFLOW_UID` on the workflow's shared volume. The heartbeat process
109
+ may exit with code 143 when its workflow finishes.
110
+
111
+ ## How the example pipeline works
112
+
113
+ ### Stages and data flow
114
+
115
+ 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:
118
+
119
+ 1. `transform` consumes a source message and submits two outputs: the lowercase message (`lowered`) and the original
120
+ message reversed (`reversed`).
121
+ 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
123
+ 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.
127
+
128
+ 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
132
+ 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.
134
+
135
+ ### Batch execution and the flow capsule
136
+
137
+ The [dispatcher](../argo/plexus-pulse-demeter-pipeline-templates.yaml) runs each scheduled batch in three steps:
138
+
139
+ 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
143
+ 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
145
+ `pulse-demeter-flow-capsule.db` in the shared workspace.
146
+ 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
148
+ outputs with `submit`. These calls write to the local capsule; they do not update PostgreSQL directly.
149
+ 3. **Finalize.** The exit handler uses the Argo workflow status to decide whether to upload the capsule or report a
150
+ stage run failure, as described below.
151
+
152
+ ### Completion, retries, and recovery
153
+
154
+ 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.
159
+
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.
164
+
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.
169
+
170
+ 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
173
+ receive HTTP 409.
174
+
175
+ The lifecycle endpoints are under `/pulse_demeter/pipeline`: `POST /stage_runs/recover/`, `POST /stage_runs/checkout/`,
176
+ and `POST /stage_runs/{stage_run_uuid}/attempts/{stage_run_attempt_uuid}/` followed by `commit/`, `fail/`, `cancel/`, or
177
+ `heartbeat/`.
@@ -0,0 +1,121 @@
1
+ FROM ruyangshou/plexus-pulse-demeter-tools:latest
2
+
3
+ # language=python
4
+ COPY <<'EOF' /app/example_business_seeder.py
5
+ import argparse
6
+ import datetime
7
+ import hashlib
8
+ import itertools
9
+ import json
10
+ import urllib.error
11
+ import urllib.request
12
+
13
+ from plexus.pulse.demeter.app.models.pipeline import WorkItem, Pipeline
14
+ from plexus.pulse.demeter.app.core.pipeline import validate_topology
15
+
16
+
17
+ pipeline = Pipeline(
18
+ name="example_business@1",
19
+ topology={
20
+ "stages": [
21
+ {
22
+ "name": "source",
23
+ "executor": "manual",
24
+ "outputs": ["message"],
25
+ },
26
+ {
27
+ "name": "transform",
28
+ "executor": "argo",
29
+ "props": {"normalization": "lowercase"},
30
+ "consume": [
31
+ {"producer": "source", "output": "message", "max_retrials": 2},
32
+ ],
33
+ "outputs": ["lowered", "reversed"],
34
+ },
35
+ {
36
+ "name": "concat",
37
+ "executor": "argo",
38
+ "consume": [
39
+ {"producer": "transform", "output": "lowered", "max_retrials": 2},
40
+ {"producer": "transform", "output": "reversed", "max_retrials": 2, "props": {"branch": "reversed"}},
41
+ ],
42
+ "outputs": ["result"],
43
+ },
44
+ {
45
+ "name": "repeat",
46
+ "executor": "argo",
47
+ "consume": [
48
+ {"producer": "concat", "output": "result", "max_retrials": 2},
49
+ ],
50
+ "outputs": ["result"],
51
+ },
52
+ ]
53
+ },
54
+ )
55
+
56
+
57
+ def main() -> None:
58
+ parser = argparse.ArgumentParser(description=__doc__)
59
+ parser.add_argument("--api-url", default="http://localhost:8000")
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")
62
+ parser.add_argument("messages", nargs="+", help="Messages to process")
63
+
64
+ args = parser.parse_args()
65
+ if args.count < 1 or args.batch_size < 1:
66
+ parser.error("--count and --batch-size must be positive")
67
+
68
+ base = args.api_url.rstrip("/") + "/pulse_demeter/internal/pipeline"
69
+
70
+ def post(path: str, body: dict | list[dict]) -> dict | list[dict]:
71
+ request = urllib.request.Request(base + path,
72
+ json.dumps(body).encode(),
73
+ {"Content-Type": "application/json"},
74
+ method="POST")
75
+ try:
76
+ with urllib.request.urlopen(request, timeout=30) as response:
77
+ return json.load(response)
78
+ except urllib.error.HTTPError as exc:
79
+ raise RuntimeError(f"{path}: HTTP {exc.code}: {exc.read().decode()}") from exc
80
+
81
+ with urllib.request.urlopen(base + "/pipelines/", timeout=30) as response:
82
+ existing_pipelines = [Pipeline.model_validate(item) for item in json.load(response)]
83
+ existing_pipeline = next((item for item in existing_pipelines if item.name == pipeline.name), None)
84
+ if existing_pipeline is None:
85
+ post("/pipeline/", pipeline.model_dump(mode="json"))
86
+ elif validate_topology(existing_pipeline.topology) != validate_topology(pipeline.topology):
87
+ raise RuntimeError(f"existing pipeline {pipeline.name} has a different topology")
88
+
89
+ messages = (
90
+ message if args.count == 1 else f"{message} {index:05d}"
91
+ for message in args.messages
92
+ for index in range(args.count)
93
+ )
94
+
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
+
110
+ 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)
115
+
116
+
117
+ if __name__ == "__main__":
118
+ main()
119
+ EOF
120
+
121
+ ENTRYPOINT ["/app/venv/bin/python", "/app/example_business_seeder.py"]
@@ -0,0 +1,32 @@
1
+ apiVersion: argoproj.io/v1alpha1
2
+ kind: Workflow
3
+ metadata:
4
+ generateName: demeter-example-seeder-
5
+ namespace: argo
6
+ spec:
7
+ entrypoint: seed
8
+ arguments:
9
+ parameters:
10
+ - name: api-url
11
+ value: http://plexus-pulse-demeter-app.plexus-pulse.svc.cluster.local
12
+ - name: messages
13
+ value: "hello world"
14
+ - name: count
15
+ value: "1"
16
+ templates:
17
+ - name: seed
18
+ inputs:
19
+ parameters:
20
+ - name: api-url
21
+ - name: messages
22
+ - name: count
23
+ container:
24
+ image: plexus-pulse-demeter-example-seeder:local
25
+ imagePullPolicy: IfNotPresent
26
+ command: [ "/app/venv/bin/python", "/app/example_business_seeder.py" ]
27
+ args:
28
+ - "--api-url"
29
+ - "{{inputs.parameters.api-url}}"
30
+ - "--count"
31
+ - "{{inputs.parameters.count}}"
32
+ - "{{inputs.parameters.messages}}"
@@ -0,0 +1,87 @@
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
+ work_items = capsule.work_items()
17
+ if stage == "transform":
18
+ for work_item in work_items:
19
+ message = str(work_item.data.get("message", ""))
20
+ lowered_message, reversed_message = message.lower(), message[::-1]
21
+
22
+ capsule.submit(
23
+ name="lowered",
24
+ dedup_key=work_item.dedup_key,
25
+ data={"message": lowered_message},
26
+ )
27
+ capsule.submit(
28
+ name="reversed",
29
+ dedup_key=work_item.dedup_key,
30
+ data={"message": reversed_message},
31
+ )
32
+ capsule.commit(
33
+ work_item.work_item_uuid,
34
+ outcome=stage,
35
+ result={"lowered": lowered_message, "reversed": reversed_message},
36
+ )
37
+
38
+ print(f"{work_item.work_item_name}: {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 = {work_item.dedup_key: work_item for work_item in work_items if work_item.stage_output == "lowered"}
44
+ reversed_by_key = {work_item.dedup_key: work_item for work_item in work_items if work_item.stage_output == "reversed"}
45
+ joined_keys = lowered_by_key.keys() & reversed_by_key.keys()
46
+
47
+ for work_item in work_items:
48
+ if work_item.dedup_key not in joined_keys:
49
+ capsule.skip(work_item.work_item_uuid)
50
+
51
+ for dedup_key in joined_keys:
52
+ lowered_work_item = lowered_by_key[dedup_key]
53
+ reversed_work_item = reversed_by_key[dedup_key]
54
+ lowered_message = lowered_work_item.data.get("message", "")
55
+ reversed_message = reversed_work_item.data.get("message", "")
56
+ concatenated_message = lowered_message + reversed_message
57
+
58
+ capsule.submit(
59
+ name="result",
60
+ dedup_key=dedup_key,
61
+ data={"message": concatenated_message},
62
+ )
63
+ capsule.commit(lowered_work_item.work_item_uuid, outcome=stage, result={"message": concatenated_message})
64
+ capsule.commit(reversed_work_item.work_item_uuid, outcome=stage, result={"message": concatenated_message})
65
+
66
+ print(f"{dedup_key}: {concatenated_message!r}", flush=True)
67
+
68
+ else:
69
+ for work_item in work_items:
70
+ message = str(work_item.data.get("message", ""))
71
+ repeated_message = message * 2
72
+
73
+ capsule.submit(
74
+ name="result",
75
+ dedup_key=work_item.dedup_key,
76
+ data={"message": repeated_message},
77
+ )
78
+ capsule.commit(work_item.work_item_uuid, outcome=stage, result={"message": repeated_message})
79
+
80
+ print(f"{work_item.work_item_name}: {message!r} -> {repeated_message!r}", flush=True)
81
+
82
+
83
+ if __name__ == "__main__":
84
+ main()
85
+ EOF
86
+
87
+ ENTRYPOINT ["/app/venv/bin/python", "/app/example_business.py"]