@@ -581,7 +581,16 @@ def version(version_str, strict = False):
581581 if not parts :
582582 return None
583583
584- return _new_version (** parts )
584+ return _new_version (
585+ epoch = _parse_epoch (parts ["epoch" ]),
586+ release = _parse_release (parts ["release" ]),
587+ pre = _parse_pre (parts ["pre" ]),
588+ post = _parse_post (parts ["post" ]),
589+ dev = _parse_dev (parts ["dev" ]),
590+ local = _parse_local (parts ["local" ]),
591+ string = parts ["norm" ],
592+ is_prefix = parts ["is_prefix" ],
593+ )
585594
586595def _parse_epoch (value ):
587596 if not value :
@@ -635,48 +644,24 @@ def _parse_post(value):
635644 # it. Use `ord` and `chr` functions to find a good value.
636645 return ("~" , post )
637646
638- def _new_version (
639- * ,
640- norm ,
641- epoch = 0 ,
642- release ,
643- pre = "" ,
644- post = "" ,
645- dev = "" ,
646- local = "" ,
647- is_prefix = False ):
648- self = struct (
649- epoch = _parse_epoch (epoch ),
650- release = _parse_release (release ),
651- pre = _parse_pre (pre ),
652- post = _parse_post (post ),
653- dev = _parse_dev (dev ),
654- local = _parse_local (local ),
655- is_prefix = is_prefix ,
656- string = norm ,
657- )
647+ def _new_version (** kwargs ):
648+ self = struct (** kwargs )
658649
659- public = struct (
650+ return struct (
651+ # methods, keep sorted
652+ compatible = mkmethod (self , _version_compatible ),
660653 eq = mkmethod (self , _version_eq ),
661654 eqq = mkmethod (self , _version_eqq ),
662655 ge = mkmethod (self , _version_ge ),
663656 gt = mkmethod (self , _version_gt ),
657+ key = mkmethod (self , _version_key ),
664658 le = mkmethod (self , _version_le ),
665659 lt = mkmethod (self , _version_lt ),
666660 ne = mkmethod (self , _version_ne ),
667- compatible = mkmethod (self , _version_compatible ),
668- key = mkmethod (self , _version_key ),
669- epoch = self .epoch ,
670- release = self .release ,
671- pre = self .pre ,
672- post = self .post ,
673- dev = self .dev ,
674- local = self .local ,
675- is_prefix = self .is_prefix ,
676- string = norm ,
677- )
678661
679- return public
662+ # attrs are the same as self
663+ ** kwargs
664+ )
680665
681666def _pad_zeros (release , n ):
682667 padding = n - len (release )
0 commit comments