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 different a set of usual modules for Python. 

5""" 

6import sys 

7from ..installhelper.module_install import ModuleInstall 

8from ..installhelper.install_cmd_helper import is_conda_distribution 

9 

10 

11def small_set(): 

12 """ 

13 list of modules to work with pandas, numpy, ipython, ... 

14 """ 

15 mod = [ 

16 # issues with this modules in a virtual environment raise a, b, c instead or raise (a, b, c) 

17 # ModuleInstall("futures", "pip", mname="concurrent.futures", 

18 # purpose="Backport of the concurrent.futures package from Python 

19 # 3.2"), 

20 ModuleInstall( 

21 "wincertstore", "pip", purpose="Python module to extract CA and CRL certs from Windows' cert store (ctypes based).") \ 

22 if sys.platform.startswith("win") else None, 

23 ModuleInstall( 

24 "pyquicksetup", "pip", purpose="helpers for setup", usage="TEACH"), 

25 ModuleInstall( 

26 "virtualenv", "pip", purpose="creatre virtual environments") if not is_conda_distribution() else None, 

27 ModuleInstall( 

28 "six", "pip", purpose="helpers for python 2/3 conversion"), 

29 ModuleInstall("lxml", "wheel", purpose="xml parsers (C++)"), 

30 ModuleInstall('markupsafe', 'pip', purpose="parses mardown"), 

31 ModuleInstall("jinja2", "pip", purpose="templating"), 

32 ModuleInstall("Mako", "pip", mname="mako", purpose="templating"), 

33 ModuleInstall( 

34 "pygments", "pip", purpose="syntax highlighting package written in Python"), 

35 ModuleInstall( 

36 "pyparsing", "pip", purpose="alternative approach to creating and executing simple grammars"), 

37 ModuleInstall("idna", "pip", usage="WEB", 

38 purpose="Internationalized Domain Names in Applications (IDNA)"), 

39 ModuleInstall( 

40 "python-dateutil", "pip", "dateutil", purpose="helpers to manipulate dates"), 

41 ModuleInstall( 

42 "webencodings", "pip", purpose="Character encoding aliases for legacy web content"), 

43 ModuleInstall("soupsieve", "pip", 

44 purpose="Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4."), 

45 ModuleInstall("beautifulsoup4", "pip", mname="bs4", 

46 purpose="Beautiful Soup sits atop an HTML or XML parser, providing Pythonic idioms for " + 

47 "iterating, searching, and modifying the parse tree."), 

48 ModuleInstall( 

49 "certifi", "pip", purpose="Certifi is a carefully curated collection of Root Certificates for validating the trustworthiness " + 

50 "of SSL certificates while verifying the identity of TLS hosts."), 

51 ModuleInstall("requests", "pip", purpose="human interface for http"), 

52 ModuleInstall( 

53 "coverage", "pip", purpose="measure the coverage of unit tests"), 

54 ModuleInstall("urllib3", "pip", 

55 purpose="urllib2 extension"), 

56 ModuleInstall( 

57 "chardet", "pip", usage="WEB", 

58 purpose="Universal encoding detector."), 

59 ModuleInstall( 

60 "codecov", "pip", purpose="submit coverage report to codecov"), 

61 ModuleInstall("nose", "pip", purpose="run unit tests"), 

62 ModuleInstall( 

63 "pytz", "pip", purpose="World timezone definitions, modern and historical"), 

64 ModuleInstall("pyreadline", "pip", 

65 purpose="python implementation of GNU readline functionality"), 

66 ModuleInstall( 

67 "pipdeptree", "pip", purpose="displays module dependencies as a tree"), 

68 ModuleInstall("jdcal", "pip", 

69 purpose="Julian dates from proleptic Gregorian and Julian calendars."), 

70 ModuleInstall('et_xmlfile', "pip", 

71 purpose="et_xmlfile is a low memory library for creating large XML files (for openpyxl)."), 

72 ModuleInstall("openpyxl", "pip", 

73 purpose="reads/writes Excel files, version is 1.8.6 due to pandas which does not work with more recent verrsions yet"), 

74 ModuleInstall("xlrd", "pip", purpose="reads Excel files"), 

75 ModuleInstall("xlwt", "pip", purpose="writes Excel files"), 

76 ModuleInstall( 

77 'XlsxWriter', 'pip', mname='xlsxwriter', purpose="writes Excel files"), 

78 ModuleInstall( 

79 "tornado", "wheel", purpose="python server, IPython relies on it", usage="NETWORK"), 

80 ModuleInstall( 

81 "sockjs-tornado", "pip", mname="sockjs.tornado", usage="NETWORK", 

82 purpose="SockJS-tornado is a Python server side counterpart of SockJS-client browser library running " + 

83 "on top of Tornado framework."), 

84 ModuleInstall( 

85 "pyzmq", "wheel", mname="zmq", purpose="python librairies for Omz (pipy distributes the binaries)", usage="NETWORK"), 

86 ModuleInstall( 

87 "pycparser", "pip", purpose="pycparser is a complete parser of the C language, written in pure " + 

88 "Python using the PLY parsing library. It parses C code into " + 

89 "an AST and can serve as a front-end for C compilers or analysis tools."), 

90 ModuleInstall("numpy", "wheel", 

91 purpose="matrix computation", usage="DATA/ML"), 

92 ModuleInstall("mkl_service", "wheel", mname="mkl", 

93 purpose="This package exposes a few functions which are declared in mkl_service.h. The main purpose of the " + 

94 "package is to allow the user to change the number of CPU's MKL is using at runtime.", usage="DATA/ML"), 

95 ModuleInstall("Cython", "wheel", mname="cython", 

96 purpose="pseudo C++ in python"), 

97 ModuleInstall("cycler", "pip", 

98 purpose="dependency for matplotlib", usage="VIZ"), 

99 ModuleInstall("kiwisolver", "wheel", 

100 purpose="Kiwi is an efficient C++ implementation of the Cassowary constraint solving algorithm."), 

101 ModuleInstall("matplotlib", "wheel", 

102 purpose="most used plotting library", usage="VIZ"), 

103 ModuleInstall("mpl_finance", "github", "matplotlib", usage="VIZ", 

104 purpose="This module consists of code extracted from the deprecated matplotlib.finance " + 

105 "module along with a few examples of usage."), 

106 ModuleInstall("pywin32", "wheel2", 

107 mname="win32com", purpose="call Windows DLL", 

108 post=dict( 

109 pre_cmd="module_install_preprocess", 

110 cmd_python="{0}\\Scripts\\pywin32_postinstall.py -install"), 

111 usage="WINDOWS") if sys.platform.startswith("win") else None, 

112 ModuleInstall("pywin32-ctypes", "pip", mname="win32ctypes", 

113 purpose="call Windows DLL", usage="WINDOWS") if sys.platform.startswith("win") else None, 

114 ModuleInstall("winshell", "pip", purpose="Windows shell functions", 

115 usage="WINDOWS") if sys.platform.startswith("win") else None, 

116 ModuleInstall( 

117 "brewer2mpl", "pip", purpose="Connect colorbrewer2.org color maps to Python and matplotlib"), 

118 ModuleInstall( 

119 "scipy", "wheel", purpose="scientific computation, eigen values, linear algebra", usage="DATA/ML"), 

120 ModuleInstall( 

121 "patsy", "pip", purpose="A Python package for describing statistical models and for building design matrices.", usage="DATA/ML"), 

122 ModuleInstall( 

123 "decorator", "pip", purpose="Better living through Python with decorators"), 

124 ModuleInstall( 

125 "networkx", "pip", purpose="graph libraries, basic drawing", usage="VIZ"), 

126 ModuleInstall( 

127 "graphviz", "pip", purpose="wrapper for graphviz (most famous tool to draw graphs", usage="VIZ"), 

128 ModuleInstall("pyrsistent", "pip", purpose="Pyrsistent is a number of persistent collections (by some referred to as functional data " 

129 "structures). Persistent in the sense that they are immutable."), 

130 ModuleInstall('attrs', 'pip', 

131 purpose="Attributes without boilerplate."), 

132 ModuleInstall( 

133 "jsonschema", "pip", purpose="An implementation of JSON Schema validation for Python"), 

134 ModuleInstall( 

135 "mistune", "pip", purpose="The fastest markdown parser in pure Python with renderer features, inspired by marked."), 

136 ModuleInstall("wheel", "pip", purpose="handle wheels"), 

137 ModuleInstall( 

138 "alabaster", "pip", purpose="A configurable sidebar-enabled Sphinx theme", usage="SPHINX"), 

139 ModuleInstall("babel", "pip", # version="1.3", 

140 purpose="Internationalization utilities, version 2.0 has bugs", usage="SPHINX"), 

141 ModuleInstall( 

142 "colorama", "pip", purpose="Cross-platform colored terminal text.", usage="SPHINX"), 

143 ModuleInstall( 

144 "wcwidth", "pip", purpose="Measures number of Terminal column cells of wide-character codes", usage="JUPYTER"), 

145 ModuleInstall( 

146 "prompt_toolkit", "pip", purpose="Library for building powerful interactive command lines in Python", usage="JUPYTER"), 

147 ModuleInstall("docutils", "pip", 

148 purpose="interpret RST format", usage="SPHINX"), 

149 ModuleInstall("packaging", "pip", 

150 purpose="Core utilities for Python packages"), 

151 ModuleInstall("sphinxcontrib-applehelp", "pip", mname="sphinxcontrib.applehelp", 

152 purpose="extension for Sphinx", usage="SPHINX"), 

153 ModuleInstall("sphinxcontrib-devhelp", "pip", mname="sphinxcontrib.devhelp", 

154 purpose="extension for Sphinx", usage="SPHINX"), 

155 ModuleInstall("sphinxcontrib-htmlhelp", "pip", mname="sphinxcontrib.htmlhelp", 

156 purpose="extension for Sphinx", usage="SPHINX"), 

157 ModuleInstall("sphinxcontrib-jsmath", "pip", mname="sphinxcontrib.jsmath", 

158 purpose="extension for Sphinx", usage="SPHINX"), 

159 ModuleInstall("sphinxcontrib-qthelp", "pip", mname="sphinxcontrib.qthelp", 

160 purpose="extension for Sphinx", usage="SPHINX"), 

161 ModuleInstall("sphinxcontrib-serializinghtml", "pip", mname="sphinxcontrib.serializinghtml", 

162 purpose="extension for Sphinx", usage="SPHINX"), 

163 ModuleInstall("sphinxcontrib-websupport", "pip", mname="sphinxcontrib.websupport", 

164 purpose="extension for Sphinx", usage="SPHINX"), 

165 ModuleInstall( 

166 "sphinx", "pip", purpose="documentation generation based on RST", usage="SPHINX"), 

167 ModuleInstall( 

168 'imagesize', 'pip', usage="SPHINX", purpose="Getting image size from png/jpeg/jpeg2000/gif file"), 

169 # ModuleInstall( 

170 # 'sphinxcontrib-images', 'github', "sdpython", mname='sphinxcontrib.images', 

171 # usage="SPHINX", purpose="include images in Sphinx documentation"), 

172 ModuleInstall('pypiserver', 'pip', 

173 purpose="run a local pypi server"), 

174 ModuleInstall( 

175 "untokenize", "pip", purpose="Transforms tokens into original source code (while preserving whitespace).", usage="STYLE"), 

176 ModuleInstall( 

177 "pycodestyle", "pip", purpose="Python style guide checker", usage="STYLE"), 

178 ModuleInstall( 

179 "pep8", "pip", purpose="official guidelines on Python style"), 

180 ModuleInstall("autopep8", "pip", 

181 purpose="apply pep8 on a script", usage="STYLE"), 

182 ModuleInstall("docformatter", "pip", 

183 purpose="Formats docstrings to follow PEP 257.", usage="STYLE"), 

184 ModuleInstall("unify", "pip", 

185 purpose="Modifies strings to all use the same (single/double) quote where possible.", usage="STYLE"), 

186 ModuleInstall("mccabe", "pip", usage="STYLE", 

187 purpose="This module provides a plugin for flake8, the Python code checker."), 

188 ModuleInstall("pyflakes", "pip", 

189 purpose="verify pep8 on a script", usage="STYLE"), 

190 ModuleInstall("flake8", "pip", 

191 purpose="verify pep8 on a script", usage="STYLE"), 

192 ModuleInstall( 

193 "bottleneck", "wheel", purpose="pandas depenencies, faster arrays", usage="DATA/ML"), 

194 ModuleInstall( 

195 "pandas", "wheel", purpose="manipulate table as SQL in memory", usage="DATA/ML"), 

196 ModuleInstall( 

197 "statsmodels", "wheel", purpose="statistical modelling, depends on scipy", usage="DATA/ML"), 

198 ModuleInstall( 

199 "enum34", "pip", purpose="for ggplot, Object-oriented filesystem paths") if sys.version_info[:2] < (3, 4) else None, 

200 ModuleInstall("fire", "pip", 

201 purpose="Python Fire is a library for automatically generating command line " 

202 "interfaces (CLIs) from absolutely any Python object."), 

203 ModuleInstall("pathlib2", "pip", 

204 purpose="for ggplot, Object-oriented filesystem paths"), 

205 ModuleInstall("ggplot", "pip", purpose="ggplot graphics style"), 

206 ModuleInstall("plotnine", "pip", 

207 purpose="A grammar of graphics for Python"), 

208 ModuleInstall( 

209 "requests-file", "pip", mname="requests_file", purpose="File transport adapter for Requests"), 

210 ModuleInstall( 

211 "requests-ftp", "pip", mname="requests_ftp", purpose="FTP Transport Adapter for Requests"), 

212 ModuleInstall( 

213 "pandas-datareader", "pip", mname="pandas_datareader", 

214 purpose="Up to date remote data access for pandas, works for multiple versions of pandas.", usage="DATA/ML"), 

215 ModuleInstall("cftime", "wheel", 

216 purpose="Time-handling functionality from netcdf4-python."), 

217 ModuleInstall("netCDF4", "wheel", 

218 purpose="xarray uses this module to save and read data (netCDF=Unidata network Common Data Form)"), 

219 ModuleInstall( 

220 "xarray", "pip", purpose="pandas like library for cubes (N-dimensional data)", usage="DATA/ML"), 

221 ModuleInstall( 

222 "threadpoolctl", "pip", purpose="Python helpers to limit the number of threads used in the " 

223 "threadpool-backed of common native libraries used for scientific computing and data science " 

224 "(e.g. BLAS and OpenMP)."), 

225 ModuleInstall( 

226 "joblib", "pip", purpose="distribute jobs, parallelization"), 

227 ModuleInstall( 

228 "scikit-learn", "wheel", mname="sklearn", purpose="machine learning", usage="DATA/ML"), 

229 # ipython 

230 ModuleInstall("pandocfilters", "pip", 

231 purpose="Utilities for writing pandoc filters in python"), 

232 ModuleInstall("pandoc-attributes", "pip", mname="pandocattributes", 

233 purpose="An Attribute class to be used with pandocfilters"), 

234 ModuleInstall("win_unicode_console", "pip", 

235 "Enable Unicode input and display when running Python from Windows console."), 

236 ModuleInstall( 

237 "ipython_genutils", "pip", purpose="IPython utils (nbformat)", usage="JUPYTER"), 

238 ModuleInstall( 

239 "html5lib", "pip", purpose="pure-python library for parsing HTML"), 

240 ModuleInstall("bleach", "pip", usage="WEB", 

241 purpose="An easy whitelist-based HTML-sanitizing tool."), 

242 ModuleInstall( 

243 "testpath", "pip", purpose="Test utilities for code working with files and commands"), 

244 ModuleInstall( 

245 "traitlets", "pip", purpose="IPython, dependency", usage="JUPYTER"), 

246 ModuleInstall( 

247 "pickleshare", "pip", purpose="IPython, dependency", usage="JUPYTER"), 

248 ModuleInstall( 

249 "simplegeneric", "pip", purpose="IPython, dependency", usage="JUPYTER"), 

250 ModuleInstall( 

251 "parso", "pip", purpose="Parso is a Python parser that supports error recovery and " + 

252 "round-trip parsing for different Python versions (in multiple Python versions). Parso " + 

253 "is also able to list multiple syntax errors in your python file."), 

254 ModuleInstall( 

255 "jedi", "pip", purpose="An autocompletion tool for Python that can be used for text editors."), 

256 ModuleInstall("backcall", "pip", usage="JUPYTER", 

257 purpose="Specifications for callback functions passed in to an API (IPython, Jupyter)"), 

258 ModuleInstall( 

259 "ipython", "pip", mname="IPython", purpose="IPython, Jupyter", usage="JUPYTER"), 

260 ModuleInstall( 

261 "jupyter_core", "pip", purpose="Jupyter Core", usage="JUPYTER"), 

262 ModuleInstall( 

263 "jupyter", "pip", purpose="Jupyter", usage="JUPYTER"), 

264 ModuleInstall( 

265 "jupyter_client", "pip", purpose="Jupyter client", usage="JUPYTER"), 

266 ModuleInstall( 

267 "jupyterlab_pygments", "pip", purpose="Jupyterlab", usage="JUPYTER"), 

268 ModuleInstall( 

269 "nbformat", "pip", purpose="IPython, notebooks conversion, new in Jupyter 4.0", usage="JUPYTER"), 

270 ModuleInstall( 

271 "entrypoints", "pip", purpose="Discover and load entry points from installed packages.", usage="JUPYTER"), 

272 ModuleInstall( 

273 "nbconvert", "pip", purpose="IPython, notebooks conversion, new in Jupyter 4.0", usage="JUPYTER"), 

274 ModuleInstall( 

275 "jupyter_sphinx", "pip", purpose="Jupyter Sphinx Extensions", usage="JUPYTER"), 

276 ModuleInstall( 

277 "jupyterlab-launcher", "pip", mname="jupyterlab_launcher", 

278 purpose="Jupyter Lab Launcher", usage="JUPYTER"), 

279 ModuleInstall("jupyterlab-server", "pip", mname="jupyterlab_server", 

280 purpose="Jupyter Lab Server", usage="JUPYTER"), 

281 ModuleInstall( 

282 "jupyterlab", "pip", purpose="Jupyter Lab", usage="JUPYTER"), 

283 ModuleInstall( 

284 "ipympl", "pip", purpose="Matplotlib Jupyter Extension", usage="JUPYTER"), 

285 ModuleInstall( 

286 "nbsphinx", "pip", purpose="nbsphinx is a Sphinx extension that provides a source parser for *.ipynb files.", usage="JUPYTER"), 

287 ModuleInstall("PyPDF2", "pip", purpose="PDF toolkit", usage="PDF"), 

288 ModuleInstall( 

289 "ghost.py", "pip", mname="ghost", purpose="ghost.py is a webkit web client written in python", usage="JUPYTER"), 

290 ModuleInstall("nbbrowserpdf", "pip", 

291 purpose="LaTeX-free PDF generation from Jupyter Notebooks", usage="JUPYTER"), 

292 ModuleInstall("Send2Trash", "pip", mname="send2trash", 

293 purpose="Send file to trash natively under Mac OS X, Windows and Linux."), 

294 ModuleInstall( 

295 "notedown", "pip", purpose="Convert markdown to IPython notebook.", usage="JUPYTER"), 

296 ModuleInstall( 

297 "ipykernel", "pip", purpose="IPython, Jupyter, kernels", usage="JUPYTER"), 

298 ModuleInstall( 

299 "qtconsole", "pip", purpose="IPython, notebooks, qtconsole", usage="JUPYTER"), 

300 ModuleInstall("zipp", "pip", 

301 purpose="A pathlib-compatible Zipfile object wrapper."), 

302 ModuleInstall("importlib-metadata", "pip", mname="importlib_metadata", 

303 purpose="library to access the metadata for a Python package. It is intended to be ported to Python 3.8.", 

304 usage="JUPYTER"), 

305 ModuleInstall( 

306 "path.py", "pip", mname="path", purpose="IPython, dependency", usage="JUPYTER"), 

307 ModuleInstall( 

308 "micropython-libc", "pip", mname="libc", purpose="dependency for ptyprocess, MicroPython FFI helper module", 

309 usage="JUPYTER/LINUX") if not sys.platform.startswith("win") else None, 

310 ModuleInstall( 

311 "micropython-ffilib", "pip", mname="ffi", purpose="dependency for ptyprocess, MicroPython FFI helper module", 

312 usage="JUPYTER/LINUX") if not sys.platform.startswith("win") else None, 

313 ModuleInstall( 

314 "micropython-fcntl", "pip", mname="fcntl", purpose="dependency for ptyprocess, Functions to compute fnctl.ioctl's opt argument", 

315 usage="JUPYTER/LINUX") if not sys.platform.startswith("win") else None, 

316 ModuleInstall( 

317 "ptyprocess", "pip", purpose="dependency for the terminado, Run a subprocess in a pseudo terminal", 

318 usage="JUPYTER/LINUX"), 

319 ModuleInstall("pexpect", "pip", usage="JUPYTER", 

320 purpose="needed by ipykernel on Linux, Pexpect makes Python a better tool for controlling " + 

321 "other applications (needed by metakernel)."), 

322 ModuleInstall("pywinpty", "wheel", 

323 purpose="Python bindings for the winpty pseudo terminal library. It allows to create and " + 

324 "communicate with Windows processes that print outputs and recieve inputs via console input " + 

325 "and output pipes."), 

326 ModuleInstall( 

327 "terminado", "pip", purpose="dependency for the notebooks, Terminals served to term.js using Tornado websockets", 

328 usage="JUPYTER/LINUX"), 

329 ModuleInstall( 

330 "ipywidgets", "pip", purpose="IPython, Jupyter, widgets", usage="JUPYTER"), 

331 ModuleInstall("ipyscales", "pip", 

332 purpose="A widget library for scales", usage="JUPYTER"), 

333 ModuleInstall("ipydatawidgets", "pip", 

334 purpose="A set of widgets to help facilitate reuse of large datasets across widgets", usage="JUPYTER"), 

335 ModuleInstall( 

336 "backports_abc", "pip", purpose="A backport of recent additions to the 'collections.abc' module", 

337 usage="JUPYTER"), 

338 ModuleInstall("yapf", "pip", purpose="Code formatter"), 

339 ModuleInstall( 

340 "widgetsnbextension", "pip", 

341 purpose="Interactive HTML widgets for Jupyter notebooks.", usage="JUPYTER"), 

342 ModuleInstall( 

343 "jupyter_contrib_nbextensions", "github", "ipython-contrib", 

344 purpose="This repository contains a collection of extensions that add functionality to the Jupyter notebook.", usage="JUPYTER"), 

345 ModuleInstall( 

346 "backports.shutil-get-terminal-size", "pip", mname="backports", purpose="needed for Jupyter", 

347 usage="JUPYTER"), 

348 ModuleInstall( 

349 "prometheus_client", "pip", purpose="The official Python 2 and 3 client for Prometheus.", usage="JUPYTER"), 

350 ModuleInstall( 

351 "notebook", "pip", purpose="Jupyter notebooks, new in Jupyter 4.0", usage="JUPYTER"), 

352 ModuleInstall( 

353 "nbpresent", "pip", purpose="Next generation slides from Jupyter Notebooks", usage="JUPYTER"), 

354 ModuleInstall( 

355 "jupyter-console", "pip", mname="jupyter_console", purpose="Jupyter console, new in Jupyter 4.0", usage="JUPYTER"), 

356 ModuleInstall( 

357 "metakernel", "pip", purpose="more magic commands for Jupyter", usage="JUPYTER"), 

358 ModuleInstall('SQLAlchemy', 'wheel', mname='sqlalchemy', 

359 purpose="model SQL queries as objects", usage="SQL"), 

360 ModuleInstall('sqlparse', 'pip', usage="SQL", 

361 purpose="Non-validating SQL parser"), 

362 ModuleInstall( 

363 "ipystata", "pip", purpose="Jupyter kernel for Stata", 

364 usage="JUPYTER/PY2") if sys.version_info[0] == 2 else None, 

365 ModuleInstall("jupyter-pip", "pip", mname="jupyterpip", 

366 purpose="Allows Jupyter notebook extension writers to make their extension pip installable!", 

367 usage="JUPYTER"), 

368 ModuleInstall("portalocker", "pip", usage="JUPYTER", 

369 purpose="Portalocker is a library to provide an easy API to file locking."), 

370 ModuleInstall("ipyparallel", "pip", usage="JUPYTER", 

371 purpose="Interactive Parallel Computing with IPython"), 

372 # end of ipython 

373 # 

374 ModuleInstall("typing", "pip", purpose="Type Hints for Python") if sys.version_info[ 

375 :2] < (3, 5) else None, 

376 ModuleInstall("typecheck-decorator", "pip", mname="typecheck", 

377 purpose="verifies decorators at running time"), 

378 ModuleInstall("requests-cache", "pip", mname="requests_cache", 

379 purpose="Persistent cache for requests library"), 

380 ModuleInstall("SIP", "pip", mname="sip", 

381 usage="GUI", purpose="For PyQt5"), 

382 ModuleInstall("ete3", "pip", "http://etetoolkit.org/", usage="VIZ", 

383 purpose="tree visualisation, ete3 does not work with PyQt4 (2017-11)."), 

384 ModuleInstall("PyQt5-sip", "pip", mname="PyQt5_sip", usage="GUI"), 

385 ModuleInstall("PyQt5", "pip", usage="GUI"), 

386 ModuleInstall("shiboken2", "pip", purpose="for PySide"), 

387 ModuleInstall("qtpy", "pip", usage="GUI", 

388 purpose="single interface for QtPy4, 5, PySide"), 

389 ModuleInstall( 

390 "PySide2", "pip", 

391 purpose="The Qt for Python project aims to provide a complete port of the PySide module to Qt 5. ", 

392 usage="GUI"), 

393 ModuleInstall( 

394 "psutil", "wheel", purpose="cross-platform library for retrieving information " + 

395 "onrunning processes and system utilization (CPU, memory, disks, network)in Python."), # 

396 ModuleInstall( 

397 "rope_py3k", "pip", mname="rope", purpose="refactoring library") if sys.version_info[0] >= 3 else None, # 

398 ModuleInstall( 

399 "isort", "pip", purpose="A Python utility / library to sort Python imports."), 

400 ModuleInstall( 

401 "backports.functools_lru_cache", "pip", 

402 purpose="backports.functools_lru_cache"), 

403 ModuleInstall("lazy-object-proxy", "pip", mname="lazy_object_proxy", 

404 purpose="A fast and thorough lazy object proxy"), 

405 ModuleInstall("wrapt", "wheel", 

406 purpose="A Python module for decorators, wrappers and monkey patching."), 

407 ModuleInstall( 

408 "typed_ast", "pip", 

409 purpose="typed_ast is a Python 3 package that provides a Python 2.7 and Python 3 " 

410 "parser similar to the standard ast library."), 

411 ModuleInstall( 

412 "astroid", "pip", 

413 purpose="A abstract syntax tree for Python with inference support."), 

414 ModuleInstall( 

415 "pylint", "pip", purpose="statistics on Python script style"), # 

416 ModuleInstall( 

417 "pythonqwt", "pip", purpose="Qt plotting widgets (Spyder)"), 

418 ModuleInstall("wurlitzer", "pip", purpose="for spyder"), 

419 ModuleInstall("spyder-kernels", "pip", mname="spyder_kernels", 

420 purpose="Jupyter Kernels for the Spyder console"), 

421 ModuleInstall( 

422 "spyder", "pip", mname="spyderlib", purpose="scientific IDE"), 

423 ModuleInstall("dbfread", "pip", purpose="access DBase format"), 

424 ModuleInstall( 

425 "aenum", "pip", purpose="Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and NamedConstants"), 

426 ModuleInstall("dbf", "pip", purpose="access DBase format"), 

427 ModuleInstall( 

428 "xmltodict", "pip", purpose="Makes working with XML feel like you are working with JSON"), 

429 ModuleInstall( 

430 "ansiconv", "pip", purpose="A Python module for converting ANSI coded text and converts it to either plain text or HTML."), 

431 ModuleInstall( 

432 "ansi2html", "pip", purpose="Convert text with ANSI color codes to HTML"), 

433 ModuleInstall( 

434 "nodeenv", "pip", purpose="Node.js virtual environment builder"), 

435 ModuleInstall("greenlet", "wheel", 

436 purpose="Greenlet allows lightweight in-process concurrent programming."), 

437 ModuleInstall( 

438 'werkzeug', 'pip', purpose="The Swiss Army knife of Python web development"), 

439 ModuleInstall('itsdangerous', 'pip', 

440 purpose="Various helpers to pass trusted data to untrusted environments and back."), 

441 ModuleInstall('simplejson', 'wheel', 

442 purpose="Simple, fast, extensible JSON encoder/decoder for Python"), 

443 ModuleInstall( 

444 'ijson', 'pip', purpose="Iterative JSON parser with a standard Python iterator interface"), 

445 ModuleInstall("click", "pip", 

446 purpose="A simple wrapper around optparse for powerful command line utilities."), 

447 ModuleInstall('flask', 'pip', usage="NETWORK", 

448 purpose="Flask is a microframework for Python based on Werkzeug, " + 

449 "Jinja 2 and good intentions. And before you ask: It's BSD licensed!"), 

450 ModuleInstall('flask-sqlalchemy', 'pip', 

451 mname='flask.ext.sqlalchemy', usage="NETWORK"), 

452 ModuleInstall('Flask-Login', 'pip', mname="flask_login", 

453 usage="NETWORK"), 

454 ModuleInstall("Flask-Cors", "pip", mname="flask_cors", 

455 purpose="A Flask extension for handling Cross Origin Resource Sharing (CORS), " + 

456 "making cross-origin AJAX possible."), 

457 ModuleInstall('PyYAML', 'wheel', mname='yaml', 

458 purpose=" YAML parser and emitter for Python"), 

459 ModuleInstall('python-mimeparse', 'pip', 

460 purpose="A module provides basic functions for parsing mime-type names and matching " + 

461 "them against a list of media-ranges. (falcon)"), 

462 ModuleInstall('falcon', 'pip', usage="NETWORK", 

463 purpose="Falcon is a very fast, very minimal Python web framework for building microservices, " + 

464 "app backends, and higher-level frameworks."), 

465 ModuleInstall('falcon-auth', 'pip', mname='falcon_auth', usage="NETWORK", 

466 purpose="A falcon middleware + authentication backends that adds authentication layer to you app/api service."), 

467 ModuleInstall('waitress', 'pip', usage="NETWORK", 

468 purpose="Waitress WSGI server"), 

469 ModuleInstall( 

470 'markdown', 'pip', purpose="markdown parser (for bokeh)"), 

471 ModuleInstall( 

472 'pystache', 'pip', purpose="Mustache for Python (for bokeh)"), 

473 ModuleInstall( 

474 'bokeh', 'pip', purpose="interactive graphs, zoomable, javascript", usage="VIZ"), 

475 ModuleInstall( 

476 'bkcharts', 'pip', purpose="High level chart types built on top of Bokeh", usage="VIZ"), 

477 ModuleInstall( 

478 'traittypes', 'pip', purpose="Custom trait types for scientific computing."), 

479 ModuleInstall( 

480 'bqplot', 'pip', purpose="interactive graphs, zoomable, d3.js for notebooks", usage="VIZ"), 

481 ModuleInstall( 

482 'seaborn', 'pip', purpose="nicer graphs than matplotlib for statistical purposes", usage="VIZ"), 

483 ModuleInstall( 

484 'scikit-plot', 'pip', purpose="nicer graphs than matplotlib for datascientist", usage="VIZ"), 

485 ModuleInstall( 

486 'toolz', 'pip', purpose="Toolz provides a set of utility functions for iterators, functions, and dictionaries.", usage="DATA/ML"), 

487 ModuleInstall( 

488 'cytoolz', 'wheel', purpose="Cython implementation of Toolz: High performance functional utilities", usage="DATA/ML"), 

489 ModuleInstall('snowballstemmer', 'pip', 

490 purpose="This package provides 16 stemmer algorithms (15 + Porter English stemmer) generated from Snowball " + 

491 "algorithms, needed by sphinx-rtd-theme."), 

492 ModuleInstall('sphinx-rtd-theme', 'pip', mname='sphinx_rtd_theme', 

493 purpose="sphinx theme", usage="SPHINX"), 

494 ModuleInstall("feedparser", "pip", purpose="parse RSS streams"), 

495 ModuleInstall( 

496 "pbr", "pip", purpose="PBR is a library that injects some useful and sensible default behaviors into your setuptools run."), 

497 ModuleInstall( 

498 "multi-key-dict", "pip", mname="multi_key_dict", purpose="Multi key dictionary implementation"), 

499 ModuleInstall( 

500 "python-jenkins", "pip", mname="jenkins", purpose="interact with Jenkins"), 

501 ModuleInstall( 

502 'envoy', 'pip', purpose="Simple API for running external processes."), 

503 ModuleInstall('Logbook', 'wheel', mname='logbook', 

504 purpose="A logging replacement for Python"), 

505 ModuleInstall( 

506 'pkginfo', 'pip', purpose="Query metadatdata from sdists / bdists / installed packages."), 

507 ModuleInstall("multipledispatch", "pip", 

508 purpose="A relatively sane approach to multiple dispatch in Python."), 

509 ModuleInstall("future", "pip", 

510 purpose="Clean single-source support for Python 3 and 2"), 

511 ModuleInstall("mock", "pip", 

512 purpose="mock is a library for testing in Python. It allows you to replace parts of your system " + 

513 "under test with mock objects and make assertions about how they have been used."), 

514 ModuleInstall("multimethods", "pip", 

515 purpose="A multimethod implementation, loosely based on Guido’s initial ‘Five-minute Multimethods in Python."), 

516 ModuleInstall("distlib", "pip", 

517 purpose="Low-level components of distutils2/packaging, augmented with higher-level APIs for " 

518 "making packaging easier."), 

519 ModuleInstall("appdirs", "pip", 

520 purpose="A small Python module for determining appropriate platform-specific dirs"), 

521 ModuleInstall("qgrid", "pip", usage="VIZ", 

522 purpose="A Pandas DataFrame viewer for IPython Notebook."), 

523 ModuleInstall("ujson", "wheel", 

524 purpose="Ultra fast JSON encoder and decoder for Python"), 

525 ModuleInstall("natsort", "pip", purpose="Sort lists naturally"), 

526 ModuleInstall("wget", "pip", purpose="pure python download utility"), 

527 ModuleInstall("queuelib", "pip", 

528 purpose="Collection of persistent (disk-based) queues"), 

529 ModuleInstall("semantic_version", "pip", 

530 purpose="A library implementing the 'SemVer' scheme."), 

531 ModuleInstall("unidecode", "pip", 

532 purpose="ASCII transliterations of Unicode text"), 

533 ModuleInstall("sqlite_bro", "pip", 

534 purpose="GUI for SQLite"), 

535 ModuleInstall("uvloop", "pip", purpose="Fast implementation of asyncio event loop on top of libuv") if sys.version_info[ 

536 :2] > (3, 5) and not sys.platform.startswith("win") else None, # requires VS 2015 ? 

537 ModuleInstall("tabulate", "pip", 

538 purpose="Pretty-print tabular data"), 

539 ModuleInstall("httpie", "pip", 

540 purpose="HTTPie - a CLI, cURL-like tool for humans"), 

541 ModuleInstall("version-information", "pip", mname="version_information", 

542 purpose="Version information"), 

543 ModuleInstall("isodate", "pip", 

544 purpose="An ISO 8601 date/time/duration parser and formatter"), 

545 ModuleInstall("dominate", "pip", 

546 purpose="Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API."), 

547 ModuleInstall("mbstrdecoder", "pip", 

548 purpose="multi-byte character string decoder"), 

549 ModuleInstall("ipaddress", "pip", 

550 purpose="IPv4/IPv6 manipulation library"), 

551 ModuleInstall("typepy", "pip", 

552 purpose="A python library for variable type checker/validator/converter at run time."), 

553 ModuleInstall("pathvalidate", "pip", 

554 purpose="A python library to validate/sanitize a string such as filenames/variable-names/excel-sheet-names."), 

555 ModuleInstall("toml", "pip", 

556 purpose="Python Library for Tom's Obvious, Minimal Language"), 

557 ModuleInstall("DataProperty", "pip", mname="dataproperty", 

558 purpose="Python library for extract property from data."), 

559 ModuleInstall("tabledata", "pip", 

560 purpose="A Python library to represent tabular data for pytablewriter/pytablereader/SimpleSQLite."), 

561 ModuleInstall("msgfy", "pip", 

562 purpose="msgfy is a Python library for convert Exception instance to a human-readable error message."), 

563 ModuleInstall("SimpleSQLite", "pip", mname="simplesqlite", 

564 purpose="SimpleSQLite is a Python library to simplify the table creation and data insertion into SQLite database."), 

565 ModuleInstall("sqliteschema", "pip", 

566 purpose="sqliteschema is a Python library to dump table schema of a SQLite database file."), 

567 ModuleInstall("pytablereader", "pip", 

568 purpose="A python library to load structured table data from files/URL with various data format: " + 

569 "CSV/Excel/HTML/JSON/LTSV/Markdown/TSV."), 

570 ModuleInstall("elasticsearch", "pip", 

571 purpose="Python client for Elasticsearch"), 

572 ModuleInstall("pytablewriter", "pip", 

573 purpose="convert a dataframe into many formats"), 

574 ModuleInstall("defusedxml", "pip", 

575 purpose="XML bomb protection for Python stdlib modules"), 

576 ModuleInstall( 

577 "tqdm", "pip", purpose="A Simple Python Progress Meter", usage="JUPYTER"), 

578 

579 ModuleInstall( 

580 'olefile', 'pip', purpose="Python package to parse, read and write Microsoft OLE2 files " + 

581 "(Structured Storage or Compound Document, Microsoft Office) - Improved version of the " + 

582 "OleFileIO module from PIL, the Python Image Library."), 

583 ModuleInstall( 

584 'Pillow', 'wheel', mname='PIL', purpose="read/create images"), 

585 # Sphinx extension to draw graphs. 

586 ModuleInstall( 

587 "webcolors", "pip", purpose="A library for working with color names and color value formats defined " + 

588 "by the HTML and CSS specifications for use in documents on the Web."), 

589 ModuleInstall( 

590 "funcparserlib", "pip", purpose="Recursive descent parsing library based on functional combinators"), 

591 ModuleInstall( 

592 "blockdiag", "pip", purpose="blockdiag generates block-diagram image from text"), 

593 ModuleInstall( 

594 "sphinxcontrib-blockdiag", "pip", mname="sphinxcontrib.blockdiag", 

595 purpose="Sphinx 'blockdiag' extension"), 

596 ] 

597 

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