3
0
mirror of https://github.com/triqs/dft_tools synced 2024-06-02 11:25:29 +02:00

Added the parser of section [General]

Parsing of two optional parameters (BASENAME and EFERMI) from section [General] from the config-file
is implemented. If this section is not found the parameters are set to their
default values, which is 'vasp' for BASENAME and nothing for EFERMI.
Appropriate test is added to the 'inpconf' test suite.
This commit is contained in:
Oleg E. Peil 2015-08-12 12:10:31 +02:00 committed by Michel Ferrero
parent 4bbafa239e
commit 4c18c6e09c
3 changed files with 50 additions and 3 deletions

View File

@ -68,6 +68,9 @@ class ConfigParameters:
'normalize' : ('normalize', self.parse_string_logical, True),
'normion' : ('normion', self.parse_string_logical, False)}
self.gen_optional = {
'basename' : ('basename', str, 'vasp'),
'efermi' : ('efermi', float)}
#
# Special parsers
@ -177,7 +180,7 @@ class ConfigParameters:
key = param_set[par][0]
try:
par_str = self.cp.get(section, par)
except ConfigParser.NoOptionError:
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
if exception:
message = "Required parameter '%s' not found in section [%s]"%(par, section)
raise Exception(message)
@ -438,8 +441,18 @@ class ConfigParameters:
"""
Parses [General] section.
"""
# TODO: write the parser
pass
self.general = {}
sections = self.cp.sections()
gen_section = filter(lambda s: s.lower() == 'general', sections)
# If no [General] section is found parse a dummy section name to the parser
# to reset parameters to their default values
if len(gen_section) > 1:
raise Exception("More than one section [General] is found")
if len(gen_section) == 0:
gen_section = 'general'
gen_section = gen_section[0]
parsed = self.parse_parameter_set(gen_section, self.gen_optional, exception=False)
self.general.update(parsed)
################################################################################
#

View File

@ -1,4 +1,6 @@
[General]
BASENAME = test_base
EFERMI = 0.1
[Group 1]
SHELLS = 1 2

View File

@ -0,0 +1,32 @@
r"""
Tests of 'parse_general()' defined in ConfigParameters class
"""
import arraytest
import numpy as np
from inpconf import ConfigParameters
################################################################################
#
# TestParseGeneral
#
################################################################################
class TestParseGeneral(arraytest.ArrayTestCase):
"""
Function:
def parse_general(self)
Scenarios:
- **if** a correct [General] section is defined **return** a dictionary
"""
# Scenario 1
def test_example(self):
conf_pars = ConfigParameters('example.cfg')
conf_pars.parse_general()
res = conf_pars.general
expected = {'basename': 'test_base', 'efermi': 0.1}
self.assertDictEqual(res, expected)