Ion Requirements¶
Intranet 3 (Ion) depends on a variety of third-party libraries and packages
Explicit Requirements¶
argon2-cffi¶
https://github.com/hynek/argon2-cffi
This package provides CFFI-based Argon2 Python bindings.
It is used to provide bindings for Argon2 hashing of the Ion master password.
LICENSE: MIT
autobahn¶
https://github.com/crossbario/autobahn-python
This package provides WebSocket <http://tools.ietf.org/html/rfc6455>_ & Web Application Messaging Protocol (WAMP) <http://wamp-proto.org/>_ support.
It provides WebSocket support for Ion.
LICENSE: MIT
babel¶
https://github.com/python-babel/babel
This package provides an integrated collection of utilities that assist with internationalizing and localizing Python applications.
It provides localization support for Jinja templates in Ion.
LICENSE: 3-clause BSD
bcrypt¶
https://github.com/pyca/bcrypt
This package provides bcrypt hashing support.
It is used to hash the Ion master password.
LICENSE: Apache License 2.0
beautifulsoup4¶
https://github.com/waylan/beautifulsoup
This package provides support for parsing web pages.
It is used to parse the FCPS emergency webpage.
LICENSE: MIT
bleach¶
https://github.com/mozilla/bleach
This package provides HTML sanitization that escapes or strips markup and attributes.
It is used to clean up tags, attributes, and styles in input from polls, announcements, and other forms.
LICENSE: Apache License 2.0
celery¶
https://github.com/celery/celery
This package provides an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.
It provides the task queue that powers long-running operations like sending mass emails.
LICENSE: 3-clause BSD
certifi¶
https://github.com/certifi/python-certifi
This package provides a collection of trusted root certificates.
FIXME
LICENSE: Mozilla Public License 2.0
channels¶
https://github.com/django/channels
This package brings WebSocket, long-poll HTTP, task offloading and other async support in a Django-like framework.
It provides WebSocket support for Ion.
LICENSE: 3-clause BSD
channels-redis¶
https://github.com/django/channels_redis
This package provides a redis channel layer backend for Django Channels
It provides the backend for ASGI requests over Django Channels.
LICENSE: 3-clause BSD
contextlib2¶
https://github.com/jazzband/contextlib2
This package provides a backport of contextlib
from Python 3.5 and adds new functionality.
FIXME
LICENSE: Python Software Foundation License
cryptography¶
https://github.com/pyca/cryptography
This package provides cryptographic recipes and primitives.
FIXME
LICENSE: Apache License 2.0 or 3-clause BSD
decorator¶
https://github.com/micheles/decorator
This package provides definitions of signature-preserving function decorators and decorator factories.
FIXME
LICENSE: 2-clause BSD
django¶
https://github.com/django/django
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
It is used as our web framework.
LICENSE: 3-clause BSD
django-cacheops¶
https://github.com/Suor/django-cacheops
This package is a Django app that supports automatic or manual queryset caching into a Redis ORM cache.
It is used for queryset caching into a Redis database.
LICENSE: 3-clause BSD
django-cors-headers¶
https://github.com/ottoyiu/django-cors-headers
This package is a Django app that adds Cross-Origin Resource Sharing (CORS) headers to responses
It is used to support when absolutely necessary cross-origin requests.
LICENSE: MIT
django-debug-toolbar¶
https://github.com/jazzband/django-debug-toolbar
This package is a Django app that provides a configurable set of panels that display various debug information about the current request/response.
It is used in Django’s debug mode to help diagnose request/response issues.
LICENSE: 3-clause BSD
django-extensions¶
https://github.com/django-extensions/django-extensions
This package is a Django app that adds command extensions.
It is used to provide additional commands for Django.
LICENSE: MIT
django-formtools¶
https://github.com/django/django-formtools
This package is a Django app that provides abstractions for Django forms.
It is used to provide a SessionWizardView, a wizard used in eighth admin.
NEEDSRELEASE
LICENSE: 3-clause BSD
django-inline-svg¶
https://github.com/mixxorz/django-inline-svg
This package is a Django app that provides a template tag for inline SVGs.
It is used to embed SVGs (like in the bus
app).
NEEDSRELEASE
LICENSE: MIT
django-maintenance-mode¶
https://github.com/fabiocaccamo/django-maintenance-mode
This package is a Django app that displays a 503 page when maintenance mode is enabled.
It is used to enable maintenance on Ion when necessary.
LICENSE: MIT
django-oauth-toolkit¶
https://github.com/jazzband/django-oauth-toolkit
This package is a Django app that provides all the endpoints, data and logic needed to add OAuth2 capabilities to your Django projects.
It is used to provide Ion OAuth2 support.
NEEDSNEWER (needs Django 2.0)
LICENSE: 2-clause BSD
django-pipeline¶
https://github.com/jazzband/django-pipeline
This package provides both CSS and JavaScript concatenation and compression, built-in JavaScript template support, and optional data-URI image and font embedding.
It provides the stylesheet
templatetag and compresses our CSS.
NEEDSRELEASE
LICENSE: MIT
django-prometheus¶
https://github.com/korfuri/django-prometheus
This package is a Django app that provides support for exporting basic monitoring metrics from Django.
It is used to export prometheus metrics at /prometheus/metrics
.
LICENSE: Apache License 2.0
django-redis-cache¶
https://github.com/sebleier/django-redis-cache
This package provides the redis backend cache.
FIXME: Needs more specific info
LICENSE: 3-clause BSD
django-redis-sessions¶
https://github.com/martinrusev/django-redis-sessions
This package provides a redis backend for Django sessions.
It is used to store session information in redis cache.
NEEDSRELEASE
LICENSE: 3-clause BSD
django-request-logging-redux¶
https://github.com/tarkatronic/django-requestlogging
This package provides a logging filter and middleware to add information about the current request to the logging record.
It is used to record information about requests to the console, file, and Sentry log.
NEEDSRELEASE
LICENSE: 3-clause BSD
django-simple-history¶
https://github.com/treyhunner/django-simple-history
This package stores Django model state on every create/update/delete.
It is used to preserve a history of changes to specified eighth models.
LICENSE: 3-clause BSD
django-widget-tweaks¶
https://github.com/jazzband/django-widget-tweaks
This package provides support to tweak the form field rendering in templates,
It is used in the schedule_activity
template to tweak rendering of form fields.
LICENSE: MIT
django-rest-framework¶
https://github.com/encode/django-rest-framework
This package provides a powerful and flexible toolkit for building Web APIs.
It is used for the Ion API.
LICENSE: 3-clause BSD
docutils¶
https://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/
This package provides a modular system for processing documentation into useful formats, such as HTML, XML, and LaTeX.
It is an optional dependency for admindocs and setuptools.
Fabric3¶
https://github.com/mathiasertl/fabric/
This package provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.
It is used to manage the Ion application in both development and production (see fabfile.py
)
NEEDSRELEASE
LICENSE: 2-clause BSD
flower¶
https://github.com/mher/flower
This package provides a real-time monitor and web admin for the Celery distributed task queue.
It is used to help administrators and developers monitor their Celery task queues.
LICENSE: 3-clause BSD
gunicorn¶
https://github.com/benoitc/gunicorn
This package provides a Python WSGI HTTP Server for UNIX.
FIXME
OBSOLETE: needs verification
LICENSE: MIT
hiredis¶
https://github.com/redis/hiredis-py
This package a Python wrapper for hiredis. hiredis is a library for redis.
It is directly used as a HiredisParser
in the redis cache.
LICENSE: 3-clause BSD
ipython¶
https://github.com/ipython/ipython
This package provides a rich toolkit to help you make the most of using Python interactively, including a powerful interactive Python shell
It is directly used by the interactive shell for python manage.py shell_plus
.
LICENSE: 3-clause BSD
objgraph¶
https://github.com/mgedmin/objgraph
This package is a module that lets you visually explore Python object graphs.
It is used by flower
to draw graphs.
LICENSE: MIT
pexpect¶
https://github.com/pexpect/pexpect
This package provides the ability to spawn child applications; control them; and respond to expected patterns in their output. It allows your script to spawn a child application and control it as if a human were typing commands.
It is used to help interact with Kerberos password authentications and changes.
LICENSE: ISC License
prometheus-client¶
https://github.com/prometheus/client_python
This package provides the ability to work with the prometheus monitoring system in Python.
It is used by flower
and django-prometheus
.
LICENSE: Apache License 2.0
psycopg2¶
https://github.com/psycopg/psycopg2
This package provides an adapter for PostgreSQL.
It is used to connect to the PostgreSQL database from the Django application.
LICENSE: GNU Lesser General Public License v 3.0+
pycryptodome¶
https://github.com/Legrandin/pycryptodome
This package provides low-level cryptographic primitives.
It is used to encrypt the password for Ion Files. The key is stored as a client-side cookie and the IV/ciphertext is stored a server-side session variable.
LICENSE: 2-clause BSD
pysftp¶
https://bitbucket.org/dundeemt/pysftp/src/default/
This package provides a simple interface to the Secure File Transport Protocol (SFTP).
It is used by Ion Files to access remote servers/files.
LICENSE: 3-clause BSD
python-dateutil¶
https://github.com/dateutil/dateutil
This package provides powerful extensions to the standard datetime module
It (datetime.relativedelta
) is used to compute deltas between datetime objects throughout the codebase.
LICENSE: Apache License 2.0 (based on code that is 3-clause BSD)
python-magic¶
https://github.com/ahupp/python-magic
This package is a wrapper to the libmagic file type identification library
It is used to identify the file type for Ion Printing.
NEEDSRELEASE
LICENSE: MIT
reportlab¶
https://bitbucket.org/rptlab/reportlab/src/default/
This package allows rapid creation of rich PDF documents, and also creation of charts in a variety of bitmap and vector formats.
It is used to help generate PDFs in the eighth admin.
LICENSE: 3-clause BSD
requests¶
https://github.com/kennethreitz/requests
This package is a HTTP library for Python.
It is used to fetch the FCPS emergency webpage.
LICENSE: Apache License 2.0
requests-oauthlib¶
https://github.com/requests/requests-oauthlib
This package provides OAuth library support for Python Requests.
It is currently used to perform OAuth1a authentication to Twitter.
LICENSE: ISC License
sentry-sdk¶
https://github.com/getsentry/sentry-python
This package provides a Python SDK for the Sentry monitoring suite.
It is used to collect and report information to report to Sentry in production.
LICENSE: 2-clause BSD
setuptools-git¶
https://github.com/msabramo/setuptools-git
This package provides a plugin for setuptools that enables git integration.
It is used by our setup.py
.
NEEDSMAINTAINER
LICENSE: 3-clause BSD
Sphinx¶
https://github.com/sphinx-doc/sphinx
This package provides a tool that makes it easy to create intelligent and beautiful documentation for Python projects.
It is used to document Ion.
LICENSE: 2-clause BSD
sphinx-bootstrap-theme¶
https://github.com/ryan-roemer/sphinx-bootstrap-theme
This package provides a bootstrap theme for Sphinx.
It is used as the theme for the Ion docs.
LICENSE: MIT
vine¶
https://github.com/celery/vine/
This package provides functionality for Python promises.
It is used by flower
.
LICENSE: 3-clause BSD