Source code for yaslha

"""Package to handle SLHA-format files and data."""

import pathlib
from typing import Any, Optional, Union

import yaslha.block
import yaslha.comment
import yaslha.config
import yaslha.dumper
import yaslha.line
import yaslha.parser
import yaslha.slha

__pkgname__ = "yaslha"
__version__ = "0.2.1"
__author__ = "Sho Iwamoto / Misho"
__license__ = "MIT"

cfg = yaslha.config.Config()


[docs]def parse(text, input_type="AUTO", parser=None, **kwargs): # type: (str, str, Any, Any)->yaslha.slha.SLHA """Parse a text to return an SLHA object.""" if parser is None: if input_type.upper() == "AUTO": # TODO: implement auto-parser parser = yaslha.parser.SLHAParser(**kwargs) elif input_type.upper() == "JSON": raise NotImplementedError elif input_type.upper() == "YAML": raise NotImplementedError else: parser = yaslha.parser.SLHAParser(**kwargs) return parser.parse(text)
[docs]def dump(slha, output_type="SLHA", dumper=None, **kwargs): # type: (yaslha.slha.SLHA, str, Optional[yaslha.dumper.AbsDumper], Any)->str """Output a dumped string of an SLHA object.""" if dumper is None: if output_type.upper() == "JSON": dumper = yaslha.dumper.JSONDumper(**kwargs) elif output_type.upper() == "YAML": dumper = yaslha.dumper.YAMLDumper(**kwargs) else: dumper = yaslha.dumper.SLHADumper(**kwargs) return dumper.dump(slha)
[docs]def parse_file(path, **kwargs): # type: (Union[str, pathlib.Path], Any)->yaslha.slha.SLHA """Parse a file to return an SLHA object.""" if isinstance(path, str): path = pathlib.Path(path) return parse(path.read_text(), **kwargs)
[docs]def dump_file(data, path, **kwargs): # type: (yaslha.slha.SLHA, Union[str, pathlib.Path], Any)->None """Write into a file a dumped string of an SLHA object.""" with open(str(path), "w") as f: f.write(dump(data, **kwargs))