Skip to content
Python APIs for perspective front end
Python Makefile Shell
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs bump version Jul 30, 2019
examples . Jun 24, 2019
perspective fixes #74, bugfix for pandas Aug 6, 2019
scripts working on #66 #67 #68 May 7, 2019
.bettercodehub.yml start on #4 Jul 24, 2018
.gitattributes setup for pypi/travis/waffle/bch/codecov/readthedocs Jan 24, 2018
.gitignore update autogen docs Apr 10, 2019
.travis.yml allow single list in sort May 19, 2019
LICENSE Initial commit Jan 24, 2018 prune docs Jan 28, 2019
Makefile fixes #74, bugfix for pandas Aug 6, 2019 update readme Jun 23, 2019
requirements.txt prune requirements Apr 10, 2019
setup.cfg fixes #49 Dec 30, 2018 fix for twine Jul 30, 2019 working on automating dist Apr 2, 2019


Python APIs for perspective front end

This package now lives partially under Perspective

Build Status GitHub issues codecov BCH compliance PyPI PyPI Docs Gitter


To install the base package from pip:

pip install perspective-python

To Install from source:

make install

To install the JupyterLab extension:

jupyter labextension install @finos/perspective-jupyterlab

or from source:

make labextension

Getting Started

Read the docs!

Example Notebooks

Pandas Pivot integration

Index - Multiindex pivot

Column - Multiindex pivot

C++ Integration

This package is primarily focused on integrating with the WebAssembly version of Perspective. To build the C++ side, install perspective-python[table], from the Perspective main library.

Webserver Integration

perspective-pyton can be integrated with a webserver, giving you the ability to configure perspective-viewers in javascript from python. Right now this functionality is limited to tornado webservers and the perspective-phosphor frontend. It relies on the phosphor-perspective-utils javascript package.

import tornado.web
from perspective import PerspectiveHTTPMixin

class MyHandler(PerspectiveHTTPMixin, tornado.web.RequestHandler):
    def get(self):
        super(MyHandler, self).loadData(data=<data>, transfer_as_arrow=True)
        self.write(super(MyHandler, self).getData())
You can’t perform that action at this time.