From f0ac629d300e8bbd123071a048c578e3e9eb0312 Mon Sep 17 00:00:00 2001
From: Markus Scheidgen <markus.scheidgen@gmail.com>
Date: Wed, 8 Jan 2020 15:25:55 +0100
Subject: [PATCH] Configurable use of "empty" parsers.

---
 nomad/config.py           |  1 +
 nomad/parsing/__init__.py | 43 ++++++++++++++++++++++-----------------
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/nomad/config.py b/nomad/config.py
index 87d1f163e6..f20b8e84b2 100644
--- a/nomad/config.py
+++ b/nomad/config.py
@@ -205,6 +205,7 @@ parser_matching_size = 9128
 console_log_level = logging.WARNING
 max_upload_size = 32 * (1024 ** 3)
 raw_file_strip_cutoff = 1000
+use_empty_parsers = False
 
 
 springer_db_relative_path = 'normalizing/data/SM_all08.db'
diff --git a/nomad/parsing/__init__.py b/nomad/parsing/__init__.py
index 9b8383c752..02f172eea8 100644
--- a/nomad/parsing/__init__.py
+++ b/nomad/parsing/__init__.py
@@ -456,28 +456,33 @@ parsers = [
         name='parser/onetep', code_name='ONETEP', domain='DFT',
         parser_class_name='onetepparser.OnetepParser',
         mainfile_contents_re=r'####### #     # ####### ####### ####### ######'
-    ),
+    )
+]
+
+if config.use_empty_parsers:
     # There are some entries with PIDs that have mainfiles which do not match what
     # the actual parsers expect. We use the EmptyParser to produce placeholder entries
     # to keep the PIDs. These parsers will not match for new, non migrated data.
-    EmptyParser(
-        name='missing/octopus', code_name='Octopus', domain='DFT',
-        mainfile_name_re=r'(inp)|(.*/inp)'
-    ),
-    EmptyParser(
-        name='missing/crystal', code_name='Crystal',
-        mainfile_name_re=r'.*\.cryst\.out'
-    ),
-    EmptyParser(
-        name='missing/wien2k', code_name='WIEN2k',
-        mainfile_name_re=r'.*\.scf'
-    ),
-    EmptyParser(
-        name='missing/fhi-aims', code_name='FHI-aims', domain='DFT',
-        mainfile_name_re=r'.*\.fhiaims'
-    ),
-    BrokenParser()
-]
+    parsers.extend([
+        EmptyParser(
+            name='missing/octopus', code_name='Octopus', domain='DFT',
+            mainfile_name_re=r'(inp)|(.*/inp)'
+        ),
+        EmptyParser(
+            name='missing/crystal', code_name='Crystal',
+            mainfile_name_re=r'.*\.cryst\.out'
+        ),
+        EmptyParser(
+            name='missing/wien2k', code_name='WIEN2k',
+            mainfile_name_re=r'.*\.scf'
+        ),
+        EmptyParser(
+            name='missing/fhi-aims', code_name='FHI-aims', domain='DFT',
+            mainfile_name_re=r'.*\.fhiaims'
+        )
+    ])
+
+parsers.append(BrokenParser())
 
 """ Instantiation and constructor based config of all parsers. """
 
-- 
GitLab