diff --git a/src/amulet/nbt/nbt_encoding/binary/bnbt.py.cpp b/src/amulet/nbt/nbt_encoding/binary/bnbt.py.cpp index 85d85357..de744f1d 100644 --- a/src/amulet/nbt/nbt_encoding/binary/bnbt.py.cpp +++ b/src/amulet/nbt/nbt_encoding/binary/bnbt.py.cpp @@ -29,7 +29,7 @@ namespace NBT { void init_bnbt(py::module& m) { - py::class_ ReadOffset(m, "ReadOffset"); + py::classh ReadOffset(m, "ReadOffset"); ReadOffset.def( py::init(), py::arg("offset") = 0); diff --git a/src/amulet/nbt/string_encoding/encoding.py.cpp b/src/amulet/nbt/string_encoding/encoding.py.cpp index 19c7be2b..73abd4f5 100644 --- a/src/amulet/nbt/string_encoding/encoding.py.cpp +++ b/src/amulet/nbt/string_encoding/encoding.py.cpp @@ -12,7 +12,7 @@ namespace py = pybind11; void init_encoding(py::module& m) { - py::class_ StringEncoding(m, "StringEncoding"); + py::classh StringEncoding(m, "StringEncoding"); StringEncoding.def( "encode", [](const Amulet::NBT::StringEncoding& self, py::bytes data) -> py::bytes { @@ -32,7 +32,7 @@ void init_encoding(py::module& m) m.attr("utf8_escape_encoding") = utf8_escape_encoding; m.attr("mutf8_encoding") = mutf8_encoding; - py::class_ EncodingPreset(m, "EncodingPreset"); + py::classh EncodingPreset(m, "EncodingPreset"); EncodingPreset.def_readonly( "compressed", &Amulet::NBT::EncodingPreset::compressed); diff --git a/src/amulet/nbt/tag/abc.py.cpp b/src/amulet/nbt/tag/abc.py.cpp index 2d582be3..b74498e6 100644 --- a/src/amulet/nbt/tag/abc.py.cpp +++ b/src/amulet/nbt/tag/abc.py.cpp @@ -25,7 +25,7 @@ void init_abc(py::module& m) py::object mutf8_encoding = m.attr("mutf8_encoding"); py::object java_encoding = m.attr("java_encoding"); - py::class_ AbstractBaseTag(m, "AbstractBaseTag", + py::classh AbstractBaseTag(m, "AbstractBaseTag", "Abstract Base Class for all tag classes"); AbstractBaseTag.def_property_readonly_static( "tag_id", @@ -131,14 +131,14 @@ void init_abc(py::module& m) abstract_method, "A string representation of the object."); - py::class_ AbstractBaseImmutableTag(m, "AbstractBaseImmutableTag", + py::classh AbstractBaseImmutableTag(m, "AbstractBaseImmutableTag", "Abstract Base Class for all tag classes"); AbstractBaseImmutableTag.def( "__hash__", abstract_method, "A hash of the data in the class."); - py::class_ AbstractBaseNumericTag(m, "AbstractBaseNumericTag", + py::classh AbstractBaseNumericTag(m, "AbstractBaseNumericTag", "Abstract Base Class for all numeric tag classes"); AbstractBaseNumericTag.def( "__int__", @@ -153,7 +153,7 @@ void init_abc(py::module& m) abstract_method, "Get a python bool representation of the class."); - py::class_ AbstractBaseIntTag(m, "AbstractBaseIntTag", + py::classh AbstractBaseIntTag(m, "AbstractBaseIntTag", "Abstract Base Class for all int tag classes"); AbstractBaseIntTag.def_property_readonly( "py_int", @@ -162,7 +162,7 @@ void init_abc(py::module& m) "\n" "The returned data is immutable so changes will not mirror the instance."); - py::class_ AbstractBaseFloatTag(m, "AbstractBaseFloatTag", + py::classh AbstractBaseFloatTag(m, "AbstractBaseFloatTag", "Abstract Base Class for all float tag classes."); AbstractBaseFloatTag.def_property_readonly( "py_float", @@ -171,10 +171,10 @@ void init_abc(py::module& m) "\n" "The returned data is immutable so changes will not mirror the instance."); - py::class_ AbstractBaseMutableTag(m, "AbstractBaseMutableTag", + py::classh AbstractBaseMutableTag(m, "AbstractBaseMutableTag", "Abstract Base Class for all mutable tags."); AbstractBaseMutableTag.attr("__hash__") = py::none(); - py::class_ AbstractBaseArrayTag(m, "AbstractBaseArrayTag", + py::classh AbstractBaseArrayTag(m, "AbstractBaseArrayTag", "Abstract Base Class for all array tag classes."); } diff --git a/src/amulet/nbt/tag/array.py.cpp b/src/amulet/nbt/tag/array.py.cpp index 47a1244b..303a2e9a 100644 --- a/src/amulet/nbt/tag/array.py.cpp +++ b/src/amulet/nbt/tag/array.py.cpp @@ -25,7 +25,7 @@ namespace py = pybind11; #define PyArray(CLSNAME, ELEMENTCLS, BITCOUNT, TAGID) \ - py::class_> CLSNAME(m, #CLSNAME, AbstractBaseArrayTag, py::buffer_protocol(), \ + py::classh CLSNAME(m, #CLSNAME, AbstractBaseArrayTag, py::buffer_protocol(), \ "This class stores a fixed size signed " #BITCOUNT " bit vector."); \ CLSNAME.def_property_readonly_static("tag_id", [](py::object) { return TAGID; }); \ CLSNAME.def( \ diff --git a/src/amulet/nbt/tag/compound.py.cpp b/src/amulet/nbt/tag/compound.py.cpp index b10b1948..7937e76d 100644 --- a/src/amulet/nbt/tag/compound.py.cpp +++ b/src/amulet/nbt/tag/compound.py.cpp @@ -91,7 +91,7 @@ T new_tag() void init_compound(py::module& m) { - py::class_ CompoundTagIterator(m, "CompoundTagIterator"); + py::classh CompoundTagIterator(m, "CompoundTagIterator"); CompoundTagIterator.def( "__next__", [](Amulet::NBT::CompoundTagIterator& self) -> py::object { @@ -117,8 +117,7 @@ void init_compound(py::module& m) py::object mutf8_encoding = m.attr("mutf8_encoding"); py::object java_encoding = m.attr("java_encoding"); - // py::class_> CompoundTag(m, "CompoundTag", - py::class_> CompoundTag(m, "CompoundTag", AbstractBaseMutableTag, + py::classh CompoundTag(m, "CompoundTag", AbstractBaseMutableTag, "A Python wrapper around a C++ unordered map.\n" "\n" "Note that this class is not thread safe and inherits all the limitations of a C++ unordered_map."); diff --git a/src/amulet/nbt/tag/float.py.cpp b/src/amulet/nbt/tag/float.py.cpp index 2f74f30f..c10c27ec 100644 --- a/src/amulet/nbt/tag/float.py.cpp +++ b/src/amulet/nbt/tag/float.py.cpp @@ -18,7 +18,7 @@ namespace py = pybind11; #define PyFloat(NATIVE, CLSNAME, PRECISION, TAGID) \ - py::class_ CLSNAME(m, #CLSNAME, \ + py::classh CLSNAME(m, #CLSNAME, \ "A " #PRECISION " precision float class."); \ CLSNAME.def_property_readonly_static("tag_id", [](py::object) { return TAGID; }); \ CLSNAME.def( \ diff --git a/src/amulet/nbt/tag/int.py.cpp b/src/amulet/nbt/tag/int.py.cpp index cf8cc26e..5b1eeb95 100644 --- a/src/amulet/nbt/tag/int.py.cpp +++ b/src/amulet/nbt/tag/int.py.cpp @@ -18,7 +18,7 @@ namespace py = pybind11; #define PyInt(NATIVE, CLSNAME, BYTEWIDTH, BITPOW, SIGNBIT, MAGBITS, TAGID) \ - py::class_ CLSNAME(m, #CLSNAME, \ + py::classh CLSNAME(m, #CLSNAME, \ "A " #BYTEWIDTH " byte integer class.\n" \ "\n" \ "Can Store numbers between -(2^" #BITPOW ") and (2^" #BITPOW " - 1)"); \ diff --git a/src/amulet/nbt/tag/list.py.cpp b/src/amulet/nbt/tag/list.py.cpp index 73773fe6..7de18b42 100644 --- a/src/amulet/nbt/tag/list.py.cpp +++ b/src/amulet/nbt/tag/list.py.cpp @@ -151,7 +151,7 @@ void ListTag_del_slice(std::vector& self, const py::slice& slice) void init_list(py::module& m) { - py::class_> ListTagIterator(m, "ListTagIterator"); + py::classh ListTagIterator(m, "ListTagIterator"); ListTagIterator.def( "__next__", [](Amulet::NBT::ListTagIterator& self) { @@ -170,9 +170,7 @@ void init_list(py::module& m) py::object java_encoding = m.attr("java_encoding"); py::object AbstractBaseMutableTag = m.attr("AbstractBaseMutableTag"); - // py::class_> ListTag(m, "ListTag", - py::class_> ListTag(m, "ListTag", AbstractBaseMutableTag, - // py::class_> ListTag(m, "ListTag", + py::classh ListTag(m, "ListTag", AbstractBaseMutableTag, "A Python wrapper around a C++ vector.\n" "\n" "All contained data must be of the same NBT data type."); diff --git a/src/amulet/nbt/tag/named_tag.py.cpp b/src/amulet/nbt/tag/named_tag.py.cpp index 9da4e4bb..37ab727d 100644 --- a/src/amulet/nbt/tag/named_tag.py.cpp +++ b/src/amulet/nbt/tag/named_tag.py.cpp @@ -55,7 +55,7 @@ void init_named_tag(py::module& m) py::object mutf8_encoding = m.attr("mutf8_encoding"); py::object java_encoding = m.attr("java_encoding"); - py::class_ NamedTagIterator(m, "NamedTagIterator"); + py::classh NamedTagIterator(m, "NamedTagIterator"); NamedTagIterator.def( "__next__", &AmuletPy::NamedTagIterator::next); @@ -65,7 +65,7 @@ void init_named_tag(py::module& m) return self; }); - py::class_> NamedTag(m, "NamedTag"); + py::classh NamedTag(m, "NamedTag"); NamedTag.def( py::init([](std::variant value, std::string name) { return std::visit([&name](auto&& tag) { diff --git a/src/amulet/nbt/tag/string.py.cpp b/src/amulet/nbt/tag/string.py.cpp index 9f8e698a..ffc67a8f 100644 --- a/src/amulet/nbt/tag/string.py.cpp +++ b/src/amulet/nbt/tag/string.py.cpp @@ -24,7 +24,7 @@ void init_string(py::module& m) py::object mutf8_encoding = m.attr("mutf8_encoding"); py::object java_encoding = m.attr("java_encoding"); - py::class_ StringTag(m, "StringTag", + py::classh StringTag(m, "StringTag", "A class that behaves like a string."); StringTag.def_property_readonly_static("tag_id", [](py::object) { return 8; }); StringTag.def(