Source code for syside.query

  1"""
  2``syside.query``: read-only queries over a loaded model.
  3
  4Use this package to ask questions about a model that :func:`syside.load_model`
  5has produced: find elements by name or metadata, walk generalization and
  6containment hierarchies, and inspect features, connections, and variation
  7points. No function here modifies the model.
  8
  9Three kinds of names are exported:
 10
 11* Traversal primitives (:func:`generalizations`, :func:`specializations`,
 12  and :func:`walk_containment`), which walk the type and ownership
 13  hierarchies.
 14* Query functions built on those primitives, such as :func:`find_by_name` and
 15  :func:`find_elements_of_type`.
 16* Index types (:class:`NameIndex`, :class:`TypeIndex`, :class:`MetadataIndex`)
 17  with matching ``build_*_index`` builders. Without an index, each query scans
 18  the model; when you repeat lookups, build the index once and pass it via the
 19  ``index=`` parameter to make each later lookup a dictionary read. An index
 20  never changes a query's result, only its cost.
 21
 22Every function returns a plain, fully materialized value (a ``list``,
 23``set``, ``bool``, scalar, or ``None``), never a lazy view of the model.
 24"""
 25
 26from __future__ import annotations
 27
 28from syside.query._functions import (
 29    LibraryElements,
 30    MetadataIndex,
 31    MultiplicityBounds,
 32    NameIndex,
 33    TypeIndex,
 34    UNBOUNDED,
 35    Unbounded,
 36    actors,
 37    declared_actors,
 38    containers,
 39    annotated_elements,
 40    build_metadata_index,
 41    build_name_index,
 42    build_type_index,
 43    contains,
 44    contents,
 45    connection_ends,
 46    find_bindings_of,
 47    cross_subsets,
 48    all_contents,
 49    description,
 50    declared_types_of,
 51    all_types_of,
 52    documentation,
 53    enumeration_values,
 54    exposed_elements,
 55    feature_chain,
 56    featured_in,
 57    features_of,
 58    find_by_name,
 59    find_by_name_and_type,
 60    find_by_qualified_name,
 61    get_by_path,
 62    find_elements_of_type,
 63    find_metadata_usages,
 64    find_relationships,
 65    has_metadata_prefix,
 66    find_connectors_of,
 67    find_connectors_to,
 68    find_connectors_from,
 69    inherited_features,
 70    is_contained_in,
 71    metadata_prefixes,
 72    metadata_usages,
 73    multiplicity_bounds,
 74    generalization_names,
 75    redefined_by,
 76    redefines,
 77    referenced_feature,
 78    siblings,
 79    specializes,
 80    superclassifiers,
 81    subject_of,
 82    declared_subject_of,
 83    subsets,
 84    subclassifiers,
 85    supertypes,
 86    textual_representation,
 87    variants,
 88)
 89from syside.query._primitives import (
 90    specializations,
 91    generalizations,
 92    walk_containment,
 93)
 94
 95__all__ = [
 96    # primitives
 97    "generalizations",
 98    "specializations",
 99    "walk_containment",
100    # index types + builders
101    "LibraryElements",
102    "NameIndex",
103    "TypeIndex",
104    "MetadataIndex",
105    "build_name_index",
106    "build_type_index",
107    "build_metadata_index",
108    # dataclasses
109    "MultiplicityBounds",
110    "Unbounded",
111    "UNBOUNDED",
112    # lookup
113    "find_by_name",
114    "find_by_name_and_type",
115    "find_by_qualified_name",
116    "get_by_path",
117    "find_elements_of_type",
118    "find_relationships",
119    "find_metadata_usages",
120    # ownership tree
121    "contents",
122    "all_contents",
123    "containers",
124    "siblings",
125    "is_contained_in",
126    "contains",
127    # feature / type structure
128    "features_of",
129    "inherited_features",
130    "generalization_names",
131    "declared_types_of",
132    "all_types_of",
133    "supertypes",
134    "subclassifiers",
135    "subsets",
136    "redefines",
137    "redefined_by",
138    "superclassifiers",
139    "featured_in",
140    "cross_subsets",
141    "specializes",
142    # connections
143    "connection_ends",
144    "find_connectors_of",
145    "find_connectors_to",
146    "find_connectors_from",
147    "find_bindings_of",
148    # expressions / chains
149    "referenced_feature",
150    "feature_chain",
151    # documentation
152    "documentation",
153    "description",
154    "textual_representation",
155    # metadata
156    "metadata_prefixes",
157    "metadata_usages",
158    "has_metadata_prefix",
159    "annotated_elements",
160    # enumerations / variants / cases
161    "enumeration_values",
162    "variants",
163    "actors",
164    "declared_actors",
165    "subject_of",
166    "declared_subject_of",
167    # multiplicity
168    "multiplicity_bounds",
169    # views
170    "exposed_elements",
171]