Add extension event transport planning and migration hooks#800
Open
Kane610 wants to merge 18 commits into
Open
Add extension event transport planning and migration hooks#800Kane610 wants to merge 18 commits into
Kane610 wants to merge 18 commits into
Conversation
- Add axis/models/events/topic_filter.py with EventTopicFilter: frozen dataclass with explicit None wildcard sentinel, from_topics() classmethod (raises on empty), is_wildcard/canonical_topics/ mqtt_topic_filters properties, and from_desired_subscriptions() compat helper - Export EventTopicFilter from axis/models/events/__init__.py - Replace StreamManager._event_filter_list with _event_subscription: EventTopicFilter; add set_event_subscription(); keep deprecated set_event_filter_list() bridge shim; project wire-format dicts in _build_stream() (transport layer, not model) - Simplify apply_event_transport_filters() to return None; build EventTopicFilter directly instead of raw dict payloads - Deprecate DesiredEventSubscription with docstring - Add tests/test_event_topic_filter.py (100% coverage of new class) - Update test_stream_manager.py and test_vapix.py
Move SegmentFormat, to_canonical, to_mqtt, to_topic_filter, detect_format and helpers into topic_filter.py — they are all part of the same topic- format domain that EventTopicFilter owns. - Delete axis/models/events/topic_normalizer.py - Update three interface importers (event_instances, event_manager, mqtt) - Update tests/test_topic_normalizer.py to import from topic_filter - Export new symbols from axis/models/events/__init__.py No behaviour change; all 463 tests pass, coverage 98.01%.
- remove DesiredEventSubscription compatibility model - remove from_desired_subscriptions and set_event_filter_list bridges - move EventTransport into transport_capabilities - delete subscription_contracts.py - update vapix/event_instances APIs and tests to use EventTopicFilter directly - expand module docs and add focused coverage tests
- add EventTransportManager in interfaces/events/transport_manager.py - remove event transport capability/descriptor/apply methods from Vapix - expose event_transport manager on AxisDevice - update tests to call new ownership path - add coverage test for default filter resolution branch
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.
Summary
Add the extension-first event capability surface for transport filter planning and rollout-safe topic normalization, then organize the new event code under dedicated events subpackages.
What changed
axis/interfaces/events/axis/models/events/axis/models/event.pyandaxis/models/event_instance.pyso existing imports continue to workValidation
All checks passed with 445 tests passing and total coverage at 98.01%.