hg-cpp 0.3.0__tar.gz → 0.3.1__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 (551) hide show
  1. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/.github/workflows/build.yml +114 -7
  2. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/CLAUDE.md +16 -0
  3. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/CMakeLists.txt +19 -0
  4. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/PKG-INFO +1 -1
  5. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/build_system.rst +18 -0
  6. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/overview/structural_layers.rst +3 -3
  7. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/plans_and_ops/erased_types.rst +43 -34
  8. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/plans_and_ops/proxy_state_management.rst +151 -86
  9. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/plans_and_ops/scalar.rst +32 -28
  10. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/plans_and_ops/time_series.rst +182 -48
  11. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/graph.rst +40 -22
  12. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/node.rst +39 -25
  13. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/scalar.rst +18 -1
  14. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/time_series.rst +11 -2
  15. hg_cpp-0.3.1/docs/source/developer_guide/data_structures/type_erasure_inventory.rst +619 -0
  16. hg_cpp-0.3.1/docs/source/developer_guide/data_structures/unified_type_erasure.rst +712 -0
  17. hg_cpp-0.3.1/docs/source/developer_guide/data_structures/unified_type_erasure_implementation_plan.rst +711 -0
  18. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures.rst +9 -0
  19. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/debugging.rst +24 -8
  20. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/error_handling.rst +1 -1
  21. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/nested_graphs.rst +125 -25
  22. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/operators.rst +32 -5
  23. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/parity_matrix.rst +94 -128
  24. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/python_integration.rst +92 -12
  25. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/record_replay_table.rst +63 -0
  26. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/component.h +2 -0
  27. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/arithmetic.h +6 -0
  28. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/control.h +1 -1
  29. hg_cpp-0.3.1/include/hgraph/lib/std/operators/convert_target.h +42 -0
  30. hg_cpp-0.3.1/include/hgraph/lib/std/operators/data_frame.h +42 -0
  31. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/arithmetic_impl.h +32 -14
  32. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/collection_impl.h +37 -37
  33. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/comparison_impl.h +54 -1
  34. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/container_impl.h +188 -4
  35. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/conversion_impl.h +176 -59
  36. hg_cpp-0.3.1/include/hgraph/lib/std/operators/impl/data_frame_impl.h +471 -0
  37. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/higher_order_impl.h +13 -8
  38. hg_cpp-0.3.1/include/hgraph/lib/std/operators/impl/io_impl.h +191 -0
  39. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/json_impl.h +24 -25
  40. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/operators_impl.h +1 -0
  41. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/series_impl.h +2 -4
  42. hg_cpp-0.3.1/include/hgraph/lib/std/operators/impl/stream_impl.h +1707 -0
  43. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/string_impl.h +15 -15
  44. hg_cpp-0.3.1/include/hgraph/lib/std/operators/impl/table_impl.h +222 -0
  45. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/io.h +20 -0
  46. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/stream.h +17 -0
  47. hg_cpp-0.3.1/include/hgraph/lib/std/operators/table.h +44 -0
  48. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/value_util.h +3 -3
  49. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/testing/mock_runtime.h +30 -27
  50. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/testing/record_replay.h +32 -12
  51. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/python/bridge_state.h +16 -0
  52. hg_cpp-0.3.1/include/hgraph/runtime/clock_type_ref.h +80 -0
  53. hg_cpp-0.3.1/include/hgraph/runtime/evaluation_clock.h +105 -0
  54. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/executor.h +20 -12
  55. hg_cpp-0.3.1/include/hgraph/runtime/executor_type_ref.h +83 -0
  56. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/graph.h +38 -27
  57. hg_cpp-0.3.1/include/hgraph/runtime/graph_type_ref.h +85 -0
  58. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/map_node.h +7 -2
  59. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/mesh_node.h +5 -1
  60. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/nested_bindings.h +44 -20
  61. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/nested_graph_node.h +2 -0
  62. hg_cpp-0.3.1/include/hgraph/runtime/nested_graph_storage.h +223 -0
  63. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/node.h +40 -20
  64. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/node_fwd.h +2 -4
  65. hg_cpp-0.3.1/include/hgraph/runtime/node_type_ref.h +95 -0
  66. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/reduce_node.h +2 -0
  67. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/switch_node.h +5 -0
  68. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/adaptor_wiring.h +6 -4
  69. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/graph_wiring.h +21 -10
  70. hg_cpp-0.3.1/include/hgraph/types/metadata/debug_descriptor.h +235 -0
  71. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/ts_data_plan_factory.h +10 -11
  72. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/ts_data_plan_factory_detail.h +33 -11
  73. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/ts_value_type_meta_data.h +27 -18
  74. hg_cpp-0.3.1/include/hgraph/types/metadata/type_record.h +169 -0
  75. hg_cpp-0.3.1/include/hgraph/types/metadata/type_record_registry.h +68 -0
  76. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/type_registry.h +49 -16
  77. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/value_plan_factory.h +15 -8
  78. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/value_type_meta_data.h +67 -26
  79. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/notifiable.h +5 -0
  80. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/operator_dispatch.h +41 -19
  81. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/operator_type_resolution.h +8 -7
  82. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/registry_reset.h +10 -11
  83. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/service_wiring.h +21 -14
  84. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/static_node.h +40 -23
  85. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/subgraph_wiring.h +2 -2
  86. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/endpoint_owner.h +3 -4
  87. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/base_view.h +52 -53
  88. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/dict_view.h +3 -1
  89. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/indexed_view.h +0 -1
  90. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/ops.h +23 -12
  91. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/proxy.h +46 -28
  92. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/set_view.h +0 -1
  93. hg_cpp-0.3.1/include/hgraph/types/time_series/ts_data/storage.h +74 -0
  94. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/types.h +36 -35
  95. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data/window_view.h +7 -1
  96. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/base_view.h +3 -3
  97. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/detail.h +1 -2
  98. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/target_link.h +2 -1
  99. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/window_view.h +2 -0
  100. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input.h +1 -0
  101. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/alternative.h +3 -1
  102. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/base_view.h +4 -2
  103. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/mutation_view.h +3 -0
  104. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output.h +9 -9
  105. hg_cpp-0.3.1/include/hgraph/types/time_series/ts_type_ref.h +184 -0
  106. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/typed_view.h +0 -1
  107. hg_cpp-0.3.1/include/hgraph/types/type_pointer.h +257 -0
  108. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/type_resolution.h +6 -6
  109. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/key_slot_store.h +3 -4
  110. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/memory_utils.h +185 -220
  111. hg_cpp-0.3.1/include/hgraph/types/utils/slot_bitmap.h +171 -0
  112. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/stable_slot_storage.h +48 -8
  113. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/value_slot_store.h +3 -4
  114. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/any_ops.h +3 -3
  115. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/compact_container_ops.h +210 -112
  116. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/compact_storage.h +142 -79
  117. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/container_ops.h +118 -7
  118. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/json_codec.h +28 -1
  119. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/mutable_container_ops.h +189 -91
  120. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/specialized_views.h +81 -51
  121. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/table_codec.h +34 -0
  122. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/value.h +30 -43
  123. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/value_builder.h +60 -39
  124. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/value_ops.h +70 -22
  125. hg_cpp-0.3.1/include/hgraph/types/value/value_type_ref.h +101 -0
  126. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/value_view.h +52 -75
  127. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/pyproject.toml +1 -1
  128. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/__init__.py +37 -4
  129. hg_cpp-0.3.1/python/hgraph/_compat.py +192 -0
  130. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/_runtime.py +1154 -130
  131. hg_cpp-0.3.1/python/hgraph/_signature.py +92 -0
  132. hg_cpp-0.3.1/python/hgraph/_table.py +144 -0
  133. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/_types.py +330 -33
  134. hg_cpp-0.3.1/python/hgraph/adaptors/__init__.py +2 -0
  135. hg_cpp-0.3.1/python/hgraph/adaptors/data_frame.py +10 -0
  136. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/nodes.py +31 -0
  137. hg_cpp-0.3.1/python/hgraph/stream/__init__.py +4 -0
  138. hg_cpp-0.3.1/python/hgraph/stream/stream.py +14 -0
  139. hg_cpp-0.3.1/python/hgraph/test/__init__.py +17 -0
  140. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/module.cpp +933 -54
  141. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/module_internal.h +6 -1
  142. hg_cpp-0.3.1/python/tests/ported/_operators/_conversion_operators/test_frame_conversion_operators.py +128 -0
  143. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_ts_conversion_operators.py +3 -1
  144. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_tsb_conversion_operators.py +0 -1
  145. hg_cpp-0.3.1/python/tests/ported/_operators/test_analytical.py +114 -0
  146. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_compound_scalar_operators.py +0 -4
  147. hg_cpp-0.3.1/python/tests/ported/_operators/test_data_frame_operators.py +185 -0
  148. hg_cpp-0.3.1/python/tests/ported/_operators/test_enum_operators.py +156 -0
  149. hg_cpp-0.3.1/python/tests/ported/_operators/test_lift_operators.py +19 -0
  150. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_number_operators.py +0 -1
  151. hg_cpp-0.3.1/python/tests/ported/_operators/test_print.py +184 -0
  152. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_scalar_operators.py +0 -3
  153. hg_cpp-0.3.1/python/tests/ported/_operators/test_stream_analytical_operators.py +77 -0
  154. hg_cpp-0.3.1/python/tests/ported/_operators/test_stream_operators.py +944 -0
  155. hg_cpp-0.3.1/python/tests/ported/_operators/test_to_json.py +121 -0
  156. hg_cpp-0.3.1/python/tests/ported/_operators/test_to_table.py +470 -0
  157. hg_cpp-0.3.1/python/tests/ported/_operators/test_to_table_dispatch.py +89 -0
  158. hg_cpp-0.3.1/python/tests/ported/_operators/test_window_operators.py +80 -0
  159. hg_cpp-0.3.1/python/tests/ported/_wiring/__init__.py +0 -0
  160. hg_cpp-0.3.1/python/tests/ported/_wiring/test_annotation.py +23 -0
  161. hg_cpp-0.3.1/python/tests/ported/_wiring/test_arg_parsing.py +22 -0
  162. hg_cpp-0.3.1/python/tests/ported/_wiring/test_auto_const.py +61 -0
  163. hg_cpp-0.3.1/python/tests/ported/_wiring/test_auto_resolve.py +26 -0
  164. hg_cpp-0.3.1/python/tests/ported/_wiring/test_component.py +182 -0
  165. hg_cpp-0.3.1/python/tests/ported/_wiring/test_decorators.py +57 -0
  166. hg_cpp-0.3.1/python/tests/ported/_wiring/test_dispatch.py +105 -0
  167. hg_cpp-0.3.1/python/tests/ported/_wiring/test_generic_graphs.py +31 -0
  168. hg_cpp-0.3.1/python/tests/ported/_wiring/test_injectables.py +57 -0
  169. hg_cpp-0.3.1/python/tests/ported/_wiring/test_overloads.py +132 -0
  170. hg_cpp-0.3.1/python/tests/ported/_wiring/test_passivate.py +15 -0
  171. hg_cpp-0.3.1/python/tests/ported/_wiring/test_ts_auto_cast.py +25 -0
  172. hg_cpp-0.3.1/python/tests/ported/_wiring/test_ts_wiring.py +22 -0
  173. hg_cpp-0.3.1/python/tests/ported/_wiring/test_tsb_wiring.py +300 -0
  174. hg_cpp-0.3.1/python/tests/ported/_wiring/test_tsd_wiring.py +218 -0
  175. hg_cpp-0.3.1/python/tests/ported/_wiring/test_tsl_wiring.py +98 -0
  176. hg_cpp-0.3.1/python/tests/ported/_wiring/test_tss.py +82 -0
  177. hg_cpp-0.3.1/python/tests/ported/_wiring/test_var_args.py +112 -0
  178. hg_cpp-0.3.1/python/tests/ported/_wiring/test_wiring_node_signature.py +28 -0
  179. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/conftest.py +2 -0
  180. hg_cpp-0.3.1/python/tests/test_dispatch_scalar.py +74 -0
  181. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/test_python_authoring.py +60 -1
  182. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/value_conversion.cpp +34 -15
  183. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/CMakeLists.txt +7 -0
  184. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/arithmetic_impl.cpp +2 -0
  185. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/comparison_impl.cpp +6 -0
  186. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/container_impl.cpp +4 -0
  187. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/conversion_impl.cpp +1 -0
  188. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/convert_target.cpp +149 -10
  189. hg_cpp-0.3.1/src/hgraph/lib/std/operators/data_frame_impl.cpp +719 -0
  190. hg_cpp-0.3.1/src/hgraph/lib/std/operators/io_impl.cpp +94 -0
  191. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/json_impl.cpp +235 -7
  192. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/registration.cpp +1 -0
  193. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/stream_impl.cpp +24 -0
  194. hg_cpp-0.3.1/src/hgraph/lib/std/operators/table_impl.cpp +623 -0
  195. hg_cpp-0.3.1/src/hgraph/runtime/evaluation_clock.cpp +117 -0
  196. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/executor.cpp +222 -148
  197. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/global_state.cpp +4 -4
  198. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/graph.cpp +286 -203
  199. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/map_node.cpp +115 -20
  200. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/mapped_child_bindings.h +6 -7
  201. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/mapped_key_source.h +20 -13
  202. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/mesh_node.cpp +364 -77
  203. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/nested_graph_node.cpp +31 -7
  204. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/node.cpp +246 -199
  205. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/node_error.cpp +3 -3
  206. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/reduce_node.cpp +123 -52
  207. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/service_node.cpp +9 -9
  208. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/switch_node.cpp +79 -27
  209. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/graph_wiring.cpp +17 -6
  210. hg_cpp-0.3.1/src/hgraph/types/metadata/debug_descriptor.cpp +387 -0
  211. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_atomic_ops.cpp +26 -22
  212. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_dynamic_list_ops.cpp +151 -115
  213. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_fixed_structured_ops.cpp +150 -110
  214. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_fixed_structured_plan.cpp +94 -80
  215. hg_cpp-0.3.1/src/hgraph/types/metadata/ts_data_plan_factory.cpp +426 -0
  216. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_slot_ops.cpp +436 -187
  217. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/ts_data_window_ops.cpp +156 -94
  218. hg_cpp-0.3.1/src/hgraph/types/metadata/type_record_registry.cpp +143 -0
  219. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/type_registry.cpp +404 -42
  220. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/metadata/value_plan_factory.cpp +139 -96
  221. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/operator_dispatch.cpp +136 -37
  222. hg_cpp-0.3.1/src/hgraph/types/registry_reset.cpp +55 -0
  223. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/service_runtime.cpp +3 -3
  224. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/base_view.cpp +52 -30
  225. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/dict_view.cpp +22 -18
  226. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/indexed_view.cpp +8 -13
  227. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/ops.cpp +3 -3
  228. hg_cpp-0.3.1/src/hgraph/types/time_series/ts_data/ownership.h +35 -0
  229. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/proxy.cpp +706 -180
  230. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/set_view.cpp +0 -5
  231. hg_cpp-0.3.1/src/hgraph/types/time_series/ts_data/storage.cpp +208 -0
  232. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/types.cpp +54 -29
  233. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_data/window_view.cpp +30 -11
  234. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_delta.cpp +55 -53
  235. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/base_view.cpp +18 -14
  236. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/target_link.cpp +24 -1
  237. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/target_link_ops.cpp +60 -32
  238. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/target_link_ops.h +0 -2
  239. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/window_view.cpp +8 -0
  240. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input.cpp +686 -187
  241. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/alternative.cpp +321 -51
  242. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/base_view.cpp +20 -7
  243. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/bundle_view.cpp +15 -4
  244. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/list_view.cpp +1 -1
  245. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/mutation_view.cpp +6 -0
  246. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output.cpp +44 -20
  247. hg_cpp-0.3.1/src/hgraph/types/time_series/ts_type_ref.cpp +128 -0
  248. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series_reference.cpp +1 -1
  249. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/type_pattern.cpp +13 -13
  250. hg_cpp-0.3.1/src/hgraph/types/type_pointer.cpp +171 -0
  251. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/value/any_ops.cpp +7 -6
  252. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/value/compact_container_ops.cpp +31 -20
  253. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/value/json_codec.cpp +114 -13
  254. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/value/table_codec.cpp +121 -7
  255. hg_cpp-0.3.1/src/hgraph/types/value/value_type_ref.cpp +136 -0
  256. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/value/value_view.cpp +54 -48
  257. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/CMakeLists.txt +39 -0
  258. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/header_compile_check.cpp +13 -5
  259. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/smoke_test.cpp +1 -1
  260. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_adaptor_wiring.cpp +26 -1
  261. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_any_value.cpp +10 -10
  262. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_bundle_builder.cpp +8 -8
  263. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_compact_storage.cpp +55 -55
  264. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_component.cpp +26 -0
  265. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_global_state.cpp +4 -4
  266. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_graph_introspection.cpp +24 -0
  267. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_graph_wiring.cpp +2 -2
  268. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_json.cpp +5 -5
  269. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_lifecycle_observers.cpp +1 -1
  270. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_map.cpp +183 -8
  271. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_memory_utils.cpp +80 -97
  272. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_mesh.cpp +157 -0
  273. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_mutable_list.cpp +57 -5
  274. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_mutable_map.cpp +48 -5
  275. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_mutable_set.cpp +40 -3
  276. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_nested_wiring.cpp +88 -0
  277. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_plan_factories.cpp +294 -173
  278. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_race_semantics.cpp +1 -1
  279. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_realtime_execution.cpp +1 -1
  280. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_record_replay_config.cpp +2 -2
  281. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_runtime_value_view.cpp +125 -16
  282. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_schema_examples.cpp +14 -14
  283. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_slot_utils.cpp +155 -0
  284. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_specialized_views.cpp +230 -87
  285. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_static_node.cpp +33 -16
  286. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_std_nodes.cpp +2 -2
  287. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_std_operators.cpp +30 -4
  288. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_std_type_registration.cpp +15 -15
  289. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_switch.cpp +90 -0
  290. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_table.cpp +38 -36
  291. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_time_series_reference.cpp +572 -3
  292. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_ts_input.cpp +394 -5
  293. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_ts_output.cpp +136 -19
  294. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_ts_schemas.cpp +10 -10
  295. hg_cpp-0.3.1/tests/cpp/test_ts_type_ref.cpp +1604 -0
  296. hg_cpp-0.3.1/tests/cpp/test_tsd_proxy.cpp +1326 -0
  297. hg_cpp-0.3.1/tests/cpp/test_type_erasure_layout.cpp +264 -0
  298. hg_cpp-0.3.1/tests/cpp/test_type_pointer.cpp +549 -0
  299. hg_cpp-0.3.1/tests/cpp/test_type_record.cpp +636 -0
  300. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_type_registry.cpp +126 -11
  301. hg_cpp-0.3.1/tests/cpp/test_value.cpp +595 -0
  302. hg_cpp-0.3.1/tests/cpp/type_erasure_perf.cpp +670 -0
  303. hg_cpp-0.3.1/tests/debugger/debugger_fixture.cpp +80 -0
  304. hg_cpp-0.3.1/tests/debugger/test_debugger_common.py +215 -0
  305. hg_cpp-0.3.1/tools/debugger/README.md +72 -0
  306. hg_cpp-0.3.1/tools/debugger/hgraph_debug_common.py +419 -0
  307. hg_cpp-0.3.1/tools/debugger/hgraph_gdb.py +625 -0
  308. hg_cpp-0.3.1/tools/debugger/hgraph_lldb.py +687 -0
  309. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/uv.lock +17 -4
  310. hg_cpp-0.3.0/include/hgraph/lib/std/operators/convert_target.h +0 -22
  311. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/io_impl.h +0 -72
  312. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/stream_impl.h +0 -754
  313. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/table_impl.h +0 -114
  314. hg_cpp-0.3.0/include/hgraph/lib/std/operators/table.h +0 -39
  315. hg_cpp-0.3.0/include/hgraph/runtime/evaluation_clock.h +0 -145
  316. hg_cpp-0.3.0/include/hgraph/types/metadata/type_binding.h +0 -165
  317. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/storage.h +0 -34
  318. hg_cpp-0.3.0/python/hgraph/_compat.py +0 -92
  319. hg_cpp-0.3.0/python/hgraph/test/__init__.py +0 -4
  320. hg_cpp-0.3.0/src/hgraph/lib/std/operators/io_impl.cpp +0 -19
  321. hg_cpp-0.3.0/src/hgraph/lib/std/operators/table_impl.cpp +0 -11
  322. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_plan_factory.cpp +0 -374
  323. hg_cpp-0.3.0/src/hgraph/types/registry_reset.cpp +0 -42
  324. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/storage.cpp +0 -37
  325. hg_cpp-0.3.0/tests/cpp/test_tsd_proxy.cpp +0 -133
  326. hg_cpp-0.3.0/tests/cpp/test_value.cpp +0 -351
  327. hg_cpp-0.3.0/tools/debugger/README.md +0 -64
  328. hg_cpp-0.3.0/tools/debugger/hgraph_gdb.py +0 -768
  329. hg_cpp-0.3.0/tools/debugger/hgraph_lldb.py +0 -855
  330. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/.gitignore +0 -0
  331. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/.gitmodules +0 -0
  332. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/.readthedocs.yaml +0 -0
  333. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/AGENTS.md +0 -0
  334. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/CMakePresets.json +0 -0
  335. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/README.md +0 -0
  336. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/conan_provider.cmake +0 -0
  337. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/Makefile +0 -0
  338. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/requirements.txt +0 -0
  339. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/conf.py +0 -0
  340. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/architecture.rst +0 -0
  341. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/core_concepts.rst +0 -0
  342. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/linking_strategies.rst +0 -0
  343. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/overview/execution_layer.rst +0 -0
  344. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/overview/index.rst +0 -0
  345. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/plans_and_ops/index.rst +0 -0
  346. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/refinements.rst +0 -0
  347. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/index.rst +0 -0
  348. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/data_structures/schemas/static_schema.rst +0 -0
  349. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/documentation_conventions.rst +0 -0
  350. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/graph_wiring.rst +0 -0
  351. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/index.rst +0 -0
  352. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/mesh.rst +0 -0
  353. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/roadmap.rst +0 -0
  354. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/services.rst +0 -0
  355. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/testing.rst +0 -0
  356. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/developer_guide/wiring.rst +0 -0
  357. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/index.rst +0 -0
  358. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/authoring_graphs_cpp.rst +0 -0
  359. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/authoring_nodes_cpp.rst +0 -0
  360. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/core_concepts.rst +0 -0
  361. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/index.rst +0 -0
  362. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/quick_start.rst +0 -0
  363. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/testing_graphs_cpp.rst +0 -0
  364. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/docs/source/user_guide/what_is_hgraph.rst +0 -0
  365. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/config.h +0 -0
  366. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/hgraph.h +0 -0
  367. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/hgraph_export.h +0 -0
  368. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/lifted_kernels.h +0 -0
  369. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/collection.h +0 -0
  370. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/comparison.h +0 -0
  371. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/container.h +0 -0
  372. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/conversion.h +0 -0
  373. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/higher_order.h +0 -0
  374. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/control_impl.h +0 -0
  375. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/logical_impl.h +0 -0
  376. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/record_replay_frame_impl.h +0 -0
  377. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/reduce_layout.h +0 -0
  378. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/temporal_impl.h +0 -0
  379. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/tsb_itemwise_impl.h +0 -0
  380. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/impl/tsl_itemwise_impl.h +0 -0
  381. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/json.h +0 -0
  382. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/logical.h +0 -0
  383. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/operators.h +0 -0
  384. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/registration.h +0 -0
  385. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/string.h +0 -0
  386. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/syntax.h +0 -0
  387. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/operators/temporal.h +0 -0
  388. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/standard_types.h +0 -0
  389. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/std_nodes.h +0 -0
  390. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/std/std_operators.h +0 -0
  391. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/testing/check_output.h +0 -0
  392. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/testing/eval_node.h +0 -0
  393. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/lib/testing/runtime_support.h +0 -0
  394. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/python/chrono.h +0 -0
  395. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/context_node.h +0 -0
  396. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/feedback_node.h +0 -0
  397. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/global_state.h +0 -0
  398. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/lifecycle_observer.h +0 -0
  399. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/logger.h +0 -0
  400. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/node_error.h +0 -0
  401. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/node_scheduler.h +0 -0
  402. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/push_source_node.h +0 -0
  403. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/race_tsd_node.h +0 -0
  404. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/runtime.h +0 -0
  405. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/service_node.h +0 -0
  406. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/shared_output_node.h +0 -0
  407. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/runtime/try_except_node.h +0 -0
  408. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/call_args.h +0 -0
  409. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/context_wiring.h +0 -0
  410. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/frame.h +0 -0
  411. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/lift.h +0 -0
  412. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/metadata/type_meta_data.h +0 -0
  413. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/primitive_types.h +0 -0
  414. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/record_replay.h +0 -0
  415. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/series.h +0 -0
  416. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/service_runtime.h +0 -0
  417. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/static_schema.h +0 -0
  418. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/endpoint_schema.h +0 -0
  419. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_data.h +0 -0
  420. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_delta.h +0 -0
  421. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/bundle_view.h +0 -0
  422. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/dict_view.h +0 -0
  423. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/list_view.h +0 -0
  424. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/set_view.h +0 -0
  425. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/typed_view.h +0 -0
  426. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_input/view_common.h +0 -0
  427. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/bundle_view.h +0 -0
  428. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/dict_view.h +0 -0
  429. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/list_view.h +0 -0
  430. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/set_view.h +0 -0
  431. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/typed_view.h +0 -0
  432. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/view_common.h +0 -0
  433. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series/ts_output/window_view.h +0 -0
  434. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/time_series_reference.h +0 -0
  435. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/type_pattern.h +0 -0
  436. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/intern_table.h +0 -0
  437. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/utils/slot_observer.h +0 -0
  438. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/value/value_range.h +0 -0
  439. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/types/wired_fn.h +0 -0
  440. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/util/date_time.h +0 -0
  441. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/util/scope.h +0 -0
  442. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/util/tagged_ptr.h +0 -0
  443. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/hgraph/version.h.in +0 -0
  444. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/third_party/ankerl/stl.h +0 -0
  445. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/third_party/ankerl/unordered_dense.h +0 -0
  446. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/third_party/sul/LICENSE +0 -0
  447. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/include/third_party/sul/dynamic_bitset.hpp +0 -0
  448. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/CMakeLists.txt +0 -0
  449. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/_operators/__init__.py +0 -0
  450. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/_operators/_stream.py +0 -0
  451. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/hgraph/arrow.py +0 -0
  452. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/__init__.py +0 -0
  453. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_compound_scalar_conversion_operators.py +0 -0
  454. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_date_time_conversion_operators.py +0 -0
  455. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_general_conversion_operators.py +0 -0
  456. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_mapping_conversion_operators.py +0 -0
  457. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_set_conversion_operators.py +0 -0
  458. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_tsd_converion_operators.py +0 -0
  459. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_tsl_conversion_operators.py +0 -0
  460. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_tss_conversion_operators.py +0 -0
  461. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/_conversion_operators/test_tuple_conversion_operators.py +0 -0
  462. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_bool_operators.py +0 -0
  463. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_const.py +0 -0
  464. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_control_operators.py +0 -0
  465. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_date_operators.py +0 -0
  466. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_datetime_operators.py +0 -0
  467. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_frozendict_operators.py +0 -0
  468. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_frozenset_operators.py +0 -0
  469. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_json.py +0 -0
  470. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_logical.py +0 -0
  471. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_operators.py +0 -0
  472. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_series_operators.py +0 -0
  473. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_set_operators.py +0 -0
  474. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_str_operators.py +0 -0
  475. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_time_series_properties.py +0 -0
  476. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tsb_operators.py +0 -0
  477. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tsd_operators.py +0 -0
  478. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tsl_operators.py +0 -0
  479. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tss_operators.py +0 -0
  480. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tsw_operators.py +0 -0
  481. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tuple_operator.py +0 -0
  482. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_tuple_operators.py +0 -0
  483. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/ported/_operators/test_wp_operators.py +0 -0
  484. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/test_bridge.py +0 -0
  485. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/test_hgraph_api.py +0 -0
  486. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/python/tests/test_packaging.py +0 -0
  487. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/collection_impl.cpp +0 -0
  488. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/control_impl.cpp +0 -0
  489. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/higher_order_impl.cpp +0 -0
  490. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/logical_impl.cpp +0 -0
  491. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/record_replay_frame_impl.cpp +0 -0
  492. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/series_impl.cpp +0 -0
  493. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/string_impl.cpp +0 -0
  494. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/lib/std/operators/temporal_impl.cpp +0 -0
  495. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/pch.h +0 -0
  496. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/context_node.cpp +0 -0
  497. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/feedback_node.cpp +0 -0
  498. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/logger.cpp +0 -0
  499. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/push_source_node.cpp +0 -0
  500. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/race_tsd_node.cpp +0 -0
  501. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/shared_output_node.cpp +0 -0
  502. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/runtime/try_except_node.cpp +0 -0
  503. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/frame.cpp +0 -0
  504. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/primitive_types.cpp +0 -0
  505. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/record_replay.cpp +0 -0
  506. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/series.cpp +0 -0
  507. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/endpoint_owner.cpp +0 -0
  508. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/endpoint_schema.cpp +0 -0
  509. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/bundle_view.cpp +0 -0
  510. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/dict_view.cpp +0 -0
  511. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/list_view.cpp +0 -0
  512. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_input/set_view.cpp +0 -0
  513. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/dict_view.cpp +0 -0
  514. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/set_view.cpp +0 -0
  515. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/types/time_series/ts_output/window_view.cpp +0 -0
  516. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/util/date_time.cpp +0 -0
  517. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/src/hgraph/version.cpp +0 -0
  518. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/CMakeLists.txt +0 -0
  519. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/json_perf.cpp +0 -0
  520. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/lift/test_lift.cpp +0 -0
  521. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/registry_test_listener.cpp +0 -0
  522. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_check_output.cpp +0 -0
  523. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_collection_nodes.cpp +0 -0
  524. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_const_eval.cpp +0 -0
  525. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_context_node.cpp +0 -0
  526. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_context_wiring.cpp +0 -0
  527. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_endpoint_owner.cpp +0 -0
  528. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_erased_wiring.cpp +0 -0
  529. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_error_handling.cpp +0 -0
  530. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_eval_node.cpp +0 -0
  531. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_feedback.cpp +0 -0
  532. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_intern_table.cpp +0 -0
  533. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_logger.cpp +0 -0
  534. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_node_scheduler.cpp +0 -0
  535. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_operators.cpp +0 -0
  536. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_record_replay.cpp +0 -0
  537. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_record_replay_frame.cpp +0 -0
  538. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_reduce.cpp +0 -0
  539. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_ref_executor.cpp +0 -0
  540. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_scope.cpp +0 -0
  541. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_service_node.cpp +0 -0
  542. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_service_runtime.cpp +0 -0
  543. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_service_wiring.cpp +0 -0
  544. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_shared_output_node.cpp +0 -0
  545. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_simulation_execution.cpp +0 -0
  546. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_static_schema.cpp +0 -0
  547. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_ts_delta.cpp +0 -0
  548. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_tsl_nodes.cpp +0 -0
  549. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_tss_nodes.cpp +0 -0
  550. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_type_resolution.cpp +0 -0
  551. {hg_cpp-0.3.0 → hg_cpp-0.3.1}/tests/cpp/test_value_types.cpp +0 -0
