Fix: Windows DLL path lookup with Python >= 3.8
[babeltrace.git] / src / bindings / python / bt2 / bt2 / __init__.py
... / ...
CommitLineData
1# The MIT License (MIT)
2#
3# Copyright (c) 2017 Philippe Proulx <pproulx@efficios.com>
4#
5# Permission is hereby granted, free of charge, to any person obtaining a copy
6# of this software and associated documentation files (the "Software"), to deal
7# in the Software without restriction, including without limitation the rights
8# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9# copies of the Software, and to permit persons to whom the Software is
10# furnished to do so, subject to the following conditions:
11#
12# The above copyright notice and this permission notice shall be included in
13# all copies or substantial portions of the Software.
14#
15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21# THE SOFTWARE.
22
23import os
24import sys
25
26# With Python ≥ 3.8 on Windows, the DLL lookup mechanism to load native
27# modules doesn't search the `PATH` environment variable like everything
28# else on this platform.
29#
30# See <https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnew>.
31#
32# Restore this behaviour by doing it manually.
33if os.name == "nt" and sys.version_info >= (3, 8):
34 for path in os.getenv("PATH", "").split(os.pathsep):
35 if os.path.exists(path) and path != ".":
36 os.add_dll_directory(path)
37
38del os
39
40# import all public names
41from bt2.clock_class import ClockClassOffset
42from bt2.clock_snapshot import _ClockSnapshotConst
43from bt2.clock_snapshot import _UnknownClockSnapshot
44from bt2.component import _SourceComponentClassConst
45from bt2.component import _FilterComponentClassConst
46from bt2.component import _SinkComponentClassConst
47from bt2.component import _SourceComponentConst
48from bt2.component import _FilterComponentConst
49from bt2.component import _SinkComponentConst
50from bt2.component import _UserSourceComponent
51from bt2.component import _UserFilterComponent
52from bt2.component import _UserSinkComponent
53from bt2.component_descriptor import ComponentDescriptor
54from bt2.error import ComponentClassType
55from bt2.error import _ErrorCause
56from bt2.error import _ComponentErrorCause
57from bt2.error import _ComponentClassErrorCause
58from bt2.error import _MessageIteratorErrorCause
59from bt2.error import _Error
60from bt2.event_class import EventClassLogLevel
61from bt2.field import _BoolField
62from bt2.field import _BitArrayField
63from bt2.field import _IntegerField
64from bt2.field import _UnsignedIntegerField
65from bt2.field import _SignedIntegerField
66from bt2.field import _RealField
67from bt2.field import _SinglePrecisionRealField
68from bt2.field import _DoublePrecisionRealField
69from bt2.field import _EnumerationField
70from bt2.field import _UnsignedEnumerationField
71from bt2.field import _SignedEnumerationField
72from bt2.field import _StringField
73from bt2.field import _StructureField
74from bt2.field import _OptionField
75from bt2.field import _VariantField
76from bt2.field import _ArrayField
77from bt2.field import _StaticArrayField
78from bt2.field import _DynamicArrayField
79from bt2.field import _BoolFieldConst
80from bt2.field import _BitArrayFieldConst
81from bt2.field import _IntegerFieldConst
82from bt2.field import _UnsignedIntegerFieldConst
83from bt2.field import _SignedIntegerFieldConst
84from bt2.field import _RealFieldConst
85from bt2.field import _SinglePrecisionRealFieldConst
86from bt2.field import _DoublePrecisionRealFieldConst
87from bt2.field import _EnumerationFieldConst
88from bt2.field import _UnsignedEnumerationFieldConst
89from bt2.field import _SignedEnumerationFieldConst
90from bt2.field import _StringFieldConst
91from bt2.field import _StructureFieldConst
92from bt2.field import _OptionFieldConst
93from bt2.field import _VariantFieldConst
94from bt2.field import _ArrayFieldConst
95from bt2.field import _StaticArrayFieldConst
96from bt2.field import _DynamicArrayFieldConst
97from bt2.field_class import IntegerDisplayBase
98from bt2.field_class import _BoolFieldClass
99from bt2.field_class import _BitArrayFieldClass
100from bt2.field_class import _IntegerFieldClass
101from bt2.field_class import _UnsignedIntegerFieldClass
102from bt2.field_class import _SignedIntegerFieldClass
103from bt2.field_class import _RealFieldClass
104from bt2.field_class import _EnumerationFieldClass
105from bt2.field_class import _UnsignedEnumerationFieldClass
106from bt2.field_class import _SignedEnumerationFieldClass
107from bt2.field_class import _StringFieldClass
108from bt2.field_class import _StructureFieldClass
109from bt2.field_class import _OptionFieldClass
110from bt2.field_class import _OptionWithSelectorFieldClass
111from bt2.field_class import _OptionWithBoolSelectorFieldClass
112from bt2.field_class import _OptionWithIntegerSelectorFieldClass
113from bt2.field_class import _OptionWithUnsignedIntegerSelectorFieldClass
114from bt2.field_class import _OptionWithSignedIntegerSelectorFieldClass
115from bt2.field_class import _VariantFieldClass
116from bt2.field_class import _VariantFieldClassWithoutSelector
117from bt2.field_class import _VariantFieldClassWithIntegerSelector
118from bt2.field_class import _VariantFieldClassWithUnsignedIntegerSelector
119from bt2.field_class import _VariantFieldClassWithSignedIntegerSelector
120from bt2.field_class import _ArrayFieldClass
121from bt2.field_class import _StaticArrayFieldClass
122from bt2.field_class import _DynamicArrayFieldClass
123from bt2.field_class import _DynamicArrayWithLengthFieldFieldClass
124from bt2.field_class import _BoolFieldClassConst
125from bt2.field_class import _BitArrayFieldClassConst
126from bt2.field_class import _IntegerFieldClassConst
127from bt2.field_class import _UnsignedIntegerFieldClassConst
128from bt2.field_class import _SignedIntegerFieldClassConst
129from bt2.field_class import _RealFieldClassConst
130from bt2.field_class import _EnumerationFieldClassConst
131from bt2.field_class import _UnsignedEnumerationFieldClassConst
132from bt2.field_class import _SignedEnumerationFieldClassConst
133from bt2.field_class import _StringFieldClassConst
134from bt2.field_class import _StructureFieldClassConst
135from bt2.field_class import _OptionFieldClassConst
136from bt2.field_class import _OptionWithSelectorFieldClassConst
137from bt2.field_class import _OptionWithBoolSelectorFieldClassConst
138from bt2.field_class import _OptionWithIntegerSelectorFieldClassConst
139from bt2.field_class import _OptionWithUnsignedIntegerSelectorFieldClassConst
140from bt2.field_class import _OptionWithSignedIntegerSelectorFieldClassConst
141from bt2.field_class import _VariantFieldClassConst
142from bt2.field_class import _VariantFieldClassWithoutSelectorConst
143from bt2.field_class import _VariantFieldClassWithIntegerSelectorConst
144from bt2.field_class import _VariantFieldClassWithUnsignedIntegerSelectorConst
145from bt2.field_class import _VariantFieldClassWithSignedIntegerSelectorConst
146from bt2.field_class import _ArrayFieldClassConst
147from bt2.field_class import _StaticArrayFieldClassConst
148from bt2.field_class import _DynamicArrayFieldClassConst
149from bt2.field_class import _DynamicArrayWithLengthFieldFieldClassConst
150from bt2.field_path import FieldPathScope
151from bt2.field_path import _IndexFieldPathItem
152from bt2.field_path import _CurrentArrayElementFieldPathItem
153from bt2.field_path import _CurrentOptionContentFieldPathItem
154from bt2.graph import Graph
155from bt2.integer_range_set import SignedIntegerRange
156from bt2.integer_range_set import UnsignedIntegerRange
157from bt2.integer_range_set import SignedIntegerRangeSet
158from bt2.integer_range_set import UnsignedIntegerRangeSet
159from bt2.integer_range_set import _SignedIntegerRangeConst
160from bt2.integer_range_set import _UnsignedIntegerRangeConst
161from bt2.integer_range_set import _SignedIntegerRangeSetConst
162from bt2.integer_range_set import _UnsignedIntegerRangeSetConst
163from bt2.interrupter import Interrupter
164from bt2.logging import LoggingLevel
165from bt2.logging import get_minimal_logging_level
166from bt2.logging import get_global_logging_level
167from bt2.logging import set_global_logging_level
168from bt2.message import _EventMessage
169from bt2.message import _PacketBeginningMessage
170from bt2.message import _PacketEndMessage
171from bt2.message import _StreamBeginningMessage
172from bt2.message import _StreamEndMessage
173from bt2.message import _MessageIteratorInactivityMessage
174from bt2.message import _DiscardedEventsMessage
175from bt2.message import _DiscardedPacketsMessage
176from bt2.message import _EventMessageConst
177from bt2.message import _PacketBeginningMessageConst
178from bt2.message import _PacketEndMessageConst
179from bt2.message import _StreamBeginningMessageConst
180from bt2.message import _StreamEndMessageConst
181from bt2.message import _MessageIteratorInactivityMessageConst
182from bt2.message import _DiscardedEventsMessageConst
183from bt2.message import _DiscardedPacketsMessageConst
184from bt2.message_iterator import _UserMessageIterator
185from bt2.mip import get_greatest_operative_mip_version
186from bt2.mip import get_maximal_mip_version
187from bt2.plugin import find_plugins_in_path
188from bt2.plugin import find_plugins
189from bt2.plugin import find_plugin
190from bt2.py_plugin import plugin_component_class
191from bt2.py_plugin import register_plugin
192from bt2.query_executor import QueryExecutor
193from bt2.trace_collection_message_iterator import AutoSourceComponentSpec
194from bt2.trace_collection_message_iterator import ComponentSpec
195from bt2.trace_collection_message_iterator import TraceCollectionMessageIterator
196from bt2.value import create_value
197from bt2.value import BoolValue
198from bt2.value import _IntegerValue
199from bt2.value import UnsignedIntegerValue
200from bt2.value import SignedIntegerValue
201from bt2.value import RealValue
202from bt2.value import StringValue
203from bt2.value import ArrayValue
204from bt2.value import MapValue
205from bt2.value import _BoolValueConst
206from bt2.value import _IntegerValueConst
207from bt2.value import _UnsignedIntegerValueConst
208from bt2.value import _SignedIntegerValueConst
209from bt2.value import _RealValueConst
210from bt2.value import _StringValueConst
211from bt2.value import _ArrayValueConst
212from bt2.value import _MapValueConst
213from bt2.version import __version__
214
215if (sys.version_info.major, sys.version_info.minor) != (3, 4):
216
217 def _del_global_name(name):
218 if name in globals():
219 del globals()[name]
220
221 # remove private module names from the package
222 _del_global_name('_native_bt')
223 _del_global_name('clock_class')
224 _del_global_name('clock_snapshot')
225 _del_global_name('component')
226 _del_global_name('connection')
227 _del_global_name('error')
228 _del_global_name('event')
229 _del_global_name('event_class')
230 _del_global_name('field')
231 _del_global_name('field_class')
232 _del_global_name('field_path')
233 _del_global_name('graph')
234 _del_global_name('integer_range_set')
235 _del_global_name('interrupter')
236 _del_global_name('logging')
237 _del_global_name('message')
238 _del_global_name('message_iterator')
239 _del_global_name('native_bt')
240 _del_global_name('object')
241 _del_global_name('packet')
242 _del_global_name('plugin')
243 _del_global_name('port')
244 _del_global_name('py_plugin')
245 _del_global_name('query_executor')
246 _del_global_name('stream')
247 _del_global_name('stream_class')
248 _del_global_name('trace')
249 _del_global_name('trace_class')
250 _del_global_name('trace_collection_message_iterator')
251 _del_global_name('utils')
252 _del_global_name('value')
253 _del_global_name('version')
254
255 # remove private `_del_global_name` name from the package
256 del _del_global_name
257
258
259# remove sys module name from the package
260del sys
261
262
263class _MemoryError(_Error):
264 '''Raised when an operation fails due to memory issues.'''
265
266
267class UnknownObject(Exception):
268 """
269 Raised when a component class handles a query for an object it doesn't
270 know about.
271 """
272
273 pass
274
275
276class _OverflowError(_Error, OverflowError):
277 pass
278
279
280class TryAgain(Exception):
281 pass
282
283
284class Stop(StopIteration):
285 pass
286
287
288class _IncompleteUserClass(Exception):
289 pass
290
291
292def _init_and_register_exit():
293 from bt2 import native_bt
294 import atexit
295
296 atexit.register(native_bt.bt2_exit_handler)
297 native_bt.bt2_init_from_bt2()
298
299
300_init_and_register_exit()
301
302# remove private `_init_and_register_exit` name from the package
303del _init_and_register_exit
This page took 0.023155 seconds and 4 git commands to generate.