roboflow-workflows 0.1.0__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.
- roboflow_workflows-0.1.0/LICENSE +7 -0
- roboflow_workflows-0.1.0/PKG-INFO +125 -0
- roboflow_workflows-0.1.0/README.md +58 -0
- roboflow_workflows-0.1.0/pyproject.toml +78 -0
- roboflow_workflows-0.1.0/roboflow_workflows/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/_compat_names.py +52 -0
- roboflow_workflows-0.1.0/roboflow_workflows/configuration.py +342 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/_zone_geometry.py +234 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/data_aggregator/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/data_aggregator/v1.py +493 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/detection_event_log/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/detection_event_log/v1.py +478 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/detection_event_log/v1_tensor.py +482 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/line_counter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/line_counter/v1.py +203 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/line_counter/v1_tensor.py +221 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/line_counter/v2.py +250 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/line_counter/v2_tensor.py +280 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/overlap/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/overlap/v1.py +178 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/overlap/v1_tensor.py +191 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/path_deviation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/path_deviation/v1.py +252 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/path_deviation/v1_tensor.py +271 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/path_deviation/v2.py +264 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/path_deviation/v2_tensor.py +284 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v1.py +272 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v1_tensor.py +300 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v2.py +279 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v2_tensor.py +307 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v3.py +384 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/time_in_zone/v3_tensor.py +410 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/velocity/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/velocity/v1.py +289 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/analytics/velocity/v1_tensor.py +392 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/cache_get/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/cache_get/v1.py +169 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/cache_set/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/cache_set/v1.py +180 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/common.py +24 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/cache/memory_cache.py +43 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/auto_rotate_on_edges/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/auto_rotate_on_edges/v1.py +421 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/background_subtraction/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/background_subtraction/v1.py +159 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/camera_focus/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/camera_focus/v1.py +243 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/camera_focus/v2.py +1048 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contours/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contours/v1.py +195 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_enhancement/__init__.py +1 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_enhancement/v1.py +292 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_enhancement/v1_tensor.py +115 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_equalization/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_equalization/v1.py +177 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/contrast_equalization/v1_tensor.py +124 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/convert_grayscale/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/convert_grayscale/v1.py +129 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/convert_grayscale/v1_tensor.py +70 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/detections_nearest_neighbor/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/detections_nearest_neighbor/v1.py +440 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/detections_nearest_neighbor/v1_tensor.py +373 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/distance_measurement/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/distance_measurement/v1.py +468 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/distance_measurement/v1_tensor.py +516 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/dominant_color/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/dominant_color/v1.py +206 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/dominant_color/v1_tensor.py +70 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_blur/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_blur/v1.py +206 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_blur/v1_tensor.py +180 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_preprocessing/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_preprocessing/v1.py +286 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/image_preprocessing/v1_tensor.py +217 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_area_measurement/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_area_measurement/v1.py +181 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_area_measurement/v1_tensor.py +201 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_edge_snap/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_edge_snap/v1.py +578 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/mask_edge_snap/v1_tensor.py +625 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/morphological_transformation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/morphological_transformation/v1.py +230 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/morphological_transformation/v2.py +202 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/motion_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/motion_detection/v1.py +379 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/motion_detection/v1_tensor.py +422 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/pixel_color_count/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/pixel_color_count/v1.py +206 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/pixel_color_count/v1_tensor.py +96 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/sift/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/sift/v1.py +170 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/sift_comparison/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/sift_comparison/v1.py +157 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/sift_comparison/v2.py +346 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/size_measurement/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/size_measurement/v1.py +307 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/size_measurement/v1_tensor.py +314 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/template_matching/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/template_matching/v1.py +236 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/template_matching/v1_tensor.py +269 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/threshold/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/threshold/v1.py +271 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/classical_cv/threshold/v1_tensor.py +261 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/deserializers.py +705 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/deserializers_tensor.py +689 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/entities.py +14 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/inference_response_entities.py +105 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/keypoints.py +60 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/openrouter.py +1083 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/operators.py +39 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/entities/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/entities/enums.py +122 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/entities/introspection.py +33 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/entities/operations.py +1063 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/entities/types.py +4 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/errors.py +25 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/evaluation_engine/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/evaluation_engine/core.py +310 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/evaluation_engine/detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/evaluation_engine/detection/geometry.py +14 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/introspection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/introspection/core.py +130 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/booleans/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/booleans/base.py +17 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/classification_results/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/classification_results/base.py +382 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/core.py +219 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/detection/base.py +253 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/detections/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/detections/base.py +1644 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/dictionaries/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/dictionaries/base.py +29 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/frame_metadata/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/frame_metadata/base.py +43 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/generic/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/generic/base.py +42 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/images/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/images/base.py +101 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/numbers/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/numbers/base.py +74 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/sequences/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/sequences/base.py +165 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/strings/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/strings/base.py +65 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/timestamps/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/timestamps/base.py +16 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/query_language/operations/utils.py +11 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/reasoning.py +138 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/rle_compact.py +236 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/segmentation_entities.py +98 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/serializers.py +464 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/serializers_tensor.py +829 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/tensor_native.py +1060 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/token_usage.py +80 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/utils.py +768 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/utils_tensor.py +69 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/__init__.py +90 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/classification.py +199 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/detection_formats.py +545 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/detections.py +195 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/json_extraction.py +106 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/outputs.py +164 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/tensor_native.py +387 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_decoding/utils.py +35 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlm_json.py +135 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/common/vlms.py +82 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/continue_if/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/continue_if/v1.py +165 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/delta_filter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/delta_filter/v1.py +132 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/inner_workflow/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/inner_workflow/v1.py +377 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/rate_limiter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/rate_limiter/v1.py +160 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/switch_case/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/flow_control/switch_case/v1.py +181 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/csv/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/csv/v1.py +215 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/current_time/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/current_time/v1.py +158 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/expression/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/expression/v1.py +240 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/first_non_empty_or_default/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/first_non_empty_or_default/v1.py +143 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/json_parser/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/json_parser/v1.py +203 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/property_definition/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/property_definition/v1.py +158 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/string_template/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/string_template/v1.py +270 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_classifier/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_classifier/v1.py +330 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_classifier/v1_tensor.py +390 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_classifier/v2.py +338 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_classifier/v2_tensor.py +396 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/anthropic_detection_parsing.py +136 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/gemini_detection_parsing.py +122 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/muse_detection_parsing.py +191 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/openai_detection_parsing.py +137 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/qwen_detection_parsing.py +221 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/spacexai_detection_parsing.py +147 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/v1.py +382 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/v1_tensor.py +570 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/v2.py +622 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/formatters/vlm_as_detector/v2_tensor.py +985 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/buffer/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/buffer/v1.py +154 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_classes_replacement/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_classes_replacement/v1.py +441 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_classes_replacement/v1_tensor.py +592 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_consensus/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_consensus/v1.py +735 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_consensus/v1_tensor.py +1178 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_difference/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_difference/v1.py +335 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_difference/v1_tensor.py +396 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_list_rollup/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_list_rollup/v1.py +1042 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_list_rollup/v1_tensor.py +1305 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_stitch/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_stitch/v1.py +305 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/detections_stitch/v1_tensor.py +1168 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/dimension_collapse/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/dimension_collapse/v1.py +126 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/frame_delay/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/frame_delay/v1.py +268 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/frame_delay/v1_tensor.py +141 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/image_stack/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/image_stack/v1.py +248 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/overlap_analysis/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/overlap_analysis/v1.py +212 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/fusion/overlap_analysis/v1_tensor.py +397 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/loader.py +2009 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/math/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/math/cosine_similarity/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/math/cosine_similarity/v1.py +124 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/math/cosine_similarity/v1_tensor.py +131 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/model_capabilities.py +165 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/v1.py +723 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/v2.py +852 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/v3.py +1014 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/v4.py +1195 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/anthropic_claude/v5.py +1272 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip/v1.py +250 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip/v1_tensor.py +257 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip_comparison/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip_comparison/v1.py +233 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip_comparison/v1_tensor.py +255 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip_comparison/v2.py +302 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/clip_comparison/v2_tensor.py +335 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/cog_vlm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/cog_vlm/v1.py +190 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/cosmos3/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/cosmos3/v1.py +263 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/depth_estimation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/depth_estimation/v1.py +290 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/depth_estimation/v1_tensor.py +325 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/easy_ocr/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/easy_ocr/v1.py +300 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/easy_ocr/v1_tensor.py +363 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/flex/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/flex/inpainting/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/florence2/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/florence2/v1.py +695 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/florence2/v1_tensor.py +376 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/florence2/v2.py +92 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/florence2/v2_tensor.py +43 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/gaze/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/gaze/v1.py +147 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/glm_ocr/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/glm_ocr/v1.py +407 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v1.py +759 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v2.py +903 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v3.py +1054 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v4.py +1089 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v5.py +1149 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemini/v6.py +1209 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemma/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemma/v1.py +667 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemma/v2.py +262 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemma/v3.py +309 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_gemma/v4.py +357 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_vision_ocr/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_vision_ocr/v1.py +307 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/google_vision_ocr/v1_tensor.py +342 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/kimi_openrouter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/kimi_openrouter/v1.py +667 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/kimi_openrouter/v2.py +264 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/kimi_openrouter/v3.py +316 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/llama_vision/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/llama_vision/v1.py +664 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/llama_vision/v2.py +265 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/lmm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/lmm/v1.py +454 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/lmm_classifier/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/lmm_classifier/v1.py +294 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/meta_vlm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/meta_vlm/v1.py +630 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/meta_vlm/v2.py +699 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/meta_vlm/v3.py +755 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/moondream2/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/moondream2/v1.py +272 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/moondream2/v1_tensor.py +264 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/ocr/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/ocr/v1.py +226 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/ocr/v1_tensor.py +249 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v1.py +350 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v2.py +602 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v3.py +716 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v4.py +996 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v5.py +1403 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v6.py +1448 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai/v7.py +1559 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai_compatible/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openai_compatible/v1.py +483 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openrouter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openrouter/v1.py +282 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openrouter/v2.py +339 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/openrouter/v3.py +455 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/perception_encoder/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/perception_encoder/v1.py +253 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/perception_encoder/v1_tensor.py +267 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/pp_ocr/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/pp_ocr/v1.py +255 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/pp_ocr/v1_tensor.py +333 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen/v1.py +278 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5_openrouter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5_openrouter/v1.py +679 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5vl/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5vl/v1.py +327 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5vl/v1_tensor.py +174 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5vl/v2.py +274 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_5vl/v2_tensor.py +151 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_6_openrouter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3_6_openrouter/v1.py +676 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3vl/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3vl/v1.py +275 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen3vl/v1_tensor.py +168 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen_vlm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen_vlm/v1.py +995 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen_vlm/v2.py +1389 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen_vlm/v3.py +1443 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/qwen_vlm/v4.py +1509 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/seg_preview/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/seg_preview/v1.py +357 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/seg_preview/v1_tensor.py +366 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2/v1.py +561 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2/v1_tensor.py +652 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2_video/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2_video/v1.py +414 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything2_video/v1_tensor.py +383 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v1.py +591 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v1_tensor.py +658 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v2.py +680 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v2_tensor.py +797 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v3.py +938 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3/v3_tensor.py +587 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_3d/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_3d/v1.py +306 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_3d/v1_tensor.py +310 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_interactive/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_interactive/v1.py +622 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_interactive/v1_tensor.py +888 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_video/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_video/v1.py +648 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything3_video/v1_tensor.py +727 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything_common/__init__.py +1 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything_common/prompts.py +161 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything_common/streaming_video.py +340 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything_common/streaming_video_tensor.py +169 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/segment_anything_common/visual_prompt.py +38 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/smolvlm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/smolvlm/v1.py +245 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/smolvlm/v1_tensor.py +148 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/spacexai/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/spacexai/v1.py +996 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/spacexai/v2.py +1048 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/spacexai/v3.py +1096 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/image_gen/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/image_gen/v1.py +205 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/inpainting/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/inpainting/v1.py +238 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/inpainting/v1_tensor.py +245 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/outpainting/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/stability_ai/outpainting/v1.py +288 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/yolo_world/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/yolo_world/v1.py +297 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/yolo_world/v1_tensor.py +167 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/zai_vlm/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/zai_vlm/v1.py +742 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/foundation/zai_vlm/v2.py +804 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/action_recognition/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/action_recognition/entities.py +29 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/action_recognition/v1.py +617 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/action_recognition/v1_tensor.py +58 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v1.py +398 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v1_tensor.py +701 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v2.py +403 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v2_tensor.py +701 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v3.py +801 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v3_tensor.py +742 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v4.py +441 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/instance_segmentation/v4_tensor.py +729 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v1.py +374 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v1_tensor.py +639 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v2.py +378 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v2_tensor.py +641 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v3.py +417 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/keypoint_detection/v3_tensor.py +674 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v1.py +271 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v1_tensor.py +471 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v2.py +279 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v2_tensor.py +477 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v3.py +323 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_class_classification/v3_tensor.py +520 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v1.py +274 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v1_tensor.py +453 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v2.py +277 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v2_tensor.py +454 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v3.py +322 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/multi_label_classification/v3_tensor.py +493 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v1.py +354 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v1_tensor.py +440 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v2.py +358 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v2_tensor.py +440 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v3.py +400 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/object_detection/v3_tensor.py +479 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/semantic_segmentation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/semantic_segmentation/v1.py +321 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/semantic_segmentation/v1_tensor.py +643 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/semantic_segmentation/v2.py +382 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/roboflow/semantic_segmentation/v2_tensor.py +702 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/barcode_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/barcode_detection/v1.py +132 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/barcode_detection/v1_tensor.py +158 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/qr_code_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/qr_code_detection/v1.py +140 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/models/third_party/qr_code_detection/v1_tensor.py +160 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_changes/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_changes/v1.py +388 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_changes/v1_tensor.py +405 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_outliers/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_outliers/v1.py +263 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sampling/identify_outliers/v1_tensor.py +265 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/secrets_providers/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/secrets_providers/environment_secrets_store/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/secrets_providers/environment_secrets_store/v1.py +145 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/email_notification/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/email_notification/v1.py +507 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/email_notification/v2.py +1089 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/local_file/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/local_file/v1.py +432 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/noop.py +14 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/onvif_movement/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/onvif_movement/v1.py +990 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/onvif_movement/v1_tensor.py +1028 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/s3/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/s3/v1.py +464 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/slack/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/slack/notification/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/slack/notification/v1.py +418 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/twilio/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/twilio/sms/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/twilio/sms/v1.py +437 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/twilio/sms/v2.py +799 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/webhook/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/sinks/webhook/v1.py +586 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/_base.py +181 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/_base_tensor.py +318 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/botsort/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/botsort/v1.py +326 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/botsort/v1_tensor.py +327 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/bytetrack/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/bytetrack/v1.py +208 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/bytetrack/v1_tensor.py +215 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/ocsort/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/ocsort/v1.py +224 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/ocsort/v1_tensor.py +224 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/sort/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/sort/v1.py +195 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/trackers/sort/v1_tensor.py +202 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/absolute_static_crop/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/absolute_static_crop/v1.py +170 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/absolute_static_crop/v1_tensor.py +186 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/bounding_rect/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/bounding_rect/v1.py +176 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/bounding_rect/v1_tensor.py +249 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v1.py +199 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v1_tensor.py +282 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v2.py +219 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v2_tensor.py +302 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v3.py +284 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/byte_tracker/v3_tensor.py +380 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/camera_calibration/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/camera_calibration/v1.py +285 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detection_offset/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detection_offset/v1.py +213 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detection_offset/v1_tensor.py +317 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_combine/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_combine/v1.py +123 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_combine/v1_tensor.py +341 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_filter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_filter/v1.py +179 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_merge/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_merge/v1.py +180 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_merge/v1_tensor.py +265 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_transformation/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/detections_transformation/v1.py +265 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_crop/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_crop/v1.py +316 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_crop/v1_tensor.py +603 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_zones/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_zones/v1.py +387 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/dynamic_zones/v1_tensor.py +463 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/geotag_detection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/geotag_detection/v1.py +294 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/geotag_detection/v1_tensor.py +327 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/image_slicer/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/image_slicer/v1.py +236 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/image_slicer/v2.py +288 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/per_class_confidence_filter/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/per_class_confidence_filter/v1.py +164 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/per_class_confidence_filter/v1_tensor.py +209 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/perspective_correction/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/perspective_correction/v1.py +881 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/perspective_correction/v1_tensor.py +1368 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/qr_code_generator/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/qr_code_generator/v1.py +405 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/relative_static_crop/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/relative_static_crop/v1.py +173 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stabilize_detections/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stabilize_detections/v1.py +337 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stabilize_detections/v1_tensor.py +524 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_images/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_images/v1.py +269 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_ocr_detections/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_ocr_detections/v1.py +339 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_ocr_detections/v1_tensor.py +403 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_ocr_detections/v2.py +881 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/stitch_ocr_detections/v2_tensor.py +955 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/track_class_lock/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/track_class_lock/v1.py +460 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/transformations/track_class_lock/v1_tensor.py +413 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/background_color/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/background_color/v1.py +163 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/background_color/v1_tensor.py +169 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/blur/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/blur/v1.py +130 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/blur/v1_tensor.py +140 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/bounding_box/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/bounding_box/v1.py +175 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/bounding_box/v1_tensor.py +525 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/circle/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/circle/v1.py +162 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/circle/v1_tensor.py +174 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/classification_label/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/classification_label/v1.py +564 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/classification_label/v1_tensor.py +661 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/color/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/color/v1.py +166 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/color/v1_tensor.py +178 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/annotators/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/annotators/background_color.py +69 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/annotators/halo.py +125 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/annotators/model_comparison.py +140 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/annotators/polygon.py +137 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/base.py +115 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/base_colorable.py +165 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/base_colorable_tensor.py +165 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/base_tensor.py +437 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/README.md +109 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/__init__.py +178 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/anonymous_pro/AnonymousPro-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/anonymous_pro/OFL.txt +94 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/courier_prime/CourierPrime-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/courier_prime/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/fira_code/FiraCode[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/fira_code/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/geist/Geist-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/geist/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/geist_mono/GeistMono-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/geist_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/ibm_plex_mono/IBMPlexMono-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/ibm_plex_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/inconsolata/Inconsolata[wdth,wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/inconsolata/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/inter/Inter[opsz,wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/inter/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/jetbrains_mono/JetBrainsMono[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/jetbrains_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/lato/Lato-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/lato/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/montserrat/Montserrat[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/montserrat/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/noto_sans/NotoSans-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/noto_sans/OFL.txt +94 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/nunito_sans/NunitoSans[YTLC,opsz,wdth,wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/nunito_sans/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/open_sans/OFL.txt +92 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/open_sans/OpenSans[wdth,wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/pt_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/pt_mono/PTM55FT.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/roboto/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/roboto/Roboto[wdth,wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/roboto_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/roboto_mono/RobotoMono[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/source_code_pro/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/source_code_pro/SourceCodePro[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/space_mono/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/space_mono/SpaceMono-Regular.ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/work_sans/OFL.txt +93 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/assets/work_sans/WorkSans[wght].ttf +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/downloader.py +162 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/registry.py +298 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/fonts/schema.py +60 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/label_text.py +117 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/common/utils.py +69 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/corner/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/corner/v1.py +174 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/corner/v1_tensor.py +186 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/crop/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/crop/v1.py +205 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/crop/v1_tensor.py +213 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/dot/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/dot/v1.py +196 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/dot/v1_tensor.py +204 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/ellipse/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/ellipse/v1.py +186 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/ellipse/v1_tensor.py +198 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/grid/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/grid/v1.py +276 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/halo/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/halo/v1.py +193 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/halo/v1_tensor.py +203 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/halo/v2.py +193 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/halo/v2_tensor.py +203 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/heatmap/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/heatmap/v1.py +339 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/heatmap/v1_tensor.py +351 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/icon/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/icon/v1.py +393 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/icon/v1_tensor.py +402 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/keypoint/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/keypoint/v1.py +327 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/keypoint/v1_tensor.py +304 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/label/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/label/v1.py +280 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/label/v1_tensor.py +1188 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/label/v2.py +268 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/label/v2_tensor.py +147 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/line_zone/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/line_zone/v1.py +210 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/mask/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/mask/v1.py +197 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/mask/v1_tensor.py +631 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/model_comparison/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/model_comparison/v1.py +224 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/model_comparison/v1_tensor.py +233 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/pixelate/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/pixelate/v1.py +134 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/pixelate/v1_tensor.py +144 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon/v1.py +181 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon/v1_tensor.py +188 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon/v2.py +180 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon/v2_tensor.py +187 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon_zone/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/polygon_zone/v1.py +178 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/reference_path/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/reference_path/v1.py +156 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/rich_label/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/rich_label/v1.py +365 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/rich_label/v1_tensor.py +151 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/text_display/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/text_display/utils.py +350 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/text_display/v1.py +483 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/trace/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/trace/v1.py +240 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/trace/v1_tensor.py +248 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/triangle/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/triangle/v1.py +212 -0
- roboflow_workflows-0.1.0/roboflow_workflows/core_steps/visualizations/triangle/v1_tensor.py +220 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/loader.py +47 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/PLC_modbus/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/PLC_modbus/v1.py +200 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/PLCethernetIP/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/PLCethernetIP/v1.py +226 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/event_writer/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/event_writer/v1.py +725 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/microsoft_sql_server/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/microsoft_sql_server/v1.py +428 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/mqtt_writer/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/mqtt_writer/v1.py +412 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/opc_writer/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/opc_writer/v1.py +1558 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/plc/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/plc/client.py +232 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/plc/direct.py +286 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/plc/v1.py +572 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/postgresql/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/enterprise_blocks/sinks/postgresql/v1.py +630 -0
- roboflow_workflows-0.1.0/roboflow_workflows/environment.py +159 -0
- roboflow_workflows-0.1.0/roboflow_workflows/errors.py +298 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/constants.py +87 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/core.py +155 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/entities/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/entities/base.py +750 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/entities/engine.py +38 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/entities/tensor_native_types.py +742 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/entities/types.py +1433 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/blocks_loader.py +616 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/connections_discovery.py +248 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/entities.py +143 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/schema_parser.py +507 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/selectors_parser.py +122 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/introspection/utils.py +52 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/profiling/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/profiling/core.py +268 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/cache.py +58 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/core.py +284 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/entities.py +279 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/graph_constructor.py +2035 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/graph_traversal.py +64 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/reference_type_checker.py +26 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/steps_initialiser.py +147 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/syntactic_parser.py +155 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/utils.py +167 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/compiler/validator.py +57 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/core.py +684 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/debugger/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/debugger/core.py +35 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/block_assembler.py +550 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/block_duration.py +89 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/block_scaffolding.py +601 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/debug_logs.py +138 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/entities.py +188 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/error_utils.py +204 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/modal_executor.py +2329 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/representation_boundary.py +1455 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/dynamic_blocks/workflow_debug.py +197 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/entities.py +7 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/core.py +629 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/branching_manager.py +73 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/dynamic_batches_manager.py +119 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/execution_cache.py +413 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/manager.py +701 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/execution_data_manager/step_input_assembler.py +1101 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/flow_coordinator.py +110 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/output_constructor.py +618 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/runtime_input_assembler.py +219 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/runtime_input_validator.py +38 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/executor/utils.py +136 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/__init__.py +43 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/compiler_bridge.py +140 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/composition.py +127 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/constants.py +4 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/dynamic_blocks_collection.py +143 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/errors.py +106 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/inline.py +665 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/inner_workflow/reference_resolution.py +227 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/inputs_discovery.py +371 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/kinds_schemas.py +159 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/kinds_schemas_register.py +35 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/outputs_discovery.py +126 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/introspection/types_discovery.py +25 -0
- roboflow_workflows-0.1.0/roboflow_workflows/execution_engine/v1/step_error_handlers.py +21 -0
- roboflow_workflows-0.1.0/roboflow_workflows/offline.py +70 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/background_tasks.py +13 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/block.py +594 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/cache.py +21 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/image_codec.py +293 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/models_provider.py +310 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/observer.py +155 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/platform_client.py +97 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/platform_errors.py +74 -0
- roboflow_workflows-0.1.0/roboflow_workflows/prototypes/workspace_resolver.py +26 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/__init__.py +0 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/action_recognition.py +63 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/image_encoding.py +123 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/images.py +128 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/in_memory_cache.py +40 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/lru_cache.py +39 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/text.py +80 -0
- roboflow_workflows-0.1.0/roboflow_workflows/utils/url_input.py +187 -0
- roboflow_workflows-0.1.0/roboflow_workflows/warnings.py +2 -0
- roboflow_workflows-0.1.0/roboflow_workflows.egg-info/PKG-INFO +125 -0
- roboflow_workflows-0.1.0/roboflow_workflows.egg-info/SOURCES.txt +837 -0
- roboflow_workflows-0.1.0/roboflow_workflows.egg-info/dependency_links.txt +1 -0
- roboflow_workflows-0.1.0/roboflow_workflows.egg-info/requires.txt +53 -0
- roboflow_workflows-0.1.0/roboflow_workflows.egg-info/top_level.txt +1 -0
- roboflow_workflows-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
LICENSE.core (Apache 2.0) applies to all files in this repository
|
|
2
|
+
except for files in or under any directory that contains a superseding
|
|
3
|
+
license file (such as the models located in `inference/models/`
|
|
4
|
+
which are governed by their own individual licenses and
|
|
5
|
+
the files and folders in the `inference/enterprise/` and `inference_cli/lib/enterprise/` directories which are
|
|
6
|
+
governed by the Roboflow Enterprise License located at
|
|
7
|
+
`inference/enterprise/LICENSE.txt`).
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: roboflow-workflows
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Roboflow Workflows execution engine and block library
|
|
5
|
+
License: LICENSE.core (Apache 2.0) applies to all files in this repository
|
|
6
|
+
except for files in or under any directory that contains a superseding
|
|
7
|
+
license file (such as the models located in `inference/models/`
|
|
8
|
+
which are governed by their own individual licenses and
|
|
9
|
+
the files and folders in the `inference/enterprise/` and `inference_cli/lib/enterprise/` directories which are
|
|
10
|
+
governed by the Roboflow Enterprise License located at
|
|
11
|
+
`inference/enterprise/LICENSE.txt`).
|
|
12
|
+
Requires-Python: <3.13,>=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: pydantic<2.12.0,>=2.8.0
|
|
16
|
+
Requires-Dist: typing-extensions<=4.15.0,>=4.8.0
|
|
17
|
+
Requires-Dist: networkx<4.0.0,>=3.0.0
|
|
18
|
+
Requires-Dist: packaging~=24.0
|
|
19
|
+
Requires-Dist: numpy<2.4,>=1.26
|
|
20
|
+
Requires-Dist: supervision<0.30.0,>=0.29.0
|
|
21
|
+
Requires-Dist: opencv-python<4.13.0,>=4.8.1.78
|
|
22
|
+
Requires-Dist: opencv-contrib-python<4.13.0,>=4.8.1.78
|
|
23
|
+
Requires-Dist: pillow<13.0.0,>=12.3.0
|
|
24
|
+
Requires-Dist: shapely<2.1.0,>=2.0.4
|
|
25
|
+
Requires-Dist: scikit-image<=0.25.2,>=0.19.0
|
|
26
|
+
Requires-Dist: pycocotools<2.1.0,>=2.0.10
|
|
27
|
+
Requires-Dist: pybase64~=1.0.0
|
|
28
|
+
Requires-Dist: filelock<=4.0.0,>=3.20.3
|
|
29
|
+
Requires-Dist: requests<3.0.0,>=2.33.0
|
|
30
|
+
Requires-Dist: urllib3<3.0.0,>=2.7.0
|
|
31
|
+
Requires-Dist: torch<3.0.0,>=2.0.1
|
|
32
|
+
Requires-Dist: torchvision
|
|
33
|
+
Requires-Dist: inference-models>=0.37.1
|
|
34
|
+
Requires-Dist: inference-sdk>=1.6.0
|
|
35
|
+
Requires-Dist: msgpack
|
|
36
|
+
Requires-Dist: websocket-client~=1.9.0
|
|
37
|
+
Requires-Dist: openai<2.0.0,>=1.17.0
|
|
38
|
+
Requires-Dist: anthropic~=0.49.0
|
|
39
|
+
Requires-Dist: boto3<=1.41.5,>=1.40.0
|
|
40
|
+
Requires-Dist: botocore<=1.41.5,>=1.40.0
|
|
41
|
+
Requires-Dist: httpx~=0.28.1
|
|
42
|
+
Requires-Dist: requests-toolbelt~=1.0.0
|
|
43
|
+
Requires-Dist: pandas<3.0.0,>=2.2.3
|
|
44
|
+
Requires-Dist: matplotlib
|
|
45
|
+
Requires-Dist: qrcode~=8.0.0
|
|
46
|
+
Requires-Dist: zxing-cpp~=2.2.0
|
|
47
|
+
Requires-Dist: trackers~=2.4.0
|
|
48
|
+
Requires-Dist: onvif-zeep-async==2.0.0
|
|
49
|
+
Requires-Dist: zeep<5.0,>=4.0
|
|
50
|
+
Requires-Dist: simple-pid~=2.0.1
|
|
51
|
+
Requires-Dist: slack-sdk~=3.33.4
|
|
52
|
+
Requires-Dist: twilio~=9.3.7
|
|
53
|
+
Provides-Extra: enterprise
|
|
54
|
+
Requires-Dist: asyncua~=1.1.5; extra == "enterprise"
|
|
55
|
+
Requires-Dist: paho-mqtt~=1.6.1; extra == "enterprise"
|
|
56
|
+
Requires-Dist: pylogix==1.0.5; extra == "enterprise"
|
|
57
|
+
Requires-Dist: pymodbus<=3.8.3,>=3.6.9; extra == "enterprise"
|
|
58
|
+
Requires-Dist: psycopg[binary]<4,>=3.2; extra == "enterprise"
|
|
59
|
+
Requires-Dist: fastapi<0.129,>=0.100; extra == "enterprise"
|
|
60
|
+
Provides-Extra: test
|
|
61
|
+
Requires-Dist: pytest<10.0.0,>=9.0.3; extra == "test"
|
|
62
|
+
Requires-Dist: pytest-asyncio<=0.21.1; extra == "test"
|
|
63
|
+
Requires-Dist: pytest-timeout>=2.2.0; extra == "test"
|
|
64
|
+
Requires-Dist: requests-mock~=1.12.1; extra == "test"
|
|
65
|
+
Requires-Dist: aioresponses; extra == "test"
|
|
66
|
+
Dynamic: license-file
|
|
67
|
+
|
|
68
|
+
# roboflow-workflows
|
|
69
|
+
|
|
70
|
+
Roboflow Workflows execution engine and block library.
|
|
71
|
+
|
|
72
|
+
`roboflow-workflows` is the Python distribution for the Workflows engine that
|
|
73
|
+
powers [Roboflow Inference](https://github.com/roboflow/inference). It can be
|
|
74
|
+
installed independently for use in standalone pipelines or embedded in the
|
|
75
|
+
full Inference server.
|
|
76
|
+
|
|
77
|
+
## Installation
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
pip install roboflow-workflows
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Optional extras:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
pip install "roboflow-workflows[enterprise]" # enterprise sink blocks
|
|
87
|
+
pip install "roboflow-workflows[test]" # test-only dependencies
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Local development (from this repository)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Provision font assets (required by visualization blocks).
|
|
94
|
+
python workflows/build_scripts/download_fonts.py
|
|
95
|
+
|
|
96
|
+
# Install the package in editable mode with test + enterprise deps.
|
|
97
|
+
pip install -e './workflows[test,enterprise]'
|
|
98
|
+
|
|
99
|
+
# Run package unit and isolation tests.
|
|
100
|
+
cd workflows
|
|
101
|
+
python -m pytest tests/unit_tests tests/isolation
|
|
102
|
+
|
|
103
|
+
# Build a wheel from the same project directory (fonts already provisioned).
|
|
104
|
+
uv lock --check
|
|
105
|
+
uv build --out-dir ../dist
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
For editing `roboflow_workflows` source while running the full Inference
|
|
109
|
+
server, install both projects together from the repository root:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
pip install -e ./inference_models -e './workflows[test,enterprise]' -e .
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The dev images also support mounting `workflows/roboflow_workflows` at
|
|
116
|
+
`/app/roboflow_workflows`, alongside the existing `/app/inference` mount.
|
|
117
|
+
Provision local fonts first, since a bind mount replaces bundled image files.
|
|
118
|
+
|
|
119
|
+
## Font assets
|
|
120
|
+
|
|
121
|
+
Visualization blocks require pre-provisioned font files. Font binaries are
|
|
122
|
+
downloaded by `workflows/build_scripts/download_fonts.py` (or
|
|
123
|
+
`make download_fonts` at the repository root) and are gitignored. They are
|
|
124
|
+
embedded as package-data in the published wheel so that offline environments
|
|
125
|
+
work without a checkout.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# roboflow-workflows
|
|
2
|
+
|
|
3
|
+
Roboflow Workflows execution engine and block library.
|
|
4
|
+
|
|
5
|
+
`roboflow-workflows` is the Python distribution for the Workflows engine that
|
|
6
|
+
powers [Roboflow Inference](https://github.com/roboflow/inference). It can be
|
|
7
|
+
installed independently for use in standalone pipelines or embedded in the
|
|
8
|
+
full Inference server.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pip install roboflow-workflows
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Optional extras:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install "roboflow-workflows[enterprise]" # enterprise sink blocks
|
|
20
|
+
pip install "roboflow-workflows[test]" # test-only dependencies
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Local development (from this repository)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Provision font assets (required by visualization blocks).
|
|
27
|
+
python workflows/build_scripts/download_fonts.py
|
|
28
|
+
|
|
29
|
+
# Install the package in editable mode with test + enterprise deps.
|
|
30
|
+
pip install -e './workflows[test,enterprise]'
|
|
31
|
+
|
|
32
|
+
# Run package unit and isolation tests.
|
|
33
|
+
cd workflows
|
|
34
|
+
python -m pytest tests/unit_tests tests/isolation
|
|
35
|
+
|
|
36
|
+
# Build a wheel from the same project directory (fonts already provisioned).
|
|
37
|
+
uv lock --check
|
|
38
|
+
uv build --out-dir ../dist
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
For editing `roboflow_workflows` source while running the full Inference
|
|
42
|
+
server, install both projects together from the repository root:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install -e ./inference_models -e './workflows[test,enterprise]' -e .
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The dev images also support mounting `workflows/roboflow_workflows` at
|
|
49
|
+
`/app/roboflow_workflows`, alongside the existing `/app/inference` mount.
|
|
50
|
+
Provision local fonts first, since a bind mount replaces bundled image files.
|
|
51
|
+
|
|
52
|
+
## Font assets
|
|
53
|
+
|
|
54
|
+
Visualization blocks require pre-provisioned font files. Font binaries are
|
|
55
|
+
downloaded by `workflows/build_scripts/download_fonts.py` (or
|
|
56
|
+
`make download_fonts` at the repository root) and are gitignored. They are
|
|
57
|
+
embedded as package-data in the published wheel so that offline environments
|
|
58
|
+
work without a checkout.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "roboflow-workflows"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Roboflow Workflows execution engine and block library"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = {file = "LICENSE"}
|
|
7
|
+
requires-python = ">=3.10,<3.13"
|
|
8
|
+
dependencies = [
|
|
9
|
+
"pydantic>=2.8.0,<2.12.0",
|
|
10
|
+
"typing-extensions>=4.8.0,<=4.15.0",
|
|
11
|
+
"networkx>=3.0.0,<4.0.0",
|
|
12
|
+
"packaging~=24.0",
|
|
13
|
+
"numpy>=1.26,<2.4",
|
|
14
|
+
"supervision>=0.29.0,<0.30.0",
|
|
15
|
+
"opencv-python>=4.8.1.78,<4.13.0",
|
|
16
|
+
"opencv-contrib-python>=4.8.1.78,<4.13.0",
|
|
17
|
+
"pillow>=12.3.0,<13.0.0",
|
|
18
|
+
"shapely>=2.0.4,<2.1.0",
|
|
19
|
+
"scikit-image>=0.19.0,<=0.25.2",
|
|
20
|
+
"pycocotools>=2.0.10,<2.1.0",
|
|
21
|
+
"pybase64~=1.0.0",
|
|
22
|
+
"filelock>=3.20.3,<=4.0.0",
|
|
23
|
+
"requests>=2.33.0,<3.0.0",
|
|
24
|
+
"urllib3>=2.7.0,<3.0.0",
|
|
25
|
+
"torch>=2.0.1,<3.0.0",
|
|
26
|
+
"torchvision",
|
|
27
|
+
"inference-models>=0.37.1",
|
|
28
|
+
"inference-sdk>=1.6.0",
|
|
29
|
+
"msgpack",
|
|
30
|
+
"websocket-client~=1.9.0",
|
|
31
|
+
"openai>=1.17.0,<2.0.0",
|
|
32
|
+
"anthropic~=0.49.0",
|
|
33
|
+
"boto3>=1.40.0,<=1.41.5",
|
|
34
|
+
"botocore>=1.40.0,<=1.41.5",
|
|
35
|
+
"httpx~=0.28.1",
|
|
36
|
+
"requests-toolbelt~=1.0.0",
|
|
37
|
+
"pandas>=2.2.3,<3.0.0",
|
|
38
|
+
"matplotlib",
|
|
39
|
+
"qrcode~=8.0.0",
|
|
40
|
+
"zxing-cpp~=2.2.0",
|
|
41
|
+
"trackers~=2.4.0",
|
|
42
|
+
"onvif-zeep-async==2.0.0",
|
|
43
|
+
"zeep>=4.0,<5.0",
|
|
44
|
+
"simple-pid~=2.0.1",
|
|
45
|
+
"slack-sdk~=3.33.4",
|
|
46
|
+
"twilio~=9.3.7",
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
[project.optional-dependencies]
|
|
50
|
+
enterprise = [
|
|
51
|
+
"asyncua~=1.1.5",
|
|
52
|
+
"paho-mqtt~=1.6.1",
|
|
53
|
+
"pylogix==1.0.5",
|
|
54
|
+
"pymodbus>=3.6.9,<=3.8.3",
|
|
55
|
+
"psycopg[binary]>=3.2,<4",
|
|
56
|
+
"fastapi>=0.100,<0.129",
|
|
57
|
+
]
|
|
58
|
+
test = [
|
|
59
|
+
"pytest>=9.0.3,<10.0.0",
|
|
60
|
+
"pytest-asyncio<=0.21.1",
|
|
61
|
+
"pytest-timeout>=2.2.0",
|
|
62
|
+
"requests-mock~=1.12.1",
|
|
63
|
+
"aioresponses",
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
[build-system]
|
|
67
|
+
requires = ["setuptools>=83.0.0", "wheel"]
|
|
68
|
+
build-backend = "setuptools.build_meta"
|
|
69
|
+
|
|
70
|
+
[tool.setuptools.packages.find]
|
|
71
|
+
include = ["roboflow_workflows*"]
|
|
72
|
+
exclude = ["tests*", "build_scripts*", "scripts*"]
|
|
73
|
+
|
|
74
|
+
[tool.setuptools.package-data]
|
|
75
|
+
roboflow_workflows = [
|
|
76
|
+
"core_steps/visualizations/common/fonts/assets/*/*",
|
|
77
|
+
"core_steps/visualizations/common/fonts/README.md",
|
|
78
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Historic identifiers for the moved Workflows package.
|
|
2
|
+
|
|
3
|
+
Public identifiers must keep their pre-move dotted form so operator-facing
|
|
4
|
+
config (WORKFLOW_DISABLED_BLOCK_PATTERNS), user-visible error strings and
|
|
5
|
+
telemetry (fully_qualified_block_class_name, logger names) do not change
|
|
6
|
+
when the code lives under ``roboflow_workflows.*`` instead of
|
|
7
|
+
``inference.core.workflows.*`` / ``inference.enterprise.workflows.enterprise_blocks.*``.
|
|
8
|
+
|
|
9
|
+
We map at read-time; ``class.__module__`` stays canonical so pickling and
|
|
10
|
+
``importlib.import_module(cls.__module__)`` continue to work in a standalone
|
|
11
|
+
``roboflow_workflows`` install where ``inference.*`` is not importable.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import logging
|
|
17
|
+
|
|
18
|
+
_CANONICAL_ROOT = "roboflow_workflows"
|
|
19
|
+
_ENTERPRISE_CANONICAL = "roboflow_workflows.enterprise_blocks"
|
|
20
|
+
_CORE_LEGACY = "inference.core.workflows"
|
|
21
|
+
_ENTERPRISE_LEGACY = "inference.enterprise.workflows.enterprise_blocks"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def to_legacy_module(module_name: str) -> str:
|
|
25
|
+
"""Return the historic ``inference.*`` dotted form of a canonical module."""
|
|
26
|
+
if module_name == _ENTERPRISE_CANONICAL or module_name.startswith(
|
|
27
|
+
_ENTERPRISE_CANONICAL + "."
|
|
28
|
+
):
|
|
29
|
+
return _ENTERPRISE_LEGACY + module_name[len(_ENTERPRISE_CANONICAL) :]
|
|
30
|
+
if module_name == _CANONICAL_ROOT or module_name.startswith(_CANONICAL_ROOT + "."):
|
|
31
|
+
return _CORE_LEGACY + module_name[len(_CANONICAL_ROOT) :]
|
|
32
|
+
return module_name
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get_logger(module_name: str) -> logging.Logger:
|
|
36
|
+
"""``logging.getLogger`` under the historic ``inference.*`` name.
|
|
37
|
+
|
|
38
|
+
Keeps the logger tree rooted at the ``inference`` logger so handlers /
|
|
39
|
+
level configured on ``inference`` propagate as they did before the move.
|
|
40
|
+
"""
|
|
41
|
+
return logging.getLogger(to_legacy_module(module_name))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def historic_type_display(type_obj: type) -> str:
|
|
45
|
+
"""Fully-qualified type name using the historic module path.
|
|
46
|
+
|
|
47
|
+
Used by user-facing error strings that spell out ``type.__module__`` so
|
|
48
|
+
the string does not change when the code moves under ``roboflow_workflows``.
|
|
49
|
+
Unlike block identifiers, these errors historically included ``builtins``.
|
|
50
|
+
"""
|
|
51
|
+
module = to_legacy_module(type_obj.__module__)
|
|
52
|
+
return f"{module}.{type_obj.__qualname__}"
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"""Injected configuration for `inference/core/workflows`.
|
|
2
|
+
|
|
3
|
+
Every value the module used to take from `inference.core.env` is a field of
|
|
4
|
+
`WorkflowsConfiguration`, which the host builds from its own already-resolved
|
|
5
|
+
settings and installs once per process with `configure_process`.
|
|
6
|
+
|
|
7
|
+
The configuration is PROCESS-WIDE in its entirety. Every configuration value
|
|
8
|
+
is read from a module constant frozen at import - `core_steps/loader.py`
|
|
9
|
+
branches on the tensor flag while it is being imported, `offline.py:34` reads
|
|
10
|
+
`SECURE_GATEWAY`, `block_assembler.py:100` reads the custom-Python
|
|
11
|
+
authorization flag - so there is no field a second, differing configuration
|
|
12
|
+
could change after the fact. `ensure_process_configuration_matches` therefore
|
|
13
|
+
refuses ANY difference rather than accepting a value nothing would honour.
|
|
14
|
+
|
|
15
|
+
Per-engine variance lives where it already did: the named init parameters
|
|
16
|
+
`workflows_core.{step_execution_mode, api_key, disable_sinks,
|
|
17
|
+
allow_access_to_file_system, allowed_write_directory,
|
|
18
|
+
allow_access_to_environmental_variables}`, resolved by
|
|
19
|
+
`steps_initialiser.retrieve_init_parameter_values`.
|
|
20
|
+
|
|
21
|
+
`default_configuration()` is the STANDALONE fallback, not the production path.
|
|
22
|
+
Its values are the ones `inference/core/env.py` resolves for an EMPTY
|
|
23
|
+
environment. Every normalisation `env.py` performs - `str2bool`, `.lower()`,
|
|
24
|
+
the `OFFLINE_MODE` / `SECURE_GATEWAY` rewrites, the `PROJECT`-dependent hosted
|
|
25
|
+
URLs, the api-key-transport validation - stays in `env.py`; the host builder
|
|
26
|
+
copies the RESOLVED attributes. `resolve_image_tensor_device` is the single
|
|
27
|
+
copied piece of logic and is pinned by a differential test against `env.py`.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
import threading
|
|
31
|
+
from dataclasses import dataclass, field, fields, is_dataclass
|
|
32
|
+
from typing import Any, List, Optional, Tuple
|
|
33
|
+
|
|
34
|
+
from roboflow_workflows.errors import WorkflowEnvironmentConfigurationError
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@dataclass(frozen=True)
|
|
38
|
+
class EngineConfiguration:
|
|
39
|
+
step_execution_mode: str = "local"
|
|
40
|
+
async_future_result_timeout: float = 60.0
|
|
41
|
+
max_inner_workflow_depth: int = 4
|
|
42
|
+
max_inner_workflow_count: int = 32
|
|
43
|
+
allow_custom_python_execution: bool = True
|
|
44
|
+
custom_python_execution_mode: str = "local"
|
|
45
|
+
allow_blocks_accessing_local_storage: bool = True
|
|
46
|
+
allow_blocks_accessing_environmental_variables: bool = True
|
|
47
|
+
blocks_write_directory: Optional[str] = None
|
|
48
|
+
# Tuples, not lists: the configuration is frozen and compared by value. The
|
|
49
|
+
# facade re-materialises the `list` the call sites see today.
|
|
50
|
+
disabled_block_types: Tuple[str, ...] = ()
|
|
51
|
+
disabled_block_patterns: Tuple[str, ...] = ()
|
|
52
|
+
allow_webhook_sink_to_non_global_addresses: bool = True
|
|
53
|
+
# PostgreSQL sink policy. Optional[Tuple] mirrors env.py's None-vs-set
|
|
54
|
+
# distinction (empty env var / unset). The sink reconstructs a `set`.
|
|
55
|
+
allow_postgresql_sink_to_non_global_addresses: bool = True
|
|
56
|
+
postgresql_sink_blacklisted_addresses: Optional[Tuple[str, ...]] = None
|
|
57
|
+
postgresql_sink_whitelisted_addresses: Optional[Tuple[str, ...]] = None
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@dataclass(frozen=True)
|
|
61
|
+
class TensorConfiguration:
|
|
62
|
+
"""Selects which block classes `core_steps/loader.py` imports and how
|
|
63
|
+
`WorkflowImageData` stores pixels. Block loading is process-global and
|
|
64
|
+
cached (`blocks_loader.py:252`), so these can never be per-engine."""
|
|
65
|
+
|
|
66
|
+
representation_enabled: bool = False
|
|
67
|
+
# `torch.device` when the flag is on and torch is importable, else None.
|
|
68
|
+
# Typed `Any` so this module never imports torch (an OPTIONAL dependency).
|
|
69
|
+
image_tensor_device: Optional[Any] = None
|
|
70
|
+
visualisation_validate_owners: bool = False
|
|
71
|
+
sam_video_mask_representation: str = "rle"
|
|
72
|
+
enforce_dense_instance_masks: bool = False
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@dataclass(frozen=True)
|
|
76
|
+
class RemoteExecutionConfiguration:
|
|
77
|
+
api_target: str = "hosted"
|
|
78
|
+
api_key_transport: str = "both"
|
|
79
|
+
local_inference_api_url: str = "http://127.0.0.1:9001"
|
|
80
|
+
hosted_detect_url: str = "https://detect.roboflow.com"
|
|
81
|
+
hosted_classification_url: str = "https://classify.roboflow.com"
|
|
82
|
+
hosted_instance_segmentation_url: str = "https://outline.roboflow.com"
|
|
83
|
+
hosted_semantic_segmentation_url: str = "https://segment.roboflow.com"
|
|
84
|
+
hosted_core_model_url: str = "https://infer.roboflow.com"
|
|
85
|
+
max_step_batch_size: int = 1
|
|
86
|
+
max_step_concurrent_requests: int = 8
|
|
87
|
+
inner_workflow_remote_target: str = "https://serverless.roboflow.com"
|
|
88
|
+
inner_workflow_remote_dispatch_request_timeout: float = 300.0
|
|
89
|
+
openai_compatible_allowed_base_urls: Tuple[str, ...] = ("*",)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@dataclass(frozen=True)
|
|
93
|
+
class PlatformConfiguration:
|
|
94
|
+
api_base_url: str = "https://api.roboflow.com"
|
|
95
|
+
offline_mode: bool = False
|
|
96
|
+
secure_gateway: Optional[str] = None
|
|
97
|
+
gcp_serverless: bool = False
|
|
98
|
+
# LAMBDA runtime flag, mirrors inference.core.env.LAMBDA. Used by the
|
|
99
|
+
# PostgreSQL sink hosted-runtime gate together with gcp_serverless.
|
|
100
|
+
lambda_runtime: bool = False
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@dataclass(frozen=True)
|
|
104
|
+
class FontsConfiguration:
|
|
105
|
+
allow_download: bool = True
|
|
106
|
+
model_cache_dir: str = "/tmp/cache"
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@dataclass(frozen=True)
|
|
110
|
+
class ModelsConfiguration:
|
|
111
|
+
lmm_enabled: bool = False
|
|
112
|
+
clip_version_id: str = "ViT-B-16"
|
|
113
|
+
core_model_sam2_enabled: bool = True
|
|
114
|
+
core_model_sam3_enabled: bool = True
|
|
115
|
+
core_model_pe_enabled: bool = True
|
|
116
|
+
core_model_gaze_enabled: bool = True
|
|
117
|
+
sam3_exec_mode: str = "local"
|
|
118
|
+
sam3_3d_objects_enabled: bool = False
|
|
119
|
+
florence2_enabled: bool = True
|
|
120
|
+
qwen_2_5_enabled: bool = True
|
|
121
|
+
qwen_3_enabled: bool = True
|
|
122
|
+
qwen_3_5_enabled: bool = True
|
|
123
|
+
smolvlm2_enabled: bool = True
|
|
124
|
+
moondream2_enabled: bool = True
|
|
125
|
+
depth_estimation_enabled: bool = True
|
|
126
|
+
cosmos3_enabled: bool = True
|
|
127
|
+
glm_ocr_enabled: bool = True
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@dataclass(frozen=True)
|
|
131
|
+
class ModalConfiguration:
|
|
132
|
+
token_id: Optional[str] = None
|
|
133
|
+
token_secret: Optional[str] = field(default=None, repr=False)
|
|
134
|
+
workspace_name: str = "roboflow"
|
|
135
|
+
allow_anonymous_execution: bool = False
|
|
136
|
+
anonymous_workspace_name: str = "anonymous"
|
|
137
|
+
app_name: str = "webexec-roboflow-platform"
|
|
138
|
+
executor_idle_ttl_seconds: int = 1800
|
|
139
|
+
jpeg_quality: int = 95
|
|
140
|
+
transport: str = "http"
|
|
141
|
+
ws_connect_timeout_seconds: int = 30
|
|
142
|
+
ws_read_timeout_seconds: int = 720
|
|
143
|
+
ws_connection_pool_size: int = 1
|
|
144
|
+
ws_fail_on_session_loss: bool = False
|
|
145
|
+
ws_idle_release_seconds: int = 120
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@dataclass(frozen=True)
|
|
149
|
+
class SecretsConfiguration:
|
|
150
|
+
api_key: Optional[str] = field(default=None, repr=False)
|
|
151
|
+
roboflow_internal_service_name: Optional[str] = None
|
|
152
|
+
roboflow_internal_service_secret: Optional[str] = field(default=None, repr=False)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@dataclass(frozen=True)
|
|
156
|
+
class DebugConfiguration:
|
|
157
|
+
output_dir: Optional[str] = None
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
@dataclass(frozen=True)
|
|
161
|
+
class WorkflowsConfiguration:
|
|
162
|
+
engine: EngineConfiguration = field(default_factory=EngineConfiguration)
|
|
163
|
+
tensor: TensorConfiguration = field(default_factory=TensorConfiguration)
|
|
164
|
+
remote: RemoteExecutionConfiguration = field(
|
|
165
|
+
default_factory=RemoteExecutionConfiguration
|
|
166
|
+
)
|
|
167
|
+
platform: PlatformConfiguration = field(default_factory=PlatformConfiguration)
|
|
168
|
+
fonts: FontsConfiguration = field(default_factory=FontsConfiguration)
|
|
169
|
+
models: ModelsConfiguration = field(default_factory=ModelsConfiguration)
|
|
170
|
+
modal: ModalConfiguration = field(default_factory=ModalConfiguration)
|
|
171
|
+
secrets: SecretsConfiguration = field(default_factory=SecretsConfiguration)
|
|
172
|
+
debug: DebugConfiguration = field(default_factory=DebugConfiguration)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def default_configuration() -> WorkflowsConfiguration:
|
|
176
|
+
"""The standalone fallback: every field at its documented default."""
|
|
177
|
+
return WorkflowsConfiguration()
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def resolve_image_tensor_device(
|
|
181
|
+
representation_enabled: bool, device: Optional[str] = None
|
|
182
|
+
) -> Optional[Any]:
|
|
183
|
+
"""Materialise the tensor device exactly as `inference/core/env.py:1535-1547`.
|
|
184
|
+
|
|
185
|
+
`torch` is an OPTIONAL dependency, so both the import and the device are
|
|
186
|
+
deferred behind the flag AND guarded on torch's presence. Off-flag or
|
|
187
|
+
torch-less the value is `None`. An invalid device string raises whatever
|
|
188
|
+
`torch.device` raises, which is what `env.py` does too - it does not guard
|
|
189
|
+
that call either.
|
|
190
|
+
|
|
191
|
+
The `try` deliberately spans the import, the cuda autodetect AND the
|
|
192
|
+
materialisation, catching only `ImportError`, because that is exactly
|
|
193
|
+
`env.py:1536-1547`'s boundary (round-2 defect 5: the round-1 copy protected
|
|
194
|
+
only the import, so a `torch.cuda.is_available()` raising `ImportError`
|
|
195
|
+
would have propagated from the copy while `env.py` swallowed it).
|
|
196
|
+
`test_the_copy_preserves_the_originals_exception_boundary` pins both shapes.
|
|
197
|
+
"""
|
|
198
|
+
if not representation_enabled:
|
|
199
|
+
return None
|
|
200
|
+
try:
|
|
201
|
+
import torch
|
|
202
|
+
|
|
203
|
+
if device is None:
|
|
204
|
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
|
205
|
+
return torch.device(device)
|
|
206
|
+
except ImportError:
|
|
207
|
+
return None
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def describe_configuration_difference(
|
|
211
|
+
installed: WorkflowsConfiguration, candidate: WorkflowsConfiguration
|
|
212
|
+
) -> List[str]:
|
|
213
|
+
"""`['group.field: <installed> != <candidate>', ...]`, empty when equal.
|
|
214
|
+
|
|
215
|
+
Secret fields are compared but never rendered - the message says the field
|
|
216
|
+
differs, not what either value is.
|
|
217
|
+
"""
|
|
218
|
+
differences = []
|
|
219
|
+
for group in fields(WorkflowsConfiguration):
|
|
220
|
+
installed_group = getattr(installed, group.name)
|
|
221
|
+
candidate_group = getattr(candidate, group.name)
|
|
222
|
+
if installed_group == candidate_group:
|
|
223
|
+
continue
|
|
224
|
+
if not is_dataclass(candidate_group):
|
|
225
|
+
differences.append(f"{group.name}: differs")
|
|
226
|
+
continue
|
|
227
|
+
for member in fields(installed_group):
|
|
228
|
+
left = getattr(installed_group, member.name)
|
|
229
|
+
right = getattr(candidate_group, member.name)
|
|
230
|
+
if left == right:
|
|
231
|
+
continue
|
|
232
|
+
if member.repr is False:
|
|
233
|
+
differences.append(f"{group.name}.{member.name}: differs (redacted)")
|
|
234
|
+
else:
|
|
235
|
+
differences.append(f"{group.name}.{member.name}: {left!r} != {right!r}")
|
|
236
|
+
return differences
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
_CONFIGURATION: Optional[WorkflowsConfiguration] = None
|
|
240
|
+
# One lock guards installation, the sticky fallback initialisation in
|
|
241
|
+
# `get_configuration` (which also assigns) and `reset_configuration`. Round-1
|
|
242
|
+
# review reproduced two conflicting installs both succeeding through an
|
|
243
|
+
# unlocked check-then-assign; Phase 10's image-codec registry locks for the
|
|
244
|
+
# same reason.
|
|
245
|
+
_INSTALL_LOCK = threading.RLock()
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
def configure_process(configuration: WorkflowsConfiguration) -> None:
|
|
249
|
+
"""Install the process-wide configuration. Set-once, by value.
|
|
250
|
+
|
|
251
|
+
Installing the identical object, or an EQUAL one, is a no-op - frozen
|
|
252
|
+
dataclasses compare by value and the server memoises its instance.
|
|
253
|
+
Installing a DIFFERING one raises, naming every group and field that
|
|
254
|
+
differs.
|
|
255
|
+
"""
|
|
256
|
+
global _CONFIGURATION
|
|
257
|
+
with _INSTALL_LOCK:
|
|
258
|
+
if _CONFIGURATION is not None and _CONFIGURATION != configuration:
|
|
259
|
+
differences = describe_configuration_difference(
|
|
260
|
+
_CONFIGURATION, configuration
|
|
261
|
+
)
|
|
262
|
+
raise WorkflowEnvironmentConfigurationError(
|
|
263
|
+
public_message=(
|
|
264
|
+
"A different WorkflowsConfiguration is already installed in "
|
|
265
|
+
"this process. Workflows configuration is process-level: "
|
|
266
|
+
"block registration and the image representation are decided "
|
|
267
|
+
"once, at import time, and every other value is frozen into "
|
|
268
|
+
"module constants. Install the configuration before importing "
|
|
269
|
+
"any workflows module, and install the same one everywhere. "
|
|
270
|
+
f"Differences: {differences}"
|
|
271
|
+
),
|
|
272
|
+
context="workflow_configuration | process_installation",
|
|
273
|
+
)
|
|
274
|
+
_CONFIGURATION = configuration
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def get_configuration() -> WorkflowsConfiguration:
|
|
278
|
+
"""The installed configuration, falling back to the standalone default.
|
|
279
|
+
|
|
280
|
+
The fallback is STICKY: once read, it becomes the process configuration, so
|
|
281
|
+
a later `configure_process` with different values raises instead of
|
|
282
|
+
silently disagreeing with values already frozen into module constants.
|
|
283
|
+
"""
|
|
284
|
+
global _CONFIGURATION
|
|
285
|
+
with _INSTALL_LOCK:
|
|
286
|
+
if _CONFIGURATION is None:
|
|
287
|
+
_CONFIGURATION = default_configuration()
|
|
288
|
+
return _CONFIGURATION
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def reset_configuration() -> None:
|
|
292
|
+
"""Test-only hook: forget the installed configuration."""
|
|
293
|
+
global _CONFIGURATION
|
|
294
|
+
with _INSTALL_LOCK:
|
|
295
|
+
_CONFIGURATION = None
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def ensure_process_configuration_matches(configuration: Any) -> None:
|
|
299
|
+
"""Refuse an engine-supplied configuration that differs from the process one.
|
|
300
|
+
|
|
301
|
+
`init_parameters["workflows_core.configuration"]` is a CONSISTENCY
|
|
302
|
+
ASSERTION, not an override channel: the composition roots pass the object
|
|
303
|
+
the host installed, and a mismatch means the process is mis-wired. Because
|
|
304
|
+
every value is read from a module constant frozen at import, accepting a
|
|
305
|
+
differing value would mean accepting a value nothing honours.
|
|
306
|
+
|
|
307
|
+
The caller decides PRESENCE (the engine calls this only when the key is in
|
|
308
|
+
`init_parameters`); this function judges the VALUE, and `None` is not a
|
|
309
|
+
valid value: an explicit `None` would be handed to every block that
|
|
310
|
+
declares `configuration` ahead of the registered default
|
|
311
|
+
(`steps_initialiser.py:124-125` prefers explicit values), so it is refused
|
|
312
|
+
like any other non-`WorkflowsConfiguration` (round-4 defect 1).
|
|
313
|
+
"""
|
|
314
|
+
if not isinstance(configuration, WorkflowsConfiguration):
|
|
315
|
+
# Only ever reached through the DEDICATED init-parameter keys, so a
|
|
316
|
+
# foreign value there is a mis-wiring, never a plugin's own parameter
|
|
317
|
+
# (`v1/core.py` deliberately does not fall back to the bare name).
|
|
318
|
+
raise WorkflowEnvironmentConfigurationError(
|
|
319
|
+
public_message=(
|
|
320
|
+
"`workflows_core.configuration` must be a WorkflowsConfiguration, "
|
|
321
|
+
f"got {type(configuration).__name__}."
|
|
322
|
+
),
|
|
323
|
+
context="workflow_compilation | engine_initialisation",
|
|
324
|
+
)
|
|
325
|
+
installed = get_configuration()
|
|
326
|
+
if configuration == installed:
|
|
327
|
+
return
|
|
328
|
+
differences = describe_configuration_difference(installed, configuration)
|
|
329
|
+
raise WorkflowEnvironmentConfigurationError(
|
|
330
|
+
public_message=(
|
|
331
|
+
"`workflows_core.configuration` differs from the WorkflowsConfiguration "
|
|
332
|
+
"installed in this process. Workflows configuration is process-level "
|
|
333
|
+
"and cannot be varied per engine; use the named init parameters "
|
|
334
|
+
"(`workflows_core.step_execution_mode`, `workflows_core.api_key`, "
|
|
335
|
+
"`workflows_core.disable_sinks`, "
|
|
336
|
+
"`workflows_core.allow_access_to_file_system`, "
|
|
337
|
+
"`workflows_core.allowed_write_directory`, "
|
|
338
|
+
"`workflows_core.allow_access_to_environmental_variables`) for "
|
|
339
|
+
f"per-engine values. Differences: {differences}"
|
|
340
|
+
),
|
|
341
|
+
context="workflow_compilation | engine_initialisation",
|
|
342
|
+
)
|
|
File without changes
|
|
File without changes
|