From 44d2dceaf82b15d815fc3273a8d9c65de1f4f2e0 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Fri, 29 Mar 2019 21:25:38 +0100 Subject: [PATCH] better mypy coverage --- src/pycalver/cli.py | 2 +- src/pycalver/config.py | 8 +++++--- src/pycalver/version.py | 24 +++++++++++++++--------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/pycalver/cli.py b/src/pycalver/cli.py index 41507ac..f584669 100755 --- a/src/pycalver/cli.py +++ b/src/pycalver/cli.py @@ -190,7 +190,7 @@ def init(verbose: int = 0, dry: bool = False) -> None: config.write_content(ctx) -def _assert_not_dirty(_vcs: vcs.VCS, filepaths: typ.Set[str], allow_dirty: bool): +def _assert_not_dirty(_vcs: vcs.VCS, filepaths: typ.Set[str], allow_dirty: bool) -> None: dirty_files = _vcs.status(required_files=filepaths) if dirty_files: diff --git a/src/pycalver/config.py b/src/pycalver/config.py index 23caefa..511d513 100644 --- a/src/pycalver/config.py +++ b/src/pycalver/config.py @@ -177,8 +177,8 @@ def _parse_cfg(cfg_buffer: typ.IO[str]) -> RawConfig: def _parse_toml(cfg_buffer: typ.IO[str]) -> RawConfig: - raw_full_cfg = toml.load(cfg_buffer) - raw_cfg = raw_full_cfg.get('pycalver', {}) + raw_full_cfg: typ.Any = toml.load(cfg_buffer) + raw_cfg : RawConfig = raw_full_cfg.get('pycalver', {}) for option, default_val in BOOL_OPTIONS.items(): raw_cfg[option] = raw_cfg.get(option, default_val) @@ -299,6 +299,8 @@ def parse(ctx: ProjectContext) -> MaybeConfig: else: cfg_path = str(ctx.config_filepath) + raw_cfg: RawConfig + try: with ctx.config_filepath.open(mode="rt", encoding="utf-8") as fh: if ctx.config_format == 'toml': @@ -309,7 +311,7 @@ def parse(ctx: ProjectContext) -> MaybeConfig: err_msg = "Invalid config_format='{ctx.config_format}'" raise RuntimeError(err_msg) - cfg = _parse_config(raw_cfg) + cfg: Config = _parse_config(raw_cfg) if cfg_path not in cfg.file_patterns: fh.seek(0) diff --git a/src/pycalver/version.py b/src/pycalver/version.py index a701f2e..76c9a3c 100644 --- a/src/pycalver/version.py +++ b/src/pycalver/version.py @@ -161,7 +161,8 @@ def _is_calver(nfo: typ.Union[CalendarInfo, VersionInfo]) -> bool: False """ for field in CalendarInfo._fields: - if isinstance(getattr(nfo, field, None), int): + maybe_val: typ.Any = getattr(nfo, field, None) + if isinstance(maybe_val, int): return True return False @@ -399,19 +400,24 @@ def format_version(vinfo: VersionInfo, pattern: str) -> str: for part_name, full_part_format in patterns.FULL_PART_FORMATS.items(): full_pattern = full_pattern.replace("{" + part_name + "}", full_part_format) - kw = vinfo._asdict() - if kw['tag'] == 'final': + kw: typ.Dict[str, typ.Union[str, int, None]] = vinfo._asdict() + + tag = vinfo.tag + if tag == 'final': kw['release' ] = "" kw['pep440_tag'] = "" else: - kw['release' ] = "-" + kw['tag'] - kw['pep440_tag'] = PEP440_TAGS[kw['tag']] + "0" + kw['release' ] = "-" + tag + kw['pep440_tag'] = PEP440_TAGS[tag] + "0" - kw['release_tag'] = kw['tag'] + kw['release_tag'] = tag - kw['yy' ] = str(kw['year'])[-2:] - kw['yyyy'] = kw['year'] - kw['BID' ] = int(kw['bid'], 10) + year = vinfo.year + if year: + kw['yy' ] = str(year)[-2:] + kw['yyyy'] = year + + kw['BID'] = int(vinfo.bid, 10) for part_name, field in ID_FIELDS_BY_PART.items(): val = kw[field]