opencv/modules/python
Vadim Levin 31289d2f32 Merge pull request #15915 from VadimLevin:dev/norm_fix
Fix implicit conversion from array to scalar in python bindings

* Fix wrong conversion behavior for primitive types

  - Introduce ArgTypeInfo namedtuple instead of plain tuple.
    If strict conversion parameter for type is set to true, it is
    handled like object argument in PyArg_ParseTupleAndKeywords and
    converted to concrete type with the appropriate pyopencv_to function
    call.
  - Remove deadcode and unused variables.
  - Fix implicit conversion from numpy array with 1 element to scalar
  - Fix narrowing conversion to size_t type.

* Fix wrong conversion behavior for primitive types

  - Introduce ArgTypeInfo namedtuple instead of plain tuple.
    If strict conversion parameter for type is set to true, it is
    handled like object argument in PyArg_ParseTupleAndKeywords and
    converted to concrete type with the appropriate pyopencv_to function
    call.
  - Remove deadcode and unused variables.
  - Fix implicit conversion from numpy array with 1 element to scalar
  - Fix narrowing conversion to size_t type.·
  - Enable tests with wrong conversion behavior
  - Restrict passing None as value
  - Restrict bool to integer/floating types conversion

* Add PyIntType support for Python 2

* Remove possible narrowing conversion of size_t

* Bindings conversion update

  - Remove unused macro
  - Add better conversion for types to numpy types descriptors
  - Add argument name to fail messages
  - NoneType treated as a valid argument. Better handling will be added
    as a standalone patch

* Add descriptor specialization for size_t

* Add check for signed to unsigned integer conversion safety

  - If signed integer is positive it can be safely converted
    to unsigned
  - Add check for plain python 2 objects
  - Add check for numpy scalars
  - Add simple type_traits implementation for better code style

* Resolve type "overflow" false negative in safe casting check

 - Move type_traits to separate header

* Add copyright message to type_traits.hpp

* Limit conversion scope for integral numpy types

  - Made canBeSafelyCasted specialized only for size_t, so
    type_traits header became unused and was removed.
  - Added clarification about descriptor pointer
2020-01-13 18:11:34 +03:00
..
bindings Limited API support for Python3 2019-06-11 15:15:49 +03:00
package python: enable Python 3.8 2019-12-11 16:52:38 +03:00
python2 python: support standalone Python bindings build 2018-06-07 15:16:39 +03:00
python3 Limited API support for Python3 2019-06-11 15:15:49 +03:00
src2 Merge pull request #15915 from VadimLevin:dev/norm_fix 2020-01-13 18:11:34 +03:00
test Merge pull request #15915 from VadimLevin:dev/norm_fix 2020-01-13 18:11:34 +03:00
CMakeLists.txt python: discover tests from module/misc/python/test paths 2019-04-10 18:35:35 +00:00
common.cmake Merge pull request #16150 from alalek:cmake_avoid_deprecated_link_private 2019-12-13 17:52:40 +03:00
python_loader.cmake cmake: fix python install paths 2018-12-17 14:32:29 +03:00
standalone.cmake python: update CMake install rules 2019-03-15 13:11:00 +03:00