Dict,
Iterable,
List,
+ Mapping,
NamedTuple,
NewType,
Tuple,
+ Type,
Union,
)
def read_search_path(conf: configparser.SectionProxy) -> SearchPath:
- if 'alias_of' in conf:
- return AliasSearchPath(**dict(conf.items()))
- if 'channel_url' in conf:
- return ChannelSearchPath(**dict(conf.items()))
- return GitSearchPath(**dict(conf.items()))
+ mapping: Mapping[str, Type[SearchPath]] = {
+ 'alias': AliasSearchPath,
+ 'channel': ChannelSearchPath,
+ 'git': GitSearchPath,
+ }
+ return mapping[conf['type']](**dict(conf.items()))
def read_config(filename: str) -> configparser.ConfigParser: