blob: 10733b4750a96cfe936f88bd62d81b64feb85cdb [file] [log] [blame]
# Copyright 2021 Google LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# https://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from enum import IntEnum
import numpy as np
import pandas as pd
import pathlib
class ChangeType(IntEnum):
UNKNOWN = 0
DELETED = 1
ADDED = 2
CHANGED = 3
def get_commit_link(name):
"""Return a string with a link to the last commit for the given
API Name.
args:
name (str): The name of the api.
"""
url = "https://github.com/googleapis/google-api-python-client/commit/"
sha = None
api_link = ""
file_path = pathlib.Path(directory).joinpath("{0}.sha".format(name))
if file_path.is_file():
with open(file_path, "r") as f:
sha = f.readline().rstrip()
if sha:
api_link = "[{0}]({1}{2})".format(" [More details]", url, sha)
return api_link
if __name__ == "__main__":
directory = pathlib.Path("temp")
dataframe = pd.read_csv("temp/allapis.dataframe")
dataframe["Version"] = dataframe["Version"].astype(str)
dataframe["Commit"] = np.vectorize(get_commit_link)(dataframe["Name"])
stable_and_breaking = (
dataframe[
dataframe["IsStable"]
& (dataframe["ChangeType"] == ChangeType.DELETED)
][["Name", "Version", "Commit"]]
.drop_duplicates()
.agg("".join, axis=1)
.values
)
prestable_and_breaking = (
dataframe[
(dataframe["IsStable"] == False)
& (dataframe["ChangeType"] == ChangeType.DELETED)
][["Name", "Version", "Commit"]]
.drop_duplicates()
.agg("".join, axis=1)
.values
)
all_apis = (
dataframe[["Name", "Version", "Commit"]]
.drop_duplicates()
.agg("".join, axis=1)
.values
)
with open(directory / "allapis.summary", "w") as f:
if len(stable_and_breaking) > 0:
f.writelines(
[
"## Deleted keys were detected in the following stable discovery artifacts:\n",
"\n".join(stable_and_breaking),
"\n\n",
]
)
if len(prestable_and_breaking) > 0:
f.writelines(
[
"## Deleted keys were detected in the following pre-stable discovery artifacts:\n",
"\n".join(prestable_and_breaking),
"\n\n",
]
)
if len(all_apis) > 0:
f.writelines(
["## Discovery Artifact Change Summary:\n", "\n".join(all_apis), "\n"]
)