forked from twisted/txmongo
-
Notifications
You must be signed in to change notification settings - Fork 2
/
setup.py
106 lines (91 loc) · 3.7 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
#!/usr/bin/env python
import sys
import os
import shutil
from setuptools import setup
from setuptools import Feature
from distutils.cmd import Command
from distutils.command.build_ext import build_ext
from distutils.errors import CCompilerError
from distutils.errors import DistutilsPlatformError, DistutilsExecError
from distutils.core import Extension
requirements = ["twisted"]
try:
import xml.etree.ElementTree
except ImportError:
requirements.append("elementtree")
if sys.platform == 'win32' and sys.version_info > (2, 6):
# 2.6's distutils.msvc9compiler can raise an IOError when failing to
# find the compiler
build_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError,
IOError)
else:
build_errors = (CCompilerError, DistutilsExecError, DistutilsPlatformError)
class custom_build_ext(build_ext):
"""Allow C extension building to fail.
The C extension speeds up BSON encoding, but is not essential.
"""
warning_message = """
**************************************************************
WARNING: %s could not
be compiled. No C extensions are essential for PyMongo to run,
although they do result in significant speed improvements.
%s
**************************************************************
"""
def run(self):
try:
build_ext.run(self)
except DistutilsPlatformError, e:
print e
print self.warning_message % ("Extension modules",
"There was an issue with your "
"platform configuration - see above.")
def build_extension(self, ext):
if sys.version_info[:3] >= (2, 4, 0):
try:
build_ext.build_extension(self, ext)
except build_errors:
print self.warning_message % ("The %s extension module" % ext.name,
"Above is the ouput showing how "
"the compilation failed.")
else:
print self.warning_message % ("The %s extension module" % ext.name,
"Please use Python >= 2.4 to take "
"advantage of the extension.")
c_ext = Feature(
"optional C extension",
standard=True,
ext_modules=[Extension('txmongo._pymongo._cbson',
include_dirs=['txmongo/_pymongo'],
sources=['txmongo/_pymongo/_cbsonmodule.c',
'txmongo/_pymongo/time_helpers.c',
'txmongo/_pymongo/encoding_helpers.c'])])
if "--no_ext" in sys.argv:
sys.argv = [x for x in sys.argv if x != "--no_ext"]
features = {}
else:
features = {"c-ext": c_ext}
setup(
name="txmongo",
version="0.4",
description="Asynchronous Python driver for MongoDB <http://www.mongodb.org>",
author="Alexandre Fiori",
author_email="[email protected]",
url="http://github.com/fiorix/mongo-async-python-driver",
keywords=["mongo", "mongodb", "pymongo", "gridfs", "txmongo"],
packages=["txmongo", "txmongo._pymongo", "txmongo._gridfs"],
features=features,
license="Apache License, Version 2.0",
test_suite="nose.collector",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python",
"Topic :: Database"],
cmdclass={"build_ext": custom_build_ext,
"doc": ""})