Previously, we were running the test suite for several combinations of MongoDB, Python, and PyMongo: - PyPy, MongoDB v2.6, PyMongo v3.x (which really means v3.6.1 at the moment) - Python v2.7, MongoDB v2.6, PyMongo v3.x - Python v3.5, MongoDB v2.6, PyMongo v3.x - Python v3.6, MongoDB v2.6, PyMongo v3.x - Python v2.7, MongoDB v3.0, PyMongo v3.5.0 - Python v3.6, MongoDB v3.0, PyMongo v3.5.0 - Python v3.5, MongoDB v3.2, PyMongo v3.x - Python v3.6, MongoDB v3.2, PyMongo v3.x - Python v3.6, MongoDB v3.4, PyMongo v3.x - Python v3.6, MongoDB v3.6, PyMongo v3.x There were a couple issues with this setup: 1. MongoDB v2.6 – v3.2 have reached their End of Life already (v2.6 almost 3 years ago!). See the "MongoDB Server" section on https://www.mongodb.com/support-policy. 2. We were only testing two recent-ish PyMongo versions (v3.5.0 & v3.6.1). We were not testing the oldest actively supported MongoDB/PyMongo/Python setup. This PR updates the test matrix so that these problems are solved. For the sake of simplicity, it does not yet attempt to cover MongoDB v4.0: - PyPy, MongoDB v3.4, PyMongo v3.x (aka v3.6.1 at the moment) - Python v2.7, MongoDB v3.4, PyMongo v3.x - Python v3.5, MongoDB v3.4, PyMongo v3.x - Python v3.6, MongoDB v3.4, PyMongo v3.x - Python v2.7, MongoDB v3.4, PyMongo v3.4 - Python v3.6, MongoDB v3.6, PyMongo v3.x
87 lines
2.7 KiB
Python
87 lines
2.7 KiB
Python
import os
|
|
import sys
|
|
from setuptools import find_packages, setup
|
|
|
|
# Hack to silence atexit traceback in newer python versions
|
|
try:
|
|
import multiprocessing
|
|
except ImportError:
|
|
pass
|
|
|
|
DESCRIPTION = (
|
|
'MongoEngine is a Python Object-Document '
|
|
'Mapper for working with MongoDB.'
|
|
)
|
|
|
|
try:
|
|
with open('README.rst') as fin:
|
|
LONG_DESCRIPTION = fin.read()
|
|
except Exception:
|
|
LONG_DESCRIPTION = None
|
|
|
|
|
|
def get_version(version_tuple):
|
|
"""Return the version tuple as a string, e.g. for (0, 10, 7),
|
|
return '0.10.7'.
|
|
"""
|
|
return '.'.join(map(str, version_tuple))
|
|
|
|
|
|
# Dirty hack to get version number from monogengine/__init__.py - we can't
|
|
# import it as it depends on PyMongo and PyMongo isn't installed until this
|
|
# file is read
|
|
init = os.path.join(os.path.dirname(__file__), 'mongoengine', '__init__.py')
|
|
version_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0]
|
|
|
|
VERSION = get_version(eval(version_line.split('=')[-1]))
|
|
|
|
CLASSIFIERS = [
|
|
'Development Status :: 4 - Beta',
|
|
'Intended Audience :: Developers',
|
|
'License :: OSI Approved :: MIT License',
|
|
'Operating System :: OS Independent',
|
|
'Programming Language :: Python',
|
|
"Programming Language :: Python :: 2",
|
|
"Programming Language :: Python :: 2.7",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.5",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
'Topic :: Database',
|
|
'Topic :: Software Development :: Libraries :: Python Modules',
|
|
]
|
|
|
|
extra_opts = {
|
|
'packages': find_packages(exclude=['tests', 'tests.*']),
|
|
'tests_require': ['nose', 'coverage==4.2', 'blinker', 'Pillow>=2.0.0']
|
|
}
|
|
if sys.version_info[0] == 3:
|
|
extra_opts['use_2to3'] = True
|
|
if 'test' in sys.argv or 'nosetests' in sys.argv:
|
|
extra_opts['packages'] = find_packages()
|
|
extra_opts['package_data'] = {
|
|
'tests': ['fields/mongoengine.png', 'fields/mongodb_leaf.png']}
|
|
else:
|
|
extra_opts['tests_require'] += ['python-dateutil']
|
|
|
|
setup(
|
|
name='mongoengine',
|
|
version=VERSION,
|
|
author='Harry Marr',
|
|
author_email='harry.marr@gmail.com',
|
|
maintainer="Stefan Wojcik",
|
|
maintainer_email="wojcikstefan@gmail.com",
|
|
url='http://mongoengine.org/',
|
|
download_url='https://github.com/MongoEngine/mongoengine/tarball/master',
|
|
license='MIT',
|
|
include_package_data=True,
|
|
description=DESCRIPTION,
|
|
long_description=LONG_DESCRIPTION,
|
|
platforms=['any'],
|
|
classifiers=CLASSIFIERS,
|
|
install_requires=['pymongo>=3.4', 'six'],
|
|
test_suite='nose.collector',
|
|
**extra_opts
|
|
)
|