mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-11 08:03:55 +00:00
Merge branch 'master' into smart_holder
This commit is contained in:
commit
704daac879
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -386,7 +386,7 @@ jobs:
|
|||||||
run: yum -y install https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-20-9-20.9-1.x86_64.rpm https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-2020-20.9-1.x86_64.rpm
|
run: yum -y install https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-20-9-20.9-1.x86_64.rpm https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-2020-20.9-1.x86_64.rpm
|
||||||
|
|
||||||
# On CentOS 7, we have to filter a few tests (compiler internal error)
|
# On CentOS 7, we have to filter a few tests (compiler internal error)
|
||||||
# and allow deeper templete recursion (not needed on CentOS 8 with a newer
|
# and allow deeper template recursion (not needed on CentOS 8 with a newer
|
||||||
# standard library). On some systems, you many need further workarounds:
|
# standard library). On some systems, you many need further workarounds:
|
||||||
# https://github.com/pybind/pybind11/pull/2475
|
# https://github.com/pybind/pybind11/pull/2475
|
||||||
- name: Configure
|
- name: Configure
|
||||||
|
@ -83,6 +83,17 @@ repos:
|
|||||||
stages: [manual]
|
stages: [manual]
|
||||||
additional_dependencies: [cmake, ninja]
|
additional_dependencies: [cmake, ninja]
|
||||||
|
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.1.0
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
name: codespell
|
||||||
|
description: Checks for common misspellings in text files.
|
||||||
|
entry: codespell
|
||||||
|
language: python
|
||||||
|
types: [text]
|
||||||
|
args: ["-q", "3", "--skip", "*.supp", "-L", "nd,ot,thist,readded"]
|
||||||
|
|
||||||
# The original pybind11 checks for a few C++ style items
|
# The original pybind11 checks for a few C++ style items
|
||||||
- repo: local
|
- repo: local
|
||||||
hooks:
|
hooks:
|
||||||
|
@ -504,7 +504,7 @@ v2.4.0 (Sep 19, 2019)
|
|||||||
`#1888 <https://github.com/pybind/pybind11/pull/1888>`_.
|
`#1888 <https://github.com/pybind/pybind11/pull/1888>`_.
|
||||||
|
|
||||||
* ``py::details::overload_cast_impl`` is available in C++11 mode, can be used
|
* ``py::details::overload_cast_impl`` is available in C++11 mode, can be used
|
||||||
like ``overload_cast`` with an additional set of parantheses.
|
like ``overload_cast`` with an additional set of parentheses.
|
||||||
`#1581 <https://github.com/pybind/pybind11/pull/1581>`_.
|
`#1581 <https://github.com/pybind/pybind11/pull/1581>`_.
|
||||||
|
|
||||||
* Fixed ``get_include()`` on Conda.
|
* Fixed ``get_include()`` on Conda.
|
||||||
|
@ -93,7 +93,7 @@ to a memory dependent number.
|
|||||||
If you are developing rapidly and have a lot of C++ files, you may want to
|
If you are developing rapidly and have a lot of C++ files, you may want to
|
||||||
avoid rebuilding files that have not changed. For simple cases were you are
|
avoid rebuilding files that have not changed. For simple cases were you are
|
||||||
using ``pip install -e .`` and do not have local headers, you can skip the
|
using ``pip install -e .`` and do not have local headers, you can skip the
|
||||||
rebuild if a object file is newer than it's source (headers are not checked!)
|
rebuild if an object file is newer than its source (headers are not checked!)
|
||||||
with the following:
|
with the following:
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
@ -180,7 +180,7 @@ How can I create smaller binaries?
|
|||||||
|
|
||||||
To do its job, pybind11 extensively relies on a programming technique known as
|
To do its job, pybind11 extensively relies on a programming technique known as
|
||||||
*template metaprogramming*, which is a way of performing computation at compile
|
*template metaprogramming*, which is a way of performing computation at compile
|
||||||
time using type information. Template metaprogamming usually instantiates code
|
time using type information. Template metaprogramming usually instantiates code
|
||||||
involving significant numbers of deeply nested types that are either completely
|
involving significant numbers of deeply nested types that are either completely
|
||||||
removed or reduced to just a few instructions during the compiler's optimization
|
removed or reduced to just a few instructions during the compiler's optimization
|
||||||
phase. However, due to the nested nature of these types, the resulting symbol
|
phase. However, due to the nested nature of these types, the resulting symbol
|
||||||
|
@ -281,7 +281,7 @@ Within pybind11's CMake build system, ``pybind11_add_module`` has always been
|
|||||||
setting the ``-fvisibility=hidden`` flag in release mode. From now on, it's
|
setting the ``-fvisibility=hidden`` flag in release mode. From now on, it's
|
||||||
being applied unconditionally, even in debug mode and it can no longer be opted
|
being applied unconditionally, even in debug mode and it can no longer be opted
|
||||||
out of with the ``NO_EXTRAS`` option. The ``pybind11::module`` target now also
|
out of with the ``NO_EXTRAS`` option. The ``pybind11::module`` target now also
|
||||||
adds this flag to it's interface. The ``pybind11::embed`` target is unchanged.
|
adds this flag to its interface. The ``pybind11::embed`` target is unchanged.
|
||||||
|
|
||||||
The most significant change here is for the ``pybind11::module`` target. If you
|
The most significant change here is for the ``pybind11::module`` target. If you
|
||||||
were previously relying on default visibility, i.e. if your Python module was
|
were previously relying on default visibility, i.e. if your Python module was
|
||||||
|
@ -329,7 +329,7 @@ inline bool deregister_instance(instance *self, void *valptr, const type_info *t
|
|||||||
inline PyObject *make_new_instance(PyTypeObject *type) {
|
inline PyObject *make_new_instance(PyTypeObject *type) {
|
||||||
#if defined(PYPY_VERSION)
|
#if defined(PYPY_VERSION)
|
||||||
// PyPy gets tp_basicsize wrong (issue 2482) under multiple inheritance when the first inherited
|
// PyPy gets tp_basicsize wrong (issue 2482) under multiple inheritance when the first inherited
|
||||||
// object is a a plain Python type (i.e. not derived from an extension type). Fix it.
|
// object is a plain Python type (i.e. not derived from an extension type). Fix it.
|
||||||
ssize_t instance_size = static_cast<ssize_t>(sizeof(instance));
|
ssize_t instance_size = static_cast<ssize_t>(sizeof(instance));
|
||||||
if (type->tp_basicsize < instance_size) {
|
if (type->tp_basicsize < instance_size) {
|
||||||
type->tp_basicsize = instance_size;
|
type->tp_basicsize = instance_size;
|
||||||
|
@ -85,7 +85,7 @@ class Pybind11Extension(_Extension):
|
|||||||
* ``stdlib=libc++`` on macOS
|
* ``stdlib=libc++`` on macOS
|
||||||
* ``visibility=hidden`` and ``-g0`` on Unix
|
* ``visibility=hidden`` and ``-g0`` on Unix
|
||||||
|
|
||||||
Finally, you can set ``cxx_std`` via constructor or afterwords to enable
|
Finally, you can set ``cxx_std`` via constructor or afterwards to enable
|
||||||
flags for C++ std, and a few extra helper flags related to the C++ standard
|
flags for C++ std, and a few extra helper flags related to the C++ standard
|
||||||
level. It is _highly_ recommended you either set this, or use the provided
|
level. It is _highly_ recommended you either set this, or use the provided
|
||||||
``build_ext``, which will search for the highest supported extension for
|
``build_ext``, which will search for the highest supported extension for
|
||||||
|
@ -521,7 +521,7 @@ def test_void_caster_2():
|
|||||||
|
|
||||||
def test_const_ref_caster():
|
def test_const_ref_caster():
|
||||||
"""Verifies that const-ref is propagated through type_caster cast_op.
|
"""Verifies that const-ref is propagated through type_caster cast_op.
|
||||||
The returned ConstRefCasted type is a mimimal type that is constructed to
|
The returned ConstRefCasted type is a minimal type that is constructed to
|
||||||
reference the casting mode used.
|
reference the casting mode used.
|
||||||
"""
|
"""
|
||||||
x = False
|
x = False
|
||||||
|
@ -65,7 +65,7 @@ TEST_SUBMODULE(kwargs_and_defaults, m) {
|
|||||||
#endif
|
#endif
|
||||||
m.def("arg_refcount_h", [](py::handle h) { GC_IF_NEEDED; return h.ref_count(); });
|
m.def("arg_refcount_h", [](py::handle h) { GC_IF_NEEDED; return h.ref_count(); });
|
||||||
m.def("arg_refcount_h", [](py::handle h, py::handle, py::handle) { GC_IF_NEEDED; return h.ref_count(); });
|
m.def("arg_refcount_h", [](py::handle h, py::handle, py::handle) { GC_IF_NEEDED; return h.ref_count(); });
|
||||||
// TODO replace the following nolints as appropiate
|
// TODO replace the following nolints as appropriate
|
||||||
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
||||||
m.def("arg_refcount_o", [](py::object o) { GC_IF_NEEDED; return o.ref_count(); });
|
m.def("arg_refcount_o", [](py::object o) { GC_IF_NEEDED; return o.ref_count(); });
|
||||||
m.def("args_refcount", [](py::args a) {
|
m.def("args_refcount", [](py::args a) {
|
||||||
|
@ -39,7 +39,7 @@ TEST_SUBMODULE(numpy_vectorize, m) {
|
|||||||
|
|
||||||
// test_type_selection
|
// test_type_selection
|
||||||
// NumPy function which only accepts specific data types
|
// NumPy function which only accepts specific data types
|
||||||
// Alot of these no lints could be replaced with const refs, and probably should at some point.
|
// A lot of these no lints could be replaced with const refs, and probably should at some point.
|
||||||
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
||||||
m.def("selective_func", [](py::array_t<int, py::array::c_style>) { return "Int branch taken."; });
|
m.def("selective_func", [](py::array_t<int, py::array::c_style>) { return "Int branch taken."; });
|
||||||
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
// NOLINTNEXTLINE(performance-unnecessary-value-param)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# On updating a dependency, to get a list of "default" leaks in e.g. NumPy, run
|
# On updating a dependency, to get a list of "default" leaks in e.g. NumPy, run
|
||||||
# `PYTHONMALLOC=malloc valgrind --leak-check=full --show-leak-kinds=definite,indirect python3.9-dbg -c "import numpy"`
|
# `PYTHONMALLOC=malloc valgrind --leak-check=full --show-leak-kinds=definite,indirect python3.9-dbg -c "import numpy"`
|
||||||
# To use theses suppression files, add e.g. `--suppressions=valgrind-numpy-scipy.supp`
|
# To use these suppression files, add e.g. `--suppressions=valgrind-numpy-scipy.supp`
|
||||||
|
|
||||||
{
|
{
|
||||||
Leaks when importing NumPy
|
Leaks when importing NumPy
|
||||||
|
Loading…
Reference in New Issue
Block a user