@@ -34,24 +34,20 @@ jobs:
34
34
  env:
35
35
  RELEASE_TAG: ${{ github.ref_name }}
36
36
  run: |
37
- from pathlib import Path
38
37
  from urllib.error import HTTPError
39
38
  from urllib.request import urlopen
40
39
  import os
41
40
  import re
42
- import tomllib
43
41
 
44
42
  tag = os.environ["RELEASE_TAG"]
45
43
  match = re.fullmatch(r"v_(\d+\.\d+\.\d+)", tag)
46
44
  if match is None:
47
45
  raise SystemExit(f"release tag must match v_x.x.x, got {tag!r}")
48
46
 
49
- project = tomllib.loads(Path("pyproject.toml").read_text())["project"]
47
+ # The TAG is the version authority: the project version in
48
+ # pyproject.toml is ignored for releases (the publish job restamps
49
+ # the tested artifacts' metadata to the tag version).
50
50
  version = match.group(1)
51
- if project["version"] != version:
52
- raise SystemExit(
53
- f"tag {tag!r} does not match project version {project['version']!r}"
54
- )
55
51
 
56
52
  try:
57
53
  with urlopen(f"https://pypi.org/pypi/hg_cpp/{version}/json"):
@@ -318,6 +314,117 @@ jobs:
318
314
  merge-multiple: true
