1 # SPDX-License-Identifier: MIT
3 # Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
8 # With Python ≥ 3.8 on Windows, the DLL lookup mechanism to load native
9 # modules doesn't search the `PATH` environment variable like everything
10 # else on this platform.
12 # See <https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnew>.
14 # Restore this behaviour by doing it manually.
15 if os
.name
== "nt" and sys
.version_info
>= (3, 8):
16 for path
in os
.getenv("PATH", "").split(os
.pathsep
):
17 if os
.path
.exists(path
) and path
!= ".":
18 os
.add_dll_directory(path
)
23 from bt2
.mip
import get_maximal_mip_version
, get_greatest_operative_mip_version
24 from bt2
.error
import (
30 _ComponentClassErrorCause
,
31 _MessageIteratorErrorCause
,
33 from bt2
.field
import (
56 _UnsignedIntegerField
,
57 _EnumerationFieldConst
,
58 _StaticArrayFieldConst
,
59 _DynamicArrayFieldConst
,
60 _SignedEnumerationField
,
61 _SignedIntegerFieldConst
,
62 _DoublePrecisionRealField
,
63 _SinglePrecisionRealField
,
64 _UnsignedEnumerationField
,
65 _UnsignedIntegerFieldConst
,
66 _SignedEnumerationFieldConst
,
67 _DoublePrecisionRealFieldConst
,
68 _SinglePrecisionRealFieldConst
,
69 _UnsignedEnumerationFieldConst
,
71 from bt2
.graph
import Graph
72 from bt2
.utils
import Stop
, TryAgain
, UnknownObject
, _OverflowError
73 from bt2
.value
import (
89 _SignedIntegerValueConst
,
90 _UnsignedIntegerValueConst
,
92 from bt2
.plugin
import find_plugin
, find_plugins
, find_plugins_in_path
93 from bt2
.logging
import (
95 get_global_logging_level
,
96 set_global_logging_level
,
97 get_minimal_logging_level
,
99 from bt2
.message
import (
104 _PacketEndMessageConst
,
105 _StreamEndMessageConst
,
106 _DiscardedEventsMessage
,
107 _PacketBeginningMessage
,
108 _StreamBeginningMessage
,
109 _DiscardedPacketsMessage
,
110 _DiscardedEventsMessageConst
,
111 _PacketBeginningMessageConst
,
112 _StreamBeginningMessageConst
,
113 _DiscardedPacketsMessageConst
,
114 _MessageIteratorInactivityMessage
,
115 _MessageIteratorInactivityMessageConst
,
117 from bt2
.version
import __version__
118 from bt2
.component
import (
121 _IncompleteUserClass
,
122 _UserFilterComponent
,
123 _UserSourceComponent
,
124 _FilterComponentConst
,
125 _SourceComponentConst
,
126 _SinkComponentClassConst
,
127 _FilterComponentClassConst
,
128 _SourceComponentClassConst
,
130 from bt2
.py_plugin
import register_plugin
, plugin_component_class
131 from bt2
.field_path
import (
134 _CurrentArrayElementFieldPathItem
,
135 _CurrentOptionContentFieldPathItem
,
138 # import all public names
139 from bt2
.clock_class
import ClockClassOffset
140 from bt2
.event_class
import EventClassLogLevel
141 from bt2
.field_class
import (
151 _BoolFieldClassConst
,
152 _RealFieldClassConst
,
153 _StructureFieldClass
,
154 _ArrayFieldClassConst
,
155 _EnumerationFieldClass
,
156 _OptionFieldClassConst
,
157 _StaticArrayFieldClass
,
158 _StringFieldClassConst
,
159 _DynamicArrayFieldClass
,
160 _IntegerFieldClassConst
,
161 _VariantFieldClassConst
,
162 _BitArrayFieldClassConst
,
163 _SignedIntegerFieldClass
,
164 _StructureFieldClassConst
,
165 _UnsignedIntegerFieldClass
,
166 _EnumerationFieldClassConst
,
167 _StaticArrayFieldClassConst
,
168 _DynamicArrayFieldClassConst
,
169 _SignedEnumerationFieldClass
,
170 _OptionWithSelectorFieldClass
,
171 _SignedIntegerFieldClassConst
,
172 _UnsignedEnumerationFieldClass
,
173 _UnsignedIntegerFieldClassConst
,
174 _OptionWithBoolSelectorFieldClass
,
175 _SignedEnumerationFieldClassConst
,
176 _VariantFieldClassWithoutSelector
,
177 _OptionWithSelectorFieldClassConst
,
178 _UnsignedEnumerationFieldClassConst
,
179 _OptionWithIntegerSelectorFieldClass
,
180 _VariantFieldClassWithIntegerSelector
,
181 _DynamicArrayWithLengthFieldFieldClass
,
182 _OptionWithBoolSelectorFieldClassConst
,
183 _VariantFieldClassWithoutSelectorConst
,
184 _OptionWithIntegerSelectorFieldClassConst
,
185 _OptionWithSignedIntegerSelectorFieldClass
,
186 _VariantFieldClassWithIntegerSelectorConst
,
187 _DynamicArrayWithLengthFieldFieldClassConst
,
188 _VariantFieldClassWithSignedIntegerSelector
,
189 _OptionWithUnsignedIntegerSelectorFieldClass
,
190 _VariantFieldClassWithUnsignedIntegerSelector
,
191 _OptionWithSignedIntegerSelectorFieldClassConst
,
192 _VariantFieldClassWithSignedIntegerSelectorConst
,
193 _OptionWithUnsignedIntegerSelectorFieldClassConst
,
194 _VariantFieldClassWithUnsignedIntegerSelectorConst
,
196 from bt2
.interrupter
import Interrupter
197 from bt2
.clock_snapshot
import _ClockSnapshotConst
, _UnknownClockSnapshot
198 from bt2
.query_executor
import QueryExecutor
199 from bt2
.message_iterator
import _UserMessageIterator
200 from bt2
.integer_range_set
import (
202 UnsignedIntegerRange
,
203 SignedIntegerRangeSet
,
204 UnsignedIntegerRangeSet
,
205 _SignedIntegerRangeConst
,
206 _UnsignedIntegerRangeConst
,
207 _SignedIntegerRangeSetConst
,
208 _UnsignedIntegerRangeSetConst
,
210 from bt2
.component_descriptor
import ComponentDescriptor
211 from bt2
.trace_collection_message_iterator
import (
213 AutoSourceComponentSpec
,
214 TraceCollectionMessageIterator
,
217 if (sys
.version_info
.major
, sys
.version_info
.minor
) != (3, 4):
219 def _del_global_name(name
):
220 if name
in globals():
223 # remove private module names from the package
224 _del_global_name("_native_bt")
225 _del_global_name("clock_class")
226 _del_global_name("clock_snapshot")
227 _del_global_name("component")
228 _del_global_name("connection")
229 _del_global_name("error")
230 _del_global_name("event")
231 _del_global_name("event_class")
232 _del_global_name("field")
233 _del_global_name("field_class")
234 _del_global_name("field_path")
235 _del_global_name("graph")
236 _del_global_name("integer_range_set")
237 _del_global_name("interrupter")
238 _del_global_name("logging")
239 _del_global_name("message")
240 _del_global_name("message_iterator")
241 _del_global_name("native_bt")
242 _del_global_name("object")
243 _del_global_name("packet")
244 _del_global_name("plugin")
245 _del_global_name("port")
246 _del_global_name("py_plugin")
247 _del_global_name("query_executor")
248 _del_global_name("stream")
249 _del_global_name("stream_class")
250 _del_global_name("trace")
251 _del_global_name("trace_class")
252 _del_global_name("trace_collection_message_iterator")
253 _del_global_name("utils")
254 _del_global_name("value")
255 _del_global_name("version")
257 # remove private `_del_global_name` name from the package
261 # remove sys module name from the package
265 def _init_and_register_exit():
268 from bt2
import native_bt
270 atexit
.register(native_bt
.bt2_exit_handler
)
271 native_bt
.bt2_init_from_bt2()
274 _init_and_register_exit()
276 # remove private `_init_and_register_exit` name from the package
277 del _init_and_register_exit