@@ -206,8 +206,9 @@ def __init__(
206206 self ._major : t .Optional [int ] = None
207207 self ._minor : t .Optional [int ] = None
208208 self ._patch : t .Optional [int ] = None
209- self ._pre_release = None
210- self ._local = None
209+ self ._pre_release : t .Optional [
210+ t .List [t .Tuple [t .Optional [str ], t .Optional [str ], t .Optional [int ]]]] = None
211+ self ._local : t .Optional [t .Sequence [str ]] = None
211212
212213 self .release = major , minor , patch
213214
@@ -453,6 +454,7 @@ def increment(self, component: VersionComponent, amount: int = 1) -> 'Version':
453454 def _increment_release (self , component : VersionComponent , amount : int ):
454455 if component in (VersionComponent .Major , VersionComponent .Minor ):
455456 if component is VersionComponent .Major :
457+ assert self ._major is not None
456458 self ._major += amount
457459 if self ._minor is not None :
458460 self ._minor = 0
@@ -511,6 +513,7 @@ def release_to_str(self) -> str:
511513 raise ValueError ('cannot generate valid version string from {}' .format (repr (self )))
512514
513515 def _pre_release_segment_to_str (self , segment : int ) -> str :
516+ assert self ._pre_release is not None
514517 version_tuple = self ._pre_release [segment ]
515518 if _version_tuple_checker (version_tuple , (True , True , False )):
516519 return '{}{}' .format (* version_tuple [:2 ])
@@ -541,6 +544,7 @@ def release_to_tuple(self, sort: bool = False) -> tuple:
541544 (0 if sort else None ) if self ._patch is None else self ._patch
542545
543546 def pre_release_segment_to_tuple (self , segment : int , sort : bool = False ) -> tuple :
547+ assert self ._pre_release is not None
544548 pre_separator , pre_type , pre_patch = self ._pre_release [segment ]
545549 return (1 if pre_type is None else 0 ) if sort else pre_separator , \
546550 ('' if pre_type is None else pre_type .lower ()) if sort else pre_type , \
@@ -549,7 +553,9 @@ def pre_release_segment_to_tuple(self, segment: int, sort: bool = False) -> tupl
549553 def pre_release_to_tuple (self , sort : bool = False ) -> tuple :
550554 """Create tuple from this version's pre-release component."""
551555 if self ._pre_release is None :
552- return ((1 , '' , 0 ),) if sort else ()
556+ if sort :
557+ return ((1 , '' , 0 ),)
558+ return ()
553559 parts = [self .pre_release_segment_to_tuple (i , sort )
554560 for i , _ in enumerate (self ._pre_release )]
555561 return tuple (parts ) if sort else tuple (itertools .chain .from_iterable (parts ))
0 commit comments