Scanco IPL.

This module implements utilities for running IPL scripts.

class iplutil.IPLParameterParser(prefixes: List[str | None] = ['!>', '!%', None], separators: List[str | None] = ['=', ':'])

Parses output parameters from IPL stdout.

get_regex_pattern_full_line() str

Get a regex pattern that matches a full line based on the configured parts.

get_regex_pattern_one_of(options: List[str | None]) str

Get a regex pattern that matches one of the given options.

parse(ipl_output: str) Iterator[ParsedIPLParameter]

Parse all parameters in the output matching the configured pattern.

class iplutil.IplStdoutChecker(*, error_re: ~typing.Pattern[str] = re.compile("(\\berror\\b)|(\\bunsupported\\b)|(Couldn't\\ allocate)", re.IGNORECASE|re.VERBOSE), ignore_re: ~typing.Pattern[str] = re.compile('\n         # When external data is converted (back) to AIM format\n         # sometimes these external converters set Index Patient 0 / Index Measurement 0.\n         # IPL prints this error, but use, re.VERBOSE))

Checks IPL stdout for errors.

class iplutil.ParsedIPLParameter(full_line: str, prefix: str, name: str, separator: str, value: str, unit: str)

Parsed IPL output parameter

get_float() float

Get a float value.

iplutil.checked_aim_image(image_path: Path) str

Raise if the image is not an AIM file. Returns a quoted path for IPL.

iplutil.convert_ipl_syntax(ipl_script_content: str, *, from_major_version: int | None = None, to_major_version: int | None = None) str

Convert IPL script content. E.g. from V6-style “symbol qualifiers to #symbol.

iplutil.detect_major_ipl_version() int | None

Detect the major version of the installed IPL.

iplutil.get_ipl_exe_path() Path

Get path of IPL executable using environment variable SCANCO_IPL_EVAL_EXE set in installer.

iplutil.ipl_args(*args, **kwargs)

Create a IPL environment variable dict including DCL-like positional parameters P1 etc. and named parameters.

iplutil.parse_ipl_parameter(ipl_output: str, name: str, parser: ~iplutil.IPLParameterParser = <iplutil.IPLParameterParser object>) ParsedIPLParameter

Parse a parameter from the IPL output. Raises an exception if the parameter is missing or can not be converted to a float.

iplutil.parse_ipl_translated_symbol(ipl_stdout: str, name: str) str

Parse a translated symbol to a value in IPL output.

iplutil.parse_ipl_whitespace_parameter(ipl_output: str, name: str) ParsedIPLParameter

Parse IPL parameter where the parameter name contains whitespace

iplutil.quoted_path(p: Path) str

Get quoted path for IPL.

iplutil.run_ipl(ipl_script: str, parameters: Dict[str, str], **kwargs) CompletedProcess

Run IPL as a subprocess. Read the IPL script content from a file.

iplutil.run_ipl_content(ipl_script_content: str, parameters: ~typing.Dict[str, str], check_ipl_stdout: bool = True, ipl_stdout_checker: ~iplutil.IplStdoutChecker = <iplutil.IplStdoutChecker object>, auto_convert_ipl_syntax: bool = True, **kwargs) CompletedProcess

Run IPL as a subprocess. Assume IPL uses codepage Windows-1252 as encoding for stdin / stdout / stderr.