44import tomlkit
55from setuptools import find_packages
66
7- from .types import BaseReader , Distribution
7+ from .pep621 import Pep621Reader
8+ from .types import Distribution
89
910
10- class FlitReader (BaseReader ):
11+ class FlitReader (Pep621Reader ):
1112 def __init__ (self , path : Path ):
1213 self .path = path
1314
@@ -21,12 +22,12 @@ def get_metadata(self) -> Distribution:
2122 pyproject = self .path / "pyproject.toml"
2223 doc = tomlkit .parse (pyproject .read_text ())
2324
24- d = Distribution ()
25- d .metadata_version = "2.1"
26- d .project_urls = {}
27- d .entry_points = {}
25+ d = self .get_pep621_metadata ()
26+ d .entry_points = dict (d .entry_points ) or {}
2827
29- for k , v in doc ["tool" ]["flit" ]["metadata" ].items ():
28+ flit = doc .get ("tool" , {}).get ("flit" , {})
29+ metadata = flit .get ("metadata" , {})
30+ for k , v in metadata .items ():
3031 # TODO description-file -> long_description
3132 # TODO home-page -> urls
3233 # TODO requires -> requires_dist
@@ -52,10 +53,10 @@ def get_metadata(self) -> Distribution:
5253 if k2 in d :
5354 setattr (d , k2 , v )
5455
55- for k , v in doc [ "tool" ][ "flit" ][ " metadata" ] .get ("urls" , {}).items ():
56+ for k , v in metadata .get ("urls" , {}).items ():
5657 d .project_urls [k ] = v
5758
58- for k , v in doc [ "tool" ][ " flit" ] .get ("scripts" , {}).items ():
59+ for k , v in flit .get ("scripts" , {}).items ():
5960 d .entry_points [k ] = v
6061
6162 # TODO extras-require
@@ -72,8 +73,7 @@ def _get_requires(self) -> Sequence[str]:
7273
7374 https://github.com/takluyver/flit/issues/141
7475 """
75- pyproject = self .path / "pyproject.toml"
76- doc = tomlkit .parse (pyproject .read_text ())
77- seq = doc ["tool" ]["flit" ]["metadata" ].get ("requires" , ())
76+ dist = self .get_metadata ()
77+ seq = dist .requires_dist
7878 assert isinstance (seq , (list , tuple ))
7979 return seq
0 commit comments