nomad-parser-plugins-workflow 1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. nomad_parser_plugins_workflow-1.0.dist-info/LICENSE +202 -0
  2. nomad_parser_plugins_workflow-1.0.dist-info/METADATA +319 -0
  3. nomad_parser_plugins_workflow-1.0.dist-info/RECORD +58 -0
  4. nomad_parser_plugins_workflow-1.0.dist-info/WHEEL +5 -0
  5. nomad_parser_plugins_workflow-1.0.dist-info/entry_points.txt +11 -0
  6. nomad_parser_plugins_workflow-1.0.dist-info/top_level.txt +1 -0
  7. workflowparsers/__init__.py +314 -0
  8. workflowparsers/aflow/__init__.py +19 -0
  9. workflowparsers/aflow/__main__.py +31 -0
  10. workflowparsers/aflow/metainfo/__init__.py +19 -0
  11. workflowparsers/aflow/metainfo/aflow.py +1240 -0
  12. workflowparsers/aflow/parser.py +741 -0
  13. workflowparsers/asr/__init__.py +19 -0
  14. workflowparsers/asr/__main__.py +31 -0
  15. workflowparsers/asr/metainfo/__init__.py +19 -0
  16. workflowparsers/asr/metainfo/asr.py +306 -0
  17. workflowparsers/asr/parser.py +266 -0
  18. workflowparsers/atomate/__init__.py +19 -0
  19. workflowparsers/atomate/__main__.py +31 -0
  20. workflowparsers/atomate/metainfo/__init__.py +19 -0
  21. workflowparsers/atomate/metainfo/atomate.py +395 -0
  22. workflowparsers/atomate/parser.py +357 -0
  23. workflowparsers/elastic/__init__.py +19 -0
  24. workflowparsers/elastic/__main__.py +31 -0
  25. workflowparsers/elastic/metainfo/__init__.py +19 -0
  26. workflowparsers/elastic/metainfo/elastic.py +364 -0
  27. workflowparsers/elastic/parser.py +798 -0
  28. workflowparsers/fhivibes/__init__.py +19 -0
  29. workflowparsers/fhivibes/__main__.py +31 -0
  30. workflowparsers/fhivibes/metainfo/__init__.py +19 -0
  31. workflowparsers/fhivibes/metainfo/fhi_vibes.py +898 -0
  32. workflowparsers/fhivibes/parser.py +566 -0
  33. workflowparsers/lobster/__init__.py +19 -0
  34. workflowparsers/lobster/__main__.py +31 -0
  35. workflowparsers/lobster/metainfo/__init__.py +19 -0
  36. workflowparsers/lobster/metainfo/lobster.py +446 -0
  37. workflowparsers/lobster/parser.py +618 -0
  38. workflowparsers/phonopy/__init__.py +19 -0
  39. workflowparsers/phonopy/__main__.py +31 -0
  40. workflowparsers/phonopy/calculator.py +260 -0
  41. workflowparsers/phonopy/metainfo/__init__.py +19 -0
  42. workflowparsers/phonopy/metainfo/phonopy.py +83 -0
  43. workflowparsers/phonopy/parser.py +583 -0
  44. workflowparsers/quantum_espresso_epw/__init__.py +19 -0
  45. workflowparsers/quantum_espresso_epw/__main__.py +31 -0
  46. workflowparsers/quantum_espresso_epw/metainfo/__init__.py +19 -0
  47. workflowparsers/quantum_espresso_epw/metainfo/quantum_espresso_epw.py +579 -0
  48. workflowparsers/quantum_espresso_epw/parser.py +583 -0
  49. workflowparsers/quantum_espresso_phonon/__init__.py +19 -0
  50. workflowparsers/quantum_espresso_phonon/__main__.py +31 -0
  51. workflowparsers/quantum_espresso_phonon/metainfo/__init__.py +19 -0
  52. workflowparsers/quantum_espresso_phonon/metainfo/quantum_espresso_phonon.py +389 -0
  53. workflowparsers/quantum_espresso_phonon/parser.py +483 -0
  54. workflowparsers/quantum_espresso_xspectra/__init__.py +19 -0
  55. workflowparsers/quantum_espresso_xspectra/__main__.py +31 -0
  56. workflowparsers/quantum_espresso_xspectra/metainfo/__init__.py +19 -0
  57. workflowparsers/quantum_espresso_xspectra/metainfo/quantum_espresso_xspectra.py +290 -0
  58. workflowparsers/quantum_espresso_xspectra/parser.py +586 -0
