Skip to content

python: ensure publishing of subclasses before derived types#21785

Merged
opencv-pushbot merged 1 commit intoopencv:3.4from
alalek:python_fix_subclass_order
Mar 28, 2022
Merged

python: ensure publishing of subclasses before derived types#21785
opencv-pushbot merged 1 commit intoopencv:3.4from
alalek:python_fix_subclass_order

Conversation

@alalek
Copy link
Copy Markdown
Member

@alalek alalek commented Mar 27, 2022

resolves opencv/opencv_contrib#3171

We should not have non-initialized(NULL) base types during types registration (dynamic types registration is required by LIMITED_API).

Binding test is very tricky for this case, so it is not added (base and derived classes should be defined in different files)


Before (ImgHashBase is registered too late):

CVPY_TYPE(AverageHash, img_hash_AverageHash, Ptr<cv::img_hash::AverageHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(BlockMeanHash, img_hash_BlockMeanHash, Ptr<cv::img_hash::BlockMeanHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(ColorMomentHash, img_hash_ColorMomentHash, Ptr<cv::img_hash::ColorMomentHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(ImgHashBase, img_hash_ImgHashBase, Ptr<cv::img_hash::ImgHashBase>, Ptr, Algorithm, 0, ".img_hash");
CVPY_TYPE(MarrHildrethHash, img_hash_MarrHildrethHash, Ptr<cv::img_hash::MarrHildrethHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(PHash, img_hash_PHash, Ptr<cv::img_hash::PHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");

After:

CVPY_TYPE(ImgHashBase, img_hash_ImgHashBase, Ptr<cv::img_hash::ImgHashBase>, Ptr, Algorithm, 0, ".img_hash");
CVPY_TYPE(AverageHash, img_hash_AverageHash, Ptr<cv::img_hash::AverageHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(BlockMeanHash, img_hash_BlockMeanHash, Ptr<cv::img_hash::BlockMeanHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(ColorMomentHash, img_hash_ColorMomentHash, Ptr<cv::img_hash::ColorMomentHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(MarrHildrethHash, img_hash_MarrHildrethHash, Ptr<cv::img_hash::MarrHildrethHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(PHash, img_hash_PHash, Ptr<cv::img_hash::PHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");
CVPY_TYPE(RadialVarianceHash, img_hash_RadialVarianceHash, Ptr<cv::img_hash::RadialVarianceHash>, Ptr, img_hash_ImgHashBase, 0, ".img_hash");

@VadimLevin
Copy link
Copy Markdown
Contributor

LGTM.
One more point that some kind of AST is required during bindings generation.

@opencv-pushbot opencv-pushbot merged commit 56f21c4 into opencv:3.4 Mar 28, 2022
@alalek alalek mentioned this pull request Apr 2, 2022
@opencv-pushbot opencv-pushbot mentioned this pull request Apr 23, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants