@@ -110,15 +110,15 @@ def _parse_local_str(cls, local: str) -> tuple:
110110 _re_sep , _re_letters , _re_number )
111111 _re_local = r'(?P<local>\+{0}([\.-]{0})*)' .format (_re_alphanumeric )
112112 # _re_named_parts_count = 3 + 3
113- _re_version = r'{}{ }?{}?'. format ( _re_release , _re_pre_release , _re_local )
113+ _re_version = rf' { _re_release } { _re_pre_release } ?{ _re_local } ?'
114114 _pattern_version = re .compile (_re_version )
115115
116116 @classmethod
117117 def from_str (cls , version_str : str ):
118118 """Create version from string."""
119119 match = cls ._pattern_version .fullmatch (version_str ) # type: t.Optional[t.Match[str]]
120120 if match is None :
121- raise ValueError ('version string {} is invalid' . format ( repr ( version_str )) )
121+ raise ValueError (f 'version string { repr ( version_str ) } is invalid' )
122122 _LOG .debug ('version_query parsed version string %s into %s: %s %s' ,
123123 repr (version_str ), type (match ), match .groupdict (), match .groups ())
124124
@@ -381,23 +381,20 @@ def local(self, local: t.Optional[t.Sequence[str]]):
381381 return
382382
383383 if not isinstance (local , collections .abc .Sequence ):
384- raise TypeError ('local={} is of wrong type {} in {}'
385- .format (repr (local ), type (local ), repr (self )))
384+ raise TypeError (f'local={ repr (local )} is of wrong type { type (local )} in { repr (self )} ' )
386385
387386 if len (local ) % 2 != 1 :
388- raise ValueError ('local={} has wrong length {} in {}'
389- .format (repr (local ), len (local ), repr (self )))
387+ raise ValueError (f'local={ repr (local )} has wrong length { len (local )} in { repr (self )} ' )
390388
391389 for i , part in enumerate (local ):
392390 if not isinstance (part , str ):
393- raise TypeError ('local_part or local_separator {} is of wrong type {} in {}'
394- .format (repr (part ), type (part ), repr (self )))
395- if i % 2 == 0 and type (self )._pattern_alphanumeric .fullmatch (part ) is None :
396- raise ValueError ('local_part={} has wrong value in {}'
397- .format (repr (part ), repr (self )))
398- if i % 2 == 1 and part not in ('-' , '.' ):
399- raise ValueError ('local_separator={} has wrong value in {}'
400- .format (repr (part ), repr (self )))
391+ raise TypeError (f'local_part or local_separator { repr (part )} is of wrong type'
392+ f' { type (part )} in { repr (self )} ' )
393+ if i % 2 == 0 :
394+ if type (self )._pattern_alphanumeric .fullmatch (part ) is None :
395+ raise ValueError (f'local_part={ repr (part )} has wrong value in { repr (self )} ' )
396+ elif part not in ('-' , '.' ):
397+ raise ValueError (f'local_separator={ repr (part )} has wrong value in { repr (self )} ' )
401398
402399 self ._local = tuple (local )
403400
@@ -408,12 +405,11 @@ def has_local(self):
408405 def increment (self , component : VersionComponent , amount : int = 1 ) -> 'Version' :
409406 """Increment a selected version component and return self."""
410407 if not isinstance (component , VersionComponent ):
411- raise TypeError ('component={} is of wrong type {}'
412- .format (repr (component ), type (component )))
408+ raise TypeError (f'component={ repr (component )} is of wrong type { type (component )} ' )
413409 if not isinstance (amount , int ):
414- raise TypeError ('amount={} is of wrong type {}' . format ( repr ( amount ), type (amount )) )
410+ raise TypeError (f 'amount={ repr ( amount ) } is of wrong type { type (amount )} ' )
415411 if amount < 1 :
416- raise ValueError ('amount={} has wrong value' . format ( amount ) )
412+ raise ValueError (f 'amount={ amount } has wrong value' )
417413
418414 if component in (VersionComponent .Major , VersionComponent .Minor , VersionComponent .Patch ):
419415 self ._increment_release (component , amount )
@@ -434,7 +430,7 @@ def increment(self, component: VersionComponent, amount: int = 1) -> 'Version':
434430 pre_patch += amount
435431 self ._pre_release [- 1 ] = (pre_sep , pre_type , pre_patch )
436432 else :
437- raise ValueError ('incrementing component={} is not possible' . format ( repr ( component )) )
433+ raise ValueError (f 'incrementing component={ repr ( component ) } is not possible' )
438434
439435 return self
440436
@@ -497,18 +493,18 @@ def release_to_str(self) -> str:
497493 return '.' .join (str (_ ) for _ in version_tuple [:2 ])
498494 if _version_tuple_checker (version_tuple , (True , True , True )):
499495 return '.' .join (str (_ ) for _ in version_tuple [:3 ])
500- raise ValueError ('cannot generate valid version string from {}' . format ( repr (self )) )
496+ raise ValueError (f 'cannot generate valid version string from { repr (self )} ' )
501497
502498 def _pre_release_segment_to_str (self , segment : int ) -> str :
503499 assert self ._pre_release is not None
504500 version_tuple = self ._pre_release [segment ]
505501 if _version_tuple_checker (version_tuple , (True , True , False )):
506502 return '{}{}' .format (* version_tuple [:2 ])
507503 if _version_tuple_checker (version_tuple , (True , False , True )):
508- return '{}{}' . format ( version_tuple [0 ], version_tuple [2 ])
504+ return f' { version_tuple [0 ]} { version_tuple [2 ]} '
509505 if _version_tuple_checker (version_tuple , (True , True , True )):
510506 return '{}{}{}' .format (* version_tuple )
511- raise ValueError ('cannot generate valid version string from {}' . format ( repr (self )) )
507+ raise ValueError (f 'cannot generate valid version string from { repr (self )} ' )
512508
513509 def pre_release_to_str (self ) -> str :
514510 if self ._pre_release is None :
@@ -519,11 +515,10 @@ def pre_release_to_str(self) -> str:
519515 def local_to_str (self ) -> str :
520516 if not self ._local :
521517 return ''
522- return '+{}' . format ( '' . join (self ._local ))
518+ return f '+{ "" . join (self ._local )} '
523519
524520 def to_str (self ) -> str :
525- return '{}{}{}' .format (self .release_to_str (), self .pre_release_to_str (),
526- self .local_to_str ())
521+ return f'{ self .release_to_str ()} { self .pre_release_to_str ()} { self .local_to_str ()} '
527522
528523 def release_to_tuple (self , sort : bool = False ) -> tuple :
529524 return (0 if sort else None ) if self ._major is None else self ._major , \
@@ -567,8 +562,8 @@ def to_sem_version(self) -> dict:
567562 return semver .parse (self .to_str ())
568563
569564 def __repr__ (self ):
570- return '{}({})' . format ( type ( self ).__name__ , ', ' . join (
571- '{}: {}' . format ( field [ 1 :], repr ( value )) for field , value in vars ( self ).items ()))
565+ fields = ', ' . join ( f' { field [ 1 :] } : { repr ( value ) } ' for field , value in vars ( self ).items ())
566+ return f' { type ( self ).__name__ } ( { fields } )'
572567
573568 def __str__ (self ):
574569 return self .to_str ()
0 commit comments