diff --git a/common/python/nomadcore/nomad_query.py b/common/python/nomadcore/nomad_query.py index b6d160fa26cecccef4bce1ac9fb92cdb2c608385..40fb7f79b1b2866aeb71fcc336ff931e3245b7a0 100644 --- a/common/python/nomadcore/nomad_query.py +++ b/common/python/nomadcore/nomad_query.py @@ -45,16 +45,23 @@ class NomadQueryResult(object): @author Benjamin Regler """ - def __init__(self, query, response): + def __init__(self, query, response, version=1.0): """Constructor. - + Arguments: + query {dict} -- Query information, i.e., query filter, context, + group_by, endpoint, and URL response {dict} -- Response of the Nomad Query API + + Keyword Arguments: + version {number} -- Version of the Nomad Query data file + (default: {1.0}) """ self._uri = [] self._query = query or {} self._timestamp = int(time.time()) self._response = response.get('result', {}) + self._version = version # Construct download path path = response.get('path', '') @@ -67,7 +74,6 @@ class NomadQueryResult(object): regex = re.compile(r'(?<=/[a-zA-Z0-9\-_]{3}/)[^\.]+') paths = response['data'].get('result', []) - uri = [] for path in paths: match = regex.search(path) if match: @@ -80,6 +86,14 @@ class NomadQueryResult(object): self._uri.append('nmd://' + '/'.join(groups)) + def version(self): + """Get the version of the Nomad Query data file. + + Returns: + float -- Version of the Nomad Query data file + """ + return self._version + def timestamp(self): """Get the timestamp of the query. @@ -127,6 +141,9 @@ class NomadQuery(object): @author Benjamin Regler """ + # Version of the Nomad Query API + __version__ = 1.0 + # Nomad API endpoint endpoint = 'https://analytics-toolkit.nomad-coe.eu/api/' @@ -168,7 +185,7 @@ class NomadQuery(object): """ if username: self._username = str(username) - self._base_path = os.path.join(self.user_path, self.username, + self._base_path = os.path.join(self.user_path, self._username, 'nomad-query') return self._username @@ -359,7 +376,7 @@ class NomadQuery(object): 'group_by': group_by.strip().lower(), 'url': url } - return NomadQueryResult(query, response) + return NomadQueryResult(query, response, self.__version__) def fetch(self, name_or_index='', resolve=False, **params): """Fetch stored query. @@ -466,6 +483,7 @@ class NomadQuery(object): data = { 'filename': filename, + 'version': self.__version__, 'query': query.query(), 'timestamp': timestamp, 'uri': query.uri() @@ -559,7 +577,7 @@ class NomadQuery(object): """ try: os.makedirs(path) - except OSError as exc: # Python >2.5 + except OSError as exc: # Python > 2.5 if exc.errno != errno.EEXIST or not os.path.isdir(path): return False return True