-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
setup.py
116 lines (101 loc) · 3.63 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# --*- encoding: utf-8 -*--
## This file is adapted from projects
## jupyter-widgets/widget-ts-cookiecutter
## and sagemath/sage_sample
# Copyright (c) Jupyter Development Team.
# Copyright (c) Sagemath Development Team.
# Distributed under the terms of the Modified BSD License.
from os.path import join as pjoin
from codecs import open # To open the README file with proper encoding
from setuptools.command.test import test as TestCommand # for tests
from setupbase import (
create_cmdclass, install_npm, ensure_targets,
find_packages, combine_commands,
HERE
)
from setuptools import setup
# Get information from separate files (README, VERSION)
def readfile(filename):
with open(filename, encoding='utf-8') as f:
return f.read()
# For the tests
class SageTest(TestCommand):
def run_tests(self):
import os, sys
errno = os.system("sage -t --force-lib --optional=sage sage_widget_adapters")
if errno != 0:
sys.exit(1)
errno = os.system("sage -t --force-lib --optional=sage sage_combinat_widgets")
if errno != 0:
sys.exit(1)
# The name of the project
name = 'sage-combinat-widgets'
pyname = 'sage_combinat_widgets' # basis for JS extension
js_path = pjoin(HERE, 'js')
nb_path = pjoin(HERE, pyname, 'nbextension', 'static')
lab_path = pjoin(HERE, pyname, 'labextension')
# Representative files that should exist after a successful build
jstargets = [
pjoin(nb_path, 'index.js'),
pjoin(HERE, 'js', 'lib', 'extension.js'),
]
package_data_spec = {
name: [
'nbextension/static/*.*js*',
'nbextension/static/*.*css',
'labextension/*.tgz'
]
}
data_files_spec = [
('share/jupyter/nbextensions/sage-combinat-widgets',
nb_path, '*.js*'),
('share/jupyter/nbextensions/sage-combinat-widgets',
nb_path, '*.css'),
('share/jupyter/lab/extensions', lab_path, '*.tgz'),
('etc/jupyter/nbconfig/notebook.d', HERE, 'sage-combinat-widgets.json')
]
cmdclass = create_cmdclass('jsdeps', package_data_spec=package_data_spec,
data_files_spec=data_files_spec)
cmdclass['jsdeps'] = combine_commands(
install_npm(pjoin(HERE, 'js'), build_cmd='build:all'),
ensure_targets(jstargets),
)
cmdclass['test'] = SageTest
setup_args = dict(
name = name,
version = readfile("VERSION"),
description = 'Jupyter widgets for SAGE Combinat',
long_description = readfile("README.rst"),
cmdclass = cmdclass,
packages = find_packages(),
url = 'https://github.com/sagemath/sage-combinat-widgets',
author = 'Odile Bénassy, Henri Derycke, Nicolas M. Thiéry',
author_email = '[email protected]',
license = 'GPLv3+',
platforms = "Linux, Mac OS X, Windows",
keywords = ['Jupyter', 'Widgets', 'SageMath', 'combinatorics'],
classifiers = [
'Development Status :: 3 - Alpha',
'Intended Audience :: Science/Research',
'Topic :: Scientific/Engineering :: Mathematics',
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Framework :: Jupyter',
],
include_package_data = True,
install_requires = [
'ipywidgets>=7.5.0',
],
extras_require = {
'docs': [
'sage-package',
'sphinx>=1.5',
],
},
)
if __name__ == "__main__":
setup(**setup_args)