diff --git a/binarycpython/utils/functions.py b/binarycpython/utils/functions.py index fa79c8ef032b4c3a6f9e7a260bde5994c970579c..798cfc01adddf790d70d8c89587eff0e354d6cc5 100644 --- a/binarycpython/utils/functions.py +++ b/binarycpython/utils/functions.py @@ -195,7 +195,7 @@ def parse_binary_c_version_info(version_info_string): "mass_g": mass_g, "mass_amu": mass_amu, } - version_info_dict["isotopes"] = isotope_dict + version_info_dict["isotopes"] = isotope_dict if isotope_dict else None ########################## # Argpairs: @@ -212,7 +212,7 @@ def parse_binary_c_version_info(version_info_string): else: argpair_dict[split_info[0]][split_info[1]] = split_info[2] - version_info_dict["argpairs"] = argpair_dict + version_info_dict["argpairs"] = argpair_dict if argpair_dict else None ########################## # ensembles: @@ -225,7 +225,7 @@ def parse_binary_c_version_info(version_info_string): split_info = el.split("Ensemble ")[-1].split(" is ") if len(split_info) > 1: ensemble_dict[int(split_info[0])] = split_info[-1] - version_info_dict["ensembles"] = ensemble_dict + version_info_dict["ensembles"] = ensemble_dict if ensemble_dict else None ########################## # macros: @@ -254,7 +254,7 @@ def parse_binary_c_version_info(version_info_string): macros_dict[param_name] = param_type_dict[param_type](param_value) except ValueError: macros_dict[param_name] = str(param_value) - version_info_dict["macros"] = macros_dict + version_info_dict["macros"] = macros_dict if macros_dict else None ########################## # Elements: @@ -283,7 +283,7 @@ def parse_binary_c_version_info(version_info_string): "amt_isotopes": len(isotopes), "isotopes": isotopes, } - version_info_dict["elements"] = version_info_dict + version_info_dict["elements"] = elements_dict if elements_dict else None ########################## # dt_limits: @@ -300,7 +300,7 @@ def parse_binary_c_version_info(version_info_string): "value": float(split_info[-1]), } - version_info_dict["dt_limits"] = dt_limits_dict + version_info_dict["dt_limits"] = dt_limits_dict if dt_limits_dict else None ########################## # Nucleosynthesis sources: @@ -314,7 +314,7 @@ def parse_binary_c_version_info(version_info_string): split_info = el.split("Nucleosynthesis source")[-1].strip().split(" is ") nucsyn_sources_dict[int(split_info[0])] = split_info[-1] - version_info_dict["nucleosynthesis_sources"] = nucsyn_sources_dict + version_info_dict["nucleosynthesis_sources"] = nucsyn_sources_dict if nucsyn_sources_dict else None ########################## # miscellaneous: @@ -329,16 +329,29 @@ def parse_binary_c_version_info(version_info_string): git_branch = [el for el in cleaned if el.startswith("git branch")] misc_dict["git_branch"] = git_branch[0].split("git branch ")[-1].replace('"', "") + cleaned = cleaned-set(git_branch) build = [el for el in cleaned if el.startswith("Build")] misc_dict["build"] = build[0].split("Build: ")[-1].replace('"', "") + cleaned = cleaned-set(build) email = [el for el in cleaned if el.startswith("Email")] misc_dict["email"] = email[0].split("Email ")[-1].split(",") + cleaned = cleaned-set(email) - misc_dict["uncaught"] = cleaned + other_items = set([el for el in cleaned if ' is ' in el]) + cleaned = cleaned - other_items - version_info_dict["miscellaneous"] = misc_dict + for el in other_items: + split = el.split(' is ') + key = split[0].strip() + val = ' is '.join(split[1:]).strip() + misc_dict[key] = val + + + misc_dict["uncaught"] = "\n".join(cleaned) + + version_info_dict["miscellaneous"] = misc_dict if misc_dict else None return version_info_dict @@ -957,6 +970,18 @@ class binarycDecoder(json.JSONDecoder): return o +class BinaryCEncoder(json.JSONEncoder): + def default(self, o): + print('inarycoij') + try: + str_repr = str(o) + except TypeError: + pass + else: + return str_repr + # Let the base class default method raise the TypeError + return JSONEncoder.default(self, o) + def binaryc_json_serializer(obj): """ Custom serializer for binary_c to use when functions are present in the dictionary @@ -967,8 +992,8 @@ def binaryc_json_serializer(obj): if inspect.isfunction(obj): return str(obj) - return obj - + else: + return obj def handle_ensemble_string_to_json(raw_output): """