jacobian

a basic keras-like neural network library for c++/python
Log | Files | Refs | README

setup.py (2150B)


      1 import os
      2 import re
      3 import sys
      4 import sysconfig
      5 import platform
      6 import subprocess
      7 
      8 from subprocess import CalledProcessError
      9 from setuptools import setup, Extension
     10 from setuptools.command.build_ext import build_ext
     11 from distutils.version import LooseVersion
     12 
     13 class CMakeExtension(Extension):
     14     def __init__(self, name, sourcedir=''):
     15         Extension.__init__(self, name, sources=[])
     16         self.sourcedir = os.path.abspath(sourcedir)
     17 
     18 class CMakeBuild(build_ext):
     19     def run(self):
     20         try:
     21             out = subprocess.check_output(['cmake', '--version'])
     22         except OSError:
     23             raise RuntimeError(
     24                 "CMake must be installed to build the following extensions: " +
     25                 ", ".join(e.name for e in self.extensions))
     26 
     27         if platform.system() == "Windows":
     28             cmake_version = LooseVersion(re.search(r'version\s*([\d.]+)',
     29                                          out.decode()).group(1))
     30             if cmake_version < '3.1.0':
     31                 raise RuntimeError("CMake >= 3.1.0 is required on Windows")
     32 
     33         for ext in self.extensions:
     34             if ext is None:
     35                 continue
     36             self.build_extension(ext)
     37         
     38 kwargs = dict(
     39     name='Jacobian',
     40     version='0.8',
     41     author='David Freifeld',
     42     author_email='freifeld.david@gmail.com',
     43     description='A Python library for neural networks.',
     44     long_description='',
     45     ext_modules=[CMakeExtension('jacobian._jacobian')],
     46     cmdclass=dict(build_ext=CMakeBuild),
     47     zip_safe=False,
     48     package=['jacobian']
     49 )
     50 
     51 # likely there are more exceptions, take a look at yarl example
     52 try:
     53     setup(**kwargs)
     54         # name='Jacobian',
     55         # version='0.8',
     56         # author='David Freifeld',
     57         # author_email='freifeld.david@gmail.com',
     58         # description='A Python library for neural networks.',
     59         # long_description='',
     60         # ext_modules=[CMakeExtension('_jacobian')],
     61         # cmdclass=dict(build_ext=CMakeBuild),
     62         # zip_safe=True,
     63         # package=['jacobian']
     64 except CalledProcessError:
     65     print('Failed to build extension!')
     66     del kwargs['ext_modules']
     67     setup(**kwargs)