mirror of https://github.com/pybind/pybind11.git
Compare commits
4 Commits
3967225c75
...
184db0d33b
Author | SHA1 | Date |
---|---|---|
Jan Iwaszkiewicz | 184db0d33b | |
Hintay | 1f8b4a7f1a | |
jiwaszki | 2fbd013434 | |
jiwaszki | 7266988540 |
|
@ -328,6 +328,30 @@ Alternately, to ignore the error, call `PyErr_Clear
|
||||||
Any Python error must be thrown or cleared, or Python/pybind11 will be left in
|
Any Python error must be thrown or cleared, or Python/pybind11 will be left in
|
||||||
an invalid state.
|
an invalid state.
|
||||||
|
|
||||||
|
Handling warnings from the Python C API
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Where possible, use :ref:`pybind11 warnings <warnings>` instead of calling
|
||||||
|
the Python C API directly. The motivation is similar to previously mentioned errors.
|
||||||
|
All warnings categories are required to be a subclass of ``PyExc_Warning`` from Python C API.
|
||||||
|
|
||||||
|
Warnings can be raised with ``warn`` function:
|
||||||
|
|
||||||
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
py::warnings::warn("This is warning!", PyExc_Warning);
|
||||||
|
|
||||||
|
// When calling `stack_level` can be specified as well.
|
||||||
|
py::warnings::warn("Another one!", PyExc_DeprecationWarning, 3);
|
||||||
|
|
||||||
|
New warning types can be registered on the module level with ``new_warning_type``:
|
||||||
|
|
||||||
|
.. code-block:: cpp
|
||||||
|
|
||||||
|
py::warnings::new_warning_type(m, "CustomWarning", PyExc_RuntimeWarning);
|
||||||
|
|
||||||
|
.. versionadded:: 2.14
|
||||||
|
|
||||||
Chaining exceptions ('raise from')
|
Chaining exceptions ('raise from')
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
|
|
@ -274,10 +274,6 @@ function(pybind11_add_module target_name)
|
||||||
target_link_libraries(${target_name} PRIVATE pybind11::embed)
|
target_link_libraries(${target_name} PRIVATE pybind11::embed)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
target_link_libraries(${target_name} PRIVATE pybind11::windows_extras)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# -fvisibility=hidden is required to allow multiple modules compiled against
|
# -fvisibility=hidden is required to allow multiple modules compiled against
|
||||||
# different pybind versions to work properly, and for some features (e.g.
|
# different pybind versions to work properly, and for some features (e.g.
|
||||||
# py::module_local). We force it on everything inside the `pybind11`
|
# py::module_local). We force it on everything inside the `pybind11`
|
||||||
|
|
Loading…
Reference in New Issue