setup.py 4 KB
Newer Older
1 2
##############################################################################
#
3
# Copyright (c) 2008 Zope Foundation and Contributors.
4 5 6 7 8 9 10 11 12 13 14
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################

15
__version__ = '4.0dev'
16 17

import os
Tres Seaver's avatar
Tres Seaver committed
18 19
import platform
import sys
20 21 22 23 24 25


from setuptools import Extension
from setuptools import find_packages
from setuptools import setup

26 27
TESTS_REQUIRE = [
]
28 29 30 31 32 33

here = os.path.abspath(os.path.dirname(__file__))
README = (open(os.path.join(here, 'README.txt')).read()
          + '\n\n' +
          open(os.path.join(here, 'CHANGES.txt')).read())

Tres Seaver's avatar
Tres Seaver committed
34 35 36 37 38 39 40
py_impl = getattr(platform, 'python_implementation', lambda: None)
is_pypy = py_impl() == 'PyPy'
is_jython = 'java' in sys.platform

# Jython cannot build the C optimizations, while on PyPy they are
# anti-optimizations (the C extension compatibility layer is known-slow,
# and defeats JIT opportunities).
Tres Seaver's avatar
Tres Seaver committed
41
if is_pypy or is_jython or sys.version_info[0] > 2:
Tres Seaver's avatar
Tres Seaver committed
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
    ext_modules = headers = []
else:
    ext_modules = [Extension(name = 'persistent.cPersistence',
                             sources= ['persistent/cPersistence.c',
                                       'persistent/ring.c',
                                      ],
                             depends = ['persistent/cPersistence.h',
                                        'persistent/ring.h',
                                        'persistent/ring.c',
                                       ]
                            ),
                   Extension(name = 'persistent.cPickleCache',
                             sources= ['persistent/cPickleCache.c',
                                       'persistent/ring.c'
                                      ],
                             depends = ['persistent/cPersistence.h',
                                        'persistent/ring.h',
                                        'persistent/ring.c',
                                       ]
                            ),
                   Extension(name = 'persistent.TimeStamp',
                             sources= ['persistent/TimeStamp.c',
                                      ],
                            ),
                  ]
    headers = ['persistent/cPersistence.h',
               'persistent/ring.h']

70 71 72 73 74 75 76 77
setup(name='persistent',
      version=__version__,
      description='Translucent persistent objects',
      long_description=README,
      classifiers=[
        "Development Status :: 6 - Mature",
        "License :: OSI Approved :: Zope Public License",
        "Programming Language :: Python",
Tres Seaver's avatar
Tres Seaver committed
78 79 80 81
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        "Programming Language :: Python :: Implementation :: CPython",
        "Programming Language :: Python :: Implementation :: PyPy",
82 83 84 85 86 87 88 89 90 91 92 93 94
        "Topic :: Database",
        "Topic :: Software Development :: Libraries :: Python Modules",
        "Operating System :: Microsoft :: Windows",
        "Operating System :: Unix",
        ],
      author="Zope Corporation",
      author_email="zodb-dev@zope.org",
      url="http://www.zope.org/Products/ZODB",
      license="ZPL 2.1",
      platforms=["any"],
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
Tres Seaver's avatar
Tres Seaver committed
95 96
      ext_modules = ext_modules,
      headers = headers,
97
      tests_require = TESTS_REQUIRE,
98 99
      extras_require = {
        'test': TESTS_REQUIRE,
Tres Seaver's avatar
Tres Seaver committed
100
        'testing': TESTS_REQUIRE + ['nose', 'coverage'],
Tres Seaver's avatar
Tres Seaver committed
101
        'docs': ['Sphinx', 'repoze.sphinx.autointerface'],
102
      },
103 104 105
      test_suite="persistent.tests",
      install_requires=[
        'zope.interface',
106
      ],
107 108 109 110
      entry_points = """\
      """
      )