Conversation
…to Base classes - Created BaseTimeSeriesInput and BaseTimeSeriesOutput classes containing all state and concrete implementations - Made TimeSeriesType, TimeSeriesInput, and TimeSeriesOutput pure virtual interfaces with zero state - Updated all derived classes to inherit from Base classes instead of interfaces - Fixed nanobind registrations: methods defined on interfaces, hierarchy only on Base classes - Updated all qualified base class calls from TimeSeriesInput:: to BaseTimeSeriesInput:: - Moved protected virtual methods (do_bind_output, notify_parent) to Base classes - Replaced all reinterpret_cast with static_cast for type safety - Fixed TimeSeriesT concept to use std::is_base_of_v instead of exact type matching - Fixed key_set() to return TimeSeriesSetOutput/Input (not templated version) - Updated all concrete type nanobind registrations to inherit from Base classes - Added missing headers to CMakeLists.txt (base_time_series.h, observer headers) All 1309 tests pass with both Python and C++ runtimes (HGRAPH_USE_CPP=1)
Owner
Author
|
Step 1 to clean up existing code (preparation of pure virtual base classes for TimeSeriesInput / Output / Type. |
|
Owner
Author
|
OK, need to try and keep a clean separation of the required API's from the implementation specific logic. This cleans the code up slightly and should not introduce too much overhead. I need to prepare the code for the new logic in a few smaller steps to reduce the complexity of the change. This is step 1. and should be mostly harmless. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



…to Base classes
All 1309 tests pass with both Python and C++ runtimes (HGRAPH_USE_CPP=1)
Note
Introduce BaseTimeSeriesInput/Output holding all state and behavior, convert TimeSeriesType/Input/Output to pure interfaces, and update types, bindings, and build to match.
BaseTimeSeriesInputandBaseTimeSeriesOutputwith all state and concrete behavior moved from interfaces.TimeSeriesType,TimeSeriesInput, andTimeSeriesOutputpure virtual interfaces; adjust method surfaces accordingly.TimeSeriesTconcept to usestd::is_base_of_v.ts,tsw,tss,tsd,ts_indexed,ref,ts_signal,tsb) to inherit from Base classes; replace calls likeTimeSeriesInput::withBaseTimeSeriesInput::.key_set()to returnTimeSeriesSetOutput/TimeSeriesSetInputand related APIs.static_castwhere applicable; tighten type checks._hgraph_types.cpp.types/base_time_series.*) and observer headers to CMake lists.InspectionObserverconstructor drops_track_recent_performancestorage; parameter marked unused.CLAUDE.mdupdated with feature flag usage (HGRAPH_USE_CPP=1) and dev/testing guidance.Written by Cursor Bugbot for commit ab2e994. This will update automatically on new commits. Configure here.