319
315
  github-token: ${{ github.token }}
320
316
  run-id: ${{ needs.reuse-build.outputs.run-id || github.run_id }}
317
+ - name: Restamp distributions to the tag version
318
+ shell: python
319
+ env:
320
+ RELEASE_TAG: ${{ github.ref_name }}
321
+ run: |
322
+ # The TAG is the version authority. The distributions were built
323
+ # (and fully tested) at whatever version pyproject.toml carried -
324
+ # rewriting the version is a METADATA-ONLY operation, so the
325
+ # expensive compiled artifacts are reused byte-identical.
326
+ import base64
327
+ import csv
328
+ import hashlib
329
+ import io
330
+ import os
331
+ import re
332
+ import tarfile
333
+ import zipfile
334
+ from pathlib import Path
335
+
336
+ version = os.environ["RELEASE_TAG"].removeprefix("v_")
337
+
338
+ def record_hash(data: bytes) -> str:
339
+ digest = base64.urlsafe_b64encode(hashlib.sha256(data).digest())
340
+ return "sha256=" + digest.decode().rstrip("=")
341
+
342
+ def restamp_wheel(path: Path) -> None:
343
+ name, old_version, rest = path.name.split("-", 2)
344
+ if old_version == version:
345
+ print(f"{path.name}: already at {version}")
346
+ return
347
+ old_info = f"{name}-{old_version}.dist-info"
348
+ new_info = f"{name}-{version}.dist-info"
349
+ entries = {}
350
+ with zipfile.ZipFile(path) as archive:
351
+ for item in archive.infolist():
352
+ entries[item.filename] = archive.read(item.filename)
353
+ renamed = {}
354
+ for item_name, data in entries.items():
355
+ new_name = item_name.replace(old_info + "/", new_info + "/")
356
+ if new_name == f"{new_info}/METADATA":
357
+ text = data.decode()
358
+ text, count = re.subn(rf"(?m)^Version: {re.escape(old_version)}$",
359
+ f"Version: {version}", text, count=1)
360
+ assert count == 1, "wheel METADATA Version line not found"
361
+ data = text.encode()
362
+ renamed[new_name] = data
363
+ record_name = f"{new_info}/RECORD"
364
+ rows = []
365
+ for row in csv.reader(io.StringIO(renamed[record_name].decode())):
366
+ if not row:
367
+ continue
368
+ entry = row[0].replace(old_info + "/", new_info + "/")
369
+ if entry == record_name:
370
+ rows.append([entry, "", ""])
371
+ else:
372
+ data = renamed[entry]
373
+ rows.append([entry, record_hash(data), str(len(data))])
374
+ buffer = io.StringIO(newline="")
375
+ csv.writer(buffer, lineterminator="\n").writerows(rows)
376
+ renamed[record_name] = buffer.getvalue().encode()
377
+ new_path = path.with_name(path.name.replace(f"-{old_version}-", f"-{version}-", 1))
378
+ with zipfile.ZipFile(new_path, "w", zipfile.ZIP_DEFLATED) as archive:
379
+ for item_name, data in renamed.items():
380
+ archive.writestr(item_name, data)
381
+ if new_path != path:
382
+ path.unlink()
383
+ print(f"{path.name} -> {new_path.name}")
384
+
385
+ def restamp_sdist(path: Path) -> None:
386
+ name, old_version = path.name.removesuffix(".tar.gz").rsplit("-", 1)
387
+ if old_version == version:
388
+ print(f"{path.name}: already at {version}")
389
+ return
390
+ old_root = f"{name}-{old_version}"
391
+ new_root = f"{name}-{version}"
392
+ members = []
393
+ with tarfile.open(path, "r:gz") as archive:
394
+ for member in archive.getmembers():
395
+ data = archive.extractfile(member).read() if member.isfile() else None
396
+ member.name = member.name.replace(old_root, new_root, 1)
397
+ # long (>100 char) paths ride PAX 'path' headers which
398
+ # would override the renamed member.name at write time.
399
+ member.pax_headers.pop("path", None)
400
+ member.pax_headers.pop("linkpath", None)
401
+ if member.name == f"{new_root}/PKG-INFO":
402
+ text = data.decode()
403
+ text, count = re.subn(rf"(?m)^Version: {re.escape(old_version)}$",
404
+ f"Version: {version}", text, count=1)
405
+ assert count == 1, "sdist PKG-INFO Version line not found"
406
+ data = text.encode()
407
+ elif member.name == f"{new_root}/pyproject.toml":
408
+ text = data.decode()
409
+ text, count = re.subn(r'(?m)^version = "[^"]+"$',
410
+ f'version = "{version}"', text, count=1)
411
+ assert count == 1, "sdist pyproject.toml version not found"
412
+ data = text.encode()
413
+ if data is not None:
414
+ member.size = len(data)
415
+ members.append((member, data))
416
+ new_path = path.with_name(f"{new_root}.tar.gz")
417
+ with tarfile.open(new_path, "w:gz") as archive:
418
+ for member, data in members:
419
+ archive.addfile(member, io.BytesIO(data) if data is not None else None)
420
+ if new_path != path:
421
+ path.unlink()
422
+ print(f"{path.name} -> {new_path.name}")
423
+
424
+ for wheel in sorted(Path("dist").glob("*.whl")):
425
+ restamp_wheel(wheel)
426
+ for sdist in sorted(Path("dist").glob("*.tar.gz")):
427
+ restamp_sdist(sdist)
321
428
  - name: Publish package distributions to PyPI
