Skip to content

feat: add PathLike type hints for args annotated with CV_WRAP_FILE_PATH#27767

Merged
asmorkalov merged 1 commit intoopencv:4.xfrom
VadimLevin:dev/vlevin/type-hints-for-path-like-arguments
Sep 10, 2025
Merged

feat: add PathLike type hints for args annotated with CV_WRAP_FILE_PATH#27767
asmorkalov merged 1 commit intoopencv:4.xfrom
VadimLevin:dev/vlevin/type-hints-for-path-like-arguments

Conversation

@VadimLevin
Copy link
Copy Markdown
Contributor

Closes #27727

Generated type hint example:

@_typing.overload
def imread(filename: str | os.PathLike[str], flags: int = ...) -> cv2.typing.MatLike | None: ...
@_typing.overload
def imread(filename: str | os.PathLike[str], dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> cv2.typing.MatLike | None: ...
@_typing.overload
def imread(filename: str | os.PathLike[str], dst: UMat | None = ..., flags: int = ...) -> UMat | None: ...
List of affected functions and arguments
Algorithm::save pathlike argument = filename
FileStorage::FileStorage pathlike argument = filename
FileStorage::open pathlike argument = filename
Index::save pathlike argument = filename
Index::load pathlike argument = filename
Index::load pathlike argument = filename
NormalBayesClassifier::load pathlike argument = filepath
KNearest::load pathlike argument = filepath
SVM::load pathlike argument = filepath
EM::load pathlike argument = filepath
DTrees::load pathlike argument = filepath
RTrees::load pathlike argument = filepath
Boost::load pathlike argument = filepath
ANN_MLP::load pathlike argument = filepath
LogisticRegression::load pathlike argument = filepath
SVMSGD::load pathlike argument = filepath
Net::readFromModelOptimizer pathlike argument = xml
Net::readFromModelOptimizer pathlike argument = bin
Net::dumpToFile pathlike argument = path
Net::dumpToPbtxt pathlike argument = path
Model::Model pathlike argument = model
Model::Model pathlike argument = config
ClassificationModel::ClassificationModel pathlike argument = model
ClassificationModel::ClassificationModel pathlike argument = config
KeypointsModel::KeypointsModel pathlike argument = model
KeypointsModel::KeypointsModel pathlike argument = config
SegmentationModel::SegmentationModel pathlike argument = model
SegmentationModel::SegmentationModel pathlike argument = config
DetectionModel::DetectionModel pathlike argument = model
DetectionModel::DetectionModel pathlike argument = config
TextRecognitionModel::TextRecognitionModel pathlike argument = model
TextRecognitionModel::TextRecognitionModel pathlike argument = config
TextDetectionModel_EAST::TextDetectionModel_EAST pathlike argument = model
TextDetectionModel_EAST::TextDetectionModel_EAST pathlike argument = config
TextDetectionModel_DB::TextDetectionModel_DB pathlike argument = model
TextDetectionModel_DB::TextDetectionModel_DB pathlike argument = config
Feature2D::write pathlike argument = fileName
Feature2D::read pathlike argument = fileName
DescriptorMatcher::write pathlike argument = fileName
DescriptorMatcher::read pathlike argument = fileName
VideoCapture::VideoCapture pathlike argument = filename
VideoCapture::VideoCapture pathlike argument = filename
VideoCapture::open pathlike argument = filename
VideoCapture::open pathlike argument = filename
VideoWriter::VideoWriter pathlike argument = filename
VideoWriter::VideoWriter pathlike argument = filename
VideoWriter::VideoWriter pathlike argument = filename
VideoWriter::VideoWriter pathlike argument = filename
VideoWriter::open pathlike argument = filename
VideoWriter::open pathlike argument = filename
VideoWriter::open pathlike argument = filename
VideoWriter::open pathlike argument = filename
CascadeClassifier::CascadeClassifier pathlike argument = filename
CascadeClassifier::load pathlike argument = filename
HOGDescriptor::HOGDescriptor pathlike argument = filename
HOGDescriptor::load pathlike argument = filename
HOGDescriptor::save pathlike argument = filename
BarcodeDetector::BarcodeDetector pathlike argument = prototxt_path
BarcodeDetector::BarcodeDetector pathlike argument = model_path
FaceDetectorYN::create pathlike argument = model
FaceDetectorYN::create pathlike argument = config
FaceRecognizerSF::create pathlike argument = model
FaceRecognizerSF::create pathlike argument = config
cv::haveImageReader pathlike argument = filename
cv::haveImageWriter pathlike argument = filename
cv::imcount pathlike argument = filename
cv::imread pathlike argument = filename
cv::imread pathlike argument = filename
cv::imread pathlike argument = filename
cv::imreadWithMetadata pathlike argument = filename
cv::imreadWithMetadata pathlike argument = filename
cv::imreadanimation pathlike argument = filename
cv::imreadmulti pathlike argument = filename
cv::imreadmulti pathlike argument = filename
cv::imwrite pathlike argument = filename
cv::imwrite pathlike argument = filename
cv::imwriteWithMetadata pathlike argument = filename
cv::imwriteWithMetadata pathlike argument = filename
cv::imwriteanimation pathlike argument = filename
cv::imwritemulti pathlike argument = filename
cv::imwritemulti pathlike argument = filename
dnn::readNet pathlike argument = model
dnn::readNet pathlike argument = config
dnn::readNetFromCaffe pathlike argument = prototxt
dnn::readNetFromCaffe pathlike argument = caffeModel
dnn::readNetFromDarknet pathlike argument = cfgFile
dnn::readNetFromDarknet pathlike argument = darknetModel
dnn::readNetFromModelOptimizer pathlike argument = xml
dnn::readNetFromModelOptimizer pathlike argument = bin
dnn::readNetFromONNX pathlike argument = onnxFile
dnn::readNetFromTFLite pathlike argument = model
dnn::readNetFromTensorflow pathlike argument = model
dnn::readNetFromTensorflow pathlike argument = config
dnn::readNetFromTorch pathlike argument = model
dnn::readTensorFromONNX pathlike argument = path
dnn::readTorchBlob pathlike argument = filename
dnn::shrinkCaffeModel pathlike argument = src
dnn::shrinkCaffeModel pathlike argument = dst
dnn::writeTextGraph pathlike argument = model
dnn::writeTextGraph pathlike argument = output
### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

@asmorkalov asmorkalov merged commit 1f5d695 into opencv:4.x Sep 10, 2025
76 of 82 checks passed
@asmorkalov asmorkalov mentioned this pull request Sep 26, 2025
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.

Filename arguments accept a Python Path but are only annotated as str

2 participants