1
0
Fork 0
mirror of https://github.com/Findus23/new-github-changelog-generator.git synced 2024-08-27 19:52:18 +02:00
new-github-changelog-generator/generator/issue.py

51 lines
1.6 KiB
Python
Raw Normal View History

2019-02-02 22:12:08 +01:00
from datetime import date, datetime
from typing import List
2019-02-03 14:10:17 +01:00
from generator import Author, config
2019-02-02 22:12:08 +01:00
class Issue():
def __init__(self, api):
self.number = api["number"] # type:int
self.title = api["title"] # type:str
2019-02-03 16:33:44 +01:00
self.url = api["html_url"] # type:str
2019-02-02 22:12:08 +01:00
self.labels = [l["name"] for l in api["labels"]] # type:List[str]
self.closed_at = datetime.strptime(api["closed_at"], "%Y-%m-%dT%H:%M:%SZ")
self.pull_request = "pull_request" in api
2019-02-03 14:10:17 +01:00
self.events_url = api["events_url"]
2019-02-02 22:12:08 +01:00
if self.pull_request:
self.pr_url = api["pull_request"]["url"]
2019-02-03 14:10:17 +01:00
self.closed_before_since = None # type:bool
self.merged = None # type:bool
self.authors = set() # type:set
self.creator = Author(api["user"])
2019-02-03 16:33:44 +01:00
if self.pull_request:
self.authors.add(self.creator)
2019-02-02 22:12:08 +01:00
2019-02-03 14:10:17 +01:00
def __repr__(self):
return "<Issue #{}>".format(self.number)
def add_pr_data(self, api):
self.merged = "merged_at" in api
2019-02-02 22:12:08 +01:00
def compare_close_date(self, since: date):
self.closed_before_since = self.closed_at < since
2019-02-03 14:10:17 +01:00
def add_author(self, author: Author):
self.authors.add(author)
2019-02-02 22:12:08 +01:00
@property
def has_ignored_label(self) -> bool:
return not config.labels_to_ignore.isdisjoint(self.labels)
@property
def should_be_included(self) -> bool:
2019-02-03 14:10:17 +01:00
if self.has_ignored_label:
return False
if self.closed_before_since:
return False
if self.pull_request and not self.merged:
return False
return True