Fix release.py typing issue

This commit is contained in:
Mikhail f. Shiryaev 2022-11-15 13:10:13 +01:00
parent da71dbe040
commit 4fc5bb7a63
No known key found for this signature in database
GPG Key ID: 4B02ED204C7D93F4

View File

@ -11,7 +11,7 @@ On another hand, PyGithub is used for convenient getting commit's status from AP
from contextlib import contextmanager
from typing import List, Optional
from typing import Any, Iterator, List, Literal, Optional
import argparse
import logging
import subprocess
@ -48,7 +48,7 @@ class Repo:
return self._url
@url.setter
def url(self, protocol: str):
def url(self, protocol: str) -> None:
if protocol == "ssh":
self._url = f"git@github.com:{self}.git"
elif protocol == "https":
@ -68,17 +68,23 @@ class Release:
CMAKE_PATH = get_abs_path(FILE_WITH_VERSION_PATH)
CONTRIBUTORS_PATH = get_abs_path(GENERATED_CONTRIBUTORS)
def __init__(self, repo: Repo, release_commit: str, release_type: str):
def __init__(
self,
repo: Repo,
release_commit: str,
release_type: Literal["major", "minor", "patch"],
):
self.repo = repo
self._release_commit = ""
self.release_commit = release_commit
assert release_type in self.BIG + self.SMALL
self.release_type = release_type
self._git = git
self._version = get_version_from_repo(git=self._git)
self._release_branch = ""
self._rollback_stack = [] # type: List[str]
def run(self, cmd: str, cwd: Optional[str] = None, **kwargs) -> str:
def run(self, cmd: str, cwd: Optional[str] = None, **kwargs: Any) -> str:
cwd_text = ""
if cwd:
cwd_text = f" (CWD='{cwd}')"
@ -153,7 +159,9 @@ class Release:
self.check_commit_release_ready()
def do(self, check_dirty: bool, check_branch: bool, with_release_branch: bool):
def do(
self, check_dirty: bool, check_branch: bool, with_release_branch: bool
) -> None:
self.check_prerequisites()
if check_dirty:
@ -310,7 +318,7 @@ class Release:
return self._version
@version.setter
def version(self, version: ClickHouseVersion):
def version(self, version: ClickHouseVersion) -> None:
if not isinstance(version, ClickHouseVersion):
raise ValueError(f"version must be ClickHouseVersion, not {type(version)}")
self._version = version
@ -320,7 +328,7 @@ class Release:
return self._release_branch
@release_branch.setter
def release_branch(self, branch: str):
def release_branch(self, branch: str) -> None:
self._release_branch = release_branch(branch)
@property
@ -328,7 +336,7 @@ class Release:
return self._release_commit
@release_commit.setter
def release_commit(self, release_commit: str):
def release_commit(self, release_commit: str) -> None:
self._release_commit = commit(release_commit)
@contextmanager
@ -367,7 +375,7 @@ class Release:
yield
@contextmanager
def _bump_testing_version(self, helper_branch: str):
def _bump_testing_version(self, helper_branch: str) -> Iterator[None]:
self.read_version()
self.version = self.version.update(self.release_type)
self.version.with_description(VersionType.TESTING)
@ -387,7 +395,7 @@ class Release:
yield
@contextmanager
def _checkout(self, ref: str, with_checkout_back: bool = False):
def _checkout(self, ref: str, with_checkout_back: bool = False) -> Iterator[None]:
orig_ref = self._git.branch or self._git.sha
need_rollback = False
if ref not in (self._git.branch, self._git.sha):
@ -406,7 +414,7 @@ class Release:
self.run(rollback_cmd)
@contextmanager
def _create_branch(self, name: str, start_point: str = ""):
def _create_branch(self, name: str, start_point: str = "") -> Iterator[None]:
self.run(f"git branch {name} {start_point}")
rollback_cmd = f"git branch -D {name}"
self._rollback_stack.append(rollback_cmd)
@ -418,7 +426,7 @@ class Release:
raise
@contextmanager
def _create_gh_label(self, label: str, color_hex: str):
def _create_gh_label(self, label: str, color_hex: str) -> Iterator[None]:
# API call, https://docs.github.com/en/rest/reference/issues#create-a-label
self.run(
f"gh api repos/{self.repo}/labels -f name={label} -f color={color_hex}"
@ -433,7 +441,7 @@ class Release:
raise
@contextmanager
def _create_gh_release(self, as_prerelease: bool):
def _create_gh_release(self, as_prerelease: bool) -> Iterator[None]:
with self._create_tag():
# Preserve tag if version is changed
tag = self.version.describe
@ -468,7 +476,9 @@ class Release:
raise
@contextmanager
def _push(self, ref: str, with_rollback_on_fail: bool = True, remote_ref: str = ""):
def _push(
self, ref: str, with_rollback_on_fail: bool = True, remote_ref: str = ""
) -> Iterator[None]:
if remote_ref == "":
remote_ref = ref