322
429
  uses: pypa/gh-action-pypi-publish@release/v1
323
430
  with:
@@ -196,6 +196,22 @@ dynamic-TSL multiplexing/reduce, non-associative reduce, sink maps/switches.
196
196
  **C++ only for
197
197
  now** — keep Python out of the configure/build/run path.
198
198
 
199
+ **Python operator-test port — DONE (2026-07-11).** All **48** upstream
200
+ `hgraph_unit_tests/_operators` files are ported into `python/tests/ported`
201
+ (ctest gate `hgraph_python_ported_suite`, ~790 tests green). En route the
202
+ runtime gained: real py-node input activity, first-class **enums**, the
203
+ **TABLE tuple-row protocol** + data-frame operators (`record_replay_table.rst`
204
+ step 6), `exception_time_series` bridged, `type_`, TSW `std`, tuple-of-CS
205
+ `getattr_`, strict unnamed-TSB combine, and **map value holes** (None-valued
206
+ entries; scalar.rst). Calling conventions are REGISTRY-driven (scalar kwargs
207
+ lift to const in call normalisation; subscript meaning via
208
+ `operator_output_is_selective`; generic targets via
209
+ `resolve_convert/collect/combine_target` — never label/name tests in the
210
+ bridge). Standing residue (marked precisely in the tests, see
211
+ `parity_matrix.rst`): 3 accepted gaps (TSS rebind removals, sparse TSB
212
+ deltas, `hgraph.stream` generics) + recorded deviations. Follow-on tiers
213
+ (not planned): upstream `ts_tests/` (215), `_wiring/` (244).
214
+
199
215
  **Mesh, services & shared outputs — DONE** (design records:
200
216
  `docs/source/developer_guide/mesh.rst` and `docs/source/developer_guide/services.rst`,
201
217
  authoritative). `mesh_` over TSD executes (on-demand instances via
@@ -165,7 +165,16 @@ if(HGRAPH_BUILD_PYTHON_BINDINGS)
165
165
  $<BUILD_INTERFACE:simdjson::simdjson>
166
166
  )
