@@ -46,7 +46,6 @@ def get_metadata_from_file(self, file: IO[Any]) -> Metadata:
4646 third = third .strip ().lower ()
4747 title : str | None = None
4848 kind : TitleKind | None = None
49-
5049 if self .is_overlined_title (first , second , third ):
5150 title = second
5251 kind = (first [0 ], third [0 ])
@@ -67,10 +66,29 @@ def get_metadata_from_file(self, file: IO[Any]) -> Metadata:
6766 # Try to find the latest release done
6867 m = re .search (self .version_parser , title )
6968 if m :
70- version = m .group ("version" )
71- meta .latest_version = version
72- meta .latest_version_position = index
73- break # there's no need for more info
69+ matches = m .groupdict ()
70+ if "version" in matches :
71+ version = m .group ("version" )
72+ meta .latest_version = version
73+ meta .latest_version_position = index
74+ break # there's no need for more info
75+ try :
76+ partial_version = (
77+ f"{ matches ['major' ]} .{ matches ['minor' ]} .{ matches ['patch' ]} "
78+ )
79+ if matches .get ("prerelease" ):
80+ partial_version = (
81+ f"{ partial_version } -{ matches ['prerelease' ]} "
82+ )
83+ if matches .get ("devrelease" ):
84+ partial_version = (
85+ f"{ partial_version } { matches ['devrelease' ]} "
86+ )
87+ meta .latest_version = partial_version
88+ meta .latest_version_position = index
89+ break
90+ except KeyError :
91+ pass
7492 if meta .unreleased_start is not None and meta .unreleased_end is None :
7593 meta .unreleased_end = (
7694 meta .latest_version_position if meta .latest_version else index + 1
0 commit comments