Henry Schreiner
1f53c373e4
fix: C++17 mode on Clang may error
2020-07-26 09:25:27 -04:00
Henry Schreiner
e428a7f6b8
ci: fix clang warnings
2020-07-26 09:25:27 -04:00
Boris Staletic
2819ce64a4
Avoid attr("__repr__") in initialize_generic ( #2317 )
...
If the default argument value is a class, and not an instance of a
class, `a.value.attr("__repr__")` raises a `ValueError`. Switching to
`repr(a.value)` makes this use case work.
Fixes #2028
2020-07-24 18:43:59 +02:00
Henry Schreiner
b16347e51d
ci: enable GHA testing
...
Adds requirements file too.
2020-07-23 17:42:53 -04:00
Henry Schreiner
a59c6de821
test: allow MSVC/Xcode to run the embed test
2020-07-23 17:42:53 -04:00
Henry Schreiner
49007b7ff3
test: fix warning/error on Python 2 in 14/17 mode
2020-07-23 17:42:53 -04:00
Henry Schreiner
3d20b73e87
test: pass through C++ std for cmake test
2020-07-23 17:42:53 -04:00
Henry Schreiner
ef057f12b6
test: support pypy2 7.3
2020-07-23 17:42:53 -04:00
Ralf W. Grosse-Kunstleve
96c6763613
test_builtin_casters.py test_string_view: Python 2 c++17, c++2a compatibility. ( #2314 )
...
Tested with 2.7.18rc1, built with Py_UNICODE_SIZE 4.
Change also tested with Python 3.8.
2020-07-22 12:05:16 -07:00
Henry Schreiner
d8c7ee00a6
ci: GHA basic format & pre-commit ( #2309 )
2020-07-20 13:35:21 -04:00
Kota Yamaguchi
e248869893
Fix undefined memoryview format ( #2223 )
...
* Fix undefined memoryview format
* Add missing <algorithm> header
* Add workaround for py27 array compatibility
* Workaround py27 memoryview behavior
* Fix memoryview constructor from buffer_info
* Workaround PyMemoryView_FromMemory availability in py27
* Fix up memoryview tests
* Update memoryview test from buffer to check signedness
* Use static factory method to create memoryview
* Remove ndim arg from memoryview::frombuffer and add tests
* Allow ndim=0 memoryview and documentation fixup
* Use void* to align to frombuffer method signature
* Add const variants of frombuffer and frommemory
* Add memory view section in doc
* Fix docs
* Add test for null buffer
* Workaround py27 nullptr behavior in test
* Rename frombuffer to from_buffer
2020-07-15 08:50:43 -07:00
Yannick Jadoul
f980d76d38
Change NAMESPACE_* macros into PYBIND11_NAMESPACE_* ( #2283 )
...
* Change NAMESPACE_BEGIN and NAMESPACE_END macros into PYBIND11_NAMESPACE_BEGIN and PYBIND11_NAMESPACE_END
* Fix sudden HomeBrew 'python not installed' error
* Sweep difference in 'Class.__init__() must be called when overriding __init__' error message between CPython and PyPy under the rug
* Homebrew updated to 3.8 yesterday.
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2020-07-08 18:14:41 -04:00
Isuru Fernando
0d70f0e18e
PyPy3 support ( #2146 )
...
* Error out eval_file
* Enable dynamic attribute support for Pypy >= 6
* Add a test for dynamic attribute support
* Skip test for eval_file on pypy
* Workaround for __qualname__ on PyPy3
* Add a PyPy3.6 7.3.0 build
* Only disable in PyPy3
* Fix travis testing
* No numpy and scipy for pypy
* Enable test on pypy2
* Fix logic in eval_file
* Skip a few tests due to bugs in PyPy
* scipy wheels are broken. make pypy2 a failrue
Co-authored-by: Andreas Kloeckner <inform@tiker.net>
2020-07-07 15:58:16 +02:00
Robert Haschke
f2226aefe0
Allow perfect forwarding of method args ( #2048 )
2020-07-07 15:56:07 +02:00
Dustin Spicuzza
1b0bf352fa
Throw TypeError when subclasses forget to call __init__ ( #2152 )
...
- Fixes #2103
2020-07-07 12:04:06 +02:00
Yannick Jadoul
d54d6d8c61
Adding pybind11::cast overload for rvalue references ( #1260 )
...
* Adding pybind11::cast overload for rvalue references
2020-07-01 01:53:09 +02:00
B Krishna Chaitanya
714424387f
Refactor: Extract Custom Type Casts related tests
2020-07-01 00:07:49 +02:00
fatvlady
8c06b95492
Fix compile error on GCC4.8
2020-06-29 21:01:20 +02:00
fatvlady
a3daf87d45
Add failing optional test
2020-06-29 21:01:20 +02:00
Ashley Whetter
8e85fadff2
Render py::none
as None
in docstrings
...
Closes #2270
2020-06-29 11:48:44 +02:00
Sergei Izmailov
ab323e04f3
Test py::iterable/py::iterator representation in docstrings
2020-06-10 13:36:31 +02:00
Sergei Izmailov
4f1531c454
Render py::int_
as int
in docstrings
2020-06-10 13:36:31 +02:00
Sergei Izmailov
22b2504080
Render full numpy numeric names (e.g. numpy.int32)
2020-06-10 13:36:31 +02:00
Clemens Sielaff
63df87fa49
Add lvalue ref-qualified cpp_function constructors ( #2213 )
...
* added overload for l-value ref-qualified methods
* Added test.
Before, the code would have failed to build.
2020-06-10 13:35:10 +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
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
Nicholas Musolino
02c83dba0f
Propagate exceptions in sequence::size() ( #2076 )
2020-04-26 18:40:52 +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
Dustin Spicuzza
0dfffcf257
Add is_final to disallow inheritance from Python
...
- Not currently supported on PyPy
2020-04-26 09:46:44 +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
fwjavox
e97c735fc4
stl_bind: add binding for std::vector::clear ( #2074 )
2020-01-17 01:16:56 +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
Sebastian Koslowski
dc65d66171
support for readonly buffers ( #863 ) ( #1466 )
2019-11-24 08:33:05 +01:00
Francesco Biscani
deb3cb238a
Add exception translation for std::overflow_error. ( #1977 )
2019-11-14 08:56:58 +01:00
Yannick Jadoul
55ff464233
Fixing SystemError when nb_bool/nb_nonzero sets a Python exception in type_caster<bool>::load ( #1976 )
2019-11-14 08:56:22 +01:00
Sebastian Gsänger
a83d69e78f
test pair-copyability on C++17 upwards ( #1886 )
...
* test pair-copyability on C++17 upwards
The stdlib falsely detects containers like M=std::map<T, U>
as copyable, even when one of T and U is not copyable.
Therefore we cannot rely on the stdlib dismissing std::pair<T, M>
by itself, even on C++17.
* fix is_copy_assignable
bind_map used std::is_copy_assignable which suffers from the same problems
as std::is_copy_constructible, therefore the same fix has been applied.
* created tests for copyability
2019-10-31 12:38:24 +01:00
Hans Dembinski
bdf6a5e870
Report type names in return value policy-related cast exceptions ( #1965 )
2019-10-23 13:19:58 +02:00
Wenzel Jakob
31680e6f9c
Implicit conversion from enum to int for Python 3.8 (fix by @sizmailov)
2019-09-20 11:06:10 +02:00
Wenzel Jakob
21d0eb460f
Fix Python 3.8 test regression
2019-09-20 09:38:30 +02:00
Sergei Izmailov
09f0829401
Avoid conversion to int_
rhs argument of enum eq/ne ( #1912 )
...
* fix: Avoid conversion to `int_` rhs argument of enum eq/ne
* test: compare unscoped enum with strings
* suppress comparison to None warning
* test unscoped enum arithmetic and comparision with unsupported type
2019-09-19 18:23:27 +02:00
Lori A. Burns
f6c4c1047a
restores __invert__ to arithmetic-enabled enum, fixes #1907 ( #1909 )
2019-09-04 22:16:21 +02:00
Stephen Larew
5b4751af26
Add const to buffer:request() ( #1890 )
2019-08-27 17:05:47 +02:00
kingofpayne
12e8774bc9
Added support for list insertion. ( #1888 )
2019-08-19 23:00:36 +02:00
Andre Schmeißer
19189b4c2c
Make overload_cast_impl
available in C++11 mode. ( #1581 )
...
* Make `overload_cast_impl` available in C++11 mode.
Narrow the scope of the `#if defined(PYBIND11_CPP14)` block around overload_cast to only
cover the parts where C++14 is stricly required. Thus, the implementation in
`pybind11::details::overload_cast_impl` is still available in C++11 mode.
* PR #1581 : Modify test to use overload_cast_impl, update docs and change log
2019-08-19 12:54:33 +02:00
Sergei Lebedev
08b0bda4bc
Added set::contains and generalized dict::contains ( #1884 )
...
Dynamically resolving __contains__ on each call is wasteful since set
has a public PySet_Contains function.
2019-08-16 21:32:27 +02:00
ali-beep
5ef13eb680
Add negative indexing support to stl_bind. ( #1882 )
2019-08-15 19:41:11 +02:00
Pauli Virtanen
c9d32a81f4
numpy: fix refcount leak to dtype singleton ( #1860 )
...
PyArray_DescrFromType returns a new reference, not borrowed one
2019-07-27 11:35:32 +02:00