167
167
  else()
168
+ # json_impl.cpp uses simdjson::dom::element_type::BIGINT, introduced in
169
+ # simdjson 4.5 (the FetchContent path above pins v4.6.4). Distro packages
170
+ # can be older (Ubuntu 24.04 ships 3.x), so enforce the floor here. The
171
+ # check is explicit because simdjson's package version file uses
172
+ # same-minor compatibility, which would also reject newer 4.x releases.
168
173
  find_package(simdjson CONFIG REQUIRED)
174
+ if(simdjson_VERSION VERSION_LESS 4.5)
175
+ message(FATAL_ERROR "hgraph requires simdjson >= 4.5 for "
176
+ "dom::element_type::BIGINT; found ${simdjson_VERSION}")
177
+ endif()
169
178
  target_link_libraries(hgraph_options INTERFACE simdjson::simdjson)
170
179
  endif()
171
180
 
@@ -504,6 +513,7 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/tools/debugger")
504
513
  FILES_MATCHING
505
514
  PATTERN "*.py"
506
515
  PATTERN "README.md"
516
+ PATTERN "__pycache__" EXCLUDE
507
517
  )
508
518
  endif()
509
519
 
@@ -519,6 +529,15 @@ set(_hgraph_config_dependencies
519
529
  "find_dependency(Arrow CONFIG)\n"
520
530
  "find_dependency(ArrowCompute CONFIG)\n"
521
531
  "find_dependency(spdlog CONFIG)\n"
532
+ # Both installed-config flavours reference simdjson::simdjson (the
533
+ # non-bindings export links it; the bindings config re-links it below),
534
+ # and the code needs dom::element_type::BIGINT from simdjson 4.5. The
535
+ # floor is an explicit check because simdjson's package version file
536
+ # uses same-minor compatibility.
537
+ "find_dependency(simdjson CONFIG)\n"
538
+ "if(simdjson_VERSION VERSION_LESS 4.5)\n"
539
+ " message(FATAL_ERROR \"hgraph requires simdjson >= 4.5; found \${simdjson_VERSION}\")\n"
540
+ "endif()\n"
522
541
  )
