1
+ '''
2
+ Function:
3
+ Setup cssegmentation
4
+ Author:
5
+ Zhenchao Jin
6
+ '''
7
+ import os
8
+ import re
9
+ import sys
10
+ import csseg
11
+ from setuptools import setup , find_packages
12
+
13
+
14
+ '''readme'''
15
+ with open ('README.md' , 'r' , encoding = 'utf-8' ) as f :
16
+ long_description = f .read ()
17
+
18
+
19
+ '''parse the package dependencies listed in a requirements file but strips specific versioning information'''
20
+ def parserequirements (fname = 'requirements.txt' , with_version = True ):
21
+ require_fpath = fname
22
+ '''parse information from a line in a requirements text file'''
23
+ def parseline (line ):
24
+ if line .startswith ('-r ' ):
25
+ target = line .split (' ' )[1 ]
26
+ for info in parserequirefile (target ):
27
+ yield info
28
+ else :
29
+ info = {'line' : line }
30
+ if line .startswith ('-e ' ):
31
+ info ['package' ] = line .split ('#egg=' )[1 ]
32
+ elif '@git+' in line :
33
+ info ['package' ] = line
34
+ else :
35
+ pat = '(' + '|' .join (['>=' , '==' , '>' ]) + ')'
36
+ parts = re .split (pat , line , maxsplit = 1 )
37
+ parts = [p .strip () for p in parts ]
38
+ info ['package' ] = parts [0 ]
39
+ if len (parts ) > 1 :
40
+ op , rest = parts [1 :]
41
+ if ';' in rest :
42
+ version , platform_deps = map (str .strip , rest .split (';' ))
43
+ info ['platform_deps' ] = platform_deps
44
+ else :
45
+ version = rest
46
+ info ['version' ] = (op , version )
47
+ yield info
48
+ '''parse require file'''
49
+ def parserequirefile (fpath ):
50
+ with open (fpath , 'r' ) as f :
51
+ for line in f .readlines ():
52
+ line = line .strip ()
53
+ if line and not line .startswith ('#' ):
54
+ for info in parseline (line ):
55
+ yield info
56
+ '''gen packages items'''
57
+ def genpackagesitems ():
58
+ if os .path .exists (require_fpath ):
59
+ for info in parserequirefile (require_fpath ):
60
+ parts = [info ['package' ]]
61
+ if with_version and 'version' in info :
62
+ parts .extend (info ['version' ])
63
+ if not sys .version .startswith ('3.4' ):
64
+ platform_deps = info .get ('platform_deps' )
65
+ if platform_deps is not None :
66
+ parts .append (';' + platform_deps )
67
+ item = '' .join (parts )
68
+ yield item
69
+ # parse and return
70
+ packages = list (genpackagesitems ())
71
+ return packages
72
+
73
+
74
+ '''setup'''
75
+ setup (
76
+ name = csseg .__title__ ,
77
+ version = csseg .__version__ ,
78
+ description = csseg .__description__ ,
79
+ long_description = long_description ,
80
+ long_description_content_type = 'text/markdown' ,
81
+ classifiers = [
82
+ 'License :: OSI Approved :: Apache Software License' ,
83
+ 'Programming Language :: Python :: 3' ,
84
+ 'Intended Audience :: Developers' ,
85
+ 'Operating System :: OS Independent'
86
+ ],
87
+ author = csseg .__author__ ,
88
+ url = csseg .__url__ ,
89
+ author_email = csseg .__email__ ,
90
+ license = csseg .__license__ ,
91
+ include_package_data = True ,
92
+ install_requires = parserequirements ('requirements.txt' ),
93
+ zip_safe = True ,
94
+ packages = find_packages ()
95
+ )
0 commit comments