bindings/jupyter/setup.py (106 lines of code) (raw):

from setuptools import setup, find_packages, Command from setuptools.command.develop import develop as _develop from setuptools.command.install import install as _install import os, subprocess, json BASE_DIR = os.path.dirname(os.path.abspath(__file__)) EXTENSION_DIR = os.path.join(os.path.dirname(__file__), "mlvis", "static") INSTALL_REQUIRES = [ 'traitlets', 'ipywidgets', 'pandas' ] DEFAULT_JREQUIREMENTS = { "FeatureListView": { "module": {"@mlvis/feature-list-view": "external"} }, "GraphBuilder": { "module": {"@mlvis/jupyter-graph-builder": "external"} }, "Manifold": { "module": {"@mlvis/juypter-manifold": "external"} }, "MultiWayPlot": { "module": {"@mlvis/jupyter-multi-way-plot": "external"} }, "StackedCalendar": { "module": {"@mlvis/stacked-calendar": "external"} }, "MACausal": { "module": {"@mlvis/jupyter-ma-causal": "external"} } } def read(*parts): return open(os.path.join(BASE_DIR, *parts), 'r').read() def init_jrequirements(): try: file = open(os.path.join(BASE_DIR, 'mlvis', 'jrequirements.json'), mode='w') json.dump(DEFAULT_JREQUIREMENTS, file, indent=2) finally: if file: file.close() class init_jrequirements_command(Command): description = 'customize jrequirements.json' user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): init_jrequirements() class develop(_develop): def run(self): from notebook.nbextensions import install_nbextension from notebook.services.config import ConfigManager _develop.run(self) install_nbextension(EXTENSION_DIR, symlink=True, overwrite=True, user=False, destination="mlvis") cm = ConfigManager() cm.update('notebook', {"load_extensions": { "mlvis/index": True, "mlvis/extension": True } }) class install(_install): def run(self): _install.run(self) # A hack for installing the install_requires as there seems to be # a issue with custom install command: # https://github.com/pypa/setuptools/issues/456 subprocess.check_call(['pip', 'install'] + INSTALL_REQUIRES) setup(name='mlvis', cmdclass={'develop': develop, 'init_jrequirements': init_jrequirements_command}, version='0.1.0', description='A wrapper around react components for use in jupyter notebooks', long_description='{}'.format(read(os.path.join('docs', 'introduction.md'))), long_description_content_type='text/markdown', keywords=['data', 'visualization', 'machine learning'], url='https://github.com/uber/manifold.git', author='Hong Wang', author_email='hongw@uber.com', license='Apache License 2.0', include_package_data=True, packages=find_packages(), zip_safe=False, package_data={'': ['mlvis/jrequirements.json']}, data_files=[ ('share/jupyter/nbextensions/mlvis', [ 'mlvis/static/extension.js', 'mlvis/static/index.js', 'mlvis/static/index.js.map' ]) ], scripts=['bin/jpip'], install_requires=INSTALL_REQUIRES, classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', 'Intended Audience :: Science/Research', 'Topic :: Multimedia :: Graphics', 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Framework :: Jupyter' ] )