523
542
  if(HGRAPH_BUILD_PYTHON_BINDINGS OR HGRAPH_ENABLE_PYTHON_USER_NODES)
524
543
  if(_hgraph_use_python_stable_abi)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: hg_cpp
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Preview distribution of the C++ first hgraph runtime and Python compatibility bridge
5
5
  Keywords: reactive,graph,forward propagating graph,time series,functional reactive programming,c++
6
6
  Author-Email: Howard Henson <howard@henson.me.uk>
@@ -18,6 +18,24 @@ Current Targets
18
18
  ``hgraph_core``
19
19
  Core runtime target. This is exported publicly as ``hgraph::core``.
20
20
 
21
+ Third-Party Dependencies
22
+ ------------------------
23
+
24
+ ``simdjson`` **requires version 4.5 or newer** — ``json_impl.cpp`` uses
25
+ ``simdjson::dom::element_type::BIGINT``, which first appeared in 4.5. Wheel
26
+ builds (``HGRAPH_BUILD_PYTHON_BINDINGS=ON``) fetch a pinned release (currently
27
+ v4.6.4) and link it statically; the default C++ build resolves a system package
28
+ via ``find_package(simdjson CONFIG REQUIRED)`` followed by an explicit
29
+ ``simdjson_VERSION`` check, which rejects older distro packages (Ubuntu 24.04
30
+ ships 3.x) at configure time instead of failing mid compile. The check is
31
+ explicit rather than a ``find_package`` version argument because simdjson's
32
+ package version file uses same-minor compatibility (requesting 4.5 would
33
+ reject 4.6.x). The installed ``hgraphConfig.cmake`` carries the same floor.
34
+
35
+ ``HGRAPH_WARNINGS_AS_ERRORS`` applies to this project's targets only;
36
+ third-party dependencies such as simdjson build with their own flags and are
37
+ not expected to be warning-clean under ours.
38
+
21
39
  Version Header
