Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
specloc = "cached namespace information"
else:
manager = None
namespaces = available_namespaces()
specloc = "pynwb namespace information"
print("The file {} has no cached namespace information. "
"Falling back to {}.".format(path, specloc), file=sys.stderr)
elif args.nspath:
catalog = NamespaceCatalog(NWBGroupSpec, NWBDatasetSpec, NWBNamespace)
namespaces = catalog.load_namespaces(args.nspath)
if len(namespaces) == 0:
print("Could not load namespaces from file {}.".format(args.nspath), file=sys.stderr)
sys.exit(1)
tm = TypeMap(catalog)
manager = BuildManager(tm)
specloc = "--nspath namespace information"
else:
manager = None
namespaces = available_namespaces()
specloc = "pynwb namespace information"
if args.ns:
if args.ns in namespaces:
namespaces = [args.ns]
else:
print("The namespace {} could not be found in {}.".format(args.ns, specloc), file=sys.stderr)
ret = 1
continue
with NWBHDF5IO(path, mode='r', manager=manager) as io:
else:
return val
class ObjectMapperLegacy(ObjectMapper):
@ObjectMapper.constructor_arg('source')
def source_gettr(self, builder, manager):
if 'source' in builder.attributes:
return builder.attributes['source']
else:
return 'No known source'
class TypeMapLegacy(TypeMap):
def get_builder_dt(self, builder): # noqa: C901
'''
For a given builder, return the neurodata_type. In this legacy
TypeMap, the builder may have out-of-spec neurodata_type; this
function coerces this to a 2.0 compatible version.
'''
if builder.name == 'root':
return 'NWBFile'
elif builder.name == 'subject' and builder.parent.name == 'general':
return 'Subject'
else:
attrs = builder.attributes
ndt = attrs.get('neurodata_type')
def _get_resources():
# LEGACY: Needed to support legacy implementation.
return __get_resources()
# a global namespace catalog
global __NS_CATALOG
global __TYPE_MAP
__NS_CATALOG = NamespaceCatalog(NWBGroupSpec, NWBDatasetSpec, NWBNamespace)
from hdmf.build import TypeMap as TypeMap # noqa: E402
__TYPE_MAP = TypeMap(__NS_CATALOG)
@docval({'name': 'extensions', 'type': (str, TypeMap, list),
'doc': 'a path to a namespace, a TypeMap, or a list consisting paths to namespaces and TypeMaps',
'default': None},
returns="the namespaces loaded from the given file", rtype=tuple,
is_method=False)
def get_type_map(**kwargs):
'''
Get a BuildManager to use for I/O using the given extensions. If no extensions are provided,
return a BuildManager that uses the core namespace
'''
extensions = getargs('extensions', kwargs)
type_map = None
if extensions is None:
type_map = deepcopy(__TYPE_MAP)
{'name': 'extensions', 'type': (str, TypeMap, list),
'doc': 'a path to a namespace, a TypeMap, or a list consisting paths \
to namespaces and TypeMaps', 'default': None},
{'name': 'file', 'type': h5py.File, 'doc': 'a pre-existing h5py.File object', 'default': None},
{'name': 'comm', 'type': "Intracomm", 'doc': 'the MPI communicator to use for parallel I/O',
'default': None})
def __init__(self, **kwargs):
path, mode, manager, extensions, load_namespaces, file_obj, comm =\
popargs('path', 'mode', 'manager', 'extensions', 'load_namespaces', 'file', 'comm', kwargs)
if load_namespaces:
if manager is not None:
warn("loading namespaces from file - ignoring 'manager'")
if extensions is not None:
warn("loading namespaces from file - ignoring 'extensions' argument")
if 'w' in mode:
raise ValueError("cannot load namespaces from file when writing to it")
def get_type_map(**kwargs):
'''
Get a BuildManager to use for I/O using the given extensions. If no extensions are provided,
return a BuildManager that uses the core namespace
'''
extensions = getargs('extensions', kwargs)
type_map = None
if extensions is None:
type_map = deepcopy(__TYPE_MAP)
else:
if isinstance(extensions, TypeMap):
type_map = extensions
else:
type_map = deepcopy(__TYPE_MAP)
if isinstance(extensions, list):
for ext in extensions:
if isinstance(ext, str):
type_map.load_namespaces(ext)
elif isinstance(ext, TypeMap):
type_map.merge(ext)
else:
msg = 'extensions must be a list of paths to namespace specs or a TypeMaps'
raise ValueError(msg)
elif isinstance(extensions, str):
type_map.load_namespaces(extensions)
elif isinstance(extensions, TypeMap):
type_map.merge(extensions)