@@ -0,0 +1,314 @@
1
+ #
2
+ # Copyright The NOMAD Authors.
3
+ #
4
+ # This file is part of NOMAD.
5
+ # See https://nomad-lab.eu for further info.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ from pydantic import Field
20
+ from typing import Optional
21
+
22
+ from nomad.config.models.plugins import ParserEntryPoint
23
+
24
+
25
+ class EntryPoint(ParserEntryPoint):
26
+ parser_class_name: str = Field(
27
+ description="""
28
+ The fully qualified name of the Python class that implements the parser.
29
+ This class must have a function `def parse(self, mainfile, archive, logger)`.
30
+ """
31
+ )
32
+ code_name: Optional[str]
33
+ code_homepage: Optional[str]
34
+ code_category: Optional[str]
35
+ metadata: Optional[dict] = Field(
36
+ description="""
37
+ Metadata passed to the UI. Deprecated. """
38
+ )
39
+
40
+ def load(self):
41
+ from nomad.parsing import MatchingParserInterface
42
+
43
+ return MatchingParserInterface(**self.dict())
44
+
45
+
46
+ aflow_parser_entry_point = EntryPoint(
47
+ name='parsers/aflow',
48
+ aliases=['parsers/aflow'],
49
+ description='NOMAD parser for AFLOW.',
50
+ python_package='workflowparsers.aflow',
51
+ mainfile_contents_re=(
52
+ r'^\s*\[AFLOW\] \*+\s*\[AFLOW\]\s*\[AFLOW\] .o. .o88o.'
53
+ r"oooo\s*\[AFLOW\] .888. 888 `` `888\s*\[AFLOW\] .8'888. o888oo 888 .ooooo. oooo"
54
+ r"oooo ooo\s*\[AFLOW\] .8' `888. 888 888 d88' `88b `88."
55
+ r"`88. .8'\s*\[AFLOW\] .88ooo8888. 888 888 888 888 `88..]88..8'\s*\[AFLOW\] .8' `888. 888 888 888 888 `888'`888'\s*\[AFLOW\] o88o o8888o"
56
+ r"o888o o888o `Y8bod8P' `8' `8' .in|^\s*\{\"aurl\"\:\"aflowlib\.duke\.edu\:AFLOWDATA"
57
+ ),
58
+ mainfile_mime_re='(application/json)|(text/.*)',
59
+ mainfile_name_re=r'.*aflowlib\.json.*',
60
+ mainfile_alternative=True,
61
+ supported_compressions=['gz', 'bz2', 'xz'],
62
+ parser_class_name='workflowparsers.aflow.AFLOWParser',
63
+ code_name='AFLOW',
64
+ code_homepage='http://www.aflowlib.org/',
65
+ code_category='Workflow manager',
66
+ metadata={
67
+ 'codeCategory': 'Workflow manager',
68
+ 'codeLabel': 'AFLOW',
69
+ 'codeLabelStyle': 'all capitals',
70
+ 'codeName': 'aflow',
71
+ 'codeUrl': 'http://www.aflowlib.org/',
72
+ 'parserDirName': 'dependencies/workflow/workflowparsers/aflow/',
73
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
74
+ 'parserSpecific': '',
75
+ 'preamble': '',
76
+ 'status': 'production',
77
+ 'tableOfFiles': '|Input Filename| Description|\n|--- | --- |\n|`aflowlib.json` | **Mainfile:** a json file containing the aflow output|\n|`aflow.ael.out`| plain text, elastic outputs|\n|`aflow.agl.out` | plain text, Debye model output|\n',
78
+ },
79
+ )
80
+
81
+ asr_parser_entry_point = EntryPoint(
82
+ name='parsers/asr',
83
+ aliases=['parsers/asr'],
84
+ description='NOMAD parser for ASR.',
85
+ python_package='workflowparsers.asr',
86
+ mainfile_contents_re='"name": "ASR"',
87
+ mainfile_mime_re='(application/json)|(text/.*)',
88
+ mainfile_name_re=r'.*archive_.*\.json',
89
+ parser_class_name='workflowparsers.asr.ASRParser',
90
+ code_name='ASR',
91
+ code_homepage='https://asr.readthedocs.io/en/latest/index.html',
92
+ code_category='Workflow manager',
93
+ metadata={
94
+ 'codeCategory': 'Workflow manager',
95
+ 'codeLabel': 'ASR',
96
+ 'codeLabelStyle': 'all in capitals',
97
+ 'codeName': 'asr',
98
+ 'codeUrl': 'https://asr.readthedocs.io/en/latest/index.html',
99
+ 'parserDirName': 'dependencies/workflow/workflowparsers/asr/',
100
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
101
+ 'parserSpecific': '',
102
+ 'preamble': '',
103
+ 'status': 'production',
104
+ 'tableOfFiles': '|Input Filename| Description|\n|--- | --- |\n|`archive*.json` | **Mainfile:** a json file w/ **user-defined** name|\n',
105
+ },
106
+ )
107
+
108
+ atomate_parser_entry_point = EntryPoint(
109
+ name='parsers/atomate',
110
+ aliases=['parsers/atomate'],
111
+ description='NOMAD parser for ATOMATE.',
112
+ python_package='workflowparsers.atomate',
113
+ mainfile_contents_re='"pymatgen_version":',
114
+ mainfile_mime_re='(application/json)|(text/.*)',
115
+ mainfile_name_re=r'.*mp.+materials\.json',
116
+ parser_class_name='workflowparsers.atomate.AtomateParser',
117
+ code_name='Atomate',
118
+ code_homepage='https://www.atomate.org/',
119
+ code_category='Workflow manager',
120
+ metadata={
121
+ 'codeCategory': 'Workflow manager',
122
+ 'codeLabel': 'Atomate',
123
+ 'codeLabelStyle': 'Capitals: A',
124
+ 'codeName': 'atomate',
125
+ 'codeUrl': 'https://www.atomate.org/',
126
+ 'parserDirName': 'dependencies/workflow/workflowparsers/mp/',
127
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
128
+ 'parserSpecific': '',
129
+ 'preamble': '',
130
+ 'status': 'production',
131
+ 'tableOfFiles': '|Input Filename| Description|\n|--- | --- |\n|`*materials.json` | **Mainfile:** a json file containing system info|\n|`*.json` | json files containing workflow results|\n',
132
+ },
133
+ )
134
+
135
+ elastic_parser_entry_point = EntryPoint(
136
+ name='parsers/elastic',
137
+ aliases=['parsers/elastic'],
138
+ description='NOMAD parser for ELASTIC.',
139
+ python_package='workflowparsers.elastic',
140
+ mainfile_contents_re=r'\s*Order of elastic constants\s*=\s*[0-9]+\s*',
141
+ mainfile_name_re='.*/INFO_ElaStic',
142
+ parser_class_name='workflowparsers.elastic.ElasticParser',
143
+ code_name='ElaStic',
144
+ code_homepage='http://exciting.wikidot.com/elastic',
145
+ code_category='Workflow manager',
146
+ metadata={
147
+ 'codeCategory': 'Workflow manager',
148
+ 'codeLabel': 'ElaStic',
149
+ 'codeLabelStyle': 'capitals: E, S. This is part of the exciting project',
150
+ 'codeName': 'elastic',
151
+ 'codeUrl': 'http://exciting.wikidot.com/elastic',
152
+ 'parserDirName': 'dependencies/workflow/workflowparsers/elastic/',
153
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
154
+ 'parserSpecific': '',
155
+ 'preamble': '',
156
+ 'status': 'production',
157
+ 'tableOfFiles': '',
158
+ },
159
+ )
160
+
161
+ fhivibes_parser_entry_point = EntryPoint(
162
+ name='parsers/fhivibes',
163
+ aliases=['parsers/fhivibes'],
164
+ description='NOMAD parser for FHIVIBES.',
165
+ python_package='workflowparsers.fhivibes',
166
+ mainfile_binary_header_re=b'^\\x89HDF',
167
+ mainfile_contents_dict={'__has_all_keys': ['I', 'a', 'b']},
168
+ mainfile_mime_re='(application/x-hdf)',
169
+ mainfile_name_re=r'^.*\.(nc)$',
170
+ parser_class_name='workflowparsers.fhivibes.FHIVibesParser',
171
+ code_name='FHI-vibes',
172
+ code_homepage='https://vibes.fhi-berlin.mpg.de/',
173
+ code_category='Workflow manager',
174
+ metadata={
175
+ 'codeCategory': 'Workflow manager',
176
+ 'codeLabel': 'FHI-vibes',
177
+ 'codeLabelStyle': 'Capitals: FHI, the rest in lowercase; use dash.',
178
+ 'codeName': 'fhi-vibes',
179
+ 'codeUrl': 'https://vibes.fhi-berlin.mpg.de/',
180
+ 'parserDirName': 'dependencies/workflow/workflowparsers/fhi-vibes/',
181
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
182
+ 'parserSpecific': '',
183
+ 'preamble': '',
184
+ 'status': 'production',
185
+ 'tableOfFiles': '|Input Filename| Description|\n|--- | --- |\n|`<hdf_file>` | **Mainfile**, binary hdf file w/ ext .nc` |\n',
186
+ },
187
+ )
188
+
189
+ lobster_parser_entry_point = EntryPoint(
190
+ name='parsers/lobster',
191
+ aliases=['parsers/lobster'],
192
+ description='NOMAD parser for LOBSTER.',
193
+ python_package='workflowparsers.lobster',
194
+ mainfile_contents_re=r'^LOBSTER\s*v[\d\.]+.*',
195
+ mainfile_name_re='.*lobsterout.*',
196
+ supported_compressions=['gz', 'bz2', 'xz'],
197
+ parser_class_name='workflowparsers.lobster.LobsterParser',
198
+ code_name='LOBSTER',
199
+ code_homepage='http://schmeling.ac.rwth-aachen.de/cohp/',
200
+ code_category='Workflow manager',
201
+ metadata={
202
+ 'codeCategory': 'Workflow manager',
203
+ 'codeLabel': 'LOBSTER',
204
+ 'codeLabelStyle': 'All in capitals',
205
+ 'codeName': 'lobster',
206
+ 'codeUrl': 'http://schmeling.ac.rwth-aachen.de/cohp/',
207
+ 'parserDirName': 'dependencies/workflow/workflowparsers/lobster/',
208
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
209
+ 'preamble': '',
210
+ 'status': 'production',
211
+ 'tableOfFiles': '|Input Filename| Description|\n|--- | --- |\n|`lobsterout` | **Mainfile** in LOBSTER specific plain-text |\n',
212
+ },
213
+ )
214
+
215
+ phonopy_parser_entry_point = EntryPoint(
216
+ name='parsers/phonopy',
217
+ aliases=['parsers/phonopy'],
218
+ description='NOMAD parser for PHONOPY.',
219
+ python_package='workflowparsers.phonopy',
220
+ mainfile_name_re='(.*/phonopy-FHI-aims-displacement-0*1/control.in$)|(.*/phon[^/]+yaml)',
221
+ parser_class_name='workflowparsers.phonopy.PhonopyParser',
222
+ code_name='phonopy',
223
+ code_homepage='https://phonopy.github.io/phonopy/',
224
+ code_category='Workflow manager',
225
+ metadata={
226
+ 'codeCategory': 'Workflow manager',
227
+ 'codeLabel': 'phonopy',
228
+ 'codeLabelStyle': 'all in lower case',
229
+ 'codeName': 'phonopy',
230
+ 'codeUrl': 'https://phonopy.github.io/phonopy/',
231
+ 'parserDirName': 'dependencies/workflow/workflowparsers/phonopy/',
232
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
233
+ 'parserSpecific': '',
234
+ 'preamble': '',
235
+ 'status': 'production',
236
+ 'tableOfFiles': '',
237
+ },
238
+ )
239
+
240
+ quantum_espresso_epw_parser_entry_point = EntryPoint(
241
+ name='parsers/quantum_espresso_epw',
242
+ aliases=['parsers/quantum_espresso_epw'],
243
+ description='NOMAD parser for QUANTUM_ESPRESSO_EPW.',
244
+ python_package='workflowparsers.quantum_espresso_epw',
245
+ mainfile_contents_re=r'Program EPW.+\s*This program is part of the open-source Quantum ESPRESSO suite',
246
+ parser_class_name='workflowparsers.quantum_espresso_epw.QuantumEspressoEPWParser',
247
+ code_name='QuantumEspressoEPW',
248
+ code_homepage='https://www.quantum-espresso.org',
249
+ code_category='Workflow manager',
250
+ metadata={
251
+ 'codeCategory': 'Workflow manager',
252
+ 'codeLabel': 'QuantumEspressoEPW',
253
+ 'codeLabelStyle': 'Capitals: Q, E, E, P, W',
254
+ 'codeName': 'quantumespressoepw',
255
+ 'codeUrl': 'https://www.quantum-espresso.org',
256
+ 'parserDirName': 'dependencies/workflow/workflowparsers/quantum_espresso_epw',
257
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
258
+ 'parserSpecific': '',
259
+ 'preamble': '',
260
+ 'status': 'production',
261
+ 'tableOfFiles': '',
262
+ },
263
+ )
264
+
265
+ quantum_espresso_phonon_parser_entry_point = EntryPoint(
266
+ name='parsers/quantum_espresso_phonon',
267
+ aliases=['parsers/quantum_espresso_phonon'],
268
+ description='NOMAD parser for QUANTUM_ESPRESSO_PHONON.',
269
+ python_package='workflowparsers.quantum_espresso_phonon',
270
+ mainfile_contents_re=r'Program PHONON.+\s*This program is part of the open-source Quantum ESPRESSO suite',
271
+ parser_class_name='workflowparsers.quantum_espresso_phonon.QuantumEspressoPhononParser',
272
+ code_name='QuantumEspressPhonon',
273
+ code_homepage='https://www.quantum-espresso.org',
274
+ code_category='Workflow manager',
275
+ metadata={
276
+ 'codeCategory': 'Workflow manager',
277
+ 'codeLabel': 'QuantumEspressPhonon',
278
+ 'codeLabelStyle': 'Capitals: Q, E, P',
279
+ 'codeName': 'quantumespressophonon',
280
+ 'codeUrl': 'https://www.quantum-espresso.org',
281
+ 'parserDirName': 'dependencies/workflow/workflowparsers/quantumespressophonon',
282
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
283
+ 'parserSpecific': '',
284
+ 'preamble': '',
285
+ 'status': 'production',
286
+ 'tableOfFiles': '',
287
+ },
288
+ )
289
+
290
+ quantum_espresso_xspectra_parser_entry_point = EntryPoint(
291
+ name='parsers/quantum_espresso_xspectra',
292
+ aliases=['parsers/quantum_espresso_xspectra'],
293
+ description='NOMAD parser for QUANTUM_ESPRESSO_XSPECTRA.',
294
+ python_package='workflowparsers.quantum_espresso_xspectra',
295
+ mainfile_contents_re=r'\s*Program XSpectra\s*',
296
+ mainfile_mime_re='(application/.*)|(text/.*)',
297
+ parser_class_name='workflowparsers.quantum_espresso_xspectra.QuantumEspressoXSpectraParser',
298
+ code_name='QuantumESPRESSOXSpectra',
299
+ code_homepage='https://www.quantum-espresso.org/Doc/INPUT_XSpectra.txt',
300
+ code_category='Workflow manager',
301
+ metadata={
302
+ 'codeCategory': 'Workflow manager',
303
+ 'codeLabel': 'QuantumESPRESSOXSpectra',
304
+ 'codeLabelStyle': 'Capitals: Q, ESPRESSO, X, S',
305
+ 'codeName': 'quantumespressoxspectra',
306
+ 'codeUrl': 'https://www.quantum-espresso.org/Doc/INPUT_XSpectra.txt',
307
+ 'parserDirName': 'dependencies/workflow/workflowparsers/quantumespressoxspectra',
308
+ 'parserGitUrl': 'https://github.com/nomad-coe/workflow-parsers.git',
309
+ 'parserSpecific': '',
310
+ 'preamble': '',
311
+ 'status': 'production',
312
+ 'tableOfFiles': '| Input Filename | Description |\n| --- | --- |\n| `*.out` | **Mainfile:** text output file |\n| `*.dat` | output data file with the Absorption Spectra |\n',
313
+ },
314
+ )
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright The NOMAD Authors.
3
+ #
4
+ # This file is part of NOMAD.
5
+ # See https://nomad-lab.eu for further info.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ from .parser import AFLOWParser
@@ -0,0 +1,31 @@
1
+ #
2
+ # Copyright The NOMAD Authors.
3
+ #
4
+ # This file is part of NOMAD.
5
+ # See https://nomad-lab.eu for further info.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ import sys
20
+ import json
21
+ import logging
22
+
23
+ from nomad.utils import configure_logging
24
+ from nomad.datamodel import EntryArchive
25
+ from workflowparsers.aflow import AFLOWParser
26
+
27
+ if __name__ == '__main__':
28
+ configure_logging(console_log_level=logging.DEBUG)
29
+ archive = EntryArchive()
30
+ AFLOWParser().parse(sys.argv[1], archive, logging)
31
+ json.dump(archive.m_to_dict(), sys.stdout, indent=2)
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright The NOMAD Authors.
3
+ #
4
+ # This file is part of NOMAD.
5
+ # See https://nomad-lab.eu for further info.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ from . import aflow