From 567babbccfa8e19cd175b458cc5999db97d292fd Mon Sep 17 00:00:00 2001 From: aljazkonec1 Date: Tue, 21 Apr 2026 12:38:53 +0200 Subject: [PATCH] Remove implicit node creation. Keep it avaliable for HostNodeCreation. --- .../python/src/pipeline/PipelineBindings.cpp | 5 +++-- .../src/pipeline/node/ColorCameraBindings.cpp | 6 +----- .../pipeline/node/DetectionNetworkBindings.cpp | 10 +--------- .../src/pipeline/node/StereoDepthBindings.cpp | 17 +---------------- .../src/pipeline/node/VideoEncoderBindings.cpp | 9 +-------- .../depthai/pipeline/node/DetectionNetwork.hpp | 2 +- 6 files changed, 8 insertions(+), 41 deletions(-) diff --git a/bindings/python/src/pipeline/PipelineBindings.cpp b/bindings/python/src/pipeline/PipelineBindings.cpp index 3b3f739e1c..a65fbf7fb0 100644 --- a/bindings/python/src/pipeline/PipelineBindings.cpp +++ b/bindings/python/src/pipeline/PipelineBindings.cpp @@ -43,6 +43,7 @@ // depthai/ #include +#include #include "depthai/properties/GlobalProperties.hpp" #include "depthai/utility/RecordReplay.hpp" @@ -294,10 +295,10 @@ void PipelineBindings::bind(pybind11::module& m, void* pCallstack) { std::shared_ptr hostNode; try { hostNode = py::cast>(class_(*args, **kwargs)); - } catch(...) { + } catch(std::runtime_error& e) { delCreatingNodeFromPipelineCreate(); delImplicitPipeline(); - throw; + throw std::runtime_error(std::string("Error creating node: ") + e.what()); } delCreatingNodeFromPipelineCreate(); delImplicitPipeline(); diff --git a/bindings/python/src/pipeline/node/ColorCameraBindings.cpp b/bindings/python/src/pipeline/node/ColorCameraBindings.cpp index e77e3befe7..b2ab62e5f6 100644 --- a/bindings/python/src/pipeline/node/ColorCameraBindings.cpp +++ b/bindings/python/src/pipeline/node/ColorCameraBindings.cpp @@ -91,11 +91,7 @@ void bind_colorcamera(pybind11::module& m, void* pCallstack) { .def_readwrite("warpMeshStepHeight", &ColorCameraProperties::warpMeshStepHeight) .def_readwrite("eventFilter", &ColorCameraProperties::eventFilter); // ColorCamera node - colorCamera - .def(py::init([]() { - auto camera = getImplicitPipeline()->create(); - return camera; - })) + colorCamera.def(py::init()) .def_readonly("inputControl", &ColorCamera::inputControl, DOC(dai, node, ColorCamera, inputControl)) .def_readonly("initialControl", &ColorCamera::initialControl, DOC(dai, node, ColorCamera, initialControl)) .def_readonly("video", &ColorCamera::video, DOC(dai, node, ColorCamera, video)) diff --git a/bindings/python/src/pipeline/node/DetectionNetworkBindings.cpp b/bindings/python/src/pipeline/node/DetectionNetworkBindings.cpp index bb70c5f073..966d1396a5 100644 --- a/bindings/python/src/pipeline/node/DetectionNetworkBindings.cpp +++ b/bindings/python/src/pipeline/node/DetectionNetworkBindings.cpp @@ -126,15 +126,7 @@ void bind_detectionnetwork(pybind11::module& m, void* pCallstack) { py::arg("fps") = std::nullopt, DOC(dai, node, DetectionNetwork, build, 4)) #endif - .def(py::init([](DETECTION_NETWORK_BUILD_ARGS, DETECTION_NETWORK_ARGS) { - auto self = getImplicitPipeline()->create(); - self->build(input, nnArchive); - DETECTION_NETWORK_CODE(->) - return self; - }), - DETECTION_NETWORK_BUILD_PYARGS, - DETECTION_NETWORK_PYARGS) - // Copied from NN node + .def(py::init&>(), py::arg("device")) .def("setBlobPath", &DetectionNetwork::setBlobPath, py::arg("path"), DOC(dai, node, DetectionNetwork, setBlobPath)) .def("setNumPoolFrames", &DetectionNetwork::setNumPoolFrames, py::arg("numFrames"), DOC(dai, node, DetectionNetwork, setNumPoolFrames)) .def("setNumInferenceThreads", diff --git a/bindings/python/src/pipeline/node/StereoDepthBindings.cpp b/bindings/python/src/pipeline/node/StereoDepthBindings.cpp index 6173737fdd..de546ca553 100644 --- a/bindings/python/src/pipeline/node/StereoDepthBindings.cpp +++ b/bindings/python/src/pipeline/node/StereoDepthBindings.cpp @@ -83,22 +83,7 @@ void bind_stereodepth(pybind11::module& m, void* pCallstack) { .value("ACCURACY", StereoDepth::PresetMode::ACCURACY); // Node - stereoDepth - .def(py::init([](Node::Output& left, Node::Output& right, StereoDepth::PresetMode presetMode) { - auto self = getImplicitPipeline()->create(); - self->build(left, right, presetMode); - return self; - }), - py::arg("left"), - py::arg("right"), - py::arg("presetMode") = StereoDepth::PresetMode::DEFAULT) - .def(py::init([](bool autoCreateCameras, StereoDepth::PresetMode presetMode) { - auto self = getImplicitPipeline()->create(); - self->build(autoCreateCameras, presetMode); - return self; - }), - py::arg("autoCreateCameras"), - py::arg("presetMode") = StereoDepth::PresetMode::DEFAULT) + stereoDepth.def(py::init<>()) .def("build", static_cast (StereoDepth::*)(Node::Output&, Node::Output&, StereoDepth::PresetMode)>(&StereoDepth::build), py::arg("left"), diff --git a/bindings/python/src/pipeline/node/VideoEncoderBindings.cpp b/bindings/python/src/pipeline/node/VideoEncoderBindings.cpp index 465aafb0a7..ad429f5714 100644 --- a/bindings/python/src/pipeline/node/VideoEncoderBindings.cpp +++ b/bindings/python/src/pipeline/node/VideoEncoderBindings.cpp @@ -74,14 +74,7 @@ void bind_videoencoder(pybind11::module& m, void* pCallstack) { }, VIDEO_ENCODER_BUILD_PYARGS, VIDEO_ENCODER_PYARGS) - .def(py::init([](VIDEO_ENCODER_BUILD_ARGS, VIDEO_ENCODER_ARGS) { - auto self = getImplicitPipeline()->create(); - self->build(input); - VIDEO_ENCODER_CODE(->) - return self; - }), - VIDEO_ENCODER_BUILD_PYARGS, - VIDEO_ENCODER_PYARGS) + .def(py::init<>()) .def_readonly("input", &VideoEncoder::input, DOC(dai, node, VideoEncoder, input), DOC(dai, node, VideoEncoder, input)) .def_readonly("bitstream", &VideoEncoder::bitstream, DOC(dai, node, VideoEncoder, bitstream), DOC(dai, node, VideoEncoder, bitstream)) .def_readonly("out", &VideoEncoder::out, DOC(dai, node, VideoEncoder, out), DOC(dai, node, VideoEncoder, out)) diff --git a/include/depthai/pipeline/node/DetectionNetwork.hpp b/include/depthai/pipeline/node/DetectionNetwork.hpp index 0d3d9d9442..bbadb1ee3d 100644 --- a/include/depthai/pipeline/node/DetectionNetwork.hpp +++ b/include/depthai/pipeline/node/DetectionNetwork.hpp @@ -20,7 +20,7 @@ namespace node { */ class DetectionNetwork : public DeviceNodeGroup { public: - DetectionNetwork(const std::shared_ptr& device); + explicit DetectionNetwork(const std::shared_ptr& device); using Model = NeuralNetwork::Model; [[nodiscard]] static std::shared_ptr create(const std::shared_ptr& device) {