Thomas Köppe
1e14930dfc
[common.h] Mark another entry point as "unused".
...
For rationale, see #2241 , eeb1044818af5b70761deae602c49eba439164dc;
there is a second entry point function defined by the PYBIND11_MODULE
macro that also needs to be annotated as unused.
2020-06-10 13:27:10 +02:00
Simeon Ehrig
c776e9ef93
Fix compiler error with MSVC 17 and CUDA 10.2
2020-06-09 01:57:57 +02:00
Thomas Köppe
eeb1044818
[common.h] Mark entry point as "unused".
...
This change defines a new, portable macro PYBIND11_MAYBE_UNUSED to
mark declarations as unused, and annotates the PYBIND11_MODULE entry
point with this attribute.
The purpose of this annotation is to facilitate dead code detection,
which might otherwise consider the module entry point function dead,
since it isn't otherwise used. (It is only used via FFI.)
2020-06-05 01:53:26 +02:00
Andrey Dorozhkin
1817d2116a
Disable defining (v)snprintf as macro in modern Visual Studio
2020-06-05 01:49:13 +02:00
Eric Cousineau
4e3d9fea74
operators: Explicitly expose py::hash(py::self)
...
Add warnings about extending STL
2020-05-31 07:03:01 +02:00
Eric Cousineau
5309573005
operators: Move hash check to before mutations, tweak whitespace
2020-05-31 07:03:01 +02:00
Eric Cousineau
2c30e0a118
cmake: Expose PYBIND11_TEST_OVERRIDE
( #2218 )
...
Primarily for the ccmake curses GUI
2020-05-31 07:00:55 +02:00
Andrew J. Hesford
a3118130c6
pytypes.h: fix docs generation ( #2220 )
2020-05-31 06:59:50 +02:00
Henry Schreiner
a38e5331d7
Fix CI, prepare test on Python 3.9 beta ( #2233 )
...
* Test on Python 3.9 beta
* Pin Sphinx
* Newer version of PyPy
2020-05-31 06:29:30 +02:00
Wenzel Jakob
a54eab92d2
Revert "Change __init__(self) to __new__(cls)"
...
This reverts commit 9ed8b44033
.
2020-04-26 22:53:50 +02:00
Dustin Spicuzza
2c4cd8419d
Add AutoWIG to list of binding generators ( #1990 )
...
* Add AutoWIG to list of binding generators
2020-04-26 18:40:54 +02:00
Nicholas Musolino
02c83dba0f
Propagate exceptions in sequence::size() ( #2076 )
2020-04-26 18:40:52 +02:00
Yannick Jadoul
805c5862b6
Adding method names to cpp_function constructor calls in enum_base
2020-04-26 18:27:18 +02:00
Sebastian Koslowski
a86ac538f5
rename args_kw_only to kwonly
2020-04-26 18:07:51 +02:00
Jason Rhinelander
be0d804523
Support keyword-only arguments
...
This adds support for a `py::args_kw_only()` annotation that can be
specified between `py::arg` annotations to indicate that any following
arguments are keyword-only. This allows you to write:
m.def("f", [](int a, int b) { /* ... */ },
py::arg("a"), py::args_kw_only(), py::arg("b"));
and have it work like Python 3's:
def f(a, *, b):
# ...
with respect to how `a` and `b` arguments are accepted (that is, `a` can
be positional or by keyword; `b` can only be specified by keyword).
2020-04-26 18:07:51 +02:00
peter
03f9e4a8ec
Fix compilation with clang-cl
2020-04-26 09:47:34 +02:00
Dustin Spicuzza
0dfffcf257
Add is_final to disallow inheritance from Python
...
- Not currently supported on PyPy
2020-04-26 09:46:44 +02:00
MRocholl
b14aeb7cfa
fix typo in sorted function call argument reverse
2020-04-26 09:29:29 +02:00
MRocholl
9358e30d2a
change set_path to set_file
2020-04-26 09:29:29 +02:00
MRocholl
00c462d149
find library path to libclang.so via glob command in /usr/lib/llvm-* and set it
2020-04-26 09:29:29 +02:00
Orell Garten
9ed8b44033
Change __init__(self) to __new__(cls)
...
__init__(self) cannot return values. According to https://stackoverflow.com/questions/2491819/how-to-return-a-value-from-init-in-python __new__(cls) should be used, which works.
2020-04-26 09:21:42 +02:00
David Stone
5088364b96
Declare operator==
and operator!=
member functions const.
2020-04-26 09:20:22 +02:00
Axel Huebl
6ebfc4b2b0
Document CMAKE_CXX_STANDARD
...
This variable is a CMake community standard to set the C++
standard of a build. Document it in favor of the previous variable,
which stays as a legacy flag for existing projects.
https://cmake.org/cmake/help/v3.17/variable/CMAKE_CXX_STANDARD.html
2020-04-26 09:17:10 +02:00
Chuck Atkins
d730fbc0d5
Utilize CMake's language standards abstraction when possible
2020-04-26 09:17:10 +02:00
Ralf W. Grosse-Kunstleve
f6e543b15e
Adding a default virtual destructor to Animal type in test_tagbased_polymorphic.cpp.
...
With this change, and cast.h as-is in master, test_tagbased_polymorphic.cpp fails to compile with the error message below.
With the cast.h change in pull/2016, building and testing succeeds.
cd pybind11/build/tests && /usr/bin/c++ -DPYBIND11_TEST_BOOST -DPYBIND11_TEST_EIGEN -Dpybind11_tests_EXPORTS -Ipybind11/include -I/usr/include/python3.7m -isystem /usr/include/eigen3 -Os -DNDEBUG -fPIC -fvisibility=hidden -std=c++2a -flto -fno-fat-lto-objects -Wall -Wextra -Wconversion -Wcast-qual -Wdeprecated -o CMakeFiles/pybind11_tests.dir/test_tagbased_polymorphic.cpp.o -c pybind11/tests/test_tagbased_polymorphic.cpp
In file included from pybind11/include/pybind11/attr.h:13,
from pybind11/include/pybind11/pybind11.h:44,
from pybind11/tests/pybind11_tests.h:2,
from pybind11/tests/test_tagbased_polymorphic.cpp:10:
pybind11/include/pybind11/cast.h: In instantiation of ‘static std::pair<const void*, const pybind11::detail::type_info*> pybind11::detail::type_caster_base<type>::src_and_type(const itype*) [with type = Animal; pybind11::detail::type_caster_base<type>::itype = Animal]’:
pybind11/include/pybind11/cast.h:906:31: required from ‘static pybind11::handle pybind11::detail::type_caster_base<type>::cast_holder(const itype*, const void*) [with type = Animal; pybind11::detail::type_caster_base<type>::itype = Animal]’
pybind11/include/pybind11/cast.h:1566:51: required from ‘static pybind11::handle pybind11::detail::move_only_holder_caster<type, holder_type>::cast(holder_type&&, pybind11::return_value_policy, pybind11::handle) [with type = Animal; holder_type = std::unique_ptr<Animal>]’
pybind11/include/pybind11/stl.h:175:69: required from ‘static pybind11::handle pybind11::detail::list_caster<Type, Value>::cast(T&&, pybind11::return_value_policy, pybind11::handle) [with T = std::vector<std::unique_ptr<Animal> >; Type = std::vector<std::unique_ptr<Animal> >; Value = std::unique_ptr<Animal>]’
pybind11/include/pybind11/pybind11.h:159:43: required from ‘void pybind11::cpp_function::initialize(Func&&, Return (*)(Args ...), const Extra& ...) [with Func = std::vector<std::unique_ptr<Animal> > (*&)(); Return = std::vector<std::unique_ptr<Animal> >; Args = {}; Extra = {pybind11::name, pybind11::scope, pybind11::sibling}]’
pybind11/include/pybind11/pybind11.h:64:9: required from ‘pybind11::cpp_function::cpp_function(Return (*)(Args ...), const Extra& ...) [with Return = std::vector<std::unique_ptr<Animal> >; Args = {}; Extra = {pybind11::name, pybind11::scope, pybind11::sibling}]’
pybind11/include/pybind11/pybind11.h:819:22: required from ‘pybind11::module& pybind11::module::def(const char*, Func&&, const Extra& ...) [with Func = std::vector<std::unique_ptr<Animal> > (*)(); Extra = {}]’
pybind11/tests/test_tagbased_polymorphic.cpp:141:36: required from here
pybind11/include/pybind11/cast.h:880:61: error: ambiguous template instantiation for ‘struct pybind11::polymorphic_type_hook<Animal, void>’
const void *vsrc = polymorphic_type_hook<itype>::get(src, instance_type);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
pybind11/include/pybind11/cast.h:844:8: note: candidates are: ‘template<class itype> struct pybind11::polymorphic_type_hook<itype, typename std::enable_if<std::is_polymorphic<_Tp>::value, void>::type> [with itype = Animal]’
struct polymorphic_type_hook<itype, detail::enable_if_t<std::is_polymorphic<itype>::value>>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pybind11/tests/test_tagbased_polymorphic.cpp:115:12: note: ‘template<class itype> struct pybind11::polymorphic_type_hook<itype, typename std::enable_if<std::is_base_of<Animal, itype>::value, void>::type> [with itype = Animal]’
struct polymorphic_type_hook<itype, detail::enable_if_t<std::is_base_of<Animal, itype>::value>>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from pybind11/include/pybind11/attr.h:13,
from pybind11/include/pybind11/pybind11.h:44,
from pybind11/tests/pybind11_tests.h:2,
from pybind11/tests/test_tagbased_polymorphic.cpp:10:
pybind11/include/pybind11/cast.h:880:61: error: incomplete type ‘pybind11::polymorphic_type_hook<Animal, void>’ used in nested name specifier
const void *vsrc = polymorphic_type_hook<itype>::get(src, instance_type);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
2020-04-14 17:48:43 +02:00
Ralf W. Grosse-Kunstleve
4697149d19
Allows users to specialize polymorphic_type_hook with std::enable_if.
...
Currently user specializations of the form
template <typename itype> struct polymorphic_type_hook<itype, std::enable_if_t<...>> { ... };
will fail if itype is also polymorphic, because the existing specialization will also
be enabled, which leads to 2 equally viable candidates. With this change, user provided
specializations have higher priority than the built in specialization for polymorphic types.
2020-04-14 17:48:43 +02:00
Wenzel Jakob
0234871649
begin working on next version
2020-03-31 13:09:41 +02:00
Wenzel Jakob
3b1dbebabc
v2.5.0 release
2020-03-31 13:00:39 +02:00
Wenzel Jakob
bb9c91cce8
pybind11Tools.cmake: search for Python 3.9
2020-03-04 16:17:20 +01:00
Baljak
4f72ef846f
Fix the use of MSVC in an MSYS environment ( #2087 )
2020-01-22 11:49:56 +01:00
fwjavox
e97c735fc4
stl_bind: add binding for std::vector::clear ( #2074 )
2020-01-17 01:16:56 +01:00
Baljak
07e2259322
Fix compilation with MinGW only ( #2053 )
2020-01-05 15:49:59 +01:00
Robert Haschke
370a2ae2b3
Declare call_impl() as && ( #2057 )
2020-01-05 15:49:24 +01:00
Wenzel Jakob
bf2b031449
Handle cases where binding code immediately throws py::error_already_set
...
When binding code immediately throws an exception of type
py::error_already_set (e.g. via py::module::import that fails), the
catch block sets an import error as expected. Unfortunately, following
this, the deconstructor of py::error_already_set decides to call
py::detail::get_internals() and set up various internal data structures
of pybind11, which fails given that the error flag is active. The call
stack of this looks as follows:
Py_init_mymodule() -> __cxa_decrement_exception_refcount ->
error_already_set::~error_already_set() ->
gil_scoped_acquire::gil_scoped_acquire() -> detail::get_internals() ->
... -> pybind11::detail::simple_collector() -> uh oh..
The solution is simple: we call detail::get_internals() once before
running any binding code to make sure that the internal data structures
are ready.
2020-01-02 22:18:03 +01:00
Wenzel Jakob
4c206e8c79
bindings for import_error exception
2020-01-02 22:17:20 +01:00
Wenzel Jakob
2fda9d5dd8
Travis CI fix (MacOS, Py3)
2019-12-31 01:26:40 +01:00
Wenzel Jakob
f9f3bd711f
Use C++17 fold expressions when casting tuples and argument lists ( #2043 )
...
This commit introduces the use of C++17-style fold expressions when
casting tuples & the argument lists of functions.
This change can improve performance of the resulting bindings: because
fold expressions have short-circuiting semantics, pybind11 e.g. won't
try to cast the second argument of a function if the first one failed.
This is particularly effective when working with functions that have
many overloads with long argument lists.
2019-12-30 01:26:32 +01:00
Vemund Handeland
6e39b765b2
Add C++20 char8_t/u8string support ( #2026 )
...
* Fix test build in C++20
* Add C++20 char8_t/u8string support
2019-12-19 12:16:24 +01:00
JGamache-autodesk
37d04abdee
Fixes #1295 : Handle debug interpreter ( #2025 )
...
If a debug interpreter is detected, we allow linking with
pythonXX_d.lib under windows.
2019-12-19 12:15:42 +01:00
Wenzel Jakob
b4e5d582cb
undo #define copysign in pyconfig.h
2019-12-13 11:11:33 +01:00
Boris Staletic
1376eb0e51
Free tstate on python 3.7+ on finalize_interpreter ( #2020 )
2019-12-12 15:55:54 +01:00
Wenzel Jakob
fb910ae92b
Revert "Fix a memory leak when creating Python3 modules. ( #2019 )"
...
This reverts commit 819802da99
.
2019-12-11 21:26:46 +01:00
Nils Berg
819802da99
Fix a memory leak when creating Python3 modules. ( #2019 )
2019-12-11 16:01:45 +01:00
Boris Staletic
dc9006db4f
Use newer macOS image for python3 testing
2019-12-11 13:17:03 +01:00
Boris Staletic
fe2a06e339
Pin breathe to 4.13.1
2019-12-11 13:17:03 +01:00
Isuru Fernando
3735249122
Install headers using both headers and package_data ( #1995 )
2019-11-28 15:59:23 +08:00
Wenzel Jakob
a60648223d
Revert "numpy.h: minor preprocessor fix suggested by @chaekwan"
...
This reverts commit 61e4f11823
.
2019-11-28 08:07:32 +01:00
Wenzel Jakob
61e4f11823
numpy.h: minor preprocessor fix suggested by @chaekwan
2019-11-28 07:42:34 +01:00
Eric Cousineau
baf69345f6
Minor modifications to interrupt handling FAQ ( #2007 )
2019-11-25 22:14:06 +08:00
Charles Brossollet
0f1d3bfee2
Add FAQ entry for dealing with long functions interruption ( #2000 )
...
* Add FAQ entry, with code example, for dealing with long functions interruption
2019-11-25 17:59:53 +08:00