22
40
  --------------
23
41
 
@@ -109,11 +109,11 @@ Core elements:
109
109
  Runtime bindings for graph inputs, outputs, nested graph boundaries, and parent/child graph communication.
110
110
 
111
111
  ``GraphStorage``
112
- Memory owned by the graph instance. A compiled graph binding carries a
112
+ Memory owned by the graph instance. A compiled graph type record carries a
113
113
  fixed-size storage plan with a graph header, a heterogeneous node-storage
114
114
  tuple, and a parallel ``DateTime`` schedule array sized from the graph
115
- topology. The graph binding also carries the node-location table that maps
116
- ``node_index`` to ``(NodeTypeBinding, storage_offset)``. Creating a graph
115
+ topology. The graph record's ops context also carries the node-location table that maps
116
+ ``node_index`` to ``(NodeTypeRef, storage_offset)``. Creating a graph
117
117
  instance therefore performs one graph storage allocation rather than
118
118
  allocating separate vectors for nodes and schedules.
119
119
 
@@ -43,36 +43,40 @@ This is the load-bearing reason values are type-erased rather than
43
43
  generic-templated: it lets the time-series layer reuse the value-layer
44
44
  container vocabulary without forking the surface.
45
45
 
46
- Binding: the shared anchor
47
- --------------------------
46
+ Type record: the shared anchor
47
+ ------------------------------
48
48
 
