hg-cpp 0.3.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 (460) hide show
  1. hg_cpp-0.3.0/.github/workflows/build.yml +324 -0
  2. hg_cpp-0.3.0/.gitignore +12 -0
  3. hg_cpp-0.3.0/.gitmodules +12 -0
  4. hg_cpp-0.3.0/.readthedocs.yaml +13 -0
  5. hg_cpp-0.3.0/AGENTS.md +70 -0
  6. hg_cpp-0.3.0/CLAUDE.md +315 -0
  7. hg_cpp-0.3.0/CMakeLists.txt +569 -0
  8. hg_cpp-0.3.0/CMakePresets.json +34 -0
  9. hg_cpp-0.3.0/PKG-INFO +96 -0
  10. hg_cpp-0.3.0/README.md +52 -0
  11. hg_cpp-0.3.0/conan_provider.cmake +6 -0
  12. hg_cpp-0.3.0/docs/Makefile +14 -0
  13. hg_cpp-0.3.0/docs/requirements.txt +4 -0
  14. hg_cpp-0.3.0/docs/source/conf.py +31 -0
  15. hg_cpp-0.3.0/docs/source/developer_guide/architecture.rst +438 -0
  16. hg_cpp-0.3.0/docs/source/developer_guide/build_system.rst +50 -0
  17. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/core_concepts.rst +232 -0
  18. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/linking_strategies.rst +462 -0
  19. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/overview/execution_layer.rst +96 -0
  20. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/overview/index.rst +14 -0
  21. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/overview/structural_layers.rst +223 -0
  22. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/plans_and_ops/erased_types.rst +359 -0
  23. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/plans_and_ops/index.rst +94 -0
  24. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/plans_and_ops/proxy_state_management.rst +624 -0
  25. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/plans_and_ops/scalar.rst +348 -0
  26. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/plans_and_ops/time_series.rst +1324 -0
  27. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/refinements.rst +54 -0
  28. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/graph.rst +404 -0
  29. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/index.rst +122 -0
  30. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/node.rst +300 -0
  31. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/scalar.rst +173 -0
  32. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/static_schema.rst +383 -0
  33. hg_cpp-0.3.0/docs/source/developer_guide/data_structures/schemas/time_series.rst +690 -0
  34. hg_cpp-0.3.0/docs/source/developer_guide/data_structures.rst +33 -0
  35. hg_cpp-0.3.0/docs/source/developer_guide/debugging.rst +198 -0
  36. hg_cpp-0.3.0/docs/source/developer_guide/documentation_conventions.rst +25 -0
  37. hg_cpp-0.3.0/docs/source/developer_guide/error_handling.rst +170 -0
  38. hg_cpp-0.3.0/docs/source/developer_guide/graph_wiring.rst +430 -0
  39. hg_cpp-0.3.0/docs/source/developer_guide/index.rst +25 -0
  40. hg_cpp-0.3.0/docs/source/developer_guide/mesh.rst +378 -0
  41. hg_cpp-0.3.0/docs/source/developer_guide/nested_graphs.rst +666 -0
  42. hg_cpp-0.3.0/docs/source/developer_guide/operators.rst +778 -0
  43. hg_cpp-0.3.0/docs/source/developer_guide/parity_matrix.rst +367 -0
  44. hg_cpp-0.3.0/docs/source/developer_guide/python_integration.rst +328 -0
  45. hg_cpp-0.3.0/docs/source/developer_guide/record_replay_table.rst +473 -0
  46. hg_cpp-0.3.0/docs/source/developer_guide/roadmap.rst +191 -0
  47. hg_cpp-0.3.0/docs/source/developer_guide/services.rst +620 -0
  48. hg_cpp-0.3.0/docs/source/developer_guide/testing.rst +117 -0
  49. hg_cpp-0.3.0/docs/source/developer_guide/wiring.rst +200 -0
  50. hg_cpp-0.3.0/docs/source/index.rst +19 -0
  51. hg_cpp-0.3.0/docs/source/user_guide/authoring_graphs_cpp.rst +1321 -0
  52. hg_cpp-0.3.0/docs/source/user_guide/authoring_nodes_cpp.rst +1369 -0
  53. hg_cpp-0.3.0/docs/source/user_guide/core_concepts.rst +46 -0
  54. hg_cpp-0.3.0/docs/source/user_guide/index.rst +14 -0
  55. hg_cpp-0.3.0/docs/source/user_guide/quick_start.rst +94 -0
  56. hg_cpp-0.3.0/docs/source/user_guide/testing_graphs_cpp.rst +565 -0
  57. hg_cpp-0.3.0/docs/source/user_guide/what_is_hgraph.rst +29 -0
  58. hg_cpp-0.3.0/include/hgraph/config.h +17 -0
  59. hg_cpp-0.3.0/include/hgraph/hgraph.h +10 -0
  60. hg_cpp-0.3.0/include/hgraph/hgraph_export.h +31 -0
  61. hg_cpp-0.3.0/include/hgraph/lib/std/component.h +183 -0
  62. hg_cpp-0.3.0/include/hgraph/lib/std/lifted_kernels.h +585 -0
  63. hg_cpp-0.3.0/include/hgraph/lib/std/operators/arithmetic.h +150 -0
  64. hg_cpp-0.3.0/include/hgraph/lib/std/operators/collection.h +391 -0
  65. hg_cpp-0.3.0/include/hgraph/lib/std/operators/comparison.h +117 -0
  66. hg_cpp-0.3.0/include/hgraph/lib/std/operators/container.h +57 -0
  67. hg_cpp-0.3.0/include/hgraph/lib/std/operators/control.h +279 -0
  68. hg_cpp-0.3.0/include/hgraph/lib/std/operators/conversion.h +107 -0
  69. hg_cpp-0.3.0/include/hgraph/lib/std/operators/convert_target.h +22 -0
  70. hg_cpp-0.3.0/include/hgraph/lib/std/operators/higher_order.h +275 -0
  71. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/arithmetic_impl.h +1064 -0
  72. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/collection_impl.h +3675 -0
  73. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/comparison_impl.h +331 -0
  74. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/container_impl.h +884 -0
  75. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/control_impl.h +673 -0
  76. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/conversion_impl.h +2328 -0
  77. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/higher_order_impl.h +2314 -0
  78. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/io_impl.h +72 -0
  79. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/json_impl.h +477 -0
  80. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/logical_impl.h +27 -0
  81. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/operators_impl.h +35 -0
  82. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/record_replay_frame_impl.h +303 -0
  83. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/reduce_layout.h +70 -0
  84. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/series_impl.h +246 -0
  85. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/stream_impl.h +754 -0
  86. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/string_impl.h +563 -0
  87. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/table_impl.h +114 -0
  88. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/temporal_impl.h +345 -0
  89. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/tsb_itemwise_impl.h +216 -0
  90. hg_cpp-0.3.0/include/hgraph/lib/std/operators/impl/tsl_itemwise_impl.h +161 -0
  91. hg_cpp-0.3.0/include/hgraph/lib/std/operators/io.h +74 -0
  92. hg_cpp-0.3.0/include/hgraph/lib/std/operators/json.h +86 -0
  93. hg_cpp-0.3.0/include/hgraph/lib/std/operators/logical.h +63 -0
  94. hg_cpp-0.3.0/include/hgraph/lib/std/operators/operators.h +33 -0
  95. hg_cpp-0.3.0/include/hgraph/lib/std/operators/registration.h +15 -0
  96. hg_cpp-0.3.0/include/hgraph/lib/std/operators/stream.h +138 -0
  97. hg_cpp-0.3.0/include/hgraph/lib/std/operators/string.h +56 -0
  98. hg_cpp-0.3.0/include/hgraph/lib/std/operators/syntax.h +255 -0
  99. hg_cpp-0.3.0/include/hgraph/lib/std/operators/table.h +39 -0
  100. hg_cpp-0.3.0/include/hgraph/lib/std/operators/temporal.h +101 -0
  101. hg_cpp-0.3.0/include/hgraph/lib/std/standard_types.h +207 -0
  102. hg_cpp-0.3.0/include/hgraph/lib/std/std_nodes.h +39 -0
  103. hg_cpp-0.3.0/include/hgraph/lib/std/std_operators.h +25 -0
  104. hg_cpp-0.3.0/include/hgraph/lib/std/value_util.h +148 -0
  105. hg_cpp-0.3.0/include/hgraph/lib/testing/check_output.h +197 -0
  106. hg_cpp-0.3.0/include/hgraph/lib/testing/eval_node.h +853 -0
  107. hg_cpp-0.3.0/include/hgraph/lib/testing/mock_runtime.h +253 -0
  108. hg_cpp-0.3.0/include/hgraph/lib/testing/record_replay.h +345 -0
  109. hg_cpp-0.3.0/include/hgraph/lib/testing/runtime_support.h +245 -0
  110. hg_cpp-0.3.0/include/hgraph/python/bridge_state.h +58 -0
  111. hg_cpp-0.3.0/include/hgraph/python/chrono.h +300 -0
  112. hg_cpp-0.3.0/include/hgraph/runtime/context_node.h +56 -0
  113. hg_cpp-0.3.0/include/hgraph/runtime/evaluation_clock.h +145 -0
  114. hg_cpp-0.3.0/include/hgraph/runtime/executor.h +179 -0
  115. hg_cpp-0.3.0/include/hgraph/runtime/feedback_node.h +29 -0
  116. hg_cpp-0.3.0/include/hgraph/runtime/global_state.h +137 -0
  117. hg_cpp-0.3.0/include/hgraph/runtime/graph.h +388 -0
  118. hg_cpp-0.3.0/include/hgraph/runtime/lifecycle_observer.h +252 -0
  119. hg_cpp-0.3.0/include/hgraph/runtime/logger.h +136 -0
  120. hg_cpp-0.3.0/include/hgraph/runtime/map_node.h +103 -0
  121. hg_cpp-0.3.0/include/hgraph/runtime/mesh_node.h +110 -0
  122. hg_cpp-0.3.0/include/hgraph/runtime/nested_bindings.h +186 -0
  123. hg_cpp-0.3.0/include/hgraph/runtime/nested_graph_node.h +147 -0
  124. hg_cpp-0.3.0/include/hgraph/runtime/node.h +402 -0
  125. hg_cpp-0.3.0/include/hgraph/runtime/node_error.h +57 -0
  126. hg_cpp-0.3.0/include/hgraph/runtime/node_fwd.h +16 -0
  127. hg_cpp-0.3.0/include/hgraph/runtime/node_scheduler.h +305 -0
  128. hg_cpp-0.3.0/include/hgraph/runtime/push_source_node.h +138 -0
  129. hg_cpp-0.3.0/include/hgraph/runtime/race_tsd_node.h +24 -0
  130. hg_cpp-0.3.0/include/hgraph/runtime/reduce_node.h +61 -0
  131. hg_cpp-0.3.0/include/hgraph/runtime/runtime.h +18 -0
  132. hg_cpp-0.3.0/include/hgraph/runtime/service_node.h +70 -0
  133. hg_cpp-0.3.0/include/hgraph/runtime/shared_output_node.h +46 -0
  134. hg_cpp-0.3.0/include/hgraph/runtime/switch_node.h +74 -0
  135. hg_cpp-0.3.0/include/hgraph/runtime/try_except_node.h +28 -0
  136. hg_cpp-0.3.0/include/hgraph/types/adaptor_wiring.h +628 -0
  137. hg_cpp-0.3.0/include/hgraph/types/call_args.h +559 -0
  138. hg_cpp-0.3.0/include/hgraph/types/context_wiring.h +65 -0
  139. hg_cpp-0.3.0/include/hgraph/types/frame.h +115 -0
  140. hg_cpp-0.3.0/include/hgraph/types/graph_wiring.h +2899 -0
  141. hg_cpp-0.3.0/include/hgraph/types/lift.h +537 -0
  142. hg_cpp-0.3.0/include/hgraph/types/metadata/ts_data_plan_factory.h +92 -0
  143. hg_cpp-0.3.0/include/hgraph/types/metadata/ts_data_plan_factory_detail.h +70 -0
  144. hg_cpp-0.3.0/include/hgraph/types/metadata/ts_value_type_meta_data.h +395 -0
  145. hg_cpp-0.3.0/include/hgraph/types/metadata/type_binding.h +165 -0
  146. hg_cpp-0.3.0/include/hgraph/types/metadata/type_meta_data.h +64 -0
  147. hg_cpp-0.3.0/include/hgraph/types/metadata/type_registry.h +574 -0
  148. hg_cpp-0.3.0/include/hgraph/types/metadata/value_plan_factory.h +123 -0
  149. hg_cpp-0.3.0/include/hgraph/types/metadata/value_type_meta_data.h +312 -0
  150. hg_cpp-0.3.0/include/hgraph/types/notifiable.h +27 -0
  151. hg_cpp-0.3.0/include/hgraph/types/operator_dispatch.h +1560 -0
  152. hg_cpp-0.3.0/include/hgraph/types/operator_type_resolution.h +375 -0
  153. hg_cpp-0.3.0/include/hgraph/types/primitive_types.h +91 -0
  154. hg_cpp-0.3.0/include/hgraph/types/record_replay.h +216 -0
  155. hg_cpp-0.3.0/include/hgraph/types/registry_reset.h +37 -0
  156. hg_cpp-0.3.0/include/hgraph/types/series.h +111 -0
  157. hg_cpp-0.3.0/include/hgraph/types/service_runtime.h +120 -0
  158. hg_cpp-0.3.0/include/hgraph/types/service_wiring.h +2005 -0
  159. hg_cpp-0.3.0/include/hgraph/types/static_node.h +2522 -0
  160. hg_cpp-0.3.0/include/hgraph/types/static_schema.h +826 -0
  161. hg_cpp-0.3.0/include/hgraph/types/subgraph_wiring.h +684 -0
  162. hg_cpp-0.3.0/include/hgraph/types/time_series/endpoint_owner.h +28 -0
  163. hg_cpp-0.3.0/include/hgraph/types/time_series/endpoint_schema.h +107 -0
  164. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/base_view.h +374 -0
  165. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/dict_view.h +153 -0
  166. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/indexed_view.h +155 -0
  167. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/ops.h +307 -0
  168. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/proxy.h +172 -0
  169. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/set_view.h +119 -0
  170. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/storage.h +34 -0
  171. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/types.h +420 -0
  172. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data/window_view.h +119 -0
  173. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_data.h +25 -0
  174. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_delta.h +54 -0
  175. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/base_view.h +210 -0
  176. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/bundle_view.h +67 -0
  177. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/detail.h +113 -0
  178. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/dict_view.h +54 -0
  179. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/list_view.h +46 -0
  180. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/set_view.h +42 -0
  181. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/target_link.h +130 -0
  182. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/typed_view.h +36 -0
  183. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/view_common.h +23 -0
  184. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input/window_view.h +48 -0
  185. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_input.h +167 -0
  186. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/alternative.h +121 -0
  187. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/base_view.h +166 -0
  188. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/bundle_view.h +54 -0
  189. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/dict_view.h +64 -0
  190. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/list_view.h +41 -0
  191. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/mutation_view.h +58 -0
  192. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/set_view.h +44 -0
  193. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/typed_view.h +37 -0
  194. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/view_common.h +35 -0
  195. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output/window_view.h +50 -0
  196. hg_cpp-0.3.0/include/hgraph/types/time_series/ts_output.h +107 -0
  197. hg_cpp-0.3.0/include/hgraph/types/time_series/typed_view.h +38 -0
  198. hg_cpp-0.3.0/include/hgraph/types/time_series_reference.h +190 -0
  199. hg_cpp-0.3.0/include/hgraph/types/type_pattern.h +603 -0
  200. hg_cpp-0.3.0/include/hgraph/types/type_resolution.h +652 -0
  201. hg_cpp-0.3.0/include/hgraph/types/utils/intern_table.h +109 -0
  202. hg_cpp-0.3.0/include/hgraph/types/utils/key_slot_store.h +644 -0
  203. hg_cpp-0.3.0/include/hgraph/types/utils/memory_utils.h +1756 -0
  204. hg_cpp-0.3.0/include/hgraph/types/utils/slot_observer.h +208 -0
  205. hg_cpp-0.3.0/include/hgraph/types/utils/stable_slot_storage.h +249 -0
  206. hg_cpp-0.3.0/include/hgraph/types/utils/value_slot_store.h +484 -0
  207. hg_cpp-0.3.0/include/hgraph/types/value/any_ops.h +34 -0
  208. hg_cpp-0.3.0/include/hgraph/types/value/compact_container_ops.h +1254 -0
  209. hg_cpp-0.3.0/include/hgraph/types/value/compact_storage.h +1258 -0
  210. hg_cpp-0.3.0/include/hgraph/types/value/container_ops.h +214 -0
  211. hg_cpp-0.3.0/include/hgraph/types/value/json_codec.h +97 -0
  212. hg_cpp-0.3.0/include/hgraph/types/value/mutable_container_ops.h +1254 -0
  213. hg_cpp-0.3.0/include/hgraph/types/value/specialized_views.h +1168 -0
  214. hg_cpp-0.3.0/include/hgraph/types/value/table_codec.h +123 -0
  215. hg_cpp-0.3.0/include/hgraph/types/value/value.h +317 -0
  216. hg_cpp-0.3.0/include/hgraph/types/value/value_builder.h +828 -0
  217. hg_cpp-0.3.0/include/hgraph/types/value/value_ops.h +644 -0
  218. hg_cpp-0.3.0/include/hgraph/types/value/value_range.h +179 -0
  219. hg_cpp-0.3.0/include/hgraph/types/value/value_view.h +391 -0
  220. hg_cpp-0.3.0/include/hgraph/types/wired_fn.h +579 -0
  221. hg_cpp-0.3.0/include/hgraph/util/date_time.h +153 -0
  222. hg_cpp-0.3.0/include/hgraph/util/scope.h +211 -0
  223. hg_cpp-0.3.0/include/hgraph/util/tagged_ptr.h +604 -0
  224. hg_cpp-0.3.0/include/hgraph/version.h.in +18 -0
  225. hg_cpp-0.3.0/include/third_party/ankerl/stl.h +83 -0
  226. hg_cpp-0.3.0/include/third_party/ankerl/unordered_dense.h +2239 -0
  227. hg_cpp-0.3.0/include/third_party/sul/LICENSE +21 -0
  228. hg_cpp-0.3.0/include/third_party/sul/dynamic_bitset.hpp +3360 -0
  229. hg_cpp-0.3.0/pyproject.toml +92 -0
  230. hg_cpp-0.3.0/python/CMakeLists.txt +68 -0
  231. hg_cpp-0.3.0/python/hgraph/__init__.py +72 -0
  232. hg_cpp-0.3.0/python/hgraph/_compat.py +92 -0
  233. hg_cpp-0.3.0/python/hgraph/_operators/__init__.py +0 -0
  234. hg_cpp-0.3.0/python/hgraph/_operators/_stream.py +4 -0
  235. hg_cpp-0.3.0/python/hgraph/_runtime.py +1875 -0
  236. hg_cpp-0.3.0/python/hgraph/_types.py +676 -0
  237. hg_cpp-0.3.0/python/hgraph/arrow.py +124 -0
  238. hg_cpp-0.3.0/python/hgraph/nodes.py +95 -0
  239. hg_cpp-0.3.0/python/hgraph/test/__init__.py +4 -0
  240. hg_cpp-0.3.0/python/module.cpp +2355 -0
  241. hg_cpp-0.3.0/python/module_internal.h +118 -0
  242. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/__init__.py +0 -0
  243. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_compound_scalar_conversion_operators.py +75 -0
  244. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_date_time_conversion_operators.py +65 -0
  245. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_general_conversion_operators.py +14 -0
  246. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_mapping_conversion_operators.py +130 -0
  247. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_set_conversion_operators.py +72 -0
  248. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_ts_conversion_operators.py +68 -0
  249. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_tsb_conversion_operators.py +96 -0
  250. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_tsd_converion_operators.py +230 -0
  251. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_tsl_conversion_operators.py +54 -0
  252. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_tss_conversion_operators.py +114 -0
  253. hg_cpp-0.3.0/python/tests/ported/_operators/_conversion_operators/test_tuple_conversion_operators.py +160 -0
  254. hg_cpp-0.3.0/python/tests/ported/_operators/test_bool_operators.py +33 -0
  255. hg_cpp-0.3.0/python/tests/ported/_operators/test_compound_scalar_operators.py +111 -0
  256. hg_cpp-0.3.0/python/tests/ported/_operators/test_const.py +31 -0
  257. hg_cpp-0.3.0/python/tests/ported/_operators/test_control_operators.py +364 -0
  258. hg_cpp-0.3.0/python/tests/ported/_operators/test_date_operators.py +96 -0
  259. hg_cpp-0.3.0/python/tests/ported/_operators/test_datetime_operators.py +65 -0
  260. hg_cpp-0.3.0/python/tests/ported/_operators/test_frozendict_operators.py +337 -0
  261. hg_cpp-0.3.0/python/tests/ported/_operators/test_frozenset_operators.py +121 -0
  262. hg_cpp-0.3.0/python/tests/ported/_operators/test_json.py +29 -0
  263. hg_cpp-0.3.0/python/tests/ported/_operators/test_logical.py +6 -0
  264. hg_cpp-0.3.0/python/tests/ported/_operators/test_number_operators.py +145 -0
  265. hg_cpp-0.3.0/python/tests/ported/_operators/test_operators.py +31 -0
  266. hg_cpp-0.3.0/python/tests/ported/_operators/test_scalar_operators.py +554 -0
  267. hg_cpp-0.3.0/python/tests/ported/_operators/test_series_operators.py +327 -0
  268. hg_cpp-0.3.0/python/tests/ported/_operators/test_set_operators.py +40 -0
  269. hg_cpp-0.3.0/python/tests/ported/_operators/test_str_operators.py +163 -0
  270. hg_cpp-0.3.0/python/tests/ported/_operators/test_time_series_properties.py +112 -0
  271. hg_cpp-0.3.0/python/tests/ported/_operators/test_tsb_operators.py +432 -0
  272. hg_cpp-0.3.0/python/tests/ported/_operators/test_tsd_operators.py +686 -0
  273. hg_cpp-0.3.0/python/tests/ported/_operators/test_tsl_operators.py +452 -0
  274. hg_cpp-0.3.0/python/tests/ported/_operators/test_tss_operators.py +268 -0
  275. hg_cpp-0.3.0/python/tests/ported/_operators/test_tsw_operators.py +71 -0
  276. hg_cpp-0.3.0/python/tests/ported/_operators/test_tuple_operator.py +17 -0
  277. hg_cpp-0.3.0/python/tests/ported/_operators/test_tuple_operators.py +181 -0
  278. hg_cpp-0.3.0/python/tests/ported/_operators/test_wp_operators.py +39 -0
  279. hg_cpp-0.3.0/python/tests/ported/conftest.py +12 -0
  280. hg_cpp-0.3.0/python/tests/test_bridge.py +140 -0
  281. hg_cpp-0.3.0/python/tests/test_hgraph_api.py +898 -0
  282. hg_cpp-0.3.0/python/tests/test_packaging.py +113 -0
  283. hg_cpp-0.3.0/python/tests/test_python_authoring.py +424 -0
  284. hg_cpp-0.3.0/python/value_conversion.cpp +433 -0
  285. hg_cpp-0.3.0/src/CMakeLists.txt +128 -0
  286. hg_cpp-0.3.0/src/hgraph/lib/std/operators/arithmetic_impl.cpp +171 -0
  287. hg_cpp-0.3.0/src/hgraph/lib/std/operators/collection_impl.cpp +140 -0
  288. hg_cpp-0.3.0/src/hgraph/lib/std/operators/comparison_impl.cpp +79 -0
  289. hg_cpp-0.3.0/src/hgraph/lib/std/operators/container_impl.cpp +42 -0
  290. hg_cpp-0.3.0/src/hgraph/lib/std/operators/control_impl.cpp +27 -0
  291. hg_cpp-0.3.0/src/hgraph/lib/std/operators/conversion_impl.cpp +77 -0
  292. hg_cpp-0.3.0/src/hgraph/lib/std/operators/convert_target.cpp +536 -0
  293. hg_cpp-0.3.0/src/hgraph/lib/std/operators/higher_order_impl.cpp +22 -0
  294. hg_cpp-0.3.0/src/hgraph/lib/std/operators/io_impl.cpp +19 -0
  295. hg_cpp-0.3.0/src/hgraph/lib/std/operators/json_impl.cpp +652 -0
  296. hg_cpp-0.3.0/src/hgraph/lib/std/operators/logical_impl.cpp +55 -0
  297. hg_cpp-0.3.0/src/hgraph/lib/std/operators/record_replay_frame_impl.cpp +12 -0
  298. hg_cpp-0.3.0/src/hgraph/lib/std/operators/registration.cpp +26 -0
  299. hg_cpp-0.3.0/src/hgraph/lib/std/operators/series_impl.cpp +25 -0
  300. hg_cpp-0.3.0/src/hgraph/lib/std/operators/stream_impl.cpp +42 -0
  301. hg_cpp-0.3.0/src/hgraph/lib/std/operators/string_impl.cpp +17 -0
  302. hg_cpp-0.3.0/src/hgraph/lib/std/operators/table_impl.cpp +11 -0
  303. hg_cpp-0.3.0/src/hgraph/lib/std/operators/temporal_impl.cpp +29 -0
  304. hg_cpp-0.3.0/src/hgraph/pch.h +32 -0
  305. hg_cpp-0.3.0/src/hgraph/runtime/context_node.cpp +40 -0
  306. hg_cpp-0.3.0/src/hgraph/runtime/executor.cpp +823 -0
  307. hg_cpp-0.3.0/src/hgraph/runtime/feedback_node.cpp +136 -0
  308. hg_cpp-0.3.0/src/hgraph/runtime/global_state.cpp +109 -0
  309. hg_cpp-0.3.0/src/hgraph/runtime/graph.cpp +1609 -0
  310. hg_cpp-0.3.0/src/hgraph/runtime/logger.cpp +33 -0
  311. hg_cpp-0.3.0/src/hgraph/runtime/map_node.cpp +745 -0
  312. hg_cpp-0.3.0/src/hgraph/runtime/mapped_child_bindings.h +171 -0
  313. hg_cpp-0.3.0/src/hgraph/runtime/mapped_key_source.h +199 -0
  314. hg_cpp-0.3.0/src/hgraph/runtime/mesh_node.cpp +1007 -0
  315. hg_cpp-0.3.0/src/hgraph/runtime/nested_graph_node.cpp +354 -0
  316. hg_cpp-0.3.0/src/hgraph/runtime/node.cpp +1558 -0
  317. hg_cpp-0.3.0/src/hgraph/runtime/node_error.cpp +54 -0
  318. hg_cpp-0.3.0/src/hgraph/runtime/push_source_node.cpp +607 -0
  319. hg_cpp-0.3.0/src/hgraph/runtime/race_tsd_node.cpp +410 -0
  320. hg_cpp-0.3.0/src/hgraph/runtime/reduce_node.cpp +630 -0
  321. hg_cpp-0.3.0/src/hgraph/runtime/service_node.cpp +790 -0
  322. hg_cpp-0.3.0/src/hgraph/runtime/shared_output_node.cpp +190 -0
  323. hg_cpp-0.3.0/src/hgraph/runtime/switch_node.cpp +372 -0
  324. hg_cpp-0.3.0/src/hgraph/runtime/try_except_node.cpp +86 -0
  325. hg_cpp-0.3.0/src/hgraph/types/frame.cpp +18 -0
  326. hg_cpp-0.3.0/src/hgraph/types/graph_wiring.cpp +1182 -0
  327. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_atomic_ops.cpp +312 -0
  328. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_dynamic_list_ops.cpp +1267 -0
  329. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_fixed_structured_ops.cpp +1775 -0
  330. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_fixed_structured_plan.cpp +342 -0
  331. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_plan_factory.cpp +374 -0
  332. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_slot_ops.cpp +2942 -0
  333. hg_cpp-0.3.0/src/hgraph/types/metadata/ts_data_window_ops.cpp +1517 -0
  334. hg_cpp-0.3.0/src/hgraph/types/metadata/type_registry.cpp +1007 -0
  335. hg_cpp-0.3.0/src/hgraph/types/metadata/value_plan_factory.cpp +1134 -0
  336. hg_cpp-0.3.0/src/hgraph/types/operator_dispatch.cpp +680 -0
  337. hg_cpp-0.3.0/src/hgraph/types/primitive_types.cpp +27 -0
  338. hg_cpp-0.3.0/src/hgraph/types/record_replay.cpp +197 -0
  339. hg_cpp-0.3.0/src/hgraph/types/registry_reset.cpp +42 -0
  340. hg_cpp-0.3.0/src/hgraph/types/series.cpp +18 -0
  341. hg_cpp-0.3.0/src/hgraph/types/service_runtime.cpp +648 -0
  342. hg_cpp-0.3.0/src/hgraph/types/time_series/endpoint_owner.cpp +1 -0
  343. hg_cpp-0.3.0/src/hgraph/types/time_series/endpoint_schema.cpp +251 -0
  344. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/base_view.cpp +539 -0
  345. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/dict_view.cpp +477 -0
  346. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/indexed_view.cpp +378 -0
  347. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/ops.cpp +294 -0
  348. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/proxy.cpp +1394 -0
  349. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/set_view.cpp +271 -0
  350. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/storage.cpp +37 -0
  351. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/types.cpp +484 -0
  352. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_data/window_view.cpp +301 -0
  353. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_delta.cpp +625 -0
  354. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/base_view.cpp +569 -0
  355. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/bundle_view.cpp +215 -0
  356. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/dict_view.cpp +206 -0
  357. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/list_view.cpp +139 -0
  358. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/set_view.cpp +57 -0
  359. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/target_link.cpp +630 -0
  360. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/target_link_ops.cpp +1106 -0
  361. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/target_link_ops.h +47 -0
  362. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input/window_view.cpp +57 -0
  363. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_input.cpp +2178 -0
  364. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/alternative.cpp +1426 -0
  365. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/base_view.cpp +309 -0
  366. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/bundle_view.cpp +178 -0
  367. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/dict_view.cpp +200 -0
  368. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/list_view.cpp +137 -0
  369. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/mutation_view.cpp +78 -0
  370. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/set_view.cpp +58 -0
  371. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output/window_view.cpp +56 -0
  372. hg_cpp-0.3.0/src/hgraph/types/time_series/ts_output.cpp +215 -0
  373. hg_cpp-0.3.0/src/hgraph/types/time_series_reference.cpp +289 -0
  374. hg_cpp-0.3.0/src/hgraph/types/type_pattern.cpp +560 -0
  375. hg_cpp-0.3.0/src/hgraph/types/value/any_ops.cpp +117 -0
  376. hg_cpp-0.3.0/src/hgraph/types/value/compact_container_ops.cpp +196 -0
  377. hg_cpp-0.3.0/src/hgraph/types/value/json_codec.cpp +752 -0
  378. hg_cpp-0.3.0/src/hgraph/types/value/table_codec.cpp +432 -0
  379. hg_cpp-0.3.0/src/hgraph/types/value/value_view.cpp +385 -0
  380. hg_cpp-0.3.0/src/hgraph/util/date_time.cpp +28 -0
  381. hg_cpp-0.3.0/src/hgraph/version.cpp +9 -0
  382. hg_cpp-0.3.0/tests/CMakeLists.txt +5 -0
  383. hg_cpp-0.3.0/tests/cpp/CMakeLists.txt +191 -0
  384. hg_cpp-0.3.0/tests/cpp/header_compile_check.cpp +153 -0
  385. hg_cpp-0.3.0/tests/cpp/json_perf.cpp +277 -0
  386. hg_cpp-0.3.0/tests/cpp/lift/test_lift.cpp +262 -0
  387. hg_cpp-0.3.0/tests/cpp/registry_test_listener.cpp +38 -0
  388. hg_cpp-0.3.0/tests/cpp/smoke_test.cpp +27 -0
  389. hg_cpp-0.3.0/tests/cpp/test_adaptor_wiring.cpp +539 -0
  390. hg_cpp-0.3.0/tests/cpp/test_any_value.cpp +164 -0
  391. hg_cpp-0.3.0/tests/cpp/test_bundle_builder.cpp +173 -0
  392. hg_cpp-0.3.0/tests/cpp/test_check_output.cpp +76 -0
  393. hg_cpp-0.3.0/tests/cpp/test_collection_nodes.cpp +1165 -0
  394. hg_cpp-0.3.0/tests/cpp/test_compact_storage.cpp +455 -0
  395. hg_cpp-0.3.0/tests/cpp/test_component.cpp +288 -0
  396. hg_cpp-0.3.0/tests/cpp/test_const_eval.cpp +135 -0
  397. hg_cpp-0.3.0/tests/cpp/test_context_node.cpp +128 -0
  398. hg_cpp-0.3.0/tests/cpp/test_context_wiring.cpp +188 -0
  399. hg_cpp-0.3.0/tests/cpp/test_endpoint_owner.cpp +181 -0
  400. hg_cpp-0.3.0/tests/cpp/test_erased_wiring.cpp +189 -0
  401. hg_cpp-0.3.0/tests/cpp/test_error_handling.cpp +380 -0
  402. hg_cpp-0.3.0/tests/cpp/test_eval_node.cpp +250 -0
  403. hg_cpp-0.3.0/tests/cpp/test_feedback.cpp +138 -0
  404. hg_cpp-0.3.0/tests/cpp/test_global_state.cpp +315 -0
  405. hg_cpp-0.3.0/tests/cpp/test_graph_introspection.cpp +71 -0
  406. hg_cpp-0.3.0/tests/cpp/test_graph_wiring.cpp +1781 -0
  407. hg_cpp-0.3.0/tests/cpp/test_intern_table.cpp +221 -0
  408. hg_cpp-0.3.0/tests/cpp/test_json.cpp +317 -0
  409. hg_cpp-0.3.0/tests/cpp/test_lifecycle_observers.cpp +545 -0
  410. hg_cpp-0.3.0/tests/cpp/test_logger.cpp +113 -0
  411. hg_cpp-0.3.0/tests/cpp/test_map.cpp +1359 -0
  412. hg_cpp-0.3.0/tests/cpp/test_memory_utils.cpp +653 -0
  413. hg_cpp-0.3.0/tests/cpp/test_mesh.cpp +407 -0
  414. hg_cpp-0.3.0/tests/cpp/test_mutable_list.cpp +188 -0
  415. hg_cpp-0.3.0/tests/cpp/test_mutable_map.cpp +167 -0
  416. hg_cpp-0.3.0/tests/cpp/test_mutable_set.cpp +104 -0
  417. hg_cpp-0.3.0/tests/cpp/test_nested_wiring.cpp +317 -0
  418. hg_cpp-0.3.0/tests/cpp/test_node_scheduler.cpp +237 -0
  419. hg_cpp-0.3.0/tests/cpp/test_operators.cpp +1089 -0
  420. hg_cpp-0.3.0/tests/cpp/test_plan_factories.cpp +1678 -0
  421. hg_cpp-0.3.0/tests/cpp/test_race_semantics.cpp +174 -0
  422. hg_cpp-0.3.0/tests/cpp/test_realtime_execution.cpp +546 -0
  423. hg_cpp-0.3.0/tests/cpp/test_record_replay.cpp +122 -0
  424. hg_cpp-0.3.0/tests/cpp/test_record_replay_config.cpp +141 -0
  425. hg_cpp-0.3.0/tests/cpp/test_record_replay_frame.cpp +117 -0
  426. hg_cpp-0.3.0/tests/cpp/test_reduce.cpp +527 -0
  427. hg_cpp-0.3.0/tests/cpp/test_ref_executor.cpp +75 -0
  428. hg_cpp-0.3.0/tests/cpp/test_runtime_value_view.cpp +371 -0
  429. hg_cpp-0.3.0/tests/cpp/test_schema_examples.cpp +437 -0
  430. hg_cpp-0.3.0/tests/cpp/test_scope.cpp +67 -0
  431. hg_cpp-0.3.0/tests/cpp/test_service_node.cpp +114 -0
  432. hg_cpp-0.3.0/tests/cpp/test_service_runtime.cpp +83 -0
  433. hg_cpp-0.3.0/tests/cpp/test_service_wiring.cpp +960 -0
  434. hg_cpp-0.3.0/tests/cpp/test_shared_output_node.cpp +193 -0
  435. hg_cpp-0.3.0/tests/cpp/test_simulation_execution.cpp +277 -0
  436. hg_cpp-0.3.0/tests/cpp/test_slot_utils.cpp +554 -0
  437. hg_cpp-0.3.0/tests/cpp/test_specialized_views.cpp +670 -0
  438. hg_cpp-0.3.0/tests/cpp/test_static_node.cpp +629 -0
  439. hg_cpp-0.3.0/tests/cpp/test_static_schema.cpp +244 -0
  440. hg_cpp-0.3.0/tests/cpp/test_std_nodes.cpp +446 -0
  441. hg_cpp-0.3.0/tests/cpp/test_std_operators.cpp +1433 -0
  442. hg_cpp-0.3.0/tests/cpp/test_std_type_registration.cpp +269 -0
  443. hg_cpp-0.3.0/tests/cpp/test_switch.cpp +323 -0
  444. hg_cpp-0.3.0/tests/cpp/test_table.cpp +196 -0
  445. hg_cpp-0.3.0/tests/cpp/test_time_series_reference.cpp +1140 -0
  446. hg_cpp-0.3.0/tests/cpp/test_ts_delta.cpp +278 -0
  447. hg_cpp-0.3.0/tests/cpp/test_ts_input.cpp +928 -0
  448. hg_cpp-0.3.0/tests/cpp/test_ts_output.cpp +1216 -0
  449. hg_cpp-0.3.0/tests/cpp/test_ts_schemas.cpp +275 -0
  450. hg_cpp-0.3.0/tests/cpp/test_tsd_proxy.cpp +133 -0
  451. hg_cpp-0.3.0/tests/cpp/test_tsl_nodes.cpp +335 -0
  452. hg_cpp-0.3.0/tests/cpp/test_tss_nodes.cpp +140 -0
  453. hg_cpp-0.3.0/tests/cpp/test_type_registry.cpp +436 -0
  454. hg_cpp-0.3.0/tests/cpp/test_type_resolution.cpp +148 -0
  455. hg_cpp-0.3.0/tests/cpp/test_value.cpp +351 -0
  456. hg_cpp-0.3.0/tests/cpp/test_value_types.cpp +72 -0
  457. hg_cpp-0.3.0/tools/debugger/README.md +64 -0
  458. hg_cpp-0.3.0/tools/debugger/hgraph_gdb.py +768 -0
  459. hg_cpp-0.3.0/tools/debugger/hgraph_lldb.py +855 -0
  460. hg_cpp-0.3.0/uv.lock +780 -0
