mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Change alignment, fix some f-strings
This commit is contained in:
parent
7ed305f9b1
commit
d7505d4de7
@ -119,17 +119,16 @@ class CherryPick:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Create pull-request like a local cherry-pick
|
# Create pull-request like a local cherry-pick
|
||||||
|
title = self._pr["title"].replace('"', r"\"")
|
||||||
pr = self._gh.create_pull_request(
|
pr = self._gh.create_pull_request(
|
||||||
source=self.cherrypick_branch,
|
source=self.cherrypick_branch,
|
||||||
target=self.backport_branch,
|
target=self.backport_branch,
|
||||||
title="Cherry pick #{number} to {target}: {title}".format(
|
title=(
|
||||||
number=self._pr["number"],
|
f'Cherry pick #{self._pr["number"]} '
|
||||||
target=self.target_branch,
|
f"to {self.target_branch}: "
|
||||||
title=self._pr["title"].replace('"', '\\"'),
|
f"{title}"
|
||||||
),
|
|
||||||
description="Original pull-request #{}\n\n{}".format(
|
|
||||||
self._pr["number"], DESCRIPTION
|
|
||||||
),
|
),
|
||||||
|
description=f'Original pull-request #{self._pr["number"]}\n\n{DESCRIPTION}',
|
||||||
)
|
)
|
||||||
|
|
||||||
# FIXME: use `team` to leave a single eligible assignee.
|
# FIXME: use `team` to leave a single eligible assignee.
|
||||||
@ -166,11 +165,8 @@ class CherryPick:
|
|||||||
"user.name=robot-clickhouse",
|
"user.name=robot-clickhouse",
|
||||||
]
|
]
|
||||||
|
|
||||||
pr_title = "Backport #{number} to {target}: {title}".format(
|
title = (self._pr["title"].replace('"', r"\""),)
|
||||||
number=self._pr["number"],
|
pr_title = f"Backport #{self._pr['number']} to {self.target_branch}: {title}"
|
||||||
target=self.target_branch,
|
|
||||||
title=self._pr["title"].replace('"', '\\"'),
|
|
||||||
)
|
|
||||||
|
|
||||||
self._run(git_prefix + ["checkout", "-f", self.backport_branch])
|
self._run(git_prefix + ["checkout", "-f", self.backport_branch])
|
||||||
self._run(git_prefix + ["pull", "--ff-only", "origin", self.backport_branch])
|
self._run(git_prefix + ["pull", "--ff-only", "origin", self.backport_branch])
|
||||||
@ -204,9 +200,8 @@ class CherryPick:
|
|||||||
source=self.backport_branch,
|
source=self.backport_branch,
|
||||||
target=self.target_branch,
|
target=self.target_branch,
|
||||||
title=pr_title,
|
title=pr_title,
|
||||||
description="Original pull-request #{}\nCherry-pick pull-request #{}\n\n{}".format(
|
description=f"Original pull-request #{self._pr['number']}\n"
|
||||||
self._pr["number"], cherrypick_pr["number"], DESCRIPTION
|
f"Cherry-pick pull-request #{cherrypick_pr['number']}\n\n{DESCRIPTION}",
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# FIXME: use `team` to leave a single eligible assignee.
|
# FIXME: use `team` to leave a single eligible assignee.
|
||||||
|
@ -16,43 +16,43 @@ class Query:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_PULL_REQUEST = """
|
_PULL_REQUEST = """
|
||||||
author {{
|
author {{
|
||||||
... on User {{
|
... on User {{
|
||||||
id
|
|
||||||
login
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
|
|
||||||
baseRepository {{
|
|
||||||
nameWithOwner
|
|
||||||
}}
|
|
||||||
|
|
||||||
mergeCommit {{
|
|
||||||
oid
|
|
||||||
parents(first: {min_page_size}) {{
|
|
||||||
totalCount
|
|
||||||
nodes {{
|
|
||||||
oid
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
|
|
||||||
mergedBy {{
|
|
||||||
... on User {{
|
|
||||||
id
|
|
||||||
login
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
|
|
||||||
baseRefName
|
|
||||||
closed
|
|
||||||
headRefName
|
|
||||||
id
|
id
|
||||||
mergeable
|
login
|
||||||
merged
|
}}
|
||||||
number
|
}}
|
||||||
title
|
|
||||||
url
|
baseRepository {{
|
||||||
|
nameWithOwner
|
||||||
|
}}
|
||||||
|
|
||||||
|
mergeCommit {{
|
||||||
|
oid
|
||||||
|
parents(first: {min_page_size}) {{
|
||||||
|
totalCount
|
||||||
|
nodes {{
|
||||||
|
oid
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
mergedBy {{
|
||||||
|
... on User {{
|
||||||
|
id
|
||||||
|
login
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
|
baseRefName
|
||||||
|
closed
|
||||||
|
headRefName
|
||||||
|
id
|
||||||
|
mergeable
|
||||||
|
merged
|
||||||
|
number
|
||||||
|
title
|
||||||
|
url
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, token, owner, name, team, max_page_size=100, min_page_size=10):
|
def __init__(self, token, owner, name, team, max_page_size=100, min_page_size=10):
|
||||||
@ -78,13 +78,13 @@ class Query:
|
|||||||
|
|
||||||
def get_repository(self):
|
def get_repository(self):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
defaultBranchRef {{
|
defaultBranchRef {{
|
||||||
name
|
name
|
||||||
}}
|
}}
|
||||||
id
|
id
|
||||||
sshUrl
|
sshUrl
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(owner=self._owner, name=self._name)
|
query = _QUERY.format(owner=self._owner, name=self._name)
|
||||||
@ -98,20 +98,20 @@ class Query:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
organization(login: "{organization}") {{
|
organization(login: "{organization}") {{
|
||||||
team(slug: "{team}") {{
|
team(slug: "{team}") {{
|
||||||
members(first: {max_page_size} {next}) {{
|
members(first: {max_page_size} {next}) {{
|
||||||
pageInfo {{
|
pageInfo {{
|
||||||
hasNextPage
|
hasNextPage
|
||||||
endCursor
|
endCursor
|
||||||
}}
|
|
||||||
nodes {{
|
|
||||||
id
|
|
||||||
login
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
}}
|
}}
|
||||||
|
nodes {{
|
||||||
|
id
|
||||||
|
login
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
members = {}
|
members = {}
|
||||||
@ -133,7 +133,7 @@ class Query:
|
|||||||
organization=self._owner,
|
organization=self._owner,
|
||||||
team=self._team,
|
team=self._team,
|
||||||
max_page_size=self._max_page_size,
|
max_page_size=self._max_page_size,
|
||||||
next='after: "{}"'.format(result["pageInfo"]["endCursor"]),
|
next=f'after: "{result["pageInfo"]["endCursor"]}"',
|
||||||
)
|
)
|
||||||
|
|
||||||
# Update members with new nodes compatible with py3.8-py3.10
|
# Update members with new nodes compatible with py3.8-py3.10
|
||||||
@ -146,11 +146,11 @@ class Query:
|
|||||||
|
|
||||||
def get_pull_request(self, number):
|
def get_pull_request(self, number):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
pullRequest(number: {number}) {{
|
pullRequest(number: {number}) {{
|
||||||
{pull_request_data}
|
{pull_request_data}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(
|
query = _QUERY.format(
|
||||||
@ -164,14 +164,16 @@ class Query:
|
|||||||
|
|
||||||
def find_pull_request(self, base, head):
|
def find_pull_request(self, base, head):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
pullRequests(first: {min_page_size} baseRefName: "{base}" headRefName: "{head}") {{
|
pullRequests(
|
||||||
nodes {{
|
first: {min_page_size} baseRefName: "{base}" headRefName: "{head}"
|
||||||
{pull_request_data}
|
) {{
|
||||||
}}
|
nodes {{
|
||||||
totalCount
|
{pull_request_data}
|
||||||
}}
|
}}
|
||||||
}}
|
totalCount
|
||||||
|
}}
|
||||||
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(
|
query = _QUERY.format(
|
||||||
@ -193,13 +195,13 @@ class Query:
|
|||||||
Get all pull-requests filtered by label name
|
Get all pull-requests filtered by label name
|
||||||
"""
|
"""
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
pullRequests(first: {min_page_size} labels: "{label_name}" states: OPEN) {{
|
pullRequests(first: {min_page_size} labels: "{label_name}" states: OPEN) {{
|
||||||
nodes {{
|
nodes {{
|
||||||
{pull_request_data}
|
{pull_request_data}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(
|
query = _QUERY.format(
|
||||||
@ -217,35 +219,32 @@ class Query:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
defaultBranchRef {{
|
defaultBranchRef {{
|
||||||
target {{
|
target {{
|
||||||
... on Commit {{
|
... on Commit {{
|
||||||
history(first: {max_page_size} {next}) {{
|
history(first: {max_page_size} {next}) {{
|
||||||
pageInfo {{
|
pageInfo {{
|
||||||
hasNextPage
|
hasNextPage
|
||||||
endCursor
|
endCursor
|
||||||
}}
|
}}
|
||||||
nodes {{
|
nodes {{
|
||||||
oid
|
oid
|
||||||
associatedPullRequests(first: {min_page_size}) {{
|
associatedPullRequests(first: {min_page_size}) {{
|
||||||
totalCount
|
totalCount
|
||||||
nodes {{
|
nodes {{
|
||||||
... on PullRequest {{
|
... on PullRequest {{
|
||||||
{pull_request_data}
|
{pull_request_data}
|
||||||
|
|
||||||
labels(first: {min_page_size}) {{
|
labels(first: {min_page_size}) {{
|
||||||
totalCount
|
totalCount
|
||||||
pageInfo {{
|
pageInfo {{
|
||||||
hasNextPage
|
hasNextPage
|
||||||
endCursor
|
endCursor
|
||||||
}}
|
}}
|
||||||
nodes {{
|
nodes {{
|
||||||
name
|
name
|
||||||
color
|
color
|
||||||
}}
|
|
||||||
}}
|
|
||||||
}}
|
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
@ -254,6 +253,9 @@ class Query:
|
|||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
pull_requests = []
|
pull_requests = []
|
||||||
@ -278,7 +280,7 @@ class Query:
|
|||||||
max_page_size=self._max_page_size,
|
max_page_size=self._max_page_size,
|
||||||
min_page_size=self._min_page_size,
|
min_page_size=self._min_page_size,
|
||||||
pull_request_data=self._PULL_REQUEST,
|
pull_request_data=self._PULL_REQUEST,
|
||||||
next='after: "{}"'.format(result["pageInfo"]["endCursor"]),
|
next=f'after: "{result["pageInfo"]["endCursor"]}"',
|
||||||
)
|
)
|
||||||
|
|
||||||
for commit in result["nodes"]:
|
for commit in result["nodes"]:
|
||||||
@ -296,7 +298,7 @@ class Query:
|
|||||||
for pull_request in commit["associatedPullRequests"]["nodes"]:
|
for pull_request in commit["associatedPullRequests"]["nodes"]:
|
||||||
if (
|
if (
|
||||||
pull_request["baseRepository"]["nameWithOwner"]
|
pull_request["baseRepository"]["nameWithOwner"]
|
||||||
== "{}/{}".format(self._owner, self._name)
|
== f"{self._owner}/{self._name}"
|
||||||
and pull_request["baseRefName"] == self.default_branch
|
and pull_request["baseRefName"] == self.default_branch
|
||||||
and pull_request["mergeCommit"]["oid"] == commit["oid"]
|
and pull_request["mergeCommit"]["oid"] == commit["oid"]
|
||||||
):
|
):
|
||||||
@ -308,19 +310,19 @@ class Query:
|
|||||||
self, source, target, title, description="", draft=False, can_modify=True
|
self, source, target, title, description="", draft=False, can_modify=True
|
||||||
):
|
):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
createPullRequest(input: {{
|
createPullRequest(input: {{
|
||||||
baseRefName: "{target}",
|
baseRefName: "{target}",
|
||||||
headRefName: "{source}",
|
headRefName: "{source}",
|
||||||
repositoryId: "{id}",
|
repositoryId: "{id}",
|
||||||
title: "{title}",
|
title: "{title}",
|
||||||
body: "{body}",
|
body: "{body}",
|
||||||
draft: {draft},
|
draft: {draft},
|
||||||
maintainerCanModify: {modify}
|
maintainerCanModify: {modify}
|
||||||
}}) {{
|
}}) {{
|
||||||
pullRequest {{
|
pullRequest {{
|
||||||
{pull_request_data}
|
{pull_request_data}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(
|
query = _QUERY.format(
|
||||||
@ -335,29 +337,29 @@ class Query:
|
|||||||
)
|
)
|
||||||
return self._run(query, is_mutation=True)["createPullRequest"]["pullRequest"]
|
return self._run(query, is_mutation=True)["createPullRequest"]["pullRequest"]
|
||||||
|
|
||||||
def merge_pull_request(self, id):
|
def merge_pull_request(self, pr_id):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
mergePullRequest(input: {{
|
mergePullRequest(input: {{
|
||||||
pullRequestId: "{id}"
|
pullRequestId: "{pr_id}"
|
||||||
}}) {{
|
}}) {{
|
||||||
pullRequest {{
|
pullRequest {{
|
||||||
{pull_request_data}
|
{pull_request_data}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(id=id, pull_request_data=self._PULL_REQUEST)
|
query = _QUERY.format(pr_id=pr_id, pull_request_data=self._PULL_REQUEST)
|
||||||
return self._run(query, is_mutation=True)["mergePullRequest"]["pullRequest"]
|
return self._run(query, is_mutation=True)["mergePullRequest"]["pullRequest"]
|
||||||
|
|
||||||
# FIXME: figure out how to add more assignees at once
|
# FIXME: figure out how to add more assignees at once
|
||||||
def add_assignee(self, pr, assignee):
|
def add_assignee(self, pr, assignee):
|
||||||
_QUERY = """
|
_QUERY = """
|
||||||
addAssigneesToAssignable(input: {{
|
addAssigneesToAssignable(input: {{
|
||||||
assignableId: "{id1}",
|
assignableId: "{id1}",
|
||||||
assigneeIds: "{id2}"
|
assigneeIds: "{id2}"
|
||||||
}}) {{
|
}}) {{
|
||||||
clientMutationId
|
clientMutationId
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
query = _QUERY.format(id1=pr["id"], id2=assignee["id"])
|
query = _QUERY.format(id1=pr["id"], id2=assignee["id"])
|
||||||
@ -373,28 +375,28 @@ class Query:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_GET_LABEL = """
|
_GET_LABEL = """
|
||||||
repository(owner: "{owner}" name: "{name}") {{
|
repository(owner: "{owner}" name: "{name}") {{
|
||||||
labels(first: {max_page_size} {next} query: "{label_name}") {{
|
labels(first: {max_page_size} {next} query: "{label_name}") {{
|
||||||
pageInfo {{
|
pageInfo {{
|
||||||
hasNextPage
|
hasNextPage
|
||||||
endCursor
|
endCursor
|
||||||
}}
|
}}
|
||||||
nodes {{
|
nodes {{
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
color
|
color
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_SET_LABEL = """
|
_SET_LABEL = """
|
||||||
addLabelsToLabelable(input: {{
|
addLabelsToLabelable(input: {{
|
||||||
labelableId: "{pr_id}",
|
labelableId: "{pr_id}",
|
||||||
labelIds: "{label_id}"
|
labelIds: "{label_id}"
|
||||||
}}) {{
|
}}) {{
|
||||||
clientMutationId
|
clientMutationId
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
labels = []
|
labels = []
|
||||||
@ -415,10 +417,10 @@ class Query:
|
|||||||
name=self._name,
|
name=self._name,
|
||||||
label_name=label_name,
|
label_name=label_name,
|
||||||
max_page_size=self._max_page_size,
|
max_page_size=self._max_page_size,
|
||||||
next='after: "{}"'.format(result["pageInfo"]["endCursor"]),
|
next=f'after: "{result["pageInfo"]["endCursor"]}"',
|
||||||
)
|
)
|
||||||
|
|
||||||
labels += [label for label in result["nodes"]]
|
labels += list(result["nodes"])
|
||||||
|
|
||||||
if not labels:
|
if not labels:
|
||||||
return
|
return
|
||||||
@ -458,27 +460,23 @@ class Query:
|
|||||||
# sleep a little, because we querying github too often
|
# sleep a little, because we querying github too often
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
headers = {"Authorization": "bearer {}".format(self._token)}
|
headers = {"Authorization": f"bearer {self._token}"}
|
||||||
if is_mutation:
|
if is_mutation:
|
||||||
query = """
|
query = f"""
|
||||||
mutation {{
|
mutation {{
|
||||||
{query}
|
{query}
|
||||||
}}
|
}}
|
||||||
""".format(
|
"""
|
||||||
query=query
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
query = """
|
query = f"""
|
||||||
query {{
|
query {{
|
||||||
{query}
|
{query}
|
||||||
rateLimit {{
|
rateLimit {{
|
||||||
cost
|
cost
|
||||||
remaining
|
remaining
|
||||||
}}
|
}}
|
||||||
}}
|
}}
|
||||||
""".format(
|
"""
|
||||||
query=query
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.session.post(
|
response = self.session.post(
|
||||||
"https://api.github.com/graphql", json={"query": query}, headers=headers
|
"https://api.github.com/graphql", json={"query": query}, headers=headers
|
||||||
@ -487,21 +485,15 @@ class Query:
|
|||||||
result = response.json()
|
result = response.json()
|
||||||
if "errors" in result:
|
if "errors" in result:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
"Errors occurred: {}\nOriginal query: {}".format(
|
f"Errors occurred: {result['errors']}\nOriginal query: {query}"
|
||||||
result["errors"], query
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if not is_mutation:
|
if not is_mutation:
|
||||||
if caller not in list(self.api_costs.keys()):
|
if caller not in self.api_costs:
|
||||||
self.api_costs[caller] = 0
|
self.api_costs[caller] = 0
|
||||||
self.api_costs[caller] += result["data"]["rateLimit"]["cost"]
|
self.api_costs[caller] += result["data"]["rateLimit"]["cost"]
|
||||||
|
|
||||||
return result["data"]
|
return result["data"]
|
||||||
else:
|
else:
|
||||||
raise Exception(
|
data = json.dumps(response.json(), indent=4)
|
||||||
"Query failed with code {code}:\n{json}".format(
|
raise Exception(f"Query failed with code {response.status_code}:\n{data}")
|
||||||
code=response.status_code,
|
|
||||||
json=json.dumps(response.json(), indent=4),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user