bjdata-serpent 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bjdata_serpent-0.1.0/.github/workflows/build.yml +110 -0
- bjdata_serpent-0.1.0/.gitignore +7 -0
- bjdata_serpent-0.1.0/.gitmodules +6 -0
- bjdata_serpent-0.1.0/CMakeLists.txt +36 -0
- bjdata_serpent-0.1.0/LICENSE +30 -0
- bjdata_serpent-0.1.0/PKG-INFO +101 -0
- bjdata_serpent-0.1.0/README.md +84 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.clang-format +55 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.git +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.gitattributes +2 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.github/workflows/ci.yml +42 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.github/workflows/docs.yml +46 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.gitignore +3 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/.gitignore +10 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/.name +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/codeStyles/Project.xml +122 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/codeStyles/codeStyleConfig.xml +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/cpp-serpent.iml +2 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/editor.xml +353 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/misc.xml +7 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/modules.xml +8 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/vcs.xml +6 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/CMakeLists.txt +183 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/LICENSE.md +44 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/README.md +147 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/CMakeLists.txt +190 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/bench.hpp +226 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/main.cpp +771 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/nanobench.cpp +3 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/benchmarks.md +169 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/bjdata.md +115 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/configuration.md +38 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/design.md +80 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/getting-started.md +78 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/index.md +86 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/json.md +74 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/msgpack.md +59 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/reading.md +225 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/reflection.md +557 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/requirements.txt +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/types.md +355 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/value.md +197 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/docs/writing.md +133 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/CMakeLists.txt +21 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/quickstart.cpp +52 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/reading_without_copying.cpp +53 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/reflection.cpp +65 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/splicing.cpp +71 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/example/transcoding.cpp +46 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/detail.hpp +509 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/direct.hpp +155 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/document.hpp +122 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/json.hpp +107 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/marker.hpp +354 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/ndarray.hpp +154 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/notation.hpp +459 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/reader.hpp +972 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/reflect.hpp +793 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/soa.hpp +483 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/soa_write.hpp +595 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/writer.hpp +612 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata.hpp +13 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/chrono.hpp +78 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/concepts.hpp +156 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/config.hpp +132 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/constant_text.hpp +36 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/emitter.hpp +523 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/error.hpp +128 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/README.md +14 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-APACHE +190 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-BOOST +23 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-MIT +27 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/fast_float.h +5155 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/LICENSE +21 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/inline.hpp +60 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/itoa.hpp +318 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/itoa_40kb.hpp +339 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/LICENSE +21 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/zmij.cc +2207 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/zmij.h +872 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/fwd.hpp +129 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/decode.hpp +132 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/direct.hpp +351 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/indexed.hpp +549 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/reader.hpp +675 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/reflect.hpp +577 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/scan.hpp +778 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/text.hpp +95 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/tree.hpp +250 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/writer.hpp +615 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json.hpp +12 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/kind.hpp +17 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/limits.hpp +23 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/member_runs.hpp +76 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/document.hpp +102 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/format.hpp +217 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/reader.hpp +766 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/reflect.hpp +34 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/writer.hpp +496 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack.hpp +13 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/ostream_sink.hpp +27 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/real_format.hpp +228 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/reflect.hpp +2033 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/serializer.hpp +619 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/sink.hpp +203 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/value.hpp +1334 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/visitor.hpp +184 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent.hpp +10 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/mkdocs.yml +67 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/CMakeLists.txt +141 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/annotation_misuse_test.cpp +16 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_bounded_write_test.cpp +127 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_container_test.cpp +304 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_ndarray_test.cpp +176 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_notation_test.cpp +83 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_scalar_test.cpp +111 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_shapes_test.cpp +165 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_table_test.cpp +301 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_walking_test.cpp +110 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_writer_test.cpp +492 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/check.hpp +65 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/duplicate_key_test.cpp +17 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_ambiguous_test.cpp +18 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_as_ambiguous_test.cpp +18 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_as_misplaced_test.cpp +16 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_incomplete_test.cpp +27 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixture_test.cpp +331 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.json.expected +7 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.json.expected +12 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.json.expected +11 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.json.expected +302 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.json.expected +15 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.json.expected +4 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.json.expected +14 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.json.expected +4 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.json.expected +8 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.json.expected +6 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.json.expected +7 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.json.expected +102 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.json.expected +8 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.json.expected +8 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.json.expected +5 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.json.expected +6 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.json.expected +7 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.json.expected +6 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/README.md +8 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/offsets.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/offsets.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.bjd +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.bjd +0 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.blocks +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.digest +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.json +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.json.expected +1 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/generate_fixtures.py +149 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/integer_text_test.cpp +126 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_bounded_write_test.cpp +187 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_indexed_test.cpp +107 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_reader_test.cpp +244 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_real_read_test.cpp +126 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_shapes_test.cpp +177 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_string_scan_test.cpp +62 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_terminated_test.cpp +156 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_walking_test.cpp +148 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_writer_test.cpp +266 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/manual_test.cpp +308 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/member_codec_test.cpp +267 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/msgpack_shapes_test.cpp +142 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/msgpack_test.cpp +510 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/nesting_test.cpp +168 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/no_exceptions_test.cpp +74 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/omit_empty_misplaced_test.cpp +16 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/real_text_test.cpp +116 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/reflect_conflict_test.cpp +16 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/reflect_test.cpp +563 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/serializer_test.cpp +854 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/traversals_apart_test.cpp +96 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/test/value_test.cpp +350 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench-docs.py +105 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench-summary.py +100 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench.sh +40 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/check.sh +10 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-fast-float.sh +42 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-glaze.sh +45 -0
- bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-zmij.sh +43 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.clang-format +55 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.git +1 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.github/workflows/ci.yml +117 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.gitignore +2 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/.gitignore +10 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/.name +1 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/codeStyles/Project.xml +122 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/codeStyles/codeStyleConfig.xml +5 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/cpp-unaligned.iml +2 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/editor.xml +353 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/misc.xml +7 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/modules.xml +8 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/vcs.xml +6 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/CMakeLists.txt +78 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/README.md +84 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/include/nonstd/unaligned.hpp +257 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/include/nonstd/unaligned_ptr.hpp +328 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/test/support.hpp +45 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/test/unaligned_ptr_test.cpp +414 -0
- bjdata_serpent-0.1.0/extern/cpp-unaligned/test/unaligned_test.cpp +280 -0
- bjdata_serpent-0.1.0/pyproject.toml +40 -0
- bjdata_serpent-0.1.0/src/bjdata_serpent/__init__.py +44 -0
- bjdata_serpent-0.1.0/src/bjdata_serpent/_core.pyi +68 -0
- bjdata_serpent-0.1.0/src/bjdata_serpent/_errors.py +15 -0
- bjdata_serpent-0.1.0/src/bjdata_serpent/py.typed +0 -0
- bjdata_serpent-0.1.0/src/ext/common.cpp +94 -0
- bjdata_serpent-0.1.0/src/ext/common.hpp +63 -0
- bjdata_serpent-0.1.0/src/ext/decode.cpp +527 -0
- bjdata_serpent-0.1.0/src/ext/decode.hpp +29 -0
- bjdata_serpent-0.1.0/src/ext/encode.cpp +1055 -0
- bjdata_serpent-0.1.0/src/ext/encode.hpp +21 -0
- bjdata_serpent-0.1.0/src/ext/module.cpp +109 -0
- bjdata_serpent-0.1.0/tests/test_arrays.py +74 -0
- bjdata_serpent-0.1.0/tests/test_documents.py +132 -0
- bjdata_serpent-0.1.0/tests/test_numpy.py +110 -0
- bjdata_serpent-0.1.0/tests/test_tables.py +140 -0
- bjdata_serpent-0.1.0/tests/test_values.py +209 -0
- bjdata_serpent-0.1.0/tests/test_without_numpy.py +29 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
name: build
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
tags: ['v*']
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
name: test (${{ matrix.os }}, python ${{ matrix.python }})
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
20
|
+
python: ["3.10", "3.14"]
|
|
21
|
+
runs-on: ${{ matrix.os }}
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v6
|
|
24
|
+
with:
|
|
25
|
+
submodules: recursive
|
|
26
|
+
fetch-depth: 0 # tags, for the version
|
|
27
|
+
|
|
28
|
+
- uses: actions/setup-python@v6
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python }}
|
|
31
|
+
|
|
32
|
+
# ubuntu-latest's default GCC 13 lacks std::ranges::to; 14 is installed beside it.
|
|
33
|
+
- name: Use GCC 14
|
|
34
|
+
if: runner.os == 'Linux'
|
|
35
|
+
run: echo "CXX=g++-14" >> "$GITHUB_ENV"
|
|
36
|
+
|
|
37
|
+
- name: Install
|
|
38
|
+
run: pip install -v '.[test,numpy]'
|
|
39
|
+
shell: bash
|
|
40
|
+
|
|
41
|
+
- name: Test
|
|
42
|
+
run: python -X faulthandler -m pytest -q --tb=short -p no:cacheprovider
|
|
43
|
+
|
|
44
|
+
wheels:
|
|
45
|
+
name: wheels (${{ matrix.os }})
|
|
46
|
+
needs: test
|
|
47
|
+
strategy:
|
|
48
|
+
fail-fast: false
|
|
49
|
+
matrix:
|
|
50
|
+
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, macos-15-intel, windows-latest, windows-11-arm]
|
|
51
|
+
runs-on: ${{ matrix.os }}
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v6
|
|
54
|
+
with:
|
|
55
|
+
submodules: recursive
|
|
56
|
+
fetch-depth: 0
|
|
57
|
+
|
|
58
|
+
- uses: pypa/cibuildwheel@v3.3
|
|
59
|
+
env:
|
|
60
|
+
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*"
|
|
61
|
+
CIBW_SKIP: "*-win32 *_i686 *-musllinux_*"
|
|
62
|
+
MACOSX_DEPLOYMENT_TARGET: "13.3" # floating-point to_chars, which serpent reaches through <format>
|
|
63
|
+
CIBW_TEST_REQUIRES: pytest
|
|
64
|
+
CIBW_TEST_COMMAND: pytest -q {project}/tests
|
|
65
|
+
|
|
66
|
+
- uses: actions/upload-artifact@v7
|
|
67
|
+
with:
|
|
68
|
+
name: wheels-${{ matrix.os }}
|
|
69
|
+
path: wheelhouse/*.whl
|
|
70
|
+
|
|
71
|
+
sdist:
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v6
|
|
75
|
+
with:
|
|
76
|
+
submodules: recursive
|
|
77
|
+
fetch-depth: 0
|
|
78
|
+
|
|
79
|
+
- name: Build
|
|
80
|
+
run: pipx run build --sdist
|
|
81
|
+
|
|
82
|
+
- name: Use GCC 14
|
|
83
|
+
run: echo "CXX=g++-14" >> "$GITHUB_ENV"
|
|
84
|
+
|
|
85
|
+
# The sdist has to build on its own, with nothing fetched: both libraries are in it.
|
|
86
|
+
- name: Build a wheel from it
|
|
87
|
+
run: |
|
|
88
|
+
pip install dist/*.tar.gz pytest
|
|
89
|
+
pytest -q tests
|
|
90
|
+
|
|
91
|
+
- uses: actions/upload-artifact@v7
|
|
92
|
+
with:
|
|
93
|
+
name: sdist
|
|
94
|
+
path: dist/*.tar.gz
|
|
95
|
+
|
|
96
|
+
publish:
|
|
97
|
+
name: Publish to PyPI
|
|
98
|
+
needs: [wheels, sdist]
|
|
99
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
environment: pypi
|
|
102
|
+
permissions:
|
|
103
|
+
id-token: write # trusted publishing
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/download-artifact@v8
|
|
106
|
+
with:
|
|
107
|
+
path: dist
|
|
108
|
+
merge-multiple: true
|
|
109
|
+
|
|
110
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.21)
|
|
2
|
+
|
|
3
|
+
project(bjdata_serpent LANGUAGES CXX)
|
|
4
|
+
|
|
5
|
+
set(CMAKE_CXX_STANDARD 23)
|
|
6
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
7
|
+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
8
|
+
|
|
9
|
+
find_package(Python 3.10 REQUIRED COMPONENTS Interpreter Development.Module)
|
|
10
|
+
find_package(nanobind CONFIG REQUIRED)
|
|
11
|
+
|
|
12
|
+
# Both libraries are submodules, so a build from an sdist fetches nothing. serpent takes the
|
|
13
|
+
# cpp-unaligned target that is already there rather than cloning its own.
|
|
14
|
+
add_subdirectory(extern/cpp-unaligned EXCLUDE_FROM_ALL)
|
|
15
|
+
set(SERPENT_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
16
|
+
# Żmij, serpent's real-number writer (only to_json uses it here), does not compile with Apple
|
|
17
|
+
# Clang for x86_64; std::to_chars writes the same text there.
|
|
18
|
+
if(APPLE AND (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR (NOT CMAKE_OSX_ARCHITECTURES AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")))
|
|
19
|
+
set(SERPENT_USE_ZMIJ OFF CACHE BOOL "" FORCE)
|
|
20
|
+
endif()
|
|
21
|
+
add_subdirectory(extern/cpp-serpent EXCLUDE_FROM_ALL)
|
|
22
|
+
|
|
23
|
+
nanobind_add_module(_core NB_STATIC
|
|
24
|
+
src/ext/common.cpp
|
|
25
|
+
src/ext/decode.cpp
|
|
26
|
+
src/ext/encode.cpp
|
|
27
|
+
src/ext/module.cpp)
|
|
28
|
+
target_link_libraries(_core PRIVATE serpent::serpent)
|
|
29
|
+
|
|
30
|
+
# nanobind links a macOS extension against a list of the interpreter's symbols, and the one
|
|
31
|
+
# that grows a bytes object in place - documented, and stable since Python 2 - is not on it.
|
|
32
|
+
if(APPLE)
|
|
33
|
+
target_link_options(_core PRIVATE "LINKER:-U,__PyBytes_Resize")
|
|
34
|
+
endif()
|
|
35
|
+
|
|
36
|
+
install(TARGETS _core LIBRARY DESTINATION bjdata_serpent)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nebojša Cvetković
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
## Code by other people
|
|
24
|
+
|
|
25
|
+
`include/serpent/external/` holds copies of three libraries, each under its own licence and
|
|
26
|
+
each kept beside the licence it came with. All three are permissive and compatible with the
|
|
27
|
+
MIT terms above; none of them places any further condition on a program that uses serpent
|
|
28
|
+
beyond preserving the notices below.
|
|
29
|
+
|
|
30
|
+
| Directory | Project | Copyright | Licence |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bjdata-serpent
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: BJData (Binary JData) encoder and decoder, on the serpent C++ library
|
|
5
|
+
Author: Nebojša Cvetković
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Programming Language :: C++
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
10
|
+
Project-URL: Source, https://github.com/nebkat/python-bjdata-serpent
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Provides-Extra: numpy
|
|
13
|
+
Requires-Dist: numpy>=1.25; extra == "numpy"
|
|
14
|
+
Provides-Extra: test
|
|
15
|
+
Requires-Dist: pytest>=7; extra == "test"
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# bjdata-serpent
|
|
19
|
+
|
|
20
|
+
[BJData](https://github.com/NeuroJSON/bjdata) (Binary JData) for Python, on the [serpent](https://github.com/nebkat/cpp-serpent) C++ library: draft 3 in full, and draft 4 Structure-of-Arrays tables.
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
pip install bjdata-serpent # numpy is optional: pip install 'bjdata-serpent[numpy]'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
import bjdata_serpent as bjd
|
|
28
|
+
|
|
29
|
+
data = bjd.encode({"port": 4411, "samples": [1, 2, 3]})
|
|
30
|
+
bjd.decode(data) # {'port': 4411, 'samples': [1, 2, 3]}
|
|
31
|
+
bjd.notation(data) # '[{][U][4][port][u][4411][U][7][samples][[][U][1]...'
|
|
32
|
+
bjd.to_json(data) # '{"port":4411,"samples":[1,2,3]}'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## API
|
|
36
|
+
|
|
37
|
+
| | |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `encode(obj, *, prefer="size", sort_keys=False, default=None, tables=False, table_order="row")` | one document, as bytes |
|
|
40
|
+
| `decode(data, *, numpy=False, object_hook=None, object_pairs_hook=None)` | the value of exactly one document |
|
|
41
|
+
| `decode_prefix(data, ...)` | the first value in `data`, and how many bytes it took |
|
|
42
|
+
| `dump(obj, fp, ...)` / `load(fp, ...)` | the same, to and from a binary file |
|
|
43
|
+
| `validate(data)` | raises `DecodeError` unless `data` is one well-formed value |
|
|
44
|
+
| `notation(data)` / `to_json(data, *, indent=0)` | what the bytes say, for reading |
|
|
45
|
+
|
|
46
|
+
`DecodeError` and `EncodeError` are `ValueError`s. A `DecodeError` carries the byte `offset` and serpent's name for what went wrong as `code` (`"unexpected_end"`, `"trailing_data"`, ...).
|
|
47
|
+
|
|
48
|
+
### Size or speed
|
|
49
|
+
|
|
50
|
+
`prefer="size"` (the default) writes each number under the narrowest marker that holds it exactly - `200` is `U`, `1.5` a two-byte half - and leaves containers uncounted. `prefer="speed"` writes numbers at their own width and counts every container, so a reader sizes it once. Either decodes the same.
|
|
51
|
+
|
|
52
|
+
### What becomes what
|
|
53
|
+
|
|
54
|
+
| Python | BJData | back |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| `None`, `bool` | `Z`, `T`/`F` | the same |
|
|
57
|
+
| `int` | the narrowest integer marker, or `H` digits beyond 64 bits | `int` |
|
|
58
|
+
| `float` | `h`/`d`/`D`, narrowed only when exact | `float` |
|
|
59
|
+
| `Decimal` | `H` | `Decimal`, or `int` for an integer |
|
|
60
|
+
| `str` | `S` | `str` |
|
|
61
|
+
| `bytes`, `bytearray`, byte `memoryview` | `[$B#` | `bytes` |
|
|
62
|
+
| `list`, `tuple`, other sequences | `[` | `list` |
|
|
63
|
+
| `dict`, other mappings | `{` | `dict` |
|
|
64
|
+
| numpy array, `array.array`, numeric `memoryview` | `[$T#n` typed, `[$T#[dims]` N-D | `list`, or with `numpy=True` an array of the same dtype and shape |
|
|
65
|
+
| numpy scalar | its own marker for speed, the narrowest for size | `int`/`float` |
|
|
66
|
+
| list of like dicts, structured numpy array (`tables=True`) | `[${schema}#n` table (`{${` with `table_order="column"`) | list of dicts, or with `numpy=True` a structured array |
|
|
67
|
+
|
|
68
|
+
What a document decodes to never depends on what is installed: packed arrays are lists unless `numpy=True` is asked for.
|
|
69
|
+
|
|
70
|
+
### Tables
|
|
71
|
+
|
|
72
|
+
With `tables=True`, a list of two or more dicts that share their keys - every value of a key being one kind a schema can say: booleans, integers, reals, text, `None`, nested dicts of the same, or lists of one length - is written as a Structure-of-Arrays table: the keys once, then the records back to back with no markers. Integer columns narrow to their range; text columns become single characters, a dictionary of up to 255 values, or a table of offsets. Anything else is written as an array of objects, as it would be without the option.
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
rows = [{"id": i, "ok": i % 2 == 0, "station": f"s-{i % 4}"} for i in range(1000)]
|
|
76
|
+
len(bjd.encode(rows)) # 28746
|
|
77
|
+
len(bjd.encode(rows, tables=True)) # 4053
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Compared with `bjdata`
|
|
81
|
+
|
|
82
|
+
[`bjdata`](https://pypi.org/project/bjdata/) (NeuroJSON's pybj) reads and writes the same format, and the two read each other's output. This one:
|
|
83
|
+
|
|
84
|
+
- has no required dependencies: numpy is used only when asked for, through its Python API, so there is no numpy ABI to build or run against;
|
|
85
|
+
- is one implementation, the extension, with no pure-Python fallback to drift from it;
|
|
86
|
+
- writes 2-2.6x faster and a few percent smaller, and reads about as fast;
|
|
87
|
+
- writes tables from plain lists of dicts as well as from structured arrays;
|
|
88
|
+
- ships wheels.
|
|
89
|
+
|
|
90
|
+
It does not write big-endian documents (pybj's `islittle=False`), it nests at most 32 deep, and it rejects typed containers of strings (`[$S#`), as serpent's grammar is strict.
|
|
91
|
+
|
|
92
|
+
## Building
|
|
93
|
+
|
|
94
|
+
The two C++ libraries are submodules:
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
git clone --recursive https://github.com/nebkat/python-bjdata-serpent
|
|
98
|
+
pip install '.[test,numpy]' && pytest
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
A C++23 compiler is needed: GCC 14, Clang 17, Apple Clang 15, or MSVC 19.40.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# bjdata-serpent
|
|
2
|
+
|
|
3
|
+
[BJData](https://github.com/NeuroJSON/bjdata) (Binary JData) for Python, on the [serpent](https://github.com/nebkat/cpp-serpent) C++ library: draft 3 in full, and draft 4 Structure-of-Arrays tables.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
pip install bjdata-serpent # numpy is optional: pip install 'bjdata-serpent[numpy]'
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
import bjdata_serpent as bjd
|
|
11
|
+
|
|
12
|
+
data = bjd.encode({"port": 4411, "samples": [1, 2, 3]})
|
|
13
|
+
bjd.decode(data) # {'port': 4411, 'samples': [1, 2, 3]}
|
|
14
|
+
bjd.notation(data) # '[{][U][4][port][u][4411][U][7][samples][[][U][1]...'
|
|
15
|
+
bjd.to_json(data) # '{"port":4411,"samples":[1,2,3]}'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
| | |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `encode(obj, *, prefer="size", sort_keys=False, default=None, tables=False, table_order="row")` | one document, as bytes |
|
|
23
|
+
| `decode(data, *, numpy=False, object_hook=None, object_pairs_hook=None)` | the value of exactly one document |
|
|
24
|
+
| `decode_prefix(data, ...)` | the first value in `data`, and how many bytes it took |
|
|
25
|
+
| `dump(obj, fp, ...)` / `load(fp, ...)` | the same, to and from a binary file |
|
|
26
|
+
| `validate(data)` | raises `DecodeError` unless `data` is one well-formed value |
|
|
27
|
+
| `notation(data)` / `to_json(data, *, indent=0)` | what the bytes say, for reading |
|
|
28
|
+
|
|
29
|
+
`DecodeError` and `EncodeError` are `ValueError`s. A `DecodeError` carries the byte `offset` and serpent's name for what went wrong as `code` (`"unexpected_end"`, `"trailing_data"`, ...).
|
|
30
|
+
|
|
31
|
+
### Size or speed
|
|
32
|
+
|
|
33
|
+
`prefer="size"` (the default) writes each number under the narrowest marker that holds it exactly - `200` is `U`, `1.5` a two-byte half - and leaves containers uncounted. `prefer="speed"` writes numbers at their own width and counts every container, so a reader sizes it once. Either decodes the same.
|
|
34
|
+
|
|
35
|
+
### What becomes what
|
|
36
|
+
|
|
37
|
+
| Python | BJData | back |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `None`, `bool` | `Z`, `T`/`F` | the same |
|
|
40
|
+
| `int` | the narrowest integer marker, or `H` digits beyond 64 bits | `int` |
|
|
41
|
+
| `float` | `h`/`d`/`D`, narrowed only when exact | `float` |
|
|
42
|
+
| `Decimal` | `H` | `Decimal`, or `int` for an integer |
|
|
43
|
+
| `str` | `S` | `str` |
|
|
44
|
+
| `bytes`, `bytearray`, byte `memoryview` | `[$B#` | `bytes` |
|
|
45
|
+
| `list`, `tuple`, other sequences | `[` | `list` |
|
|
46
|
+
| `dict`, other mappings | `{` | `dict` |
|
|
47
|
+
| numpy array, `array.array`, numeric `memoryview` | `[$T#n` typed, `[$T#[dims]` N-D | `list`, or with `numpy=True` an array of the same dtype and shape |
|
|
48
|
+
| numpy scalar | its own marker for speed, the narrowest for size | `int`/`float` |
|
|
49
|
+
| list of like dicts, structured numpy array (`tables=True`) | `[${schema}#n` table (`{${` with `table_order="column"`) | list of dicts, or with `numpy=True` a structured array |
|
|
50
|
+
|
|
51
|
+
What a document decodes to never depends on what is installed: packed arrays are lists unless `numpy=True` is asked for.
|
|
52
|
+
|
|
53
|
+
### Tables
|
|
54
|
+
|
|
55
|
+
With `tables=True`, a list of two or more dicts that share their keys - every value of a key being one kind a schema can say: booleans, integers, reals, text, `None`, nested dicts of the same, or lists of one length - is written as a Structure-of-Arrays table: the keys once, then the records back to back with no markers. Integer columns narrow to their range; text columns become single characters, a dictionary of up to 255 values, or a table of offsets. Anything else is written as an array of objects, as it would be without the option.
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
rows = [{"id": i, "ok": i % 2 == 0, "station": f"s-{i % 4}"} for i in range(1000)]
|
|
59
|
+
len(bjd.encode(rows)) # 28746
|
|
60
|
+
len(bjd.encode(rows, tables=True)) # 4053
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Compared with `bjdata`
|
|
64
|
+
|
|
65
|
+
[`bjdata`](https://pypi.org/project/bjdata/) (NeuroJSON's pybj) reads and writes the same format, and the two read each other's output. This one:
|
|
66
|
+
|
|
67
|
+
- has no required dependencies: numpy is used only when asked for, through its Python API, so there is no numpy ABI to build or run against;
|
|
68
|
+
- is one implementation, the extension, with no pure-Python fallback to drift from it;
|
|
69
|
+
- writes 2-2.6x faster and a few percent smaller, and reads about as fast;
|
|
70
|
+
- writes tables from plain lists of dicts as well as from structured arrays;
|
|
71
|
+
- ships wheels.
|
|
72
|
+
|
|
73
|
+
It does not write big-endian documents (pybj's `islittle=False`), it nests at most 32 deep, and it rejects typed containers of strings (`[$S#`), as serpent's grammar is strict.
|
|
74
|
+
|
|
75
|
+
## Building
|
|
76
|
+
|
|
77
|
+
The two C++ libraries are submodules:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
git clone --recursive https://github.com/nebkat/python-bjdata-serpent
|
|
81
|
+
pip install '.[test,numpy]' && pytest
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
A C++23 compiler is needed: GCC 14, Clang 17, Apple Clang 15, or MSVC 19.40.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Continuation is always a fixed indent, never aligned to a column set by the line above.
|
|
2
|
+
Language: Cpp
|
|
3
|
+
BasedOnStyle: LLVM
|
|
4
|
+
Standard: Latest
|
|
5
|
+
|
|
6
|
+
ColumnLimit: 120
|
|
7
|
+
IndentWidth: 4
|
|
8
|
+
TabWidth: 4
|
|
9
|
+
UseTab: Never
|
|
10
|
+
AccessModifierOffset: -4
|
|
11
|
+
|
|
12
|
+
# The rules this file exists for.
|
|
13
|
+
ContinuationIndentWidth: 8
|
|
14
|
+
AlignAfterOpenBracket: DontAlign
|
|
15
|
+
AlignOperands: DontAlign
|
|
16
|
+
AlignEscapedNewlines: DontAlign
|
|
17
|
+
AlignConsecutiveAssignments: None
|
|
18
|
+
AlignConsecutiveDeclarations: None
|
|
19
|
+
AlignConsecutiveMacros: None
|
|
20
|
+
AlignTrailingComments: false
|
|
21
|
+
BitFieldColonSpacing: Both
|
|
22
|
+
|
|
23
|
+
SpaceAfterTemplateKeyword: false
|
|
24
|
+
SpaceBeforeParens: Custom
|
|
25
|
+
SpaceBeforeParensOptions:
|
|
26
|
+
AfterControlStatements: true
|
|
27
|
+
AfterFunctionDefinitionName: false
|
|
28
|
+
AfterFunctionDeclarationName: false
|
|
29
|
+
AfterRequiresInClause: true
|
|
30
|
+
AfterRequiresInExpression: false
|
|
31
|
+
|
|
32
|
+
BreakBeforeBraces: Attach
|
|
33
|
+
BreakConstructorInitializers: BeforeComma
|
|
34
|
+
ConstructorInitializerIndentWidth: 0
|
|
35
|
+
PackConstructorInitializers: CurrentLine
|
|
36
|
+
BreakBeforeBinaryOperators: NonAssignment
|
|
37
|
+
BreakTemplateDeclarations: Yes
|
|
38
|
+
|
|
39
|
+
AllowShortFunctionsOnASingleLine: All
|
|
40
|
+
AllowShortIfStatementsOnASingleLine: WithoutElse
|
|
41
|
+
AllowShortLambdasOnASingleLine: All
|
|
42
|
+
AllowShortCaseLabelsOnASingleLine: true
|
|
43
|
+
AllowShortBlocksOnASingleLine: Empty
|
|
44
|
+
|
|
45
|
+
Cpp11BracedListStyle: false
|
|
46
|
+
SpaceBeforeCpp11BracedList: true
|
|
47
|
+
PointerAlignment: Right
|
|
48
|
+
DerivePointerAlignment: false
|
|
49
|
+
ReferenceAlignment: Pointer
|
|
50
|
+
|
|
51
|
+
SortIncludes: Never
|
|
52
|
+
IndentPPDirectives: None
|
|
53
|
+
KeepEmptyLinesAtTheStartOfBlocks: false
|
|
54
|
+
MaxEmptyLinesToKeep: 1
|
|
55
|
+
SeparateDefinitionBlocks: Leave
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: ../../.git/modules/extern/cpp-serpent
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: ${{ matrix.name }}
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
timeout-minutes: 30
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
include:
|
|
18
|
+
# MSVC's AddressSanitizer is incompatible with the /RTC1 checks a Debug build has.
|
|
19
|
+
- name: Windows x86_64 MSVC
|
|
20
|
+
os: windows-2025
|
|
21
|
+
msvc_arch: x64
|
|
22
|
+
build_type: RelWithDebInfo
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v7
|
|
25
|
+
|
|
26
|
+
- name: Set up the MSVC environment
|
|
27
|
+
if: matrix.msvc_arch
|
|
28
|
+
uses: ilammy/msvc-dev-cmd@v1
|
|
29
|
+
with:
|
|
30
|
+
arch: ${{ matrix.msvc_arch }}
|
|
31
|
+
|
|
32
|
+
- name: Configure
|
|
33
|
+
run: >
|
|
34
|
+
cmake -S . -B build -G Ninja
|
|
35
|
+
-DCMAKE_BUILD_TYPE=${{ matrix.build_type || 'Debug' }}
|
|
36
|
+
-DSERPENT_TEST_SANITIZE=${{ matrix.sanitize || 'ON' }}
|
|
37
|
+
|
|
38
|
+
- name: Build
|
|
39
|
+
run: cmake --build build
|
|
40
|
+
|
|
41
|
+
- name: Test
|
|
42
|
+
run: ctest --test-dir build --output-on-failure
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
pages: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: pages
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
build:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
- uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.x"
|
|
26
|
+
- run: pip install -r docs/requirements.txt
|
|
27
|
+
- run: mkdocs build --strict
|
|
28
|
+
- uses: actions/upload-pages-artifact@v3
|
|
29
|
+
with:
|
|
30
|
+
path: site
|
|
31
|
+
|
|
32
|
+
deploy:
|
|
33
|
+
# Pages is not available for a private repository on a free plan, so deploying is opt-in:
|
|
34
|
+
# set the PAGES_ENABLED repository variable to true once Pages is enabled with its source
|
|
35
|
+
# set to GitHub Actions. Until then the build above still runs, so the docs cannot rot.
|
|
36
|
+
#
|
|
37
|
+
# gh variable set PAGES_ENABLED --body true
|
|
38
|
+
if: github.ref == 'refs/heads/main' && vars.PAGES_ENABLED == 'true'
|
|
39
|
+
needs: build
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
environment:
|
|
42
|
+
name: github-pages
|
|
43
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
44
|
+
steps:
|
|
45
|
+
- id: deployment
|
|
46
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
serpent
|