88from ast import parse
99from distutils .sysconfig import get_python_lib
1010from functools import partial
11+ from operator import attrgetter , itemgetter
1112from os import listdir , path
13+ from sys import version_info
1214
1315from setuptools import find_packages , setup
1416
17+ if version_info [0 ] == 2 :
18+ from itertools import ifilter as filter
19+ from itertools import imap as map
20+
1521package_name = "nginxctl"
1622
1723
@@ -22,7 +28,7 @@ def to_funcs(*paths):
2228 :param paths: one or more str, referring to relative folder names
2329 :type paths: ```*paths```
2430
25- :return : 2 functions
31+ :returns : 2 functions
2632 :rtype: ```Tuple[Callable[Optional[List[str]], str], Callable[Optional[List[str]], str]]```
2733 """
2834 return (
@@ -34,11 +40,23 @@ def to_funcs(*paths):
3440if __name__ == "__main__" :
3541 with open (path .join (package_name , "__init__.py" )) as f :
3642 __author__ , __version__ = map (
37- lambda buf : next (map (lambda e : e .value .s , parse (buf ).body )),
38- filter (
39- lambda line : line .startswith ("__version__" )
40- or line .startswith ("__author__" ),
41- f ,
43+ lambda const : const .value if version_info > (3 , 6 ) else const .s ,
44+ map (
45+ attrgetter ("value" ),
46+ map (
47+ itemgetter (0 ),
48+ map (
49+ attrgetter ("body" ),
50+ map (
51+ parse ,
52+ filter (
53+ lambda line : line .startswith ("__version__" )
54+ or line .startswith ("__author__" ),
55+ f ,
56+ ),
57+ ),
58+ ),
59+ ),
4260 ),
4361 )
4462
0 commit comments