@@ -0,0 +1,324 @@
1
+ name: Build, test, and publish Python distributions
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "**"
7
+ tags:
8
+ - "v_*.*.*"
9
+ pull_request:
10
+ workflow_dispatch:
11
+
12
+ permissions:
13
+ actions: read
14
+ contents: read
15
+
16
+ jobs:
17
+ validate-release:
18
+ name: Validate release metadata
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v6
22
+ with:
23
+ persist-credentials: false
24
+ - uses: actions/setup-python@v6
25
+ with:
26
+ python-version: "3.12"
27
+ - name: Validate package metadata
28
+ run: |
29
+ python -m pip install --upgrade trove-classifiers
30
+ python python/tests/test_packaging.py
31
+ - name: Validate release tag
32
+ if: github.ref_type == 'tag'
33
+ shell: python
34
+ env:
35
+ RELEASE_TAG: ${{ github.ref_name }}
36
+ run: |
37
+ from pathlib import Path
38
+ from urllib.error import HTTPError
39
+ from urllib.request import urlopen
40
+ import os
41
+ import re
42
+ import tomllib
43
+
44
+ tag = os.environ["RELEASE_TAG"]
45
+ match = re.fullmatch(r"v_(\d+\.\d+\.\d+)", tag)
46
+ if match is None:
47
+ raise SystemExit(f"release tag must match v_x.x.x, got {tag!r}")
48
+
49
+ project = tomllib.loads(Path("pyproject.toml").read_text())["project"]
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
+
56
+ try:
57
+ with urlopen(f"https://pypi.org/pypi/hg_cpp/{version}/json"):
58
+ pass
59
+ except HTTPError as error:
60
+ if error.code != 404:
61
+ raise
62
+ else:
63
+ raise SystemExit(f"hg_cpp {version} already exists on PyPI")
64
+
65
+ print(f"Validated new hg_cpp release {version}")
66
+
67
+ reuse-build:
68
+ name: Find tested distributions for this commit
69
+ needs: validate-release
70
+ runs-on: ubuntu-latest
71
+ outputs:
72
+ run-id: ${{ steps.find.outputs.run-id }}
73
+ steps:
74
+ - name: Find successful build by commit SHA
75
+ id: find
76
+ if: github.ref_type == 'tag'
77
+ uses: actions/github-script@v8
78
+ with:
79
+ script: |
80
+ const requiredArtifacts = new Set([
81
+ "distribution-sdist",
82
+ "distribution-wheel-macos-26",
83
+ "distribution-wheel-ubuntu-latest",
84
+ "distribution-wheel-windows-latest",
85
+ ]);
86
+ const runs = await github.paginate(
87
+ github.rest.actions.listWorkflowRuns,
88
+ {
89
+ owner: context.repo.owner,
90
+ repo: context.repo.repo,
91
+ workflow_id: "build.yml",
92
+ event: "push",
93
+ head_sha: context.sha,
94
+ status: "success",
95
+ per_page: 100,
96
+ },
97
+ );
98
+
99
+ for (const run of runs) {
100
+ if (run.head_sha !== context.sha || run.id === context.runId) {
101
+ continue;
102
+ }
103
+
104
+ const artifacts = await github.paginate(
105
+ github.rest.actions.listWorkflowRunArtifacts,
106
+ {
107
+ owner: context.repo.owner,
108
+ repo: context.repo.repo,
109
+ run_id: run.id,
110
+ per_page: 100,
111
+ },
112
+ );
113
+ const availableArtifacts = new Set(
114
+ artifacts
115
+ .filter((artifact) => !artifact.expired)
116
+ .map((artifact) => artifact.name),
117
+ );
118
+ if ([...requiredArtifacts].every((name) => availableArtifacts.has(name))) {
119
+ core.notice(`Reusing tested distributions from workflow run ${run.id}`);
120
+ core.setOutput("run-id", String(run.id));
121
+ return;
122
+ }
123
+ }
124
+
125
+ core.notice(`No reusable distributions found for commit ${context.sha}`);
126
+ core.setOutput("run-id", "");
127
+
128
+ build-wheel:
129
+ name: Build ${{ matrix.os }} wheel
130
+ needs:
131
+ - validate-release
132
+ - reuse-build
133
+ if: needs.reuse-build.outputs.run-id == ''
134
+ runs-on: ${{ matrix.os }}
135
+ strategy:
136
+ fail-fast: false
137
+ matrix:
138
+ include:
139
+ - os: ubuntu-latest
140
+ parallel: "2"
141
+ cmake_args: -DHGRAPH_WARNINGS_AS_ERRORS=ON
142
+ - os: windows-latest
143
+ parallel: "2"
144
+ cmake_args: -DHGRAPH_WARNINGS_AS_ERRORS=OFF
145
+ - os: macos-26
146
+ parallel: "1"
147
+ cmake_args: -DHGRAPH_WARNINGS_AS_ERRORS=OFF -DCMAKE_OSX_DEPLOYMENT_TARGET=15.0
148
+
149
+ steps:
150
+ - uses: actions/checkout@v6
151
+ with:
152
+ persist-credentials: false
153
+ - uses: actions/setup-python@v6
154
+ with:
155
+ python-version: "3.12"
156
+ - name: Configure current Clang on macOS
157
+ if: runner.os == 'macOS'
158
+ shell: bash
159
+ run: |
160
+ echo "CC=/usr/bin/clang" >> "$GITHUB_ENV"
161
+ echo "CXX=/usr/bin/clang++" >> "$GITHUB_ENV"
162
+ echo "MACOSX_DEPLOYMENT_TARGET=15.0" >> "$GITHUB_ENV"
163
+ /usr/bin/clang++ --version
164
+ - name: Install wheel build tools
165
+ run: python -m pip install --upgrade build abi3audit
166
+ - name: Build stable ABI wheel
167
+ env:
168
+ CMAKE_ARGS: ${{ matrix.cmake_args }}
169
+ CMAKE_BUILD_PARALLEL_LEVEL: ${{ matrix.parallel }}
170
+ run: python -m build --wheel
171
+ - name: Repair Linux wheel
172
+ if: runner.os == 'Linux'
173
+ run: |
174
+ python -m pip install --upgrade auditwheel
175
+ mkdir wheelhouse
176
+ auditwheel repair \
177
+ --exclude libarrow.so.2400 \
178
+ --exclude libarrow_compute.so.2400 \
179
+ --wheel-dir wheelhouse \
180
+ dist/*.whl
181
+ rm dist/*.whl
182
+ mv wheelhouse/*.whl dist/
183
+ - name: Verify wheel ABI
184
+ shell: python
185
+ run: |
186
+ from pathlib import Path
187
+ import subprocess
188
+ import sys
189
+
190
+ wheels = list(Path("dist").glob("*.whl"))
191
+ assert len(wheels) == 1, wheels
192
+ wheel = wheels[0]
193
+ assert wheel.name.startswith("hg_cpp-"), wheel.name
194
+ assert "-cp312-abi3-" in wheel.name, wheel.name
195
+ if sys.platform == "darwin":
196
+ assert "-macosx_15_0_arm64.whl" in wheel.name, wheel.name
197
+ elif sys.platform == "win32":
198
+ assert wheel.name.endswith("-win_amd64.whl"), wheel.name
199
+ else:
200
+ assert wheel.name.endswith("_x86_64.whl"), wheel.name
201
+ subprocess.check_call(["abi3audit", "--strict", str(wheel)])
202
+ - uses: actions/upload-artifact@v7
203
+ with:
204
+ name: distribution-wheel-${{ matrix.os }}
205
+ path: dist/*.whl
206
+ if-no-files-found: error
207
+
208
+ build-sdist:
209
+ name: Build source distribution
210
+ needs:
211
+ - validate-release
212
+ - reuse-build
213
+ if: needs.reuse-build.outputs.run-id == ''
214
+ runs-on: ubuntu-latest
215
+ steps:
216
+ - uses: actions/checkout@v6
217
+ with:
218
+ persist-credentials: false
219
+ - uses: actions/setup-python@v6
220
+ with:
221
+ python-version: "3.12"
222
+ - name: Build source distribution
223
+ run: |
224
+ python -m pip install --upgrade build
225
+ python -m build --sdist
226
+ - name: Verify source distribution
227
+ shell: python
228
+ run: |
229
+ from pathlib import Path
230
+ import tomllib
231
+
232
+ version = tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"]
233
+ archives = list(Path("dist").glob("*.tar.gz"))
234
+ assert len(archives) == 1, archives
235
+ assert archives[0].name == f"hg_cpp-{version}.tar.gz", archives[0].name
236
+ - uses: actions/upload-artifact@v7
237
+ with:
238
+ name: distribution-sdist
239
+ path: dist/*.tar.gz
240
+ if-no-files-found: error
241
+
242
+ test-wheel:
243
+ name: Test ${{ matrix.os }} / Python ${{ matrix.python-version }}
244
+ needs:
245
+ - reuse-build
246
+ - build-wheel
247
+ if: needs.reuse-build.outputs.run-id == ''
248
+ runs-on: ${{ matrix.os }}
249
+ strategy:
250
+ fail-fast: false
251
+ matrix:
252
+ os:
253
+ - ubuntu-latest
254
+ - windows-latest
255
+ - macos-26
256
+ python-version:
257
+ - "3.12"
258
+ - "3.13"
259
+ - "3.14"
260
+
261
+ steps:
262
+ - uses: actions/checkout@v6
263
+ with:
264
+ persist-credentials: false
265
+ - uses: actions/setup-python@v6
266
+ with:
267
+ python-version: ${{ matrix.python-version }}
268
+ - uses: actions/download-artifact@v7
269
+ with:
270
+ name: distribution-wheel-${{ matrix.os }}
271
+ path: dist
272
+ - name: Install wheel and test dependencies
273
+ shell: python
274
+ run: |
275
+ from pathlib import Path
276
+ import subprocess
277
+ import sys
278
+
279
+ wheels = list(Path("dist").glob("*.whl"))
280
+ assert len(wheels) == 1, wheels
281
+ subprocess.check_call([
282
+ sys.executable, "-m", "pip", "install", "--upgrade",
283
+ str(wheels[0]), "pytest>=8", "frozendict>=2.4", "trove-classifiers",
284
+ ])
285
+ - name: Confirm installed distribution
286
+ run: python -c "import importlib.metadata as m; import _hgraph; print(m.version('hg_cpp'), _hgraph.__file__)"
287
+ - name: Run Python compatibility suite
288
+ run: python -m pytest python/tests -q -m "not wip"
289
+
290
+ publish:
291
+ name: Publish hg_cpp to PyPI
292
+ if: >-
293
+ always() &&
294
+ startsWith(github.ref, 'refs/tags/v_') &&
295
+ needs.validate-release.result == 'success' &&
296
+ needs.reuse-build.result == 'success' &&
297
+ (
298
+ needs.reuse-build.outputs.run-id != '' ||
299
+ (needs.build-sdist.result == 'success' && needs.test-wheel.result == 'success')
300
+ )
301
+ needs:
302
+ - validate-release
303
+ - reuse-build
304
+ - build-sdist
305
+ - test-wheel
306
+ runs-on: ubuntu-latest
307
+ environment:
308
+ name: release
309
+ url: https://pypi.org/p/hg_cpp
310
+ permissions:
311
+ actions: read
312
+ id-token: write
313
+ steps:
314
+ - uses: actions/download-artifact@v7
315
+ with:
316
+ pattern: distribution-*
317
+ path: dist
318
+ merge-multiple: true
319
+ github-token: ${{ github.token }}
320
+ run-id: ${{ needs.reuse-build.outputs.run-id || github.run_id }}
321
+ - name: Publish package distributions to PyPI
322
+ uses: pypa/gh-action-pypi-publish@release/v1
323
+ with:
324
+ packages-dir: dist
@@ -0,0 +1,12 @@
1
+ /docs/build/
2
+ /dist/
3
+ /wheelhouse/
4
+ /CMakeFiles/
5
+ /.idea/
6
+ /cmake-build*/
7
+ /*build*/
8
+ /**/__pycache__/
9
+ /docs/_build/
10
+ /REVIEW.md
11
+
12
+ .claude/
@@ -0,0 +1,12 @@
1
+ [submodule "ext/2603"]
2
+ path = ext/2603
3
+ url = /Users/hhenson/CLionProjects/hgraph_2
4
+ branch = ts_value_2603
5
+ [submodule "ext/2604"]
6
+ path = ext/2604
7
+ url = /Users/hhenson/CLionProjects/hgraph_1
8
+ branch = ts_value_26_04
9
+ [submodule "ext/main"]
10
+ path = ext/main
11
+ url = git@github.com:hhenson/hgraph.git
12
+ branch = main
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-24.04
5
+ tools:
6
+ python: "3.12"
7
+
8
+ sphinx:
9
+ configuration: docs/source/conf.py
10
+
11
+ python:
12
+ install:
13
+ - requirements: docs/requirements.txt
hg_cpp-0.3.0/AGENTS.md ADDED
@@ -0,0 +1,70 @@
1
+ # AGENTS.md
2
+
3
+ ## Project Direction
4
+
5
+ This repository is the C++ first implementation of hgraph. The runtime, system nodes, graph execution, time-series values, and native C++ graph/node APIs should be implemented in C++ as the primary source of truth.
6
+
7
+ Python remains important, but it is not the runtime foundation. Python support is for:
8
+
9
+ - wiring and compatibility with the current Python hgraph ecosystem,
10
+ - Python user-authored nodes running inside the C++ runtime,
11
+ - optional packaging and bindings through the Python bridge.
12
+
13
+ Do not make normal CMake configure/build depend on Python, nanobind, or Python package installation unless the Python bridge is explicitly enabled.
14
+
15
+ ## Build System
16
+
17
+ - Use CMake as the primary build system.
18
+ - Keep `CMakeLists.txt` usable for a pure C++ build.
19
+ - Keep `pyproject.toml` as the Python packaging bridge, not as the authoritative build definition.
20
+ - Prefer explicit CMake targets over global include/link state.
21
+ - The main runtime target should remain `hgraph_core` with the public alias `hgraph::core`.
22
+ - Python bindings should be opt-in through `HGRAPH_BUILD_PYTHON_BINDINGS`.
23
+ - Python user-node support should be opt-in through `HGRAPH_ENABLE_PYTHON_USER_NODES`.
24
+
25
+ Useful local checks:
26
+
27
+ ```sh
28
+ cmake -S . -B /tmp/hg_cpp-cmake-check
29
+ cmake --build /tmp/hg_cpp-cmake-check
30
+ cmake --install /tmp/hg_cpp-cmake-check --prefix /tmp/hg_cpp-install
31
+ python3 -c "import pathlib, tomllib; tomllib.loads(pathlib.Path('pyproject.toml').read_text())"
32
+ ```
33
+
34
+ ## Source Layout
35
+
36
+ Expected layout as the codebase grows:
37
+
38
+ - `include/hgraph/...`: public C++ headers.
39
+ - `src/...`: C++ runtime implementation.
40
+ - `bindings/python/...`: optional Python extension bridge.
41
+ - `tests/cpp/...`: C++ tests.
42
+ - `tests/python/...`: Python compatibility tests only where the bridge or wiring requires them.
43
+ - `docs/source/...`: Sphinx documentation for Read the Docs, split into user and developer guides.
44
+
45
+ `include/hgraph/version.h` is generated from `include/hgraph/version.h.in` into the CMake build tree and installed with the public headers.
46
+
47
+ Avoid committing generated build trees, CMake cache files, virtual environments, or Python bytecode.
48
+
49
+ ## Implementation Guidelines
50
+
51
+ - Prefer C++23 library features where they simplify the code.
52
+ - Keep Python-specific code behind clear boundaries.
53
+ - System nodes should be C++ only.
54
+ - C++ graph and node authoring should be first-class, not a binding layer over Python concepts.
55
+ - When porting from older attempts, preserve useful C++ runtime ideas but avoid copying Python-first build assumptions.
56
+ - Add abstractions only when they clarify ownership, runtime behavior, or public API shape.
57
+ - Keep tests close to the behavior being introduced.
58
+
59
+ ## Dependency Policy
60
+
61
+ - Prefer CMake packages when available.
62
+ - Use `FetchContent` only deliberately and behind normal CMake options or dependency discovery.
63
+ - Do not introduce heavyweight runtime dependencies without a clear need.
64
+ - Python packaging dependencies belong in `pyproject.toml`; C++ runtime dependencies belong in CMake.
65
+
66
+ ## Git Hygiene
67
+
68
+ - The worktree may contain unrelated user changes. Do not revert them.
69
+ - Keep edits scoped to the requested task.
70
+ - Do not delete or rewrite existing staged work unless explicitly asked.