bin/pick: fix issue where None for nomination_type could fail
We have an assumption it's never None, so use a special value in the Enum instead. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23472>
This commit is contained in:
@@ -40,7 +40,7 @@ if typing.TYPE_CHECKING:
|
|||||||
sha: str
|
sha: str
|
||||||
description: str
|
description: str
|
||||||
nominated: bool
|
nominated: bool
|
||||||
nomination_type: typing.Optional[int]
|
nomination_type: int
|
||||||
resolution: typing.Optional[int]
|
resolution: typing.Optional[int]
|
||||||
main_sha: typing.Optional[str]
|
main_sha: typing.Optional[str]
|
||||||
because_sha: typing.Optional[str]
|
because_sha: typing.Optional[str]
|
||||||
@@ -71,6 +71,7 @@ class NominationType(enum.Enum):
|
|||||||
CC = 0
|
CC = 0
|
||||||
FIXES = 1
|
FIXES = 1
|
||||||
REVERT = 2
|
REVERT = 2
|
||||||
|
NONE = 3
|
||||||
|
|
||||||
|
|
||||||
@enum.unique
|
@enum.unique
|
||||||
@@ -116,15 +117,14 @@ class Commit:
|
|||||||
sha: str = attr.ib()
|
sha: str = attr.ib()
|
||||||
description: str = attr.ib()
|
description: str = attr.ib()
|
||||||
nominated: bool = attr.ib(False)
|
nominated: bool = attr.ib(False)
|
||||||
nomination_type: typing.Optional[NominationType] = attr.ib(None)
|
nomination_type: NominationType = attr.ib(NominationType.NONE)
|
||||||
resolution: Resolution = attr.ib(Resolution.UNRESOLVED)
|
resolution: Resolution = attr.ib(Resolution.UNRESOLVED)
|
||||||
main_sha: typing.Optional[str] = attr.ib(None)
|
main_sha: typing.Optional[str] = attr.ib(None)
|
||||||
because_sha: typing.Optional[str] = attr.ib(None)
|
because_sha: typing.Optional[str] = attr.ib(None)
|
||||||
|
|
||||||
def to_json(self) -> 'CommitDict':
|
def to_json(self) -> 'CommitDict':
|
||||||
d: typing.Dict[str, typing.Any] = attr.asdict(self)
|
d: typing.Dict[str, typing.Any] = attr.asdict(self)
|
||||||
if self.nomination_type is not None:
|
d['nomination_type'] = self.nomination_type.value
|
||||||
d['nomination_type'] = self.nomination_type.value
|
|
||||||
if self.resolution is not None:
|
if self.resolution is not None:
|
||||||
d['resolution'] = self.resolution.value
|
d['resolution'] = self.resolution.value
|
||||||
return typing.cast('CommitDict', d)
|
return typing.cast('CommitDict', d)
|
||||||
@@ -132,8 +132,7 @@ class Commit:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, data: 'CommitDict') -> 'Commit':
|
def from_json(cls, data: 'CommitDict') -> 'Commit':
|
||||||
c = cls(data['sha'], data['description'], data['nominated'], main_sha=data['main_sha'], because_sha=data['because_sha'])
|
c = cls(data['sha'], data['description'], data['nominated'], main_sha=data['main_sha'], because_sha=data['because_sha'])
|
||||||
if data['nomination_type'] is not None:
|
c.nomination_type = NominationType(data['nomination_type'])
|
||||||
c.nomination_type = NominationType(data['nomination_type'])
|
|
||||||
if data['resolution'] is not None:
|
if data['resolution'] is not None:
|
||||||
c.resolution = Resolution(data['resolution'])
|
c.resolution = Resolution(data['resolution'])
|
||||||
return c
|
return c
|
||||||
|
Reference in New Issue
Block a user