49
- Type erasure is held together by a *binding*: an interned triple of
50
- schema, plan, and ops that every erased handle dereferences:
49
+ Value type erasure is held together by the common ``TypeRecord``. It records
50
+ the schema, family role, storage plan, ops table, capabilities, and optional
51
+ debug descriptor for one implementation:
51
52
 
52
53
  .. code-block:: cpp
53
54
 
54
- template <typename TypeMeta, typename Ops>
55
- struct TypeBinding {
56
- const TypeMeta* type_meta;
57
- const MemoryUtils::StoragePlan* storage_plan;
58
- const Ops* ops;
55
+ struct TypeRecord {
56
+ TypeRole role;
57
+ TypeCapabilities capabilities;
58
+ const SchemaHeader* schema;
59
+ const MemoryUtils::StoragePlan* plan;
60
+ const void* ops;
61
+ const DebugDescriptor* debug;
59
62
  };
60
63
 
61
- using ValueTypeBinding = TypeBinding<ValueTypeMetaData, ValueOps>;
64
+ class ValueTypeRef {
65
+ const TypeRecord* record;
66
+ };
62
67
 
63
- A ``Value``, a ``ValueView``, or a ``Builder`` stores one borrowed
64
- pointer to its binding and reaches schema, plan, lifecycle, and ops
65
- uniformly through it.
68
+ A ``ValueTypeRef`` is a one-word, trivially-copyable typed reference to a
69
+ value-family ``Instance`` record. ``Value``, ``ValueView``, and builders use
70
+ it to reach schema, plan, lifecycle, capabilities, and ``ValueOps``.
66
71
 
67
- Bindings are interned by ``(type, plan, ops)`` triple. Builders are
68
- interned by schema. Each registry exists only to expose a typed
69
- convenience API on top of one ``InternTable`` instance, so the
70
- interning contract is uniform across all erased shapes.
72
+ ``intern_value_type`` interns one record per ``(schema header, Instance role,
73
+ plan, ops)`` key in ``TypeRecordRegistry``. ``ValuePlanFactory`` caches
74
+ ``schema -> ValueTypeRef`` by value; there is no value-family binding side
75
+ registry.
71
76
 
72
- Composite bindings populate lazily. The first request for a tuple,
73
- list, map, or other container schema synthesises its plan from the
74
- element/key bindings, interns the resulting binding, and stores the
75
- builder.
77
+ Composite types populate lazily. The first ``type_for`` request for a tuple,
78
+ list, map, or other container schema synthesises its plan from child type
79
+ refs and interns the resulting common record.
76
80
 
77
81
  The View
78
82
  --------
@@ -81,17 +85,22 @@ A view is the type-erased non-owning handle:
81
85
 
82
86
  .. code-block:: cpp
83
87
 
84
- struct ValueViewContext {
85
- const ValueTypeBinding* binding;
86
- void* data;
88
+ class ValueView {
89
+ ValuePtr pointer; // tagged TypeRecord pointer + borrowed data pointer
87
90
  };
88
91
 
89
- The binding gives the view its schema, plan, lifecycle, and ops; the
90
- data pointer addresses the live payload. The base ``ValueView`` context
91
- is two pointers, so it is cheap to copy and pass through internal
92
- traversal code. Specialised view adapters carry at least this context
93
- and may cache resolved ops or layout facts established at construction
94
- time.
92
+ The record gives the view its schema, plan, lifecycle, capabilities, and ops;
93
+ the data pointer addresses the borrowed payload. ``ValueView`` is exactly two
94
+ words and is move-only. Specialised view adapters carry at least this context
95
+ and may cache resolved ops or layout facts established at construction time.
96
+
97
+ Record structure and value-family identity are validated when records are
98
+ interned and when a generic ``AnyPtr`` is narrowed with
99
+ ``ValueTypeRef::checked``. A ``ValueView`` constructed from that trusted
100
+ ``ValueTypeRef`` reads its record, payload, and access tag directly; ordinary
101
+ ``valid()``, ``has_value()``, and typed value operations do not repeat
102
+ ``TypeRecord::valid`` on every access. Explicit access-mode transitions, such
103
+ as opening a mutation view, retain their transition checks.
95
104
 
96
105
  A view exposes:
97
106
 
@@ -101,7 +110,7 @@ A view exposes:
101
110
  atomic kinds;
102
111
  - generic ops: ``hash()``, ``equals()``, ``compare()``, ``to_string()``,
103
112
  ``clone()``, ``copy_from()``, ``try_copy_from()``
104
- — routed through the binding; ``compare()`` returns
113
+ — routed through the type record; ``compare()`` returns
105
114
  ``std::partial_ordering`` as the common erased representation of
106
115
  ``operator<=>`` results. Compact containers use their bound ops table,
107
116
  while structured tuple/bundle/fixed-list views recurse through child
@@ -136,7 +145,7 @@ Both families are mirrored on the owning ``Value`` itself
136
145
  ``Value`` do not need to dereference into a ``ValueView`` and then
137
146
  cast again.
138
147
 
139
- These casts only re-interpret the existing binding's view shape. They
148
+ These casts only re-interpret the existing type record's view shape. They
140
149
  do not change the underlying schema or copy the payload. Cross-schema
141
150
  adaptation — exposing one schema's value through a different schema —
142
151
  is a time-series concern, not a value-layer concern.
@@ -166,7 +175,7 @@ discipline:
166
175
  key insertion and value updates on maps, and so on.
167
176
 
168
177
  The generic erased handle can represent writable and mutable states
169
- without adding a third pointer word: the binding pointer carries a
178
+ without adding a third pointer word: the type-record pointer carries a
170
179
  small tag. A mutable view is obtained from a writable view by calling
171
180
  ``begin_mutation()``. The transition is explicit so that consumers can
172
181
  reason about when mutation is in scope — the time-series layer in
@@ -227,7 +236,7 @@ Specialised Views
227
236
 
228
237
  Each kind has a specialised **read-only** view that adds kind-specific
229
238
  access on top of ``ValueView``. Specialised views hold at least the
230
- same ``(binding, data)`` context as ``ValueView`` and may cache
239
+ same ``ValuePtr`` context as ``ValueView`` and may cache
231
240
  resolved ops pointers or other construction-time facts to keep later
232
241
  calls free of repeated validation. Most share an ``IndexedValueView``
233
242
  base for the kinds that are addressed positionally.