DipsScripting 9.1.0__py3-none-any.whl
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.
- dips/AnchorPointVal.py +103 -0
- dips/AngleDataVal.py +62 -0
- dips/AnnotativeTools2DVal.py +273 -0
- dips/ApplicationManager.py +89 -0
- dips/ArrowToolEntityInfoRef.py +43 -0
- dips/ArrowToolEntityInfoVal.py +155 -0
- dips/AutomaticClusterAnalysisSettingsVal.py +161 -0
- dips/BuiltInDataDescriptors.py +81 -0
- dips/BuiltInDataFormatters.py +81 -0
- dips/CircularWindowVal.py +103 -0
- dips/ClusterWindowVal.py +190 -0
- dips/ColorSurrogateVal.py +95 -0
- dips/ConeToolEntityInfoRef.py +43 -0
- dips/ConeToolEntityInfoVal.py +114 -0
- dips/ConeVal.py +92 -0
- dips/ContourEntityVisibilityVal.py +132 -0
- dips/ContourOptionsVal.py +193 -0
- dips/CumulativeChartViewRef.py +42 -0
- dips/CumulativeChartViewVal.py +100 -0
- dips/CumulativePlotSettingsVal.py +94 -0
- dips/CurvedWindowVal.py +102 -0
- dips/CustomColumnCollectionVal.py +69 -0
- dips/CustomHistogramOptionsVal.py +103 -0
- dips/CustomRangeVal.py +84 -0
- dips/CustomRowRawDataVal.py +74 -0
- dips/DataDescriptorVal.py +83 -0
- dips/DataFilterRef.py +23 -0
- dips/DataFilterVal.py +73 -0
- dips/DataFormatterVal.py +62 -0
- dips/DataIdentifierVal.py +62 -0
- dips/DipsAPI_pb2.py +817 -0
- dips/DipsAPI_pb2_grpc.py +12363 -0
- dips/DipsApp.py +81 -0
- dips/DiscontinuityDataVal.py +164 -0
- dips/EllipseToolEntityInfoRef.py +43 -0
- dips/EllipseToolEntityInfoVal.py +153 -0
- dips/FillFormatVal.py +83 -0
- dips/FoldEntityInfoRef.py +23 -0
- dips/FoldEntityInfoVal.py +103 -0
- dips/FoldEntityOptionsVal.py +106 -0
- dips/FoldEntityVisibilityRef.py +38 -0
- dips/FoldEntityVisibilityVal.py +100 -0
- dips/FoldWindowEntityInfoVal.py +92 -0
- dips/FoldWindowEntityVisibilityRef.py +29 -0
- dips/FoldWindowEntityVisibilityVal.py +80 -0
- dips/FreehandWindowVal.py +80 -0
- dips/FullDataFormatVal.py +92 -0
- dips/GlobalPlaneEntityVisibilityVal.py +103 -0
- dips/HistogramChartViewRef.py +42 -0
- dips/HistogramChartViewVal.py +100 -0
- dips/HistogramPlotSettingsVal.py +136 -0
- dips/IntersectionEntityVisibilityVal.py +83 -0
- dips/IntersectionOptionsVal.py +83 -0
- dips/IntervalVal.py +102 -0
- dips/JointFrequencyAnalysisSettingsVal.py +102 -0
- dips/JointFrequencyChartViewRef.py +42 -0
- dips/JointFrequencyChartViewVal.py +100 -0
- dips/JointSpacingAnalysisSettingsVal.py +138 -0
- dips/JointSpacingChartViewRef.py +42 -0
- dips/JointSpacingChartViewVal.py +100 -0
- dips/KinematicAnalysisEntityVisibilityVal.py +73 -0
- dips/KinematicAnalysisSettingsVal.py +140 -0
- dips/LatLongVal.py +84 -0
- dips/LengthDataVal.py +83 -0
- dips/LineFormatVal.py +83 -0
- dips/LineIntersectionCalculatorToolEntityInfoRef.py +43 -0
- dips/LineIntersectionCalculatorToolEntityInfoVal.py +133 -0
- dips/LineToolEntityInfoRef.py +43 -0
- dips/LineToolEntityInfoVal.py +133 -0
- dips/LineationVal.py +83 -0
- dips/MeasureAngleToolEntityInfoRef.py +43 -0
- dips/MeasureAngleToolEntityInfoVal.py +133 -0
- dips/OrientationDataSetRef.py +23 -0
- dips/OrientationDataSetVal.py +453 -0
- dips/PitchGridToolEntityInfoRef.py +43 -0
- dips/PitchGridToolEntityInfoVal.py +114 -0
- dips/PlaneEntityInfoRef.py +23 -0
- dips/PlaneEntityInfoVal.py +92 -0
- dips/PlaneEntityVisibilityRef.py +38 -0
- dips/PlaneEntityVisibilityVal.py +100 -0
- dips/PlaneIntersectionCalculatorToolEntityInfoRef.py +43 -0
- dips/PlaneIntersectionCalculatorToolEntityInfoVal.py +133 -0
- dips/PlaneOptionsVal.py +117 -0
- dips/PlaneVal.py +105 -0
- dips/PoleEntityOptionsVal.py +84 -0
- dips/PoleEntityVisibilityVal.py +83 -0
- dips/PolygonToolEntityInfoRef.py +43 -0
- dips/PolygonToolEntityInfoVal.py +131 -0
- dips/PolylineToolEntityInfoRef.py +43 -0
- dips/PolylineToolEntityInfoVal.py +111 -0
- dips/ProcessedDataVal.py +94 -0
- dips/ProjStubRef.py +388 -0
- dips/ProjStubVal.py +52 -0
- dips/ProtobufCollectionWrappers.py +108 -0
- dips/QualitativeQuantitativeAnalysisSettingsVal.py +151 -0
- dips/QualitativeQuantitativeChartViewRef.py +42 -0
- dips/QualitativeQuantitativeChartViewVal.py +111 -0
- dips/QuantitativeContourSettingsVal.py +103 -0
- dips/RQDAnalysisChartViewRef.py +42 -0
- dips/RQDAnalysisChartViewVal.py +100 -0
- dips/RQDAnalysisSettingsVal.py +111 -0
- dips/RectangleToolEntityInfoRef.py +43 -0
- dips/RectangleToolEntityInfoVal.py +153 -0
- dips/ReportingConventionResultVal.py +62 -0
- dips/RosettePresetOptionsVal.py +227 -0
- dips/RosetteSettingsVal.py +174 -0
- dips/RosetteViewRef.py +296 -0
- dips/RosetteViewVal.py +177 -0
- dips/ScatterChartViewRef.py +42 -0
- dips/ScatterChartViewVal.py +100 -0
- dips/ScatterPlotSettingsVal.py +113 -0
- dips/SetEntityInfoRef.py +23 -0
- dips/SetEntityInfoVal.py +103 -0
- dips/SetEntityOptionsVal.py +133 -0
- dips/SetEntityVisibilityRef.py +38 -0
- dips/SetEntityVisibilityVal.py +100 -0
- dips/SetStatisticsSettingsVal.py +106 -0
- dips/SetVersusSetVal.py +82 -0
- dips/SetWindowEntityInfoVal.py +183 -0
- dips/SetWindowEntityVisibilityRef.py +29 -0
- dips/SetWindowEntityVisibilityVal.py +80 -0
- dips/StatisticalDistributionFilterVal.py +128 -0
- dips/Stereonet2DPresetOptionsVal.py +488 -0
- dips/Stereonet2DViewRef.py +612 -0
- dips/Stereonet2DViewVal.py +363 -0
- dips/Stereonet3DPresetOptionsVal.py +281 -0
- dips/Stereonet3DViewRef.py +440 -0
- dips/Stereonet3DViewVal.py +303 -0
- dips/StereonetOverlayEntityVisibilityVal.py +83 -0
- dips/StereonetOverlaySettingsVal.py +103 -0
- dips/StereonetProjectionModeVal.py +73 -0
- dips/SurveyDataVal.py +103 -0
- dips/SymbolDisplaySettingVal.py +124 -0
- dips/SymbolicSettingsVal.py +89 -0
- dips/TextFormatVal.py +105 -0
- dips/TextToolEntityInfoRef.py +43 -0
- dips/TextToolEntityInfoVal.py +176 -0
- dips/TraverseEntityOptionsVal.py +84 -0
- dips/TraverseEntityVisibilityRef.py +38 -0
- dips/TraverseEntityVisibilityVal.py +100 -0
- dips/TrendLineToolEntityInfoRef.py +43 -0
- dips/TrendLineToolEntityInfoVal.py +114 -0
- dips/TrendPlungeVal.py +91 -0
- dips/UnitSystemResultVal.py +62 -0
- dips/UserPlaneEntityOptionsVal.py +100 -0
- dips/ValidatableResultVal.py +69 -0
- dips/ValidatableResult_ProtoReference_ArrowToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_ConeToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_EllipseToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_FoldEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_LineIntersectionCalculatorToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_LineToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_MeasureAngleToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_OrientationDataSetVal.py +86 -0
- dips/ValidatableResult_ProtoReference_PitchGridToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_PlaneEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_PlaneIntersectionCalculatorToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_PolygonToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_PolylineToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_RectangleToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_SetEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_TextToolEntityInfoVal.py +86 -0
- dips/ValidatableResult_ProtoReference_TrendLineToolEntityInfoVal.py +86 -0
- dips/ValidationErrorVal.py +73 -0
- dips/Vector2DVal.py +73 -0
- dips/Vector3Val.py +84 -0
- dips/VectorDensityContourSettingsVal.py +73 -0
- dips/WeightingSettingsVal.py +83 -0
- dips/WrappedFreehandWindowVal.py +102 -0
- dips/__init__.py +29 -0
- dipsscripting-9.1.0.dist-info/METADATA +29 -0
- dipsscripting-9.1.0.dist-info/RECORD +175 -0
- dipsscripting-9.1.0.dist-info/WHEEL +5 -0
- dipsscripting-9.1.0.dist-info/licenses/License.txt +20 -0
- dipsscripting-9.1.0.dist-info/top_level.txt +1 -0
dips/ClusterWindowVal.py
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"""Generated wrapper for ClusterWindow protobuf message."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional, List, Dict
|
|
4
|
+
from . import DipsAPI_pb2
|
|
5
|
+
|
|
6
|
+
from .ProtobufCollectionWrappers import _ProtobufListWrapper, _ProtobufMapWrapper
|
|
7
|
+
|
|
8
|
+
from .AutomaticClusterAnalysisSettingsVal import AutomaticClusterAnalysisSettingsVal
|
|
9
|
+
from .FullDataFormatVal import FullDataFormatVal
|
|
10
|
+
from .TrendPlungeVal import TrendPlungeVal
|
|
11
|
+
from .DataFilterRef import DataFilterRef
|
|
12
|
+
|
|
13
|
+
class ClusterWindowVal:
|
|
14
|
+
"""Simple wrapper for ClusterWindow with Pythonic getters and setters."""
|
|
15
|
+
|
|
16
|
+
_proto_class = DipsAPI_pb2.ClusterWindow
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def __init__(self, cluster_settings: Optional[AutomaticClusterAnalysisSettingsVal] = None, cluster_filter: Optional[DataFilterRef] = None, cluster_center: Optional[TrendPlungeVal] = None, proto_message: Optional[Any] = None, channel_to_connect_on: Optional[Any] = None):
|
|
20
|
+
"""Initialize the ClusterWindow wrapper."""
|
|
21
|
+
# Initialize the protobuf message
|
|
22
|
+
if proto_message is not None:
|
|
23
|
+
self._proto_message = proto_message
|
|
24
|
+
else:
|
|
25
|
+
self._proto_message = self._proto_class()
|
|
26
|
+
|
|
27
|
+
# Store channel for reference types
|
|
28
|
+
self.__channelToConnectOn = channel_to_connect_on
|
|
29
|
+
|
|
30
|
+
if cluster_settings is not None:
|
|
31
|
+
self._proto_message.ClusterSettings.CopyFrom(cluster_settings.to_proto())
|
|
32
|
+
self._cluster_settings_wrapper = cluster_settings
|
|
33
|
+
if cluster_filter is not None:
|
|
34
|
+
self.cluster_filter = cluster_filter
|
|
35
|
+
if cluster_center is not None:
|
|
36
|
+
self._proto_message.ClusterCenter.CopyFrom(cluster_center.to_proto())
|
|
37
|
+
self._cluster_center_wrapper = cluster_center
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Properties
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def id(self) -> str:
|
|
44
|
+
"""Get the ID field value."""
|
|
45
|
+
return self._proto_message.ID
|
|
46
|
+
|
|
47
|
+
@id.setter
|
|
48
|
+
def id(self, value: str) -> None:
|
|
49
|
+
"""Set the ID field value."""
|
|
50
|
+
self._proto_message.ID = value
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def cluster_id(self) -> int:
|
|
55
|
+
"""Get the ClusterID field value."""
|
|
56
|
+
return self._proto_message.ClusterID
|
|
57
|
+
|
|
58
|
+
@cluster_id.setter
|
|
59
|
+
def cluster_id(self, value: int) -> None:
|
|
60
|
+
"""Set the ClusterID field value."""
|
|
61
|
+
self._proto_message.ClusterID = value
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def cluster_labels(self) -> list:
|
|
66
|
+
"""Get the ClusterLabels field as a list."""
|
|
67
|
+
return _ProtobufListWrapper(self._proto_message.ClusterLabels)
|
|
68
|
+
|
|
69
|
+
@cluster_labels.setter
|
|
70
|
+
def cluster_labels(self, value: list) -> None:
|
|
71
|
+
"""Set the ClusterLabels field to a list."""
|
|
72
|
+
if not isinstance(value, (list, tuple)):
|
|
73
|
+
raise TypeError(f"Expected list or tuple, got {type(value).__name__}")
|
|
74
|
+
# Clear the repeated field using slice assignment
|
|
75
|
+
self._proto_message.ClusterLabels[:] = []
|
|
76
|
+
self._proto_message.ClusterLabels.extend(value)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def cluster_settings(self) -> AutomaticClusterAnalysisSettingsVal:
|
|
81
|
+
"""Get the ClusterSettings field as a wrapper."""
|
|
82
|
+
if not hasattr(self, '_cluster_settings_wrapper'):
|
|
83
|
+
self._cluster_settings_wrapper = AutomaticClusterAnalysisSettingsVal(proto_message=self._proto_message.ClusterSettings)
|
|
84
|
+
return self._cluster_settings_wrapper
|
|
85
|
+
|
|
86
|
+
@cluster_settings.setter
|
|
87
|
+
def cluster_settings(self, value: AutomaticClusterAnalysisSettingsVal) -> None:
|
|
88
|
+
"""Set the ClusterSettings field to a wrapper."""
|
|
89
|
+
self._proto_message.ClusterSettings.CopyFrom(value.to_proto())
|
|
90
|
+
# Update the cached wrapper if it exists
|
|
91
|
+
if hasattr(self, '_cluster_settings_wrapper'):
|
|
92
|
+
self._cluster_settings_wrapper._proto_message.CopyFrom(self._proto_message.ClusterSettings)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def cluster_filter(self) -> DataFilterRef:
|
|
97
|
+
"""Get the ClusterFilter field as a reference."""
|
|
98
|
+
return DataFilterRef(self.__channelToConnectOn, self._proto_message.ClusterFilter)
|
|
99
|
+
|
|
100
|
+
@cluster_filter.setter
|
|
101
|
+
def cluster_filter(self, value: DataFilterRef) -> None:
|
|
102
|
+
"""Set the ClusterFilter field to a reference."""
|
|
103
|
+
self._proto_message.ClusterFilter.CopyFrom(value.get_model_ref())
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@property
|
|
107
|
+
def used_column_headers(self) -> List[FullDataFormatVal]:
|
|
108
|
+
"""Get the UsedColumnHeaders field as a list of wrappers."""
|
|
109
|
+
return _ProtobufListWrapper(self._proto_message.UsedColumnHeaders, FullDataFormatVal)
|
|
110
|
+
|
|
111
|
+
@used_column_headers.setter
|
|
112
|
+
def used_column_headers(self, value: List[FullDataFormatVal]) -> None:
|
|
113
|
+
"""Set the UsedColumnHeaders field to a list of wrappers."""
|
|
114
|
+
if not isinstance(value, (list, tuple)):
|
|
115
|
+
raise TypeError(f"Expected list or tuple, got {type(value).__name__}")
|
|
116
|
+
# Clear the repeated field using slice assignment
|
|
117
|
+
self._proto_message.UsedColumnHeaders[:] = []
|
|
118
|
+
for item in value:
|
|
119
|
+
self._proto_message.UsedColumnHeaders.append(item.to_proto())
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def cluster_bearings(self) -> List[TrendPlungeVal]:
|
|
124
|
+
"""Get the ClusterBearings field as a list of wrappers."""
|
|
125
|
+
return _ProtobufListWrapper(self._proto_message.ClusterBearings, TrendPlungeVal)
|
|
126
|
+
|
|
127
|
+
@cluster_bearings.setter
|
|
128
|
+
def cluster_bearings(self, value: List[TrendPlungeVal]) -> None:
|
|
129
|
+
"""Set the ClusterBearings field to a list of wrappers."""
|
|
130
|
+
if not isinstance(value, (list, tuple)):
|
|
131
|
+
raise TypeError(f"Expected list or tuple, got {type(value).__name__}")
|
|
132
|
+
# Clear the repeated field using slice assignment
|
|
133
|
+
self._proto_message.ClusterBearings[:] = []
|
|
134
|
+
for item in value:
|
|
135
|
+
self._proto_message.ClusterBearings.append(item.to_proto())
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def cluster_center(self) -> TrendPlungeVal:
|
|
140
|
+
"""Get the ClusterCenter field as a wrapper."""
|
|
141
|
+
if not hasattr(self, '_cluster_center_wrapper'):
|
|
142
|
+
self._cluster_center_wrapper = TrendPlungeVal(proto_message=self._proto_message.ClusterCenter)
|
|
143
|
+
return self._cluster_center_wrapper
|
|
144
|
+
|
|
145
|
+
@cluster_center.setter
|
|
146
|
+
def cluster_center(self, value: TrendPlungeVal) -> None:
|
|
147
|
+
"""Set the ClusterCenter field to a wrapper."""
|
|
148
|
+
self._proto_message.ClusterCenter.CopyFrom(value.to_proto())
|
|
149
|
+
# Update the cached wrapper if it exists
|
|
150
|
+
if hasattr(self, '_cluster_center_wrapper'):
|
|
151
|
+
self._cluster_center_wrapper._proto_message.CopyFrom(self._proto_message.ClusterCenter)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def is_wrapped_cluster(self) -> bool:
|
|
156
|
+
"""Get the IsWrappedCluster field value."""
|
|
157
|
+
return self._proto_message.IsWrappedCluster
|
|
158
|
+
|
|
159
|
+
@is_wrapped_cluster.setter
|
|
160
|
+
def is_wrapped_cluster(self, value: bool) -> None:
|
|
161
|
+
"""Set the IsWrappedCluster field value."""
|
|
162
|
+
self._proto_message.IsWrappedCluster = value
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
# Utility methods
|
|
166
|
+
|
|
167
|
+
def to_proto(self):
|
|
168
|
+
"""Get the underlying protobuf message."""
|
|
169
|
+
return self._proto_message
|
|
170
|
+
|
|
171
|
+
@classmethod
|
|
172
|
+
def from_proto(cls, proto_message):
|
|
173
|
+
"""Create wrapper from existing protobuf message."""
|
|
174
|
+
wrapper = cls()
|
|
175
|
+
wrapper._proto_message.CopyFrom(proto_message)
|
|
176
|
+
return wrapper
|
|
177
|
+
|
|
178
|
+
def copy(self):
|
|
179
|
+
"""Create a copy of this wrapper."""
|
|
180
|
+
new_wrapper = self.__class__()
|
|
181
|
+
new_wrapper._proto_message.CopyFrom(self._proto_message)
|
|
182
|
+
return new_wrapper
|
|
183
|
+
|
|
184
|
+
def __str__(self) -> str:
|
|
185
|
+
"""String representation."""
|
|
186
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
187
|
+
|
|
188
|
+
def __repr__(self) -> str:
|
|
189
|
+
"""Detailed string representation."""
|
|
190
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Generated wrapper for ColorSurrogate protobuf message."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional, List, Dict
|
|
4
|
+
from . import DipsAPI_pb2
|
|
5
|
+
|
|
6
|
+
from .ProtobufCollectionWrappers import _ProtobufListWrapper, _ProtobufMapWrapper
|
|
7
|
+
|
|
8
|
+
class ColorSurrogateVal:
|
|
9
|
+
"""Simple wrapper for ColorSurrogate with Pythonic getters and setters."""
|
|
10
|
+
|
|
11
|
+
_proto_class = DipsAPI_pb2.ColorSurrogate
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def __init__(self, proto_message: Optional[Any] = None):
|
|
15
|
+
"""Initialize the ColorSurrogate wrapper."""
|
|
16
|
+
# Initialize the protobuf message
|
|
17
|
+
if proto_message is not None:
|
|
18
|
+
self._proto_message = proto_message
|
|
19
|
+
else:
|
|
20
|
+
self._proto_message = self._proto_class()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Properties
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def a(self) -> int:
|
|
28
|
+
"""Get the A field value."""
|
|
29
|
+
return self._proto_message.A
|
|
30
|
+
|
|
31
|
+
@a.setter
|
|
32
|
+
def a(self, value: int) -> None:
|
|
33
|
+
"""Set the A field value."""
|
|
34
|
+
self._proto_message.A = value
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def r(self) -> int:
|
|
39
|
+
"""Get the R field value."""
|
|
40
|
+
return self._proto_message.R
|
|
41
|
+
|
|
42
|
+
@r.setter
|
|
43
|
+
def r(self, value: int) -> None:
|
|
44
|
+
"""Set the R field value."""
|
|
45
|
+
self._proto_message.R = value
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def g(self) -> int:
|
|
50
|
+
"""Get the G field value."""
|
|
51
|
+
return self._proto_message.G
|
|
52
|
+
|
|
53
|
+
@g.setter
|
|
54
|
+
def g(self, value: int) -> None:
|
|
55
|
+
"""Set the G field value."""
|
|
56
|
+
self._proto_message.G = value
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def b(self) -> int:
|
|
61
|
+
"""Get the B field value."""
|
|
62
|
+
return self._proto_message.B
|
|
63
|
+
|
|
64
|
+
@b.setter
|
|
65
|
+
def b(self, value: int) -> None:
|
|
66
|
+
"""Set the B field value."""
|
|
67
|
+
self._proto_message.B = value
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# Utility methods
|
|
71
|
+
|
|
72
|
+
def to_proto(self):
|
|
73
|
+
"""Get the underlying protobuf message."""
|
|
74
|
+
return self._proto_message
|
|
75
|
+
|
|
76
|
+
@classmethod
|
|
77
|
+
def from_proto(cls, proto_message):
|
|
78
|
+
"""Create wrapper from existing protobuf message."""
|
|
79
|
+
wrapper = cls()
|
|
80
|
+
wrapper._proto_message.CopyFrom(proto_message)
|
|
81
|
+
return wrapper
|
|
82
|
+
|
|
83
|
+
def copy(self):
|
|
84
|
+
"""Create a copy of this wrapper."""
|
|
85
|
+
new_wrapper = self.__class__()
|
|
86
|
+
new_wrapper._proto_message.CopyFrom(self._proto_message)
|
|
87
|
+
return new_wrapper
|
|
88
|
+
|
|
89
|
+
def __str__(self) -> str:
|
|
90
|
+
"""String representation."""
|
|
91
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
92
|
+
|
|
93
|
+
def __repr__(self) -> str:
|
|
94
|
+
"""Detailed string representation."""
|
|
95
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
from . import DipsAPI_pb2_grpc
|
|
3
|
+
from . import DipsAPI_pb2
|
|
4
|
+
from .ConeToolEntityInfoVal import ConeToolEntityInfoVal
|
|
5
|
+
from .ConeToolEntityInfoVal import ConeToolEntityInfoVal
|
|
6
|
+
from .ValidatableResultVal import ValidatableResultVal
|
|
7
|
+
|
|
8
|
+
class ConeToolEntityInfoRef:
|
|
9
|
+
def __init__(self, channelToConnectOn, ref: DipsAPI_pb2.ProtoReference_ConeToolEntityInfo):
|
|
10
|
+
self.__modelRef = ref
|
|
11
|
+
self.__refManagerStub = DipsAPI_pb2_grpc.nSameModuleReferenceAccessorStub(channelToConnectOn)
|
|
12
|
+
self.__channelToConnectOn = channelToConnectOn
|
|
13
|
+
self.__EntityServicesStubLocal = DipsAPI_pb2_grpc.EntityServicesStub(channelToConnectOn)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def GetValue(self) -> ConeToolEntityInfoVal:
|
|
17
|
+
bytes = self.__refManagerStub.GetValue(self.__modelRef.ID)
|
|
18
|
+
ret = DipsAPI_pb2.ConeToolEntityInfo()
|
|
19
|
+
ret.MergeFromString(bytes.data)
|
|
20
|
+
return ConeToolEntityInfoVal.from_proto(ret)
|
|
21
|
+
|
|
22
|
+
def get_model_ref(self):
|
|
23
|
+
"""Get the underlying model reference for direct protobuf operations."""
|
|
24
|
+
return self.__modelRef
|
|
25
|
+
|
|
26
|
+
def RemoveConeTool(self):
|
|
27
|
+
functionParam = DipsAPI_pb2.ProtoMemberFunction_ProtoReference_ConeToolEntityInfo(This=self.__modelRef)
|
|
28
|
+
ret = self.__EntityServicesStubLocal.RemoveConeTool(functionParam)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def SetConeToolVisibility(self, Boolean: bool):
|
|
32
|
+
functionParam = DipsAPI_pb2.ProtoMemberFunction_ProtoReference_ConeToolEntityInfo_Boolean(This=self.__modelRef, Input1=Boolean)
|
|
33
|
+
ret = self.__EntityServicesStubLocal.SetConeToolVisibility(functionParam)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def UpdateConeTool(self, ConeToolEntityInfo: ConeToolEntityInfoVal) -> ValidatableResultVal:
|
|
37
|
+
functionParam = DipsAPI_pb2.ProtoMemberFunction_ProtoReference_ConeToolEntityInfo_ConeToolEntityInfo(This=self.__modelRef, Input1=(ConeToolEntityInfo.to_proto() if hasattr(ConeToolEntityInfo, 'to_proto') else ConeToolEntityInfo))
|
|
38
|
+
ret = self.__EntityServicesStubLocal.UpdateConeTool(functionParam)
|
|
39
|
+
|
|
40
|
+
return ValidatableResultVal.from_proto(ret)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Generated wrapper for ConeToolEntityInfo protobuf message."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional, List, Dict
|
|
4
|
+
from . import DipsAPI_pb2
|
|
5
|
+
|
|
6
|
+
from .ProtobufCollectionWrappers import _ProtobufListWrapper, _ProtobufMapWrapper
|
|
7
|
+
|
|
8
|
+
from .ColorSurrogateVal import ColorSurrogateVal
|
|
9
|
+
from .ConeVal import ConeVal
|
|
10
|
+
|
|
11
|
+
class ConeToolEntityInfoVal:
|
|
12
|
+
"""Simple wrapper for ConeToolEntityInfo with Pythonic getters and setters."""
|
|
13
|
+
|
|
14
|
+
_proto_class = DipsAPI_pb2.ConeToolEntityInfo
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def __init__(self, color: Optional[ColorSurrogateVal] = None, cone: Optional[ConeVal] = None, proto_message: Optional[Any] = None):
|
|
18
|
+
"""Initialize the ConeToolEntityInfo wrapper."""
|
|
19
|
+
# Initialize the protobuf message
|
|
20
|
+
if proto_message is not None:
|
|
21
|
+
self._proto_message = proto_message
|
|
22
|
+
else:
|
|
23
|
+
self._proto_message = self._proto_class()
|
|
24
|
+
|
|
25
|
+
if color is not None:
|
|
26
|
+
self._proto_message.Color.CopyFrom(color.to_proto())
|
|
27
|
+
self._color_wrapper = color
|
|
28
|
+
if cone is not None:
|
|
29
|
+
self._proto_message.Cone.CopyFrom(cone.to_proto())
|
|
30
|
+
self._cone_wrapper = cone
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Properties
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def is_visible(self) -> bool:
|
|
37
|
+
"""Get the IsVisible field value."""
|
|
38
|
+
return self._proto_message.IsVisible
|
|
39
|
+
|
|
40
|
+
@is_visible.setter
|
|
41
|
+
def is_visible(self, value: bool) -> None:
|
|
42
|
+
"""Set the IsVisible field value."""
|
|
43
|
+
self._proto_message.IsVisible = value
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def name(self) -> str:
|
|
48
|
+
"""Get the Name field value."""
|
|
49
|
+
return self._proto_message.Name
|
|
50
|
+
|
|
51
|
+
@name.setter
|
|
52
|
+
def name(self, value: str) -> None:
|
|
53
|
+
"""Set the Name field value."""
|
|
54
|
+
self._proto_message.Name = value
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
def color(self) -> ColorSurrogateVal:
|
|
59
|
+
"""Get the Color field as a wrapper."""
|
|
60
|
+
if not hasattr(self, '_color_wrapper'):
|
|
61
|
+
self._color_wrapper = ColorSurrogateVal(proto_message=self._proto_message.Color)
|
|
62
|
+
return self._color_wrapper
|
|
63
|
+
|
|
64
|
+
@color.setter
|
|
65
|
+
def color(self, value: ColorSurrogateVal) -> None:
|
|
66
|
+
"""Set the Color field to a wrapper."""
|
|
67
|
+
self._proto_message.Color.CopyFrom(value.to_proto())
|
|
68
|
+
# Update the cached wrapper if it exists
|
|
69
|
+
if hasattr(self, '_color_wrapper'):
|
|
70
|
+
self._color_wrapper._proto_message.CopyFrom(self._proto_message.Color)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def cone(self) -> ConeVal:
|
|
75
|
+
"""Get the Cone field as a wrapper."""
|
|
76
|
+
if not hasattr(self, '_cone_wrapper'):
|
|
77
|
+
self._cone_wrapper = ConeVal(proto_message=self._proto_message.Cone)
|
|
78
|
+
return self._cone_wrapper
|
|
79
|
+
|
|
80
|
+
@cone.setter
|
|
81
|
+
def cone(self, value: ConeVal) -> None:
|
|
82
|
+
"""Set the Cone field to a wrapper."""
|
|
83
|
+
self._proto_message.Cone.CopyFrom(value.to_proto())
|
|
84
|
+
# Update the cached wrapper if it exists
|
|
85
|
+
if hasattr(self, '_cone_wrapper'):
|
|
86
|
+
self._cone_wrapper._proto_message.CopyFrom(self._proto_message.Cone)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
# Utility methods
|
|
90
|
+
|
|
91
|
+
def to_proto(self):
|
|
92
|
+
"""Get the underlying protobuf message."""
|
|
93
|
+
return self._proto_message
|
|
94
|
+
|
|
95
|
+
@classmethod
|
|
96
|
+
def from_proto(cls, proto_message):
|
|
97
|
+
"""Create wrapper from existing protobuf message."""
|
|
98
|
+
wrapper = cls()
|
|
99
|
+
wrapper._proto_message.CopyFrom(proto_message)
|
|
100
|
+
return wrapper
|
|
101
|
+
|
|
102
|
+
def copy(self):
|
|
103
|
+
"""Create a copy of this wrapper."""
|
|
104
|
+
new_wrapper = self.__class__()
|
|
105
|
+
new_wrapper._proto_message.CopyFrom(self._proto_message)
|
|
106
|
+
return new_wrapper
|
|
107
|
+
|
|
108
|
+
def __str__(self) -> str:
|
|
109
|
+
"""String representation."""
|
|
110
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
111
|
+
|
|
112
|
+
def __repr__(self) -> str:
|
|
113
|
+
"""Detailed string representation."""
|
|
114
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
dips/ConeVal.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Generated wrapper for Cone protobuf message."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional, List, Dict
|
|
4
|
+
from . import DipsAPI_pb2
|
|
5
|
+
|
|
6
|
+
from .ProtobufCollectionWrappers import _ProtobufListWrapper, _ProtobufMapWrapper
|
|
7
|
+
|
|
8
|
+
from .AngleDataVal import AngleDataVal
|
|
9
|
+
from .TrendPlungeVal import TrendPlungeVal
|
|
10
|
+
|
|
11
|
+
class ConeVal:
|
|
12
|
+
"""Simple wrapper for Cone with Pythonic getters and setters."""
|
|
13
|
+
|
|
14
|
+
_proto_class = DipsAPI_pb2.Cone
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def __init__(self, center: Optional[TrendPlungeVal] = None, cone_angle: Optional[AngleDataVal] = None, proto_message: Optional[Any] = None):
|
|
18
|
+
"""Initialize the Cone wrapper."""
|
|
19
|
+
# Initialize the protobuf message
|
|
20
|
+
if proto_message is not None:
|
|
21
|
+
self._proto_message = proto_message
|
|
22
|
+
else:
|
|
23
|
+
self._proto_message = self._proto_class()
|
|
24
|
+
|
|
25
|
+
if center is not None:
|
|
26
|
+
self._proto_message.Center.CopyFrom(center.to_proto())
|
|
27
|
+
self._center_wrapper = center
|
|
28
|
+
if cone_angle is not None:
|
|
29
|
+
self._proto_message.ConeAngle.CopyFrom(cone_angle.to_proto())
|
|
30
|
+
self._cone_angle_wrapper = cone_angle
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Properties
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def center(self) -> TrendPlungeVal:
|
|
37
|
+
"""Get the Center field as a wrapper."""
|
|
38
|
+
if not hasattr(self, '_center_wrapper'):
|
|
39
|
+
self._center_wrapper = TrendPlungeVal(proto_message=self._proto_message.Center)
|
|
40
|
+
return self._center_wrapper
|
|
41
|
+
|
|
42
|
+
@center.setter
|
|
43
|
+
def center(self, value: TrendPlungeVal) -> None:
|
|
44
|
+
"""Set the Center field to a wrapper."""
|
|
45
|
+
self._proto_message.Center.CopyFrom(value.to_proto())
|
|
46
|
+
# Update the cached wrapper if it exists
|
|
47
|
+
if hasattr(self, '_center_wrapper'):
|
|
48
|
+
self._center_wrapper._proto_message.CopyFrom(self._proto_message.Center)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def cone_angle(self) -> AngleDataVal:
|
|
53
|
+
"""Get the ConeAngle field as a wrapper."""
|
|
54
|
+
if not hasattr(self, '_cone_angle_wrapper'):
|
|
55
|
+
self._cone_angle_wrapper = AngleDataVal(proto_message=self._proto_message.ConeAngle)
|
|
56
|
+
return self._cone_angle_wrapper
|
|
57
|
+
|
|
58
|
+
@cone_angle.setter
|
|
59
|
+
def cone_angle(self, value: AngleDataVal) -> None:
|
|
60
|
+
"""Set the ConeAngle field to a wrapper."""
|
|
61
|
+
self._proto_message.ConeAngle.CopyFrom(value.to_proto())
|
|
62
|
+
# Update the cached wrapper if it exists
|
|
63
|
+
if hasattr(self, '_cone_angle_wrapper'):
|
|
64
|
+
self._cone_angle_wrapper._proto_message.CopyFrom(self._proto_message.ConeAngle)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# Utility methods
|
|
68
|
+
|
|
69
|
+
def to_proto(self):
|
|
70
|
+
"""Get the underlying protobuf message."""
|
|
71
|
+
return self._proto_message
|
|
72
|
+
|
|
73
|
+
@classmethod
|
|
74
|
+
def from_proto(cls, proto_message):
|
|
75
|
+
"""Create wrapper from existing protobuf message."""
|
|
76
|
+
wrapper = cls()
|
|
77
|
+
wrapper._proto_message.CopyFrom(proto_message)
|
|
78
|
+
return wrapper
|
|
79
|
+
|
|
80
|
+
def copy(self):
|
|
81
|
+
"""Create a copy of this wrapper."""
|
|
82
|
+
new_wrapper = self.__class__()
|
|
83
|
+
new_wrapper._proto_message.CopyFrom(self._proto_message)
|
|
84
|
+
return new_wrapper
|
|
85
|
+
|
|
86
|
+
def __str__(self) -> str:
|
|
87
|
+
"""String representation."""
|
|
88
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
89
|
+
|
|
90
|
+
def __repr__(self) -> str:
|
|
91
|
+
"""Detailed string representation."""
|
|
92
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""Generated wrapper for ContourEntityVisibility protobuf message."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional, List, Dict
|
|
4
|
+
from . import DipsAPI_pb2
|
|
5
|
+
|
|
6
|
+
from .ProtobufCollectionWrappers import _ProtobufListWrapper, _ProtobufMapWrapper
|
|
7
|
+
|
|
8
|
+
from .ContourOptionsVal import ContourOptionsVal
|
|
9
|
+
|
|
10
|
+
class ContourEntityVisibilityVal:
|
|
11
|
+
"""Simple wrapper for ContourEntityVisibility with Pythonic getters and setters."""
|
|
12
|
+
|
|
13
|
+
_proto_class = DipsAPI_pb2.ContourEntityVisibility
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def __init__(self, pole_vector_density_contour_options: Optional[ContourOptionsVal] = None, intersection_vector_density_contour_options: Optional[ContourOptionsVal] = None, quantitative_contour_options: Optional[ContourOptionsVal] = None, proto_message: Optional[Any] = None):
|
|
17
|
+
"""Initialize the ContourEntityVisibility wrapper."""
|
|
18
|
+
# Initialize the protobuf message
|
|
19
|
+
if proto_message is not None:
|
|
20
|
+
self._proto_message = proto_message
|
|
21
|
+
else:
|
|
22
|
+
self._proto_message = self._proto_class()
|
|
23
|
+
|
|
24
|
+
if pole_vector_density_contour_options is not None:
|
|
25
|
+
self._proto_message.PoleVectorDensityContourOptions.CopyFrom(pole_vector_density_contour_options.to_proto())
|
|
26
|
+
self._pole_vector_density_contour_options_wrapper = pole_vector_density_contour_options
|
|
27
|
+
if intersection_vector_density_contour_options is not None:
|
|
28
|
+
self._proto_message.IntersectionVectorDensityContourOptions.CopyFrom(intersection_vector_density_contour_options.to_proto())
|
|
29
|
+
self._intersection_vector_density_contour_options_wrapper = intersection_vector_density_contour_options
|
|
30
|
+
if quantitative_contour_options is not None:
|
|
31
|
+
self._proto_message.QuantitativeContourOptions.CopyFrom(quantitative_contour_options.to_proto())
|
|
32
|
+
self._quantitative_contour_options_wrapper = quantitative_contour_options
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# Properties
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def is_visible(self) -> bool:
|
|
39
|
+
"""Get the IsVisible field value."""
|
|
40
|
+
return self._proto_message.IsVisible
|
|
41
|
+
|
|
42
|
+
@is_visible.setter
|
|
43
|
+
def is_visible(self, value: bool) -> None:
|
|
44
|
+
"""Set the IsVisible field value."""
|
|
45
|
+
self._proto_message.IsVisible = value
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def contour_type(self) -> Any:
|
|
50
|
+
"""Get the ContourType field value."""
|
|
51
|
+
return self._proto_message.ContourType
|
|
52
|
+
|
|
53
|
+
@contour_type.setter
|
|
54
|
+
def contour_type(self, value: Any) -> None:
|
|
55
|
+
"""Set the ContourType field value."""
|
|
56
|
+
self._proto_message.ContourType = value
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def pole_vector_density_contour_options(self) -> ContourOptionsVal:
|
|
61
|
+
"""Get the PoleVectorDensityContourOptions field as a wrapper."""
|
|
62
|
+
if not hasattr(self, '_pole_vector_density_contour_options_wrapper'):
|
|
63
|
+
self._pole_vector_density_contour_options_wrapper = ContourOptionsVal(proto_message=self._proto_message.PoleVectorDensityContourOptions)
|
|
64
|
+
return self._pole_vector_density_contour_options_wrapper
|
|
65
|
+
|
|
66
|
+
@pole_vector_density_contour_options.setter
|
|
67
|
+
def pole_vector_density_contour_options(self, value: ContourOptionsVal) -> None:
|
|
68
|
+
"""Set the PoleVectorDensityContourOptions field to a wrapper."""
|
|
69
|
+
self._proto_message.PoleVectorDensityContourOptions.CopyFrom(value.to_proto())
|
|
70
|
+
# Update the cached wrapper if it exists
|
|
71
|
+
if hasattr(self, '_pole_vector_density_contour_options_wrapper'):
|
|
72
|
+
self._pole_vector_density_contour_options_wrapper._proto_message.CopyFrom(self._proto_message.PoleVectorDensityContourOptions)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def intersection_vector_density_contour_options(self) -> ContourOptionsVal:
|
|
77
|
+
"""Get the IntersectionVectorDensityContourOptions field as a wrapper."""
|
|
78
|
+
if not hasattr(self, '_intersection_vector_density_contour_options_wrapper'):
|
|
79
|
+
self._intersection_vector_density_contour_options_wrapper = ContourOptionsVal(proto_message=self._proto_message.IntersectionVectorDensityContourOptions)
|
|
80
|
+
return self._intersection_vector_density_contour_options_wrapper
|
|
81
|
+
|
|
82
|
+
@intersection_vector_density_contour_options.setter
|
|
83
|
+
def intersection_vector_density_contour_options(self, value: ContourOptionsVal) -> None:
|
|
84
|
+
"""Set the IntersectionVectorDensityContourOptions field to a wrapper."""
|
|
85
|
+
self._proto_message.IntersectionVectorDensityContourOptions.CopyFrom(value.to_proto())
|
|
86
|
+
# Update the cached wrapper if it exists
|
|
87
|
+
if hasattr(self, '_intersection_vector_density_contour_options_wrapper'):
|
|
88
|
+
self._intersection_vector_density_contour_options_wrapper._proto_message.CopyFrom(self._proto_message.IntersectionVectorDensityContourOptions)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def quantitative_contour_options(self) -> ContourOptionsVal:
|
|
93
|
+
"""Get the QuantitativeContourOptions field as a wrapper."""
|
|
94
|
+
if not hasattr(self, '_quantitative_contour_options_wrapper'):
|
|
95
|
+
self._quantitative_contour_options_wrapper = ContourOptionsVal(proto_message=self._proto_message.QuantitativeContourOptions)
|
|
96
|
+
return self._quantitative_contour_options_wrapper
|
|
97
|
+
|
|
98
|
+
@quantitative_contour_options.setter
|
|
99
|
+
def quantitative_contour_options(self, value: ContourOptionsVal) -> None:
|
|
100
|
+
"""Set the QuantitativeContourOptions field to a wrapper."""
|
|
101
|
+
self._proto_message.QuantitativeContourOptions.CopyFrom(value.to_proto())
|
|
102
|
+
# Update the cached wrapper if it exists
|
|
103
|
+
if hasattr(self, '_quantitative_contour_options_wrapper'):
|
|
104
|
+
self._quantitative_contour_options_wrapper._proto_message.CopyFrom(self._proto_message.QuantitativeContourOptions)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
# Utility methods
|
|
108
|
+
|
|
109
|
+
def to_proto(self):
|
|
110
|
+
"""Get the underlying protobuf message."""
|
|
111
|
+
return self._proto_message
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def from_proto(cls, proto_message):
|
|
115
|
+
"""Create wrapper from existing protobuf message."""
|
|
116
|
+
wrapper = cls()
|
|
117
|
+
wrapper._proto_message.CopyFrom(proto_message)
|
|
118
|
+
return wrapper
|
|
119
|
+
|
|
120
|
+
def copy(self):
|
|
121
|
+
"""Create a copy of this wrapper."""
|
|
122
|
+
new_wrapper = self.__class__()
|
|
123
|
+
new_wrapper._proto_message.CopyFrom(self._proto_message)
|
|
124
|
+
return new_wrapper
|
|
125
|
+
|
|
126
|
+
def __str__(self) -> str:
|
|
127
|
+
"""String representation."""
|
|
128
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|
|
129
|
+
|
|
130
|
+
def __repr__(self) -> str:
|
|
131
|
+
"""Detailed string representation."""
|
|
132
|
+
return f"{self.__class__.__name__}({self._proto_message})"
|