From afdd0937aab2681ca3912cfd9d95c7633fdcd7b9 Mon Sep 17 00:00:00 2001 From: Markus Scheidgen <markus.scheidgen@gmail.com> Date: Wed, 22 Jul 2020 22:32:19 +0200 Subject: [PATCH] Removed smart parser dep on old metainfo. --- .../nomadcore/md_data_access/MDDataAccess.py | 7 +++- .../metainfo_storage/MetaInfoStorage.py | 34 +++---------------- .../smart_parser/SmartParserCommon.py | 14 +++----- 3 files changed, 14 insertions(+), 41 deletions(-) diff --git a/common/python/nomadcore/md_data_access/MDDataAccess.py b/common/python/nomadcore/md_data_access/MDDataAccess.py index 60d9ebd..21dc648 100644 --- a/common/python/nomadcore/md_data_access/MDDataAccess.py +++ b/common/python/nomadcore/md_data_access/MDDataAccess.py @@ -26,7 +26,12 @@ import MDAnalysis.core.universe as mda_u import MDAnalysis.coordinates as mda_c import panedr import parmed as pmd -import pymolfile as pym +# this might not be available on all development systems, we still want to pass the import +# eventhough not all code will work +try: + import pymolfile as pym +except: + pass from nomadcore.md_data_access import GromosTopoObjects as gto from nomadcore.md_data_access.GromosTopoObjects import get_zipType, get_fileExtensions import io diff --git a/common/python/nomadcore/metainfo_storage/MetaInfoStorage.py b/common/python/nomadcore/metainfo_storage/MetaInfoStorage.py index 5d0a6fe..13ae298 100644 --- a/common/python/nomadcore/metainfo_storage/MetaInfoStorage.py +++ b/common/python/nomadcore/metainfo_storage/MetaInfoStorage.py @@ -7,16 +7,6 @@ import re import ast from collections import namedtuple -import metainfo - -COMMON_META_INFO_PATH = os.path.normpath(os.path.join( - os.path.dirname(os.path.abspath(metainfo.__file__)), - "common.nomadmetainfo.json")) - -PUBLIC_META_INFO_PATH = os.path.normpath(os.path.join( - os.path.dirname(os.path.abspath(metainfo.__file__)), - "public.nomadmetainfo.json")) - NOTEXCEPT = re.compile(r'[a-cf-zA-CF-Z!\?,{}\[\]]') def is_number(val): @@ -756,25 +746,8 @@ class JsonMetaInfo(object): Loads data and extracts values of items with specified superNames """ - def __init__(self, *args): - self.jsonList = None - for filepath in args: - try: - with open(filepath, encoding="utf-8") as f: - jsonDict = json.load(f) - except: - logging.exception("Error while loading file %s" % filepath) - raise - typeStr = jsonDict.get("type","nomad_meta_info_1_0") - typeRe = re.compile(r"nomad_meta_info_(?P<major>[0-9]+)_(?P<minor>[0-9]+)$") - m = typeRe.match(typeStr) - if not m: - raise Exception("unexpected type '%s', expected nomad_meta_info_1_0" % typeStr) - newJsonList = jsonDict.get("metaInfos",[]) - if self.jsonList: - self.jsonList = self.jsonList + newJsonList - else: - self.jsonList = newJsonList + def __init__(self, metainfo_env): + self.jsonList = metainfo_env.to_legacy_dict(metainfo_env.packages)['metaInfos'] def attributes(self, sectionname): attributes = {} @@ -889,7 +862,8 @@ if __name__ == "__main__": 'section_repository_info' ]} - jsonmetadata = JsonMetaInfo(COMMON_META_INFO_PATH, PUBLIC_META_INFO_PATH) + from nomad.datamodel.metainfo import m_env + jsonmetadata = JsonMetaInfo(m_env) updateDict = { 'startSection' : [['section_topology']], diff --git a/common/python/nomadcore/smart_parser/SmartParserCommon.py b/common/python/nomadcore/smart_parser/SmartParserCommon.py index 401b9ae..f662bfa 100644 --- a/common/python/nomadcore/smart_parser/SmartParserCommon.py +++ b/common/python/nomadcore/smart_parser/SmartParserCommon.py @@ -3,7 +3,6 @@ from nomadcore.unit_conversion.unit_conversion import convert_unit from nomadcore.caching_backend import CachingLevel from nomadcore.simple_parser import mainFunction from nomadcore.simple_parser import SimpleMatcher as SM -from nomadcore.metainfo_storage.MetaInfoStorage import COMMON_META_INFO_PATH, PUBLIC_META_INFO_PATH from nomadcore.metainfo_storage import MetaInfoStorage as mStore from nomadcore.metainfo_storage.MetaInfoStorage import strcleaner, strisinstance, literal_eval from nomadcore.smart_parser.SmartParserDictionary import getDict_MetaStrInDict, getList_MetaStrInDict, get_unitDict @@ -14,6 +13,8 @@ import os import re import io +from nomad.metainfo.legacy import LegacyMetainfoEnvironment + @contextmanager def open_section(parser, name): gid = parser.openSection(name) @@ -45,10 +46,7 @@ def conv_float(n, default=None): return None def get_metaInfo(self): - metaInfoEnv, warnings = loadJsonFile(filePath=self.META_INFO_PATH, - dependencyLoader=None, - extraArgsHandling=InfoKindEl.ADD_EXTRA_ARGS, - uri=None) + metaInfoEnv = LegacyMetainfoEnvironment.from_legacy_package_path(self.META_INFO_PATH) metaInfoEnv = set_section_metaInfoEnv(self.PARSERTAG, metaInfoEnv, self.sectionDict) metaInfoEnv = setDict_metaInfoEnv(metaInfoEnv, self.metaDicts) return metaInfoEnv @@ -170,11 +168,7 @@ class ParserBase(object): ]} self.META_INFO_PATH = metainfopath PARSER_INFO_DEFAULT = parserinfodef - jsonmetadata = mStore.JsonMetaInfo( - COMMON_META_INFO_PATH, - PUBLIC_META_INFO_PATH, - self.META_INFO_PATH - ) + jsonmetadata = mStore.JsonMetaInfo(LegacyMetainfoEnvironment.from_legacy_package_path(metainfopath)) self.metaStorage.build(jsonmetadata, 'section_run', exclude_dict) self.metaStorageRestrict.build(jsonmetadata, 'section_restricted_uri', exclude_dict) self.re_program_name = re_program_name -- GitLab