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.
Files changed (431) hide show
  1. bjdata_serpent-0.1.0/.github/workflows/build.yml +110 -0
  2. bjdata_serpent-0.1.0/.gitignore +7 -0
  3. bjdata_serpent-0.1.0/.gitmodules +6 -0
  4. bjdata_serpent-0.1.0/CMakeLists.txt +36 -0
  5. bjdata_serpent-0.1.0/LICENSE +30 -0
  6. bjdata_serpent-0.1.0/PKG-INFO +101 -0
  7. bjdata_serpent-0.1.0/README.md +84 -0
  8. bjdata_serpent-0.1.0/extern/cpp-serpent/.clang-format +55 -0
  9. bjdata_serpent-0.1.0/extern/cpp-serpent/.git +1 -0
  10. bjdata_serpent-0.1.0/extern/cpp-serpent/.gitattributes +2 -0
  11. bjdata_serpent-0.1.0/extern/cpp-serpent/.github/workflows/ci.yml +42 -0
  12. bjdata_serpent-0.1.0/extern/cpp-serpent/.github/workflows/docs.yml +46 -0
  13. bjdata_serpent-0.1.0/extern/cpp-serpent/.gitignore +3 -0
  14. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/.gitignore +10 -0
  15. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/.name +1 -0
  16. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/codeStyles/Project.xml +122 -0
  17. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/codeStyles/codeStyleConfig.xml +5 -0
  18. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/cpp-serpent.iml +2 -0
  19. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/editor.xml +353 -0
  20. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/misc.xml +7 -0
  21. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/modules.xml +8 -0
  22. bjdata_serpent-0.1.0/extern/cpp-serpent/.idea/vcs.xml +6 -0
  23. bjdata_serpent-0.1.0/extern/cpp-serpent/CMakeLists.txt +183 -0
  24. bjdata_serpent-0.1.0/extern/cpp-serpent/LICENSE.md +44 -0
  25. bjdata_serpent-0.1.0/extern/cpp-serpent/README.md +147 -0
  26. bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/CMakeLists.txt +190 -0
  27. bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/bench.hpp +226 -0
  28. bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/main.cpp +771 -0
  29. bjdata_serpent-0.1.0/extern/cpp-serpent/benchmark/nanobench.cpp +3 -0
  30. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/benchmarks.md +169 -0
  31. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/bjdata.md +115 -0
  32. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/configuration.md +38 -0
  33. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/design.md +80 -0
  34. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/getting-started.md +78 -0
  35. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/index.md +86 -0
  36. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/json.md +74 -0
  37. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/msgpack.md +59 -0
  38. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/reading.md +225 -0
  39. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/reflection.md +557 -0
  40. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/requirements.txt +1 -0
  41. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/types.md +355 -0
  42. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/value.md +197 -0
  43. bjdata_serpent-0.1.0/extern/cpp-serpent/docs/writing.md +133 -0
  44. bjdata_serpent-0.1.0/extern/cpp-serpent/example/CMakeLists.txt +21 -0
  45. bjdata_serpent-0.1.0/extern/cpp-serpent/example/quickstart.cpp +52 -0
  46. bjdata_serpent-0.1.0/extern/cpp-serpent/example/reading_without_copying.cpp +53 -0
  47. bjdata_serpent-0.1.0/extern/cpp-serpent/example/reflection.cpp +65 -0
  48. bjdata_serpent-0.1.0/extern/cpp-serpent/example/splicing.cpp +71 -0
  49. bjdata_serpent-0.1.0/extern/cpp-serpent/example/transcoding.cpp +46 -0
  50. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/detail.hpp +509 -0
  51. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/direct.hpp +155 -0
  52. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/document.hpp +122 -0
  53. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/json.hpp +107 -0
  54. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/marker.hpp +354 -0
  55. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/ndarray.hpp +154 -0
  56. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/notation.hpp +459 -0
  57. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/reader.hpp +972 -0
  58. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/reflect.hpp +793 -0
  59. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/soa.hpp +483 -0
  60. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/soa_write.hpp +595 -0
  61. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata/writer.hpp +612 -0
  62. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/bjdata.hpp +13 -0
  63. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/chrono.hpp +78 -0
  64. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/concepts.hpp +156 -0
  65. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/config.hpp +132 -0
  66. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/constant_text.hpp +36 -0
  67. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/emitter.hpp +523 -0
  68. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/error.hpp +128 -0
  69. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/README.md +14 -0
  70. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-APACHE +190 -0
  71. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-BOOST +23 -0
  72. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/LICENSE-MIT +27 -0
  73. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/fast_float/fast_float.h +5155 -0
  74. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/LICENSE +21 -0
  75. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/inline.hpp +60 -0
  76. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/itoa.hpp +318 -0
  77. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/glaze/itoa_40kb.hpp +339 -0
  78. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/LICENSE +21 -0
  79. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/zmij.cc +2207 -0
  80. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/external/zmij/zmij.h +872 -0
  81. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/fwd.hpp +129 -0
  82. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/decode.hpp +132 -0
  83. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/direct.hpp +351 -0
  84. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/indexed.hpp +549 -0
  85. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/reader.hpp +675 -0
  86. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/reflect.hpp +577 -0
  87. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/scan.hpp +778 -0
  88. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/text.hpp +95 -0
  89. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/tree.hpp +250 -0
  90. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json/writer.hpp +615 -0
  91. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/json.hpp +12 -0
  92. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/kind.hpp +17 -0
  93. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/limits.hpp +23 -0
  94. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/member_runs.hpp +76 -0
  95. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/document.hpp +102 -0
  96. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/format.hpp +217 -0
  97. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/reader.hpp +766 -0
  98. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/reflect.hpp +34 -0
  99. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack/writer.hpp +496 -0
  100. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/msgpack.hpp +13 -0
  101. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/ostream_sink.hpp +27 -0
  102. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/real_format.hpp +228 -0
  103. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/reflect.hpp +2033 -0
  104. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/serializer.hpp +619 -0
  105. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/sink.hpp +203 -0
  106. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/value.hpp +1334 -0
  107. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent/visitor.hpp +184 -0
  108. bjdata_serpent-0.1.0/extern/cpp-serpent/include/serpent.hpp +10 -0
  109. bjdata_serpent-0.1.0/extern/cpp-serpent/mkdocs.yml +67 -0
  110. bjdata_serpent-0.1.0/extern/cpp-serpent/test/CMakeLists.txt +141 -0
  111. bjdata_serpent-0.1.0/extern/cpp-serpent/test/annotation_misuse_test.cpp +16 -0
  112. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_bounded_write_test.cpp +127 -0
  113. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_container_test.cpp +304 -0
  114. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_ndarray_test.cpp +176 -0
  115. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_notation_test.cpp +83 -0
  116. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_scalar_test.cpp +111 -0
  117. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_shapes_test.cpp +165 -0
  118. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_table_test.cpp +301 -0
  119. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_walking_test.cpp +110 -0
  120. bjdata_serpent-0.1.0/extern/cpp-serpent/test/bjdata_writer_test.cpp +492 -0
  121. bjdata_serpent-0.1.0/extern/cpp-serpent/test/check.hpp +65 -0
  122. bjdata_serpent-0.1.0/extern/cpp-serpent/test/duplicate_key_test.cpp +17 -0
  123. bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_ambiguous_test.cpp +18 -0
  124. bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_as_ambiguous_test.cpp +18 -0
  125. bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_as_misplaced_test.cpp +16 -0
  126. bjdata_serpent-0.1.0/extern/cpp-serpent/test/enum_incomplete_test.cpp +27 -0
  127. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixture_test.cpp +331 -0
  128. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.bjd +1 -0
  129. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.blocks +1 -0
  130. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.digest +1 -0
  131. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.json +1 -0
  132. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_empty.json.expected +1 -0
  133. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.bjd +1 -0
  134. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.blocks +1 -0
  135. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.digest +1 -0
  136. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.json +1 -0
  137. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_mixed.json.expected +7 -0
  138. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.bjd +1 -0
  139. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.blocks +1 -0
  140. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.digest +1 -0
  141. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.json +1 -0
  142. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_negative.json.expected +5 -0
  143. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.bjd +1 -0
  144. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.blocks +1 -0
  145. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.digest +1 -0
  146. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.json +1 -0
  147. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_nested.json.expected +12 -0
  148. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.bjd +1 -0
  149. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.blocks +1 -0
  150. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.digest +1 -0
  151. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.json +1 -0
  152. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_of_objects.json.expected +11 -0
  153. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.bjd +0 -0
  154. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.blocks +1 -0
  155. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.digest +1 -0
  156. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.json +1 -0
  157. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_reals.json.expected +5 -0
  158. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.bjd +1 -0
  159. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.blocks +1 -0
  160. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.digest +1 -0
  161. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.json +1 -0
  162. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_small.json.expected +5 -0
  163. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.bjd +1 -0
  164. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.blocks +1 -0
  165. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.digest +1 -0
  166. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.json +1 -0
  167. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_strings.json.expected +5 -0
  168. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.bjd +0 -0
  169. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.blocks +1 -0
  170. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.digest +1 -0
  171. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.json +1 -0
  172. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_uniform_long.json.expected +302 -0
  173. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.bjd +0 -0
  174. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.blocks +1 -0
  175. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.digest +1 -0
  176. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.json +1 -0
  177. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/array_wide.json.expected +5 -0
  178. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.bjd +1 -0
  179. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.blocks +1 -0
  180. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.digest +1 -0
  181. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.json +1 -0
  182. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/deep.json.expected +15 -0
  183. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.bjd +1 -0
  184. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.blocks +1 -0
  185. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.digest +1 -0
  186. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.json +1 -0
  187. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/false.json.expected +1 -0
  188. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.bjd +1 -0
  189. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.blocks +1 -0
  190. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.digest +1 -0
  191. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.json +1 -0
  192. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int16_negative.json.expected +1 -0
  193. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.bjd +0 -0
  194. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.blocks +1 -0
  195. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.digest +1 -0
  196. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.json +1 -0
  197. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/int64_negative.json.expected +1 -0
  198. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.bjd +1 -0
  199. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.blocks +1 -0
  200. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.digest +1 -0
  201. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.json +1 -0
  202. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/null.json.expected +1 -0
  203. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.bjd +1 -0
  204. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.blocks +1 -0
  205. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.digest +1 -0
  206. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.json +1 -0
  207. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_empty.json.expected +1 -0
  208. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.bjd +1 -0
  209. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.blocks +1 -0
  210. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.digest +1 -0
  211. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.json +1 -0
  212. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_flat.json.expected +4 -0
  213. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.bjd +1 -0
  214. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.blocks +1 -0
  215. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.digest +1 -0
  216. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.json +1 -0
  217. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_nested.json.expected +14 -0
  218. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.bjd +1 -0
  219. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.blocks +1 -0
  220. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.digest +1 -0
  221. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.json +1 -0
  222. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_typed.json.expected +5 -0
  223. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.bjd +1 -0
  224. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.blocks +1 -0
  225. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.digest +1 -0
  226. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.json +1 -0
  227. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/object_utf8_keys.json.expected +4 -0
  228. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.bjd +1 -0
  229. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.blocks +1 -0
  230. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.digest +1 -0
  231. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.json +1 -0
  232. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_bools.json.expected +8 -0
  233. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.bjd +1 -0
  234. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.blocks +1 -0
  235. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.digest +1 -0
  236. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.json +1 -0
  237. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_4.json.expected +6 -0
  238. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.bjd +1 -0
  239. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.blocks +1 -0
  240. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.digest +1 -0
  241. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.json +1 -0
  242. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_boundary_5.json.expected +7 -0
  243. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.bjd +0 -0
  244. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.blocks +1 -0
  245. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.digest +1 -0
  246. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.json +1 -0
  247. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_halves.json.expected +102 -0
  248. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.bjd +0 -0
  249. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.blocks +1 -0
  250. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.digest +1 -0
  251. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.json +1 -0
  252. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_mixed_numeric.json.expected +5 -0
  253. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.bjd +1 -0
  254. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.blocks +1 -0
  255. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.digest +1 -0
  256. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.json +1 -0
  257. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_negatives.json.expected +8 -0
  258. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.bjd +1 -0
  259. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.blocks +1 -0
  260. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.digest +1 -0
  261. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.json +1 -0
  262. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_nulls.json.expected +8 -0
  263. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.bjd +1 -0
  264. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.blocks +1 -0
  265. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.digest +1 -0
  266. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.json +1 -0
  267. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_reals_exact.json.expected +5 -0
  268. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.bjd +1 -0
  269. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.blocks +1 -0
  270. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.digest +1 -0
  271. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.json +1 -0
  272. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_tie.json.expected +6 -0
  273. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.bjd +0 -0
  274. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.blocks +1 -0
  275. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.digest +1 -0
  276. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.json +1 -0
  277. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_wide_span.json.expected +7 -0
  278. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.bjd +0 -0
  279. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.blocks +1 -0
  280. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.digest +1 -0
  281. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.json +1 -0
  282. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/pack_widened.json.expected +6 -0
  283. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.bjd +0 -0
  284. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.blocks +1 -0
  285. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.digest +1 -0
  286. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.json +1 -0
  287. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_half.json.expected +1 -0
  288. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.bjd +1 -0
  289. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.blocks +1 -0
  290. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.digest +1 -0
  291. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.json +1 -0
  292. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_huge.json.expected +1 -0
  293. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.bjd +1 -0
  294. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.blocks +1 -0
  295. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.digest +1 -0
  296. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.json +1 -0
  297. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_pi.json.expected +1 -0
  298. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.bjd +1 -0
  299. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.blocks +1 -0
  300. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.digest +1 -0
  301. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.json +1 -0
  302. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/real_tiny.json.expected +1 -0
  303. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/README.md +8 -0
  304. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.bjd +0 -0
  305. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.blocks +1 -0
  306. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/mixed.json +1 -0
  307. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.bjd +0 -0
  308. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.blocks +1 -0
  309. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/nested_table.json +1 -0
  310. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/offsets.bjd +0 -0
  311. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/offsets.json +1 -0
  312. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.bjd +0 -0
  313. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.blocks +1 -0
  314. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records.json +1 -0
  315. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.bjd +0 -0
  316. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.blocks +1 -0
  317. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/soa/records_columns.json +1 -0
  318. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.bjd +0 -0
  319. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.blocks +1 -0
  320. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.digest +1 -0
  321. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.json +1 -0
  322. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_empty.json.expected +1 -0
  323. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.bjd +1 -0
  324. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.blocks +1 -0
  325. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.digest +1 -0
  326. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.json +1 -0
  327. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_hello.json.expected +1 -0
  328. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.bjd +1 -0
  329. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.blocks +1 -0
  330. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.digest +1 -0
  331. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.json +1 -0
  332. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_long.json.expected +1 -0
  333. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.bjd +1 -0
  334. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.blocks +1 -0
  335. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.digest +1 -0
  336. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.json +1 -0
  337. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/string_utf8.json.expected +1 -0
  338. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.bjd +1 -0
  339. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.blocks +1 -0
  340. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.digest +1 -0
  341. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.json +1 -0
  342. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/true.json.expected +1 -0
  343. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.bjd +0 -0
  344. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.blocks +1 -0
  345. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.digest +1 -0
  346. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.json +1 -0
  347. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint16.json.expected +1 -0
  348. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.bjd +1 -0
  349. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.blocks +1 -0
  350. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.digest +1 -0
  351. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.json +1 -0
  352. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint32.json.expected +1 -0
  353. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.bjd +1 -0
  354. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.blocks +1 -0
  355. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.digest +1 -0
  356. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.json +1 -0
  357. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/uint8_max.json.expected +1 -0
  358. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.bjd +0 -0
  359. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.blocks +1 -0
  360. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.digest +1 -0
  361. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.json +1 -0
  362. bjdata_serpent-0.1.0/extern/cpp-serpent/test/fixtures/zero.json.expected +1 -0
  363. bjdata_serpent-0.1.0/extern/cpp-serpent/test/generate_fixtures.py +149 -0
  364. bjdata_serpent-0.1.0/extern/cpp-serpent/test/integer_text_test.cpp +126 -0
  365. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_bounded_write_test.cpp +187 -0
  366. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_indexed_test.cpp +107 -0
  367. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_reader_test.cpp +244 -0
  368. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_real_read_test.cpp +126 -0
  369. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_shapes_test.cpp +177 -0
  370. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_string_scan_test.cpp +62 -0
  371. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_terminated_test.cpp +156 -0
  372. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_walking_test.cpp +148 -0
  373. bjdata_serpent-0.1.0/extern/cpp-serpent/test/json_writer_test.cpp +266 -0
  374. bjdata_serpent-0.1.0/extern/cpp-serpent/test/manual_test.cpp +308 -0
  375. bjdata_serpent-0.1.0/extern/cpp-serpent/test/member_codec_test.cpp +267 -0
  376. bjdata_serpent-0.1.0/extern/cpp-serpent/test/msgpack_shapes_test.cpp +142 -0
  377. bjdata_serpent-0.1.0/extern/cpp-serpent/test/msgpack_test.cpp +510 -0
  378. bjdata_serpent-0.1.0/extern/cpp-serpent/test/nesting_test.cpp +168 -0
  379. bjdata_serpent-0.1.0/extern/cpp-serpent/test/no_exceptions_test.cpp +74 -0
  380. bjdata_serpent-0.1.0/extern/cpp-serpent/test/omit_empty_misplaced_test.cpp +16 -0
  381. bjdata_serpent-0.1.0/extern/cpp-serpent/test/real_text_test.cpp +116 -0
  382. bjdata_serpent-0.1.0/extern/cpp-serpent/test/reflect_conflict_test.cpp +16 -0
  383. bjdata_serpent-0.1.0/extern/cpp-serpent/test/reflect_test.cpp +563 -0
  384. bjdata_serpent-0.1.0/extern/cpp-serpent/test/serializer_test.cpp +854 -0
  385. bjdata_serpent-0.1.0/extern/cpp-serpent/test/traversals_apart_test.cpp +96 -0
  386. bjdata_serpent-0.1.0/extern/cpp-serpent/test/value_test.cpp +350 -0
  387. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench-docs.py +105 -0
  388. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench-summary.py +100 -0
  389. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/bench.sh +40 -0
  390. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/check.sh +10 -0
  391. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-fast-float.sh +42 -0
  392. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-glaze.sh +45 -0
  393. bjdata_serpent-0.1.0/extern/cpp-serpent/tools/vendor-zmij.sh +43 -0
  394. bjdata_serpent-0.1.0/extern/cpp-unaligned/.clang-format +55 -0
  395. bjdata_serpent-0.1.0/extern/cpp-unaligned/.git +1 -0
  396. bjdata_serpent-0.1.0/extern/cpp-unaligned/.github/workflows/ci.yml +117 -0
  397. bjdata_serpent-0.1.0/extern/cpp-unaligned/.gitignore +2 -0
  398. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/.gitignore +10 -0
  399. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/.name +1 -0
  400. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/codeStyles/Project.xml +122 -0
  401. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/codeStyles/codeStyleConfig.xml +5 -0
  402. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/cpp-unaligned.iml +2 -0
  403. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/editor.xml +353 -0
  404. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/misc.xml +7 -0
  405. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/modules.xml +8 -0
  406. bjdata_serpent-0.1.0/extern/cpp-unaligned/.idea/vcs.xml +6 -0
  407. bjdata_serpent-0.1.0/extern/cpp-unaligned/CMakeLists.txt +78 -0
  408. bjdata_serpent-0.1.0/extern/cpp-unaligned/README.md +84 -0
  409. bjdata_serpent-0.1.0/extern/cpp-unaligned/include/nonstd/unaligned.hpp +257 -0
  410. bjdata_serpent-0.1.0/extern/cpp-unaligned/include/nonstd/unaligned_ptr.hpp +328 -0
  411. bjdata_serpent-0.1.0/extern/cpp-unaligned/test/support.hpp +45 -0
  412. bjdata_serpent-0.1.0/extern/cpp-unaligned/test/unaligned_ptr_test.cpp +414 -0
  413. bjdata_serpent-0.1.0/extern/cpp-unaligned/test/unaligned_test.cpp +280 -0
  414. bjdata_serpent-0.1.0/pyproject.toml +40 -0
  415. bjdata_serpent-0.1.0/src/bjdata_serpent/__init__.py +44 -0
  416. bjdata_serpent-0.1.0/src/bjdata_serpent/_core.pyi +68 -0
  417. bjdata_serpent-0.1.0/src/bjdata_serpent/_errors.py +15 -0
  418. bjdata_serpent-0.1.0/src/bjdata_serpent/py.typed +0 -0
  419. bjdata_serpent-0.1.0/src/ext/common.cpp +94 -0
  420. bjdata_serpent-0.1.0/src/ext/common.hpp +63 -0
  421. bjdata_serpent-0.1.0/src/ext/decode.cpp +527 -0
  422. bjdata_serpent-0.1.0/src/ext/decode.hpp +29 -0
  423. bjdata_serpent-0.1.0/src/ext/encode.cpp +1055 -0
  424. bjdata_serpent-0.1.0/src/ext/encode.hpp +21 -0
  425. bjdata_serpent-0.1.0/src/ext/module.cpp +109 -0
  426. bjdata_serpent-0.1.0/tests/test_arrays.py +74 -0
  427. bjdata_serpent-0.1.0/tests/test_documents.py +132 -0
  428. bjdata_serpent-0.1.0/tests/test_numpy.py +110 -0
  429. bjdata_serpent-0.1.0/tests/test_tables.py +140 -0
  430. bjdata_serpent-0.1.0/tests/test_values.py +209 -0
  431. 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,7 @@
1
+ /build/
2
+ /dist/
3
+ *.so
4
+ *.pyd
5
+ __pycache__/
6
+ *.egg-info/
7
+ .pytest_cache/
@@ -0,0 +1,6 @@
1
+ [submodule "extern/cpp-serpent"]
2
+ path = extern/cpp-serpent
3
+ url = https://github.com/nebkat/cpp-serpent.git
4
+ [submodule "extern/cpp-unaligned"]
5
+ path = extern/cpp-unaligned
6
+ url = https://github.com/nebkat/cpp-unaligned.git
@@ -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,2 @@
1
+ # The fixtures are compared byte for byte, so a checkout must not turn their newlines into CRLF.
2
+ test/fixtures/** -text
@@ -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,3 @@
1
+ build*/
2
+ site/
3
+ .DS_Store
@@ -0,0 +1,10 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Ignored default folder with query files
7
+ /queries/
8
+ # Datasource local storage ignored files
9
+ /dataSources/
10
+ /dataSources.local.xml
@@ -0,0 +1 @@
1
+ serpent