Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# -*- coding: utf-8 -*- 

2""" 

3@file 

4@brief Defines a set of modules for more machine learning or student projects. 

5""" 

6import sys 

7from ..installhelper.module_install import ModuleInstall 

8 

9 

10def ml_set(): 

11 """ 

12 modules introduced by students or needed for student projects 

13 """ 

14 return ensae_set() 

15 

16 

17def ensae_set(): 

18 """ 

19 modules introduced by students or needed for student projects, it requires the modules in set *extended* 

20 """ 

21 mod = [ 

22 ModuleInstall( 

23 "billiard", "pip", purpose="Python multiprocessing fork with improvements and bugfixes (for celery)"), 

24 ModuleInstall( 

25 "vine", "pip", purpose="Promises, promises, promises"), 

26 ModuleInstall( 

27 "amqp", "pip", purpose="Low-level AMQP client for Python (fork of amqplib) (for celery)"), 

28 ModuleInstall( 

29 "anyjson", "pip", purpose="Wraps the best available JSON implementation available in a common interface (for celery)"), 

30 ModuleInstall( 

31 "kombu", "pip", purpose="Messaging library for Python (for celery)"), 

32 ModuleInstall( 

33 "celery", "pip", purpose="Celery is an asynchronous task queue/job queue based on distributed message passing."), 

34 

35 ModuleInstall('html2text', 'pip', 

36 purpose="Turn HTML into equivalent Markdown-structured text."), 

37 ModuleInstall('easy-thumbnails', 'pip', mname="easy_thumbnails", 

38 purpose="Easy thumbnails for Django"), 

39 ModuleInstall('Versio', 'pip', mname="versio", 

40 purpose="localshop dependency, manages versions"), 

41 ModuleInstall('django', 'pip', 

42 purpose="Django"), 

43 ModuleInstall('django-celery', 'pip', mname="djcelery", 

44 purpose="localshop dependency, Old django celery integration project."), 

45 ModuleInstall('django-configurations', 'pip', mname="configurations", 

46 purpose="localshop dependency, A helper for organizing Django settings."), 

47 ModuleInstall('django-environ', 'pip', mname="environ", 

48 purpose="localshop dependency, Django-environ allows you to utilize 12factor " 

49 + "inspired environment variables to configure your Django application."), 

50 ModuleInstall('django-model-utils', 'pip', mname="model_utils", 

51 purpose="localshop dependency, Django model mixins and utilities."), 

52 ModuleInstall('django-storages', 'pip', mname="storages", 

53 purpose="localshop dependency, django-storages is a collection of custom storage backends for Django."), 

54 ModuleInstall('django-guardian', 'pip', mname="guardian", 

55 purpose="localshop dependency, Implementation of per object permissions for Django 1.2 or later."), 

56 ModuleInstall('django-userena', 'pip', mname="userena", 

57 purpose="localshop dependency, Accounts for Django made beautifully simple"), 

58 ModuleInstall('django-uuidfield', 'pip', mname="uuidfield", 

59 purpose="localshop dependency, UUIDField in Django"), 

60 ModuleInstall("grappelli_safe", "pip", usage="WEB", 

61 purpose="A snapshot of the grappelli_2 branch of django-grappelli, packaged as a dependency " 

62 + "for the Mezzanine CMS for Django."), 

63 ModuleInstall("filebrowser_safe", "pip", usage="WEB", 

64 purpose="A snapshot of the filebrowser_3 branch of django-filebrowser, packaged as a " 

65 + "dependency for the Mezzanine CMS for Django."), 

66 ModuleInstall("django-contrib-comments", "pip", usage="WEB", mname="django_comments", 

67 purpose="Django used to include a comments framework; since Django 1.6 it’s " 

68 + "been separated to a separate project. This is that project."), 

69 ModuleInstall("mezzanine", "pip", usage="WEB", 

70 purpose="Mezzanine is a powerful, consistent, and flexible content management platform."), 

71 ModuleInstall( 

72 'gunicorn', 'pip', purpose="localshop dependency, WSGI HTTP Server for UNIX"), 

73 ModuleInstall( 

74 'netaddr', 'pip', purpose="Pythonic manipulation of IPv4, IPv6, CIDR, EUI and MAC network addresses"), 

75 # ModuleInstall('localshop', 'pip', 

76 # purpose="run a local pypi server (install it in virtual env as it 

77 # overwrites many versions)"), 

78 

79 ModuleInstall( 

80 "tweepy", "pip", purpose="Python wrapper for the twitter API"), 

81 #ModuleInstall("newspaper3k", "pip", mname="newspaper"), 

82 ModuleInstall( 

83 "mutagen", "pip", purpose="read and write audio tags for many formats in Python 3"), 

84 ModuleInstall( 

85 "mutagenx", "pip", purpose="read and write audio tags for many formats in Python 3"), 

86 ModuleInstall("django-audiotracks", "pip", 

87 mname="audiotracks", purpose="read audio with django"), 

88 ModuleInstall("ndg-httpsclient", "pip", mname="ndg.httpsclient", 

89 purpose="Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL"), 

90 ModuleInstall("inflection", "pip", 

91 purpose="A port of Ruby on Rails inflector to Python"), 

92 ModuleInstall("more-itertools", "pip", 

93 mname="more_itertools", 

94 purpose="More routines for operating on iterables, beyond itertools"), 

95 ModuleInstall("Quandl", "pip", mname="quandl", 

96 purpose="access Quandl API"), 

97 ModuleInstall("singledispatch", "pip", purpose="for nltk"), 

98 ModuleInstall( 

99 "nltk", "pip", purpose="NLP, natural language processing", usage="NLP"), 

100 ModuleInstall( 

101 "textblob", "pip", purpose="TextBlob is a Python (2 and 3) library for processing textual data. It provides a simple API for " 

102 + "diving into common natural language processing (NLP) tasks such as part-of-speech tagging, " 

103 + "noun phrase extraction, sentiment analysis, classification, translation, and more."), 

104 ModuleInstall( 

105 "opencv_python", "wheel", mname="cv2", purpose="OpenVC wrapper", 

106 web="https://opencv-python-tutroals.readthedocs.org/en/latest/"), 

107 ModuleInstall("dlib", "pip" if sys.version_info[:2] >= (3, 6) else "wheel", 

108 source="2" if sys.version_info[:2] >= (3, 6) else None, 

109 usage="ML", 

110 purpose="A toolkit for making real world machine learning and data analysis applications"), 

111 ModuleInstall("PyAudio", "wheel", mname="pyaudio", 

112 purpose="PyAudio provides Python bindings for PortAudio v19, the cross-platform audio I/O library. " 

113 + "With PyAudio, you can easily use Python to play and record audio " 

114 + "streams on a variety of platforms (e.g., GNU/Linux, Microsoft Windows, and Mac OS X)."), 

115 ModuleInstall( 

116 "zope.interface", "wheel", purpose="interfaces for python"), 

117 ModuleInstall( 

118 "zope.exceptions", "pip", purpose="Zope exception"), 

119 ModuleInstall( 

120 "persistent", "wheel", purpose="Objets persistants translucides"), 

121 # requires zope.interface, persistents 

122 ModuleInstall("BTrees", "wheel", usage="ALGO", 

123 purpose="This package contains a set of persistent object containers built around a modified " 

124 + "BTree data structure."), 

125 ModuleInstall( 

126 "datrie", "wheel", purpose="Fast, efficiently stored Trie for Python.", usage="ALGO"), 

127 # ModuleInstall("pysparse", "pip"), #does not work 

128 ModuleInstall( 

129 "mahotas", "wheel", purpose="Mahotas: Computer Vision Library", usage="VIZ"), 

130 ModuleInstall("nitime", "wheel", 

131 purpose="Nitime is a library for time-series analysis of data from neuroscience experiments.", usage="DATA/ML"), 

132 ModuleInstall("milk", "wheel", 

133 purpose="machine learning toolkit", usage="DATA/ML"), 

134 ModuleInstall("minepy", "wheel", purpose="interface to MineCraft"), 

135 ModuleInstall( 

136 "NLopt", "wheel", mname="nlopt", purpose="linear, quadratic optimization", 

137 web="http://ab-initio.mit.edu/wiki/index.php/NLopt", usage="DATA/ML"), 

138 ModuleInstall("Pmw", "pip", 

139 purpose="Pmw is a toolkit for building high-level compound widgets in Python using the Tkinter module."), 

140 ModuleInstall( 

141 "pytool", "pip", purpose="A collection of tools for Python"), 

142 ModuleInstall( 

143 "pytools", "pip", purpose="A collection of tools for Python"), 

144 ModuleInstall("pycuda", "wheel", usage="GPU", 

145 purpose="PyCUDA lets you access Nvidia's CUDA parallel computation API from Python."), 

146 ModuleInstall("pyopencl", "wheel", usage="GPU", 

147 purpose="PyOpenCL lets you access the OpenCL parallel computation API from Python."), 

148 # ModuleInstall("scikits.cuda", "pip", mname="skcuda"), # no stable 

149 # version 

150 ModuleInstall( 

151 "pylzma", "wheel2", purpose="Python bindings for the LZMA library by Igor Pavlov."), 

152 ModuleInstall("nibabel", "pip", 

153 purpose="Access a multitude of neuroimaging data formats."), 

154 ModuleInstall( 

155 "pyodbc", "wheel", purpose="access to protocal ODBC (SQL databases)", usage="SQL"), 

156 ModuleInstall( 

157 "pypmc", "wheel", purpose="pypmc is a python package focusing on adaptive importance sampling."), 

158 ModuleInstall("PyX", "wheel", mname="pyx", 

159 purpose="plotting", usage="VIZ"), 

160 ModuleInstall( 

161 "scandir", "wheel", purpose="Better directory iterator and faster os.walk(), " 

162 + "now in the Python 3.5 stdlib") if sys.version_info[:2] <= (3, 4) else None, 

163 ModuleInstall( 

164 "backports.lzma", "wheel", purpose="Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."), 

165 ModuleInstall( 

166 "zs", "wheel", purpose="S is a compressed, read-only file format for efficiently distributing, " 

167 + "querying, and archiving arbitrarily large record-oriented datasets."), 

168 # 

169 # teachings 

170 # 

171 ModuleInstall( 

172 "tutormagic", "pip", purpose="brings PythonTutor in a notebok", usage="TEACH"), 

173 # to upload a file in a notebook 

174 ModuleInstall( 

175 "nbupload", "pip", purpose="widget to upload a file in a notebook", 

176 usage="JUPYTER"), 

177 # see https://github.com/PetterS/numpy_display/blob/master/numpy_display.py 

178 # https://github.com/damiendr/callipy 

179 # 

180 ModuleInstall("libsvm", "wheel", mname="svm", purpose="SVM library"), 

181 # Bayesian ABC 

182 ModuleInstall("abcpmc", "pip", purpose="Monte Carlo and ABC methods"), 

183 # ModuleInstall("cosmoabc", "pip"), # Bayesian ABC, only python 2.7 

184 # 

185 # ModuleInstall("pyjs", "pip"), # needs manual installation 

186 # ModuleInstall("pyjs", "github", "pyjs"), #does not work really 

187 # ModuleInstall("pyjsdl", "github", "jggatc"), # no setup.py 

188 

189 # 

190 # 

191 # 

192 # ModuleInstall("contextlib2", "pip", purpose="Backports and enhancements for the contextlib module"), 

193 ModuleInstall( 

194 "nuitka", "pip", usage="C++", purpose="C++ compilation, code optimization"), 

195 # ModuleInstall("tri", "pip", purpose="Delaunay triangulation"), # only 

196 # works on Python 2.7 

197 ModuleInstall( 

198 "blosc", "wheel", purpose="Blosc (http://blosc.org) is a high performance compressor optimized for binary data."), 

199 ModuleInstall( 

200 "tables", "wheel", purpose="PyTables is a package for managing hierarchical datasets " 

201 + "and designed to efficiently and easily cope with extremely large amounts of data."), 

202 ModuleInstall("contextlib2", "pip", 

203 purpose="Backports and enhancements for the contextlib module"), 

204 ModuleInstall( 

205 "sortedcontainers", "pip", 

206 purpose="Python Sorted Container Types: SortedList, SortedDict, and SortedSet"), 

207 ModuleInstall("python-editor", "pip", mname="python_editor", 

208 purpose="Programmatically open an editor, capture the result."), 

209 ModuleInstall( 

210 "alembic", "pip", 

211 purpose="A database migration tool for SQLAlchemy."), 

212 ModuleInstall( 

213 "intervaltree", "pip", 

214 purpose="Editable interval tree data structure for Python 2 and 3"), 

215 ModuleInstall( 

216 "cachetools", "pip", 

217 purpose="Extensible memoizing collections and decorators"), 

218 ModuleInstall( 

219 "empyrical", "pip", 

220 purpose="empyrical is a Python library with performance and risk statistics commonly used in quantitative finance"), 

221 ModuleInstall( 

222 "lru_dict", "pip", purpose="An Dict like LRU container."), 

223 ModuleInstall( 

224 "zipline", "wheel", 

225 purpose="A backtester for financial algorithms.") if sys.version_info[:2] >= (3, 5) else None, # finance 

226 ModuleInstall("vincent", "pip", purpose="plotting", 

227 usage="VIZ"), # graph 

228 # graph, pygal_maps_world only accepts the latest version 

229 #ModuleInstall("pygal", "github", "Kozea", purpose="plotting"), 

230 ModuleInstall( 

231 "pygal", "pip", "Kozea", purpose="plotting (javascript)", usage="VIZ"), 

232 ModuleInstall( 

233 "pygal_maps_world", "pip", purpose="extension to pygal (maps)", usage="VIZ"), # graph 

234 ModuleInstall( 

235 "pygal_maps_fr", "pip", purpose="French maps for pygal", usage="VIZ"), # graph 

236 ModuleInstall( 

237 "pygal_maps_ch", "pip", purpose="Swiss canton map for pygal", usage="VIZ"), # graph 

238 ModuleInstall( 

239 "pygal_sphinx_directives", "pip", purpose="Pygal sphinx integration", usage="SPHINX"), # graph 

240 # 

241 # 2015-06-30 

242 # 

243 ModuleInstall( 

244 "sas7bdat", "pip", purpose="read/write SAS format"), # SAS 

245 # 

246 # 2015-07-15 

247 # 

248 # linear optimisation, see 

249 # http://blog.yhathq.com/posts/decision-making-under-uncertainty.html 

250 ModuleInstall("PuLP", "wheel", mname="pulp", 

251 purpose="linear, quadratique optimization with constraints", usage="DATA/ML"), 

252 # 

253 # pydata 

254 # 

255 ModuleInstall("jaraco.functools", "pip", 

256 purpose="Additional functools in the spirit of stdlib’s functools."), 

257 ModuleInstall("tempora", "pip", 

258 purpose="Objects and routines pertaining to date and time (tempora)"), 

259 ModuleInstall("portend", "pip", 

260 purpose="TCP port monitoring utilities"), 

261 ModuleInstall("cheroot", "pip", 

262 purpose="Highly-optimized, pure-python HTTP server"), 

263 ModuleInstall("CherryPy", "pip", mname="cherrypy", 

264 purpose="create web application, needed by Spyre"), 

265 ModuleInstall("dataspyre", "pip", mname="spyre", 

266 purpose="create simple web application to visualize data", usage="VIZ"), 

267 # ModuleInstall("python-recsys", "github", "ocelma", mname="recsys", 

268 # purpose="recommendation system", usage="DATA/ML"), #only works on 

269 # Python 2.7 + csc-pysparse + dividi2 (not maintained anymore) 

270 ModuleInstall( 

271 "colorspacious", "pip", purpose="A powerful, accurate, and easy-to-use Python library for doing " 

272 + "colorspace conversions (for viscm)"), 

273 ModuleInstall( 

274 "viscm", "pip", purpose="tool for analyzing colormaps and creating new colormaps."), 

275 # ModuleInstall("cubehelix", "github", "jradavenport", 

276 # purpose="a full implementation of Dave Green's cubehelix colormap for Python", 

277 # web="https://github.com/jradavenport/cubehelix"), 

278 ModuleInstall("lifelines", "pip", 

279 purpose="survival analysis", usage="OPTIM"), 

280 # ModuleInstall("pysnptools", "pip", purpose="operation on DNA sequences"), # only available on Python 2.7 

281 # 

282 # 2015-07 

283 # 

284 ModuleInstall( 

285 "heatmap", "wheel", purpose="draw heatmap", usage="VIZ"), 

286 ModuleInstall("planar", "wheel", 

287 purpose="2D planar geometry library for Python."), 

288 ModuleInstall("GDAL", "wheel", mname="osgeo", 

289 purpose="GDAL is a translator library for raster and vector geospatial data formats " 

290 + "that is released under an X/MIT style " 

291 + "Open Source license by the Open Source Geospatial Foundation."), 

292 # ModuleInstall("rasterio", "wheel", 

293 # purpose="Fast and direct raster I/O for use with Numpy and SciPy, 

294 # Rasterio reads and writes geospatial raster datasets."), 

295 ModuleInstall("cgal_bindings", "wheel", mname="CGAL", 

296 purpose="The CGAL Bindings project allows to use some packages of CGAL, the Computational Algorithms Library, " 

297 + "in languages other than C++, as for example Java and Python.", 

298 web="https://github.com/cgal/cgal-swig-bindings") if sys.version_info[:2] <= (3, 4) else None, 

299 ModuleInstall("slicerator", "pip", 

300 purpose="A lazy-loading, fancy-sliceable iterable."), 

301 ModuleInstall("PIMS", "pip", mname="pims", 

302 purpose="Python Image Sequence (for trackpy)"), 

303 ModuleInstall("trackpy", "pip", 

304 purpose="trackpy is a Python package for particle tracking in 2D, 3D, and higher dimensions.", usage="DATA/ML"), 

305 ModuleInstall("triangle", "wheel", 

306 purpose="Python Triangle is a python wrapper around Jonathan Richard Shewchuk's " 

307 + "two-dimensional quality mesh generator and delaunay triangulator library."), 

308 ModuleInstall("redis", "pip", 

309 purpose="Python client for Redis key-value store"), 

310 # ModuleInstall("vowpal_porpoise", "pip", 

311 # purpose="Lightweight python wrapper for vowpal_wabbit.", purpose="DATA/ML"), 

312 # it requires to build vowpal_wabbit for Windows 

313 # ModuleInstall("ua-parser", "pip", mname="ua_parser", 

314 # purpose="Python port of Browserscope's user agent parser"), 

315 # ModuleInstall("user-agents", "pip", mname="user_agents", 

316 # purpose="A library to identify devices (phones, tablets) and their 

317 # capabilities by parsing (browser/HTTP) user agent strings"), 

318 ModuleInstall("user-agent", "pip", mname="user_agent", 

319 purpose="A library to identify devices (phones, tablets) and their capabilities by " 

320 + "parsing (browser/HTTP) user agent strings"), 

321 ModuleInstall("tinydb", "pip", 

322 purpose="TinyDB is a tiny, document oriented database optimized for your happiness :) " 

323 + "It's written in pure Python and has no external requirements.", usage="noSQL"), 

324 ModuleInstall("gevent", "pip", 

325 purpose="gevent is a coroutine-based Python networking library"), 

326 ModuleInstall("grequests", "pip", 

327 purpose="GRequests allows you to use Requests with Gevent to make asynchronous HTTP Requests easily."), 

328 ModuleInstall("pytils", "pip", 

329 purpose="Russian-specific string utils (for selection, weblib)"), 

330 ModuleInstall("selection", "pip", 

331 purpose="API to extract data from HTML and XML documents. (for grab)"), 

332 ModuleInstall("weblib", "pip", 

333 purpose="Set of tools for web scraping projects (for grab)"), 

334 ModuleInstall("grab", "pip", 

335 purpose="Grab is a python web scraping framework. Grab provides tons of helpful methods to scrape web sites "), 

336 ModuleInstall("imbox", "pip", 

337 purpose="Python library for reading IMAP mailboxes and converting email content to machine readable data"), 

338 ModuleInstall("neural-python", "pip", mname="neuralpy", 

339 purpose="NeuralPy is the Artificial Neural Network library implemented in Python.", usage="DATA/ML"), 

340 ModuleInstall("cssselect", "pip", 

341 purpose="cssselect parses CSS3 Selectors and translates them to XPath 1.0"), 

342 ModuleInstall("jieba", "pip", 

343 purpose="Chinese Words Segementation Utilities"), 

344 # goose still depends on BeautifulSoup which does not work on Python 3 

345 # ModuleInstall("goose-extractor", "pip", mname="goose", 

346 # purpose="Html Content / Article Extractor, web scrapping lib in 

347 # Python"), 

348 ModuleInstall("untangle", "pip", 

349 purpose="Converts XML to Python objects"), 

350 # promising but not released yet 

351 # ModuleInstall("code2flow", "pip", 

352 # purpose="Turn your Python and Javascript code into DOT flowcharts"), 

353 

354 # biokit 

355 ModuleInstall('colorlog', 'pip', 

356 purpose="Log formatting with colors!"), 

357 ModuleInstall("easydev", "pip", 

358 purpose="Common utilities to ease the development of Python packages"), 

359 ModuleInstall("colormap", "pip", usage="VIZ", 

360 purpose="Utilities to ease manipulation of matplotlib colormaps and color codecs (e.g., hex2rgb)"), 

361 ModuleInstall("suds-jurko", "pip", mname="suds", 

362 purpose="Lightweight SOAP client (Jurko's fork)"), 

363 # bugged and still uses ordereddict 

364 # ModuleInstall("bioservices", "pip", 

365 # purpose="Access to Biological Web Services from Python"), 

366 # ModuleInstall("biokit", "github", "biokit", usage="VIZ", 

367 # purpose="Access to Biological Web Services from Python"), 

368 

369 # 

370 # 

371 # 

372 ModuleInstall("linecache2", "pip", 

373 purpose="A backport of linecache to older supported Pythons."), 

374 ModuleInstall("traceback2", "pip", 

375 purpose="traceback2 is a backport of the new features added to the traceback " 

376 + "testing framework in Python 2.7 and onwards."), 

377 ModuleInstall("unittest2", "pip", 

378 purpose="unittest2 is a backport of the new features added to the unittest " 

379 + "testing framework in Python 2.7 and onwards."), 

380 ModuleInstall("deprecation", "pip", 

381 purpose="A library to handle automated deprecations"), 

382 ModuleInstall("lz4", "wheel", 

383 purpose="LZ4 Bindings for Python (for dpark)"), 

384 ModuleInstall("fabric", "pip", 

385 purpose="Fabric is a Python library and command-line tool for streamlining " 

386 + "the use of SSH for application deployment or systems administration tasks."), 

387 ModuleInstall("invoke", "pip", 

388 purpose="Invoke is a Python task execution tool & library, drawing inspiration " 

389 + "from various sources to arrive at a powerful & clean feature set."), 

390 # ModuleInstall("msgpack", "wheel", 

391 # purpose="MessagePack (de)serializer."), 

392 ModuleInstall("msgpack", "wheel", 

393 purpose="MessagePack (de)serializer."), 

394 ModuleInstall("cymem", "pip", 

395 purpose="Manage calls to calloc/free through Cython") if sys.version_info[:2] >= (3, 5) else None, 

396 ModuleInstall("murmurhash", "pip", 

397 purpose="Cython .pxd files for some of the MurmurHash 2 and 3 hash functions, with a slightly more Pythonic API. " 

398 + "The only access to these functions is via Cython — I don’t see why they should be " 

399 + "useful from pure Python.") if sys.version_info[:2] >= (3, 5) else None, 

400 ModuleInstall("preshed", "wheel", 

401 purpose="Cython hash table that trusts the keys are pre-hashed") if sys.version_info[:2] >= (3, 5) else None, 

402 ModuleInstall("text-unidecode", "pip", mname="text_unidecode", 

403 purpose="The most basic Text::Unidecode port") if sys.version_info[:2] >= (3, 5) else None, 

404 ModuleInstall("termcolor", "pip", 

405 purpose="ANSII Color formatting for output in terminal."), 

406 ModuleInstall("msgpack-numpy", "pip", mname="msgpack_numpy", 

407 purpose="Numpy data serialization using msgpack"), 

408 ModuleInstall("thinc", "wheel", usage="OPTIM", 

409 purpose="Practical Machine Learning for NLP. Thinc is the machine learning " 

410 + "library powering spaCy.") if sys.version_info[:2] >= (3, 5) else None, 

411 ModuleInstall("semver", "pip", 

412 purpose="Python helper for Semantic Versioning (http://semver.org/)"), 

413 ModuleInstall("sputnik", "pip", 

414 purpose="Data package manager library") if sys.version_info[:2] >= (3, 5) else None, 

415 ModuleInstall("ftfy", "pip", 

416 purpose="Fixes some problems with Unicode text after the fact"), 

417 ModuleInstall("regex", "wheel", 

418 purpose="Alternative regular expression module, to replace re."), 

419 ModuleInstall("spacy", "wheel", usage="NLP", 

420 purpose="Industrial-strength NLP") if sys.version_info[:2] >= (3, 5) else None, 

421 ModuleInstall("fr_core_news_sm", "wheel2", usage="NLP", 

422 purpose="French ressources for spacy") if sys.version_info[:2] >= (3, 5) else None, 

423 

424 # 

425 # 2015-12 

426 # 

427 ModuleInstall("picklable-itertools", "pip", mname="picklable_itertools", 

428 purpose="A reimplementation of the Python standard library's itertools, in Python, " 

429 + "using picklable iterator objects. (fuel)"), 

430 ModuleInstall("python-utils", "pip", mname="python_utils", 

431 purpose="Python Utils is a module with some convenient utilities not included with the standard Python install"), 

432 ModuleInstall("progressbar2", "pip", usage="VIZ", 

433 purpose="Text progress bar library for Python. (fuel)"), 

434 ModuleInstall("gatspy", "pip", 

435 purpose="General tools for Astronomical Time Series in Python"), 

436 ModuleInstall("supersmoother", "pip", 

437 purpose="This is an efficient implementation of Friedman's SuperSmoother [1] algorithm in pure Python. " 

438 + "It makes use of numpy for fast numerical computation."), 

439 

440 # 

441 # 2016-03 

442 # 

443 ModuleInstall("PTable", "pip", mname="prettytable", 

444 purpose="A simple Python library for easily displaying tabular data in a visually " 

445 + "appealing ASCII table format. (for streamparse)"), 

446 ModuleInstall("ruamel.yaml", "pip", 

447 purpose="ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, " 

448 + "seq/map flow style, and map key order"), 

449 ModuleInstall("logutils", "pip", 

450 purpose="Logging utilities"), 

451 ModuleInstall("skll", "pip", usage="ML", 

452 purpose="SciKit-Learn Laboratory makes it easier to run machinelearning experiments with scikit-learn."), 

453 ModuleInstall("sklearn_pandas", "pip", usage="ML", 

454 purpose="This module provides a bridge between Scikit-Learn's machine learning methods and pandas-style Data Frames."), 

455 ModuleInstall("ad3", "wheel", source="2", usage="ML", 

456 purpose="AD3 (approximate MAP decoder with Alternating Direction Dual Decomposition)"), 

457 ModuleInstall("pystruct", "wheel", usage="ML", source="2", 

458 purpose="Learning Structured Prediction in Python"), 

459 ModuleInstall("sklearn_contrib_py_earth", "wheel", mname="pyearth", usage="ML", source="2", 

460 purpose="A Python implementation of Jerome Friedman's Multivariate Adaptive Regression " 

461 + "Splines algorithm, in the style of " 

462 + "scikit-learn. The py-earth package implements Multivariate Adaptive Regression Splines using Cython and provides an " 

463 + "interface that is compatible with scikit-learn's Estimator, Predictor, Transformer, and Model interfaces. For more " 

464 + "information about Multivariate Adaptive Regression Splines, see the references below."), 

465 ModuleInstall("seqlearn", "wheel", usage="ML", 

466 purpose="sequence classification toolkit for Python"), 

467 ModuleInstall("hmmlearn", "wheel", usage="ML", 

468 purpose="Hidden Markov Models in Python, with scikit-learn like API"), 

469 ModuleInstall("gplearn", "pip", usage="ML", 

470 purpose="gplearn implements Genetic Programming in Python, with a scikit-learn inspired and compatible API."), 

471 ModuleInstall("gdbn", "pip", usage="ML", 

472 purpose="This package contains python code for pre-trained deep neural networks"), 

473 ModuleInstall("gnumpy", "pip", 

474 purpose="Gnumpy: an easy way to use GPU boards in Python"), 

475 ModuleInstall("mlxtend", "pip", usage="ML", 

476 purpose="A library consisting of useful tools and extensions for the day-to-day data science tasks."), 

477 ModuleInstall("jsonpickle", "pip", 

478 purpose="Python library for serializing any arbitrary object graph into JSON."), 

479 ModuleInstall("py-cpuinfo", "pip", mname="py_cpuinfo", 

480 purpose="Py-cpuinfo gets CPU info with pure Python. Py-cpuinfo should work without " 

481 + "any extra programs or libraries, beyond what your OS provides. It does not " 

482 + "require any compilation(C/C++, assembly, et cetera) to use. It works with Python 2 and 3."), 

483 ModuleInstall("sacred", "pip", usage="ML", 

484 purpose="Facilitates automated and reproducible experimental research"), 

485 ModuleInstall("astropy", "wheel", 

486 purpose="Community-developed python astronomy tools"), 

487 # h2o 

488 ModuleInstall("h2o", "pip", usage="ML", 

489 purpose="H2O, Fast Scalable Machine Learning, for python"), 

490 # 

491 # June 2016 

492 # 

493 ModuleInstall("kabuki", "pip", usage="ML", 

494 purpose="kabuki is a python toolbox that allows easy creation of hierarchical bayesian " 

495 + "models for the cognitive sciences."), 

496 ModuleInstall("HDDM", "wheel", mname="hddm", usage="ML", 

497 purpose="HDDM is a python module that implements Hierarchical Bayesian estimation of Drift Diffusion Models."), 

498 ModuleInstall("reportlab", "wheel", 

499 purpose="This is the ReportLab PDF Toolkit. It allows rapid creation of rich PDF documents, and also creation of " 

500 + "charts in a variety of bitmap and vector formats."), 

501 ModuleInstall("biopython", "wheel", mname="Bio", usage="BIO", 

502 purpose="The Biopython Project is an international association of developers of freely available Python tools for " 

503 + "computational molecular biology."), 

504 ModuleInstall("grako", "wheel", 

505 purpose="Grako (for grammar compiler) is a tool that takes grammars in a variation of EBNF " 

506 + "as input, and outputs memoizing (Packrat) PEG parsers in Python."), 

507 ModuleInstall("expressions", "pip", 

508 purpose="Arithmetic expression parser library. Embed customized expression evaluation " 

509 + "into your application or library."), 

510 ModuleInstall("cubes", "pip", 

511 purpose="Cubes is a light-weight Python framework and set of tools for development of reporting and " 

512 + "analytical applications, " 

513 + "Online Analytical Processing (OLAP), multidimensional analysis and browsing of aggregated data. " 

514 + "It is part of Data Brewery."), 

515 ModuleInstall("MDP", "pip", usage="ML", 

516 purpose="Python data processing framework."), 

517 ModuleInstall("pyamg", "wheel", usage="OPTIM", 

518 purpose="PyAMG is a library of Algebraic Multigrid (AMG) solvers with a convenient Python interface."), 

519 ModuleInstall("PySAL", "pip", mname="pysal", usage="MATHS", 

520 purpose="PySAL is an open source library of spatial analysis functions written in Python intended " 

521 + "to support the development of high level applications."), 

522 # 

523 # July 2016 

524 # 

525 ModuleInstall("hyperopt", "github", "hyperopt", usage="ML", 

526 purpose="Hyperopt is a Python library for serial and parallel optimization over awkwardsearch spaces, " 

527 + "which may include real-valued, discrete, and conditional dimensions."), 

528 # 

529 # August 2016 

530 # 

531 ModuleInstall('incremental', 'pip', 

532 purpose="Incremental is a small library that versions your Python projects."), 

533 ModuleInstall('constantly', 'pip', 

534 purpose="Symbolic constants in Python"), 

535 ModuleInstall('PyDispatcher', 'pip', mname="pydispatcher", 

536 purpose="Multi-producer-multi-consumer signal dispatching mechanism"), 

537 ModuleInstall('hyperlink', 'pip', 

538 purpose="A featureful, correct URL for Python."), 

539 ModuleInstall('pyhamcrest', 'pip', purpose="for twisted"), 

540 ModuleInstall('Twisted', 'wheel', mname="twisted", 

541 purpose="An asynchronous networking framework written in Python"), 

542 ModuleInstall('parsel', 'pip', 

543 purpose="Parsel is a library to extract data from HTML and XML using XPath and CSS selectors."), 

544 ModuleInstall('pyasn1-modules', 'pip', mname="pyasn1_modules", 

545 purpose="A collection of ASN.1-based protocols modules."), 

546 ModuleInstall('service_identity', 'pip', 

547 purpose="Service identity verification for pyOpenSSL."), 

548 ModuleInstall("scrapy", "pip", usage="ML", 

549 purpose="A high-level Web Crawling and Web Scraping framework"), 

550 

551 # 

552 # 2015-08-11 

553 # 

554 ModuleInstall("sklearn_contrib_lightning", "wheel", mname="lightning", usage="ML", 

555 purpose="large-scale linear classification, regression and ranking"), 

556 ModuleInstall("imbalanced-learn", "pip", 

557 mname="imblearn", usage="ML", 

558 purpose="imbalanced-learn is a python package offering a number of re-sampling " 

559 + "techniques commonly used in datasets showing strong between-class imbalance. " 

560 + "It is compatible with scikit-learn and is part of scikit-learn-contrib projects."), 

561 ModuleInstall("forestci", "pip", usage="ML", 

562 purpose="Python module for calculating variance and adding confidence intervals " 

563 + "to scikit-learn random forest regression " 

564 + "or classification objects. The core functions calculate an in-bag and error bars for random forest objects"), 

565 # 

566 # 2015-08-18: weidelin.core 

567 # 

568 ModuleInstall("ZConfig", "pip", 

569 purpose="Structured Configuration Library"), 

570 ModuleInstall("transaction", "pip", 

571 purpose="Transaction management for Python. " 

572 + "This package contains a generic transaction implementation for Python. It is mainly used by the ZODB."), 

573 ModuleInstall("zc.lockfile", "pip", 

574 purpose="Basic inter-process locks"), 

575 ModuleInstall("zodbpickle", "wheel", 

576 purpose="This package presents a uniform pickling interface for ZODB."), 

577 ModuleInstall("ZODB", "pip", 

578 purpose="The Zope Object Database provides an object-oriented database for Python that " 

579 + "provides a high-degree of transparency."), 

580 ModuleInstall("zdaemon", "pip", 

581 purpose="Daemon process control library and tools for Unix-based systems"), 

582 ModuleInstall("trollius", "pip", 

583 purpose="Port of the Tulip project (asyncio module, PEP 3156)"), 

584 ModuleInstall("ZEO", "pip", 

585 purpose="ZEO provides a client-server storage implementation for ZODB."), 

586 ModuleInstall("ZODB3", "pip", 

587 purpose="ZODB3 - Meta release for ZODB, persistent, BTrees and ZEO"), 

588 # ModuleInstall("wendelin.core", "wheel", source="2", 

589 # purpose="Out-of-core NumPy arrays. " + 

590 # "Wendelin.core allows you to work with arrays bigger than RAM and local disk. Bigarrays are persisted to storage, " + 

591 # "and can be changed in transactional manner."), 

592 ModuleInstall("pystorm", "pip", 

593 purpose="Battle-tested Apache Storm Multi-Lang implementation for Python."), 

594 ModuleInstall("Fabric3", "pip", mname="fabric", 

595 purpose="Fabric is a simple, Pythonic tool for remote execution and deployment (py2.7/py3.4+ compatible fork)"), 

596 ModuleInstall("texttable", "pip", 

597 purpose="module for creating simple ASCII tables"), 

598 ModuleInstall("streamparse", "pip", 

599 purpose="Streamparse lets you run Python code against real-time streams of data via Apache Storm."), 

600 # 

601 # 2016-09-20: treeinterpreter 

602 # 

603 ModuleInstall("treeinterpreter", "pip", usage="ML", 

604 purpose="Package for interpreting scikit-learn's decision tree and random forest predictions. Allows decomposing " 

605 + "each prediction into bias and feature contribution components"), 

606 

607 # 

608 # 2016-11/12 

609 # 

610 ModuleInstall("update_checker", "pip", 

611 purpose="A python module that will check for package updates."), 

612 ModuleInstall("stopit", "pip", 

613 purpose="Timeout control decorator and context managers, raise any exception in another thread."), 

614 ModuleInstall("TPOT", "pip", mname="tpot", usage="ML", 

615 purpose="Consider TPOT your Data Science Assistant. TPOT is a Python tool that automatically " 

616 + "creates and optimizes machine learning pipelines using genetic programming."), 

617 ModuleInstall("category_encoders", "pip", usage="ML", 

618 purpose="A set of scikit-learn-style transformers for encoding categorical " 

619 + "variables into numeric by means of different techniques."), 

620 # 

621 # 2017-01/02 

622 # 

623 # ModuleInstall( 

624 # 'backports.wearkef', 'pip', purpose="This package provides backports of new features in Python's weakref " + 

625 # "module under the backports namespace. (for tensorflow)"), 

626 ModuleInstall('absl-py', 'pip', mname="absl", 

627 purpose="Collection of Python library code for building Python applications."), 

628 ModuleInstall('protobuf', 'pip', 

629 purpose="Protocol Buffers are Google's data interchange format"), 

630 ModuleInstall("gast", "pip", 

631 purpose="A generic AST to represent Python2 and Python3’s Abstract Syntax Tree(AST)."), 

632 ModuleInstall("grpcio", "wheel", 

633 purpose="Package for gRPC Python."), 

634 ModuleInstall("astor", "pip", 

635 purpose="astor is designed to allow easy manipulation of Python source via the AST."), 

636 ModuleInstall("tensorboard", "pip", usage="DATA/ML", 

637 purpose="TensorBoard lets you watch Tensors Flow"), 

638 ModuleInstall("tensorflow-estimator", "pip", usage="DEEP LEARNING", 

639 mname="tensorflow_estimator", purpose="Deep Learning from Google"), 

640 ModuleInstall("tensorflow", "wheel", usage="DEEP LEARNING", 

641 purpose="Deep Learning from Google"), 

642 ModuleInstall("edward", "pip", usage="DATA/ML", 

643 purpose="Edward is a Python library for probabilistic modeling, inference, and criticism"), 

644 ModuleInstall("python_Levenshtein", "wheel", mname="Levenshtein", 

645 purpose="C implementation of Levenshtein distance."), 

646 ModuleInstall("fuzzywuzzy", "pip", 

647 purpose="Fuzzy string matching in python"), 

648 ModuleInstall("smmap", "pip", 

649 purpose="A pure python implementation of a sliding window memory map manager"), 

650 ModuleInstall("gitdb", "pip", 

651 purpose="GitDB is a pure-Python git object database"), 

652 ModuleInstall("GitPython", "pip", mname="git", 

653 purpose="Python Git Library"), 

654 ModuleInstall("git-pandas", "pip", mname="gitpandas", 

655 purpose=""), 

656 ModuleInstall("nbdime", "pip", 

657 purpose="Comparison of notebooks"), 

658 ModuleInstall("cntk", "wheel", usage="DATA/ML", 

659 overwrite="https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp{0}{1}-cp{0}{1}m-win_amd64.whl", 

660 purpose="Deep Learning from Microsoft " 

661 + "see https://docs.microsoft.com/en-us/cognitive-toolkit/setup-windows-python"), 

662 

663 # 

664 # 2017-05/23 

665 # 

666 ModuleInstall('filelock', 'pip', 

667 purpose="A platform independent file lock."), 

668 ModuleInstall('fasttext', 'wheel', usage="DATA/ML", 

669 purpose="fastText is a library for efficient learning of word representations and sentence classification."), 

670 ModuleInstall('fastrlock', 'wheel', 

671 purpose="Fast, re-entrant optimistic lock implemented in Cython (cupy)"), 

672 ModuleInstall('cupy', 'wheel', usage="DATA/DML", 

673 purpose="CuPy : NumPy-like API accelerated with CUDA"), 

674 ModuleInstall('chainer', 'pip', usage="DATA/DML", 

675 purpose="A flexible framework of neural networks (GPU)"), 

676 ModuleInstall('sfepy', 'wheel', usage="OPTIM", 

677 purpose="Simple Finite Elements in Python"), 

678 ModuleInstall('palettable', 'pip', 

679 purpose="Color palettes for Python"), 

680 ModuleInstall('monty', 'pip', 

681 purpose="Monty is the missing complement to Python."), 

682 ModuleInstall('spglib', 'wheel', 

683 purpose="Python bindings for C library for finding and handling crystal symmetries"), 

684 ModuleInstall('pymatgen', 'wheel', usage="PHYS", 

685 purpose="Pymatgen (Python Materials Genomics) is a robust, open-source Python library for materials analysis."), 

686 ModuleInstall('gvar', 'wheel', 

687 purpose="Utilities for manipulating correlated Gaussian random variables."), 

688 ModuleInstall('lsqfit', 'wheel', usage="OPTIM", 

689 purpose="Utilities for nonlinear least-squares fits"), 

690 ModuleInstall('qutip', 'wheel', usage="OPTIM", 

691 purpose="QuTiP is open-source software for simulating the dynamics of open quantum systems."), 

692 ModuleInstall('pyemd', 'wheel', 

693 purpose="A Python wrapper for Ofir Pele and Michael Werman's implementation of the Earth Mover's Distance."), 

694 ModuleInstall('pint', 'pip', 

695 purpose="Physical quantities module"), 

696 ModuleInstall('traits', 'pip', 

697 purpose="explicitly typed attributes for Python"), 

698 ModuleInstall( 

699 'sparse', 'pip', purpose="This implements sparse arrays of arbitrary dimension on top of numpy and scipy.sparse"), 

700 ModuleInstall('hyperspy', 'wheel', 

701 purpose="HyperSpy is an open source Python library which provides tools to facilitate " 

702 + "the interactive data analysis of multi-dimensional " 

703 + "datasets that can be described as multi-dimensional arrays of a given " 

704 + "signal (e.g. a 2D array of spectra a.k.a spectrum image)."), 

705 ModuleInstall('emcee', 'pip', 

706 purpose="Kick ass affine-invariant ensemble MCMC sampling"), 

707 ModuleInstall('h5netcdf', 'pip', purpose="netCDF4 via h5py"), 

708 ModuleInstall('HoloPy', 'wheel', mname="holopy", 

709 purpose="Hologram processing and light scattering in python"), 

710 ModuleInstall('sounddevice', 'wheel', 

711 purpose="This Python module provides bindings for the PortAudio library and a few " 

712 + "convenience functions to play and record NumPy arrays containing audio signals."), 

713 ModuleInstall('drawtree', 'pip', usage="VIZ", 

714 purpose="Draw binary tree in plain text"), 

715 ModuleInstall('JPype1', 'wheel', purpose="A Python to Java bridge."), 

716 ModuleInstall('pyflux', 'wheel', usage="DATA/ML", 

717 purpose="An open source time series library for the Python Programming Language"), 

718 ModuleInstall('Rtree', 'wheel', usage="MATHS", mname="rtree", 

719 purpose="R-Tree spatial index for Python GIS"), 

720 # 

721 # 2017-08/10 

722 # 

723 ModuleInstall('foolbox', 'pip', usage="ML", 

724 purpose="Foolbox is a Python toolbox to create adversarial examples that fool neural networks."), 

725 # 

726 # 2017-08/25 

727 # 

728 # kealib: https://bitbucket.org/chchrsc/kealib/wiki/Home 

729 ModuleInstall('iso8601', 'pip', 

730 purpose="Simple module to parse ISO 8601 dates"), 

731 ModuleInstall('translationstring', 'pip', 

732 purpose="Utility library for i18n relied on by various Repoze and Pyramid packages"), 

733 ModuleInstall('colander', 'pip', 

734 purpose="A simple schema-based serialization and deserialization library"), 

735 # 

736 ModuleInstall('climate-toolbox', 'pip', mname="climate_toolbox", 

737 purpose="Command-line utilities (turn function into command line)"), 

738 ModuleInstall('knnimpute', 'pip', usage="ML", 

739 purpose="k-Nearest Neighbor imputation"), 

740 # Depends on theano - not maintained anymore. 

741 # ModuleInstall('fancyimpute', 'pip', usage="ML", 

742 # purpose="Matrix completion and feature imputation algorithms"), 

743 ModuleInstall('mnist', 'pip', 

744 purpose="Python utilities to download and parse the MNIST dataset"), 

745 # 

746 # 2017-11 

747 # 

748 ModuleInstall('torch', 'wheel', usage="DEEP LEARNING", 

749 purpose="PyTorch is a deep learning framework that puts Python first."), 

750 ModuleInstall('torchvision', 'pip', usage="DEEP LEARNING", 

751 purpose="image and video datasets and models for torch deep learning"), 

752 ModuleInstall('fairtest', 'wheel', usage="ML", source="2", 

753 purpose="FairTest enables developers or auditing entities to discover and test " 

754 + "for unwarranted associations between an algorithm's outputs and certain user " 

755 + "subpopulations identified by protected features."), 

756 ModuleInstall('libtiff', 'wheel', 

757 purpose="PyLibTiff is a package that provides: a wrapper to the libtiff library to " 

758 + "Python using ctypes, a pure Python module for reading and writing TIFF and LSM files. " 

759 + "The images are read as numpy.memmap objects so that it is possible to open images " 

760 + "that otherwise would not fit to computers RAM. Both TIFF strips and tiles are " 

761 + "supported for low-level data storage."), 

762 ModuleInstall('OpenImageIO', 'wheel', 

763 purpose="A library for reading and writing images with emphasis on animation and visual effects."), 

764 ModuleInstall('urwid', 'pip', purpose="for pyfm"), 

765 ModuleInstall('pyfm', 'wheel', usage="ML", 

766 purpose="Factorization Machine"), 

767 ModuleInstall('indexed_gzip', 'wheel', 

768 purpose="Fast random access of gzip files."), 

769 ModuleInstall( 

770 'mockextras', 'pip', purpose="Extensions to the mock library"), 

771 ModuleInstall( 

772 'swiglpk', 'wheel', purpose="swiglpk - Simple swig bindings for the GNU Linear Programming Kit"), 

773 ModuleInstall('optlang', 'pip', purpose="Formulate optimization problems using sympy expressions " 

774 + "and solve them using interfaces to third-party optimization software (e.g. GLPK)."), 

775 ModuleInstall('depinfo', 'pip', purpose="A utility Python package intended for other library packages. " 

776 + "Provides a function that when called with your package name, will print platform and dependency information."), 

777 ModuleInstall( 

778 'cobra', 'wheel', purpose="Constraint-based reconstruction and analysis in python."), 

779 ModuleInstall('spectrum', 'wheel', purpose="Spectrum contains tools to estimate Power Spectral Densities using " 

780 + "methods based on Fourier transform, Parametric methods or eigenvalues analysis"), 

781 ModuleInstall('properties', 'pip', 

782 purpose="An organizational aid and wrapper for validation and tab completion of class properties"), 

783 ModuleInstall('pymkl', 'pip', mname="pyMKL", 

784 purpose="Python wrapper of Intel MKL routines"), 

785 ModuleInstall('pymatsolver', 'pip', 

786 purpose="A (sparse) matrix solver for python."), 

787 ModuleInstall('vectormath', 'pip', 

788 purpose="Vector math utilities for python (used by discretize)."), 

789 ModuleInstall('discretize', 'wheel', 

790 purpose="A python package for finite volume discretization."), 

791 ModuleInstall('recordclass', 'wheel', 

792 purpose="A mutable variant of collections.namedtuple, which supports assignments."), 

793 ModuleInstall('pyeda', 'wheel', 

794 purpose="A library for electronic design automation."), 

795 ModuleInstall('Polygon3', 'wheel', mname="polygon", purpose="Handles polygonal shapes in 2D. This library is free " 

796 + "for non-commercial use only."), 

797 

798 # 

799 # 2017-12 

800 # 

801 ModuleInstall('chainercv', 'pip', usage="DATA/DML", 

802 purpose="ChainerCV is a deep learning based computer vision library built on top of Chainer."), 

803 ModuleInstall( 

804 'fcn', 'pip', purpose="Fully Convolutional Networks", usage="ML"), 

805 

806 # 

807 # 2018-14 

808 # 

809 ModuleInstall('pyltr', 'pip', usage="ML", purpose="pyltr is a Python learning-to-rank toolkit " 

810 "with ranking models, evaluation metrics, data wrangling helpers, and more."), 

811 ModuleInstall('typing_extensions', 'pip', usage="ML", 

812 purpose="Typing Extensions - Backported and Experimental Type Hints for Python"), 

813 ModuleInstall('onnx', 'wheel2', usage="ML", 

814 purpose="Open Neural Network Exchange"), 

815 ModuleInstall('onnxmltools', 'pip', usage="ML", 

816 purpose="Converts Machine Learning models to ONNX"), 

817 ModuleInstall('sklearn-onnx', 'pip', usage="ML", 

818 purpose="Converts scikit-learn Machine Learning models to ONNX"), 

819 ModuleInstall('keras-onnx', 'pip', usage="ML", 

820 purpose="Converts keras Machine Learning models to ONNX"), 

821 ModuleInstall('tensorflow-onnx', 'pip', usage="ML", 

822 purpose="Converts tensorflow Machine Learning models to ONNX"), 

823 

824 # 

825 # 2019-01 

826 # 

827 ModuleInstall('openTSNE', 'wheel', usage="ML", purpose="Fast t-SNE"), 

828 ModuleInstall('python-louvain', 'pip', usage="ML", 

829 purpose="Louvain algorithm"), 

830 

831 ] 

832 

833 if sys.version_info[0] == 2: 

834 mod.extend([ 

835 # (for dpark)"), 

836 ModuleInstall("google-common", "pip", mname="google_common", 

837 purpose="Google namespace package"), 

838 ModuleInstall("mesos.interface", "pip", 

839 purpose="Mesos interfaces (for dpark)"), 

840 ModuleInstall("pymesos", "pip", 

841 purpose="Mesos interfaces (for dpark)"), 

842 # ModuleInstall("dpark", "wheel2", 

843 # purpose="DPark is a Python clone of Spark, MapReduce(R) alike 

844 # computing framework supporting iterative computation., see 

845 # https://github.com/douban/dpark", usage="DATA/ML"), 

846 ]) 

847 

848 if sys.platform.startswith("win"): 

849 mod.append(ModuleInstall("comtypes", "pip", 

850 purpose="Pure Python COM package")) 

851 mod.append(ModuleInstall("xlwings", "pip", 

852 purpose="reads/writes Excel files", usage="WINDOWS") if sys.platform.startswith("win") else None), 

853 mod.append(ModuleInstall("VideoCapture", "wheel", 

854 purpose="A Win32 Python Extension for Accessing Video Devices", usage="VIDEO")) 

855 mod.append(ModuleInstall("jaraco.structures", "pip", 

856 purpose="jaraco.structures")) 

857 mod.append(ModuleInstall("jaraco.classes", "pip", 

858 purpose="Split from another package jaraco.")) 

859 

860 mod.append(ModuleInstall( 

861 "PyJWT", "pip", mname="jwt", purpose="JSON Web Token library for Python 3.")) 

862 

863 return [_ for _ in mod if _ is not None]