From 7db2751cdb2272de34d24c84abe6417795fb2828 Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Fri, 27 Mar 2015 10:44:39 +0100 Subject: [PATCH] Add directory for ezfio_interface, first apparition of ezfio_generate_ocaml --- .../ei_handler.py} | 37 +++--------- .../ezfio_interface/ezfio_generate_ocaml.py | 59 +++++++++++++++++++ .../ezfio_generate_provider.py | 2 +- scripts/prepare_ezfio.sh | 2 +- scripts/run_Makefile_common.sh | 3 +- setup_environment.sh | 4 +- 6 files changed, 71 insertions(+), 36 deletions(-) rename scripts/{ezfio_interface.py => ezfio_interface/ei_handler.py} (94%) create mode 100755 scripts/ezfio_interface/ezfio_generate_ocaml.py rename scripts/{ => ezfio_interface}/ezfio_generate_provider.py (97%) diff --git a/scripts/ezfio_interface.py b/scripts/ezfio_interface/ei_handler.py similarity index 94% rename from scripts/ezfio_interface.py rename to scripts/ezfio_interface/ei_handler.py index 11e5a7cd..0852eb79 100755 --- a/scripts/ezfio_interface.py +++ b/scripts/ezfio_interface/ei_handler.py @@ -83,7 +83,7 @@ def get_type_dict(): qpackage_root = os.environ['QPACKAGE_ROOT'] - fancy_type_pickle = qpackage_root + "/scripts/fancy_type.p" + fancy_type_pickle = qpackage_root + "/scripts/ezfio_interface/fancy_type.p" if fancy_type_pickle in listdir(os.getcwd()): fancy_type = pickle.load(open(fancy_type_pickle, "rb")) @@ -416,36 +416,14 @@ def save_ezfio_config(module_lower, str_ezfio_config): def create_ocaml_check(dict_ezfio_cfg): - # ~#~#~#~#~#~#~#~# # - # F u n c t i o n # - # ~#~#~#~#~#~#~#~# # - - def create_read(d_format): - - template = """ - (* Read snippet for {ezfio_name} *) - let read_{ezfio_name} () = - if not (Ezfio.has_{ezfio_dir}_{ezfio_name} ()) then - get_default "{ezfio_name}" - |> {Ocaml_type}.of_string - |> Ezfio.set_{ezfio_dir}_{ezfio_name} - ; - Ezfio.get_{ezfio_dir}_{ezfio_name} () -""" - fancy_type = d_format["type"] - if d_format["type"].fancy: - template += " |> {0}.of_{1}".format(fancy_type.fancy, - fancy_type.ocaml) - - template += """ - ;; - """ - return template.strip().format(**d_format) - # ~#~#~#~#~#~#~#~# # # C r e a t i o n # # ~#~#~#~#~#~#~#~# # + from ezfio_generate_ocaml import EZFIO_ocaml + + e = EZFIO_ocaml() + for provider_name, d_val in sorted(dict_ezfio_cfg.iteritems()): ocaml_type = d_val["type"].ocaml.capitalize() @@ -454,10 +432,9 @@ def create_ocaml_check(dict_ezfio_cfg): d = {"ezfio_dir": ezfio_dir, "ezfio_name": ezfio_name, - "type": d_val["type"], - "Ocaml_type": ocaml_type} + "type": d_val["type"]} - template = create_read(d) + template = e.create_read(**d) print template diff --git a/scripts/ezfio_interface/ezfio_generate_ocaml.py b/scripts/ezfio_interface/ezfio_generate_ocaml.py new file mode 100755 index 00000000..07eaee6e --- /dev/null +++ b/scripts/ezfio_interface/ezfio_generate_ocaml.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +import sys + + +class EZFIO_ocaml(object): + + def __init__(self): + pass + + def create_read(self, **param): + ''' + Take an imput a list of keyword argument + ezfio_dir = str + ezfio_name = str + type = Named_tuple(fancy_type, ocaml_type, fortrant_type) + + Return the read template + ''' + + l_name_need = "ezfio_dir ezfio_name type".split() + + for key in l_name_need: + if key not in param: + print "You need to provide {0} at keyword argument".format(key) + sys.exit(1) + + # ~#~#~#~#~#~#~#~#~#~#~#~#~#~# # + # C r e a t e _ t e m pl a t e # + # ~#~#~#~#~#~#~#~#~#~#~#~#~#~# # + + l_template = ['(* Read snippet for {ezfio_name} *)', + 'let read_{ezfio_name} () =', + ' if not (Ezfio.has_{ezfio_dir}_{ezfio_name} ()) then', + ' get_default "{ezfio_name}"', + ' |> {Ocaml_type}.of_string', + ' |> Ezfio.set_{ezfio_dir}_{ezfio_name}', + ' ;', + ' Ezfio.get_{ezfio_dir}_{ezfio_name} ()'] + + if param["type"].fancy: + l_template += [" |> {fancy_type}.of_{Ocaml_type}"] + + l_template += [";;;"] + + template = "\n ".join(l_template) + + # ~#~#~#~#~#~ # + # R e n d e r # + # ~#~#~#~#~#~ # + + param["Ocaml_type"] = param["type"].ocaml.capitalize() + param["fancy_type"] = param["type"].fancy + template_rendered = template.format(**param) + + # ~#~#~#~#~#~ # + # R e t u r n # + # ~#~#~#~#~#~ # + return template_rendered diff --git a/scripts/ezfio_generate_provider.py b/scripts/ezfio_interface/ezfio_generate_provider.py similarity index 97% rename from scripts/ezfio_generate_provider.py rename to scripts/ezfio_interface/ezfio_generate_provider.py index d18710d7..21dc8450 100755 --- a/scripts/ezfio_generate_provider.py +++ b/scripts/ezfio_interface/ezfio_generate_provider.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -__author__ = "Anthony Scemama and Applencourt for the amazing PEP8" +__author__ = "Applencourt PEP8" __date__ = "jeudi 26 mars 2015, 12:49:35 (UTC+0100)" """ diff --git a/scripts/prepare_ezfio.sh b/scripts/prepare_ezfio.sh index c01bacd3..96ba3cdc 100755 --- a/scripts/prepare_ezfio.sh +++ b/scripts/prepare_ezfio.sh @@ -9,7 +9,7 @@ echo "=-=-=-=-=-=-=-=-=-=-=-" for dir in ${QPACKAGE_ROOT}/src/*/ do cd $dir || exit -1 - ${QPACKAGE_ROOT}/scripts/ezfio_interface.py + ${QPACKAGE_ROOT}/scripts/ezfio_interface/ei_handler.py done # For old-style directories. Will be removed some day... diff --git a/scripts/run_Makefile_common.sh b/scripts/run_Makefile_common.sh index 0a579a94..82e898ac 100755 --- a/scripts/run_Makefile_common.sh +++ b/scripts/run_Makefile_common.sh @@ -65,5 +65,4 @@ fi ${QPACKAGE_ROOT}/scripts/create_Makefile_depend.sh # Update EZFIO interface -${QPACKAGE_ROOT}/scripts/ezfio_interface.py - + ${QPACKAGE_ROOT}/scripts/ezfio_interface/ei_handler.py diff --git a/setup_environment.sh b/setup_environment.sh index ca853fdf..8db6a11c 100755 --- a/setup_environment.sh +++ b/setup_environment.sh @@ -34,8 +34,8 @@ export QPACKAGE_ROOT=\$( cd \$(dirname "\${BASH_SOURCE}") ; pwd -P ) export LD_LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LD_LIBRARY_PATH} export LIBRARY_PATH="\${QPACKAGE_ROOT}"/lib:\${LIBRARY_PATH} export C_INCLUDE_PATH="\${QPACKAGE_ROOT}"/include:\${C_INCLUDE_PATH} -export PYTHONPATH=\${PYTHONPATH}:"\${QPACKAGE_ROOT}"/scripts -export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/scripts +export PYTHONPATH=\${PYTHONPATH}:"\${QPACKAGE_ROOT}"/scripts:"\${QPACKAGE_ROOT}"/scripts/ezfio_interface +export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/scripts:"\${QPACKAGE_ROOT}"/scripts/ezfio_interface export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/bin export PATH=\${PATH}:"\${QPACKAGE_ROOT}"/ocaml source "\${QPACKAGE_ROOT}"/bin/irpman &> /dev/null