mirror of
https://github.com/pybind/pybind11.git
synced 2026-06-08 23:39:12 +00:00
Add pybind11::bytearray (#2799)
* Add initial implementation * Add few more methods * Add tests * Fix a typo * Use std::string constructor which takes size * Fix implicit sign conversion error * Add size method and test * Remove implicit conversion * Fix bytearray constructors and operator std::string() * Make implicit bytearray constructor explicit * Rerun tests * Add null check * Rerun tests * Rerun tests - 2 * Remove NULL check
This commit is contained in:
@@ -92,6 +92,10 @@ TEST_SUBMODULE(pytypes, m) {
|
||||
m.def("bytes_from_string", []() { return py::bytes(std::string("foo")); });
|
||||
m.def("bytes_from_str", []() { return py::bytes(py::str("bar", 3)); });
|
||||
|
||||
// test bytearray
|
||||
m.def("bytearray_from_string", []() { return py::bytearray(std::string("foo")); });
|
||||
m.def("bytearray_size", []() { return py::bytearray("foo").size(); });
|
||||
|
||||
// test_capsule
|
||||
m.def("return_capsule_with_destructor", []() {
|
||||
py::print("creating capsule");
|
||||
@@ -210,6 +214,7 @@ TEST_SUBMODULE(pytypes, m) {
|
||||
m.def("default_constructors", []() {
|
||||
return py::dict(
|
||||
"bytes"_a=py::bytes(),
|
||||
"bytearray"_a=py::bytearray(),
|
||||
"str"_a=py::str(),
|
||||
"bool"_a=py::bool_(),
|
||||
"int"_a=py::int_(),
|
||||
@@ -224,6 +229,7 @@ TEST_SUBMODULE(pytypes, m) {
|
||||
m.def("converting_constructors", [](py::dict d) {
|
||||
return py::dict(
|
||||
"bytes"_a=py::bytes(d["bytes"]),
|
||||
"bytearray"_a=py::bytearray(d["bytearray"]),
|
||||
"str"_a=py::str(d["str"]),
|
||||
"bool"_a=py::bool_(d["bool"]),
|
||||
"int"_a=py::int_(d["int"]),
|
||||
@@ -240,6 +246,7 @@ TEST_SUBMODULE(pytypes, m) {
|
||||
// When converting between Python types, obj.cast<T>() should be the same as T(obj)
|
||||
return py::dict(
|
||||
"bytes"_a=d["bytes"].cast<py::bytes>(),
|
||||
"bytearray"_a=d["bytearray"].cast<py::bytearray>(),
|
||||
"str"_a=d["str"].cast<py::str>(),
|
||||
"bool"_a=d["bool"].cast<py::bool_>(),
|
||||
"int"_a=d["int"].cast<py::int_>(),
|
||||
|
||||
Reference in New Issue
Block a user