refactor: add common base class to GitHubClient and LocalClient

Enables adding type checking to minimize mypy errors
This commit is contained in:
Robert Alonso 2024-10-28 18:01:56 +00:00
parent ef72f61bed
commit f1f17d8372
4 changed files with 19 additions and 12 deletions

12
Client.py Normal file
View File

@ -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"

View File

@ -1,8 +1,9 @@
import os import os
import requests import requests
import json import json
from Client import Client
class GitHubClient(object): class GitHubClient(Client):
"""Basic client for getting the last diff and managing issues.""" """Basic client for getting the last diff and managing issues."""
existing_issues = [] existing_issues = []
milestones = [] milestones = []

View File

@ -1,7 +1,8 @@
import subprocess import subprocess
import os import os
from Client import Client
class LocalClient(object): class LocalClient(Client):
def __init__(self): def __init__(self):
self.diff_url = None self.diff_url = None
self.commits = ['placeholder'] # content doesn't matter, just length self.commits = ['placeholder'] # content doesn't matter, just length
@ -31,12 +32,3 @@ class LocalClient(object):
def get_last_diff(self): def get_last_diff(self):
return subprocess.run(['git', 'diff', f'{self.base_ref}..{self.sha}'], stdout=subprocess.PIPE).stdout.decode('latin-1') 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"

View File

@ -10,18 +10,20 @@ import operator
from collections import defaultdict from collections import defaultdict
from TodoParser import TodoParser from TodoParser import TodoParser
from LineStatus import LineStatus from LineStatus import LineStatus
from Client import Client
from LocalClient import LocalClient from LocalClient import LocalClient
from GitHubClient import GitHubClient from GitHubClient import GitHubClient
if __name__ == "__main__": 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 to create a basic client for communicating with the remote version control server, automatically initialised with environment variables.
try: try:
# try to build a GitHub client # try to build a GitHub client
client = GitHubClient() client = GitHubClient()
except EnvironmentError: except EnvironmentError:
# don't immediately give up # don't immediately give up
client = None pass
# if needed, fall back to using a local client for testing # if needed, fall back to using a local client for testing
client = client or LocalClient() client = client or LocalClient()