forked from pympler/pympler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
143 lines (111 loc) · 4.44 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
"""Setup script for Pympler.
To build, install and test Pympler and to try Pympler
before building and installing it.
The HTML documentation is in the doc/ directory. Point
your browser to the ./doc/html/index.html file.
"""
import sys
import pympler.metadata as metadata
def _not_supported(why):
print('NotImplementedError: ' + why + '.')
if 'try' in sys.argv:
print(metadata.long_description)
sys.exit(1)
if sys.hexversion < 0x2060000:
_not_supported('Pympler requires Python 2.6 or newer')
import os
from distutils.command.install_lib import install_lib
from distutils.core import Command
from distutils.core import setup
from distutils.dist import Distribution
from distutils.errors import DistutilsExecError
from distutils.spawn import spawn # raises DistutilsExecError
from shutil import rmtree
# Remove all already installed modules. Make sure old removed or renamed
# modules cannot be imported anymore.
class InstallCommand(install_lib):
def run(self):
target_path = os.path.join(self.install_dir, 'pympler')
try:
rmtree(target_path)
print ("purging %s" % target_path)
except OSError:
pass
install_lib.run(self)
class BaseTestCommand(Command):
"""Base class for the pre and the post installation commands. """
user_options = []
def initialize_options(self):
self.param = None
def finalize_options(self):
pass
def run(self):
args = [sys.executable, # this Python binary
os.path.join('test', 'runtest.py'),
self.param, '-verbose', '3']
args.extend(sys.argv[2:])
try:
sys.exit(spawn(args))
except DistutilsExecError:
sys.exit(1)
class PreinstallTestCommand(BaseTestCommand):
description = "run pre-installation tests"
def initialize_options(self):
self.param = '-pre-install'
class PostinstallTestCommand(BaseTestCommand):
description = "run post-installation tests"
def initialize_options(self):
self.param = '-post-install'
def run_setup(include_tests=0):
tests = []
if include_tests:
tests = ['test', 'test.asizeof', 'test.tracker', 'test.muppy',
'test.gui']
setup(name=metadata.project_name,
description=metadata.description,
long_description=metadata.long_description,
author=metadata.author,
author_email=metadata.author_email,
url=metadata.url,
version=metadata.version,
packages=['pympler', 'pympler.util'] + tests,
package_data={'pympler': ['templates/*.html',
'templates/*.tpl',
'templates/*.js',
'templates/*.css',
'static/*.js']},
license=metadata.license,
platforms=['any'],
classifiers=['Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Topic :: Software Development :: Bug Tracking',
],
cmdclass={'try': PreinstallTestCommand,
'test': PostinstallTestCommand,
'install_lib': InstallCommand,
}
)
try: # hack Pympler commands into setup.py help output
Distribution.common_usage += """
Pympler commands
setup.py try try Pympler before installation
setup.py test test Pympler after installation
"""
except AttributeError:
pass
# Only include tests if creating a distribution package
# (i.e. do not install the tests).
run_setup('sdist' in sys.argv)