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
10def ml_set():
11 """
12 modules introduced by students or needed for student projects
13 """
14 return ensae_set()
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."),
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)"),
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
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"),
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"),
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,
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."),
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"),
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"),
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"),
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."),
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"),
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"),
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"),
831 ]
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 ])
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."))
860 mod.append(ModuleInstall(
861 "PyJWT", "pip", mname="jwt", purpose="JSON Web Token library for Python 3."))
863 return [_ for _ in mod if _ is not None]