Skip to content

Commit

Permalink
Merge branch 'python' into gen
Browse files Browse the repository at this point in the history
  • Loading branch information
tmadlener committed Nov 8, 2023
2 parents dd3b7f5 + 40dbbc3 commit f253fba
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 39 deletions.
65 changes: 29 additions & 36 deletions python/podio/__init__.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,33 @@
"""Python module for the podio EDM toolkit and its utilities"""
from .__version__ import __version__

import ROOT # pylint: disable=wrong-import-order

# Track whether we were able to dynamially load the library that is built by
# podio and enable certain features of the bindings only if they are actually
# available.
_DYNAMIC_LIBS_LOADED = False

# Check if we can locate the dictionary wthout loading it as this allows us to
# silence any ouptput. If we can find it, we can also safely load it
if ROOT.gSystem.DynamicPathName("libpodioDict.so", True):
ROOT.gSystem.Load("libpodioDict.so")
# Try to load podio, this is equivalent to trying to load libpodio.so and will
# error if libpodio.so is not found but work if it's found
try:
from ROOT import podio # noqa: F401

_DYNAMIC_LIBS_LOADED = True

if _DYNAMIC_LIBS_LOADED:
from .frame import Frame
from . import root_io, reading

try:
# We try to import the sio bindings which may fail if ROOT is not able to
# load the dictionary in this case they have most likely not been built and
# we just move on
from . import sio_io
except ImportError:
pass

from . import EventStore

__all__ = [
"__version__",
"Frame",
"root_io",
"sio_io",
"reading",
"EventStore"
]
except ImportError:
print('Unable to load podio, make sure that libpodio.so is in LD_LIBRARY_PATH')
raise

from .frame import Frame
from . import root_io, reading

try:
# We try to import the sio bindings which may fail if ROOT is not able to
# load the dictionary. In this case they have most likely not been built and
# we just move on
from . import sio_io
except ImportError:
pass

from . import EventStore


__all__ = [
"__version__",
"Frame",
"root_io",
"sio_io",
"reading",
"EventStore"
]
6 changes: 3 additions & 3 deletions python/podio/sio_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"""Python module for reading sio files containing podio Frames"""

from ROOT import gSystem
ret = gSystem.Load('libpodioSioIO') # noqa: 402
# Return values: -1 when it doesn't exist and -2 when there is a version mismatch
if ret < 0:
if gSystem.DynamicPathName("libpodioSioIO.so", True):
gSystem.Load('libpodioSioIO') # noqa: 402
else:
raise ImportError('Error when importing libpodioSioIO')
from ROOT import podio # noqa: 402 # pylint: disable=wrong-import-position

Expand Down

0 comments on commit f253fba

Please sign in to comment.