Source code for pharmpy.workflows.args

from collections.abc import Mapping
from typing import Any

from pharmpy.internals.fs.path import normalize_user_given_path

ALLOWED_ESTTOOLS = (None, 'dummy', 'nonmem', 'nlmixr')


[docs] def split_common_options(d) -> tuple[Mapping[str, Any], Mapping[str, Any], Mapping[str, Any]]: """Split the dict into dispatching options, common options and other options Dispatching options will be handled before the tool is run to setup the context and dispatching system. Common options will be handled by the context so that all tasks in the workflow can get them. The tool specific options will be sent directly to the tool. Parameters ---------- d : dict Dictionary of all options Returns ------- Tuple of dispatching options, common options and other option dictionaries """ all_dispatching_options = ('context', 'path') all_common_options = ('resume', 'esttool') dispatching_options = {} common_options = {} other_options = {} for key, value in d.items(): if key in all_dispatching_options: dispatching_options[key] = value elif key in all_common_options: if key == 'path': if value is not None: value = normalize_user_given_path(value) elif key == 'esttool': if value not in ALLOWED_ESTTOOLS: raise ValueError( f"Invalid estimation tool {value}, must be one of {ALLOWED_ESTTOOLS}" ) common_options[key] = value else: other_options[key] = value return dispatching_options, common_options, other_options