From f1f17d83720da0ce5e7b03f4ab0c016ebad1705e Mon Sep 17 00:00:00 2001 From: Robert Alonso <17463757+rgalonso@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:01:56 +0000 Subject: [PATCH] refactor: add common base class to GitHubClient and LocalClient Enables adding type checking to minimize mypy errors --- Client.py | 12 ++++++++++++ GitHubClient.py | 3 ++- LocalClient.py | 12 ++---------- main.py | 4 +++- 4 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 Client.py diff --git a/Client.py b/Client.py new file mode 100644 index 0000000..5d9fdf6 --- /dev/null +++ b/Client.py @@ -0,0 +1,12 @@ +class Client(object): + def get_last_diff(self): + return None + + def create_issue(self, issue): + return [201, None] + + def close_issue(self, issue): + return 200 + + def get_issue_url(self, new_issue_number): + return "N/A" diff --git a/GitHubClient.py b/GitHubClient.py index 0c56049..4e3dc28 100644 --- a/GitHubClient.py +++ b/GitHubClient.py @@ -1,8 +1,9 @@ import os import requests import json +from Client import Client -class GitHubClient(object): +class GitHubClient(Client): """Basic client for getting the last diff and managing issues.""" existing_issues = [] milestones = [] diff --git a/LocalClient.py b/LocalClient.py index adbb912..4c8df17 100644 --- a/LocalClient.py +++ b/LocalClient.py @@ -1,7 +1,8 @@ import subprocess import os +from Client import Client -class LocalClient(object): +class LocalClient(Client): def __init__(self): self.diff_url = None self.commits = ['placeholder'] # content doesn't matter, just length @@ -31,12 +32,3 @@ class LocalClient(object): def get_last_diff(self): return subprocess.run(['git', 'diff', f'{self.base_ref}..{self.sha}'], stdout=subprocess.PIPE).stdout.decode('latin-1') - - def create_issue(self, issue): - return [201, None] - - def close_issue(self, issue): - return 200 - - def get_issue_url(self, new_issue_number): - return "N/A" diff --git a/main.py b/main.py index f73f9b1..049dc57 100644 --- a/main.py +++ b/main.py @@ -10,18 +10,20 @@ import operator from collections import defaultdict from TodoParser import TodoParser from LineStatus import LineStatus +from Client import Client from LocalClient import LocalClient from GitHubClient import GitHubClient if __name__ == "__main__": + client: Client | None = None # Try to create a basic client for communicating with the remote version control server, automatically initialised with environment variables. try: # try to build a GitHub client client = GitHubClient() except EnvironmentError: # don't immediately give up - client = None + pass # if needed, fall back to using a local client for testing client = client or LocalClient()