#!/usr/bin/env python from __future__ import absolute_import from __future__ import print_function import os import sys import subprocess import re from setuptools import setup from setuptools.command.sdist import sdist as _sdist from setuptools.command.install import install as _install VERSION_PY = """ # This file is originally generated from Git information by running 'setup.py # version'. Distribution tarballs contain a pre-generated copy of this file. __version__ = '%s' """ def update_version_py(): if not os.path.isdir(".git"): print("This does not appear to be a Git repository.") return try: # p = subprocess.Popen(["git", "describe","--tags", "--always"], # stdout=subprocess.PIPE) p = subprocess.Popen("git rev-list HEAD --count".split(), stdout=subprocess.PIPE) except EnvironmentError: print("unable to run git, leaving eden/_version.py alone") return stdout = p.communicate()[0] if p.returncode != 0: print("unable to run git, leaving eden/_version.py alone") return ver = "0.3."+stdout.strip() # ver = str(int(ver,16)) # pypi doesnt like base 16 f = open("eden/_version.py", "w") f.write(VERSION_PY % ver) f.close() print("set eden/_version.py to '%s'" % ver) def get_version(): try: f = open("eden/_version.py") except EnvironmentError: return None for line in f.readlines(): mo = re.match("__version__ = '([^']+)'", line) if mo: ver = mo.group(1) return ver return None class sdist(_sdist): def run(self): update_version_py() self.distribution.metadata.version = get_version() return _sdist.run(self) class install(_install): def run(self): _install.run(self) def checkProgramIsInstalled(self, program, args, where_to_download, affected_tools): try: subprocess.Popen([program, args], stderr=subprocess.PIPE, stdout=subprocess.PIPE) return True except EnvironmentError: # handle file not found error. # the config file is installed in: msg = "\n**{0} not found. This " \ "program is needed for the following "\ "tools to work properly:\n"\ " {1}\n"\ "{0} can be downloaded from here:\n " \ " {2}\n".format(program, affected_tools, where_to_download) sys.stderr.write(msg) except Exception as e: sys.stderr.write("Error: {}".format(e)) setup( name='eden-kernel', version=get_version(), author='Fabrizio Costa', author_email='graph-eden@googlegroups.com', packages=['eden', 'eden.ml', 'eden.display', 'eden.io' ], scripts=[], include_package_data=True, package_data={}, url='https://github.com/smautner/', license='LICENSE', description='Explicit Decomposition with Neighborhoods', long_description='', install_requires=[ "dill", "future", "joblib", "toolz", "matplotlib", "networkx >= 2.0", "numpy >= 1.10.4", "requests", "scikit-learn >= 0.18.2", "scipy >= 0.14.0", ], cmdclass={'sdist': sdist, 'install': install} )