[WiP] rename project from Caravel to Superset (#1576)

* Change in files

* Renamin files and folders

* cleaning up a single piece of lint

* Removing boat picture from docs

* add superset word mark

* Update rename note in docs

* Fixing images

* Pinning datatables

* Fixing issues with mapbox-gl

* Forgot to rename one file

* Linting

* v0.13.0

* adding pyyaml to dev-reqs
This commit is contained in:
Maxime Beauchemin 2016-11-09 23:08:22 -08:00 committed by GitHub
parent 973537fd9a
commit 15b67b2c6c
408 changed files with 2795 additions and 2787 deletions

View File

@ -6,7 +6,7 @@ engines:
eslint: eslint:
enabled: true enabled: true
config: config:
config: caravel/assets/.eslintrc config: superset/assets/.eslintrc
pep8: pep8:
enabled: true enabled: true
fixme: fixme:
@ -19,17 +19,17 @@ engines:
ratings: ratings:
paths: paths:
- "**.py" - "**.py"
- "caravel/assets/**.js" - "superset/assets/**.js"
- "caravel/assets/**.jsx" - "superset/assets/**.jsx"
exclude_paths: exclude_paths:
- ".*" - ".*"
- "**.pyc" - "**.pyc"
- "**.gz" - "**.gz"
- "env/" - "env/"
- "tests/" - "tests/"
- "caravel/assets/images/" - "superset/assets/images/"
- "caravel/assets/vendor/" - "superset/assets/vendor/"
- "caravel/assets/node_modules/" - "superset/assets/node_modules/"
- "caravel/assets/javascripts/dist/" - "superset/assets/javascripts/dist/"
- "caravel/migrations" - "superset/migrations"
- "docs/" - "docs/"

9
.gitignore vendored
View File

@ -1,22 +1,22 @@
*.pyc *.pyc
caravel/assets/coverage/* superset/assets/coverage/*
changelog.sh changelog.sh
.DS_Store .DS_Store
.coverage .coverage
_build _build
_static _static
_images _images
caravel/bin/caravelc superset/bin/supersetc
env_py3 env_py3
.eggs .eggs
build build
*.db *.db
tmp tmp
caravel_config.py superset_config.py
local_config.py local_config.py
env env
dist dist
caravel.egg-info/ superset.egg-info/
app.db app.db
*.bak *.bak
.idea .idea
@ -27,3 +27,4 @@ app.db
*.js.map *.js.map
node_modules node_modules
npm-debug.log npm-debug.log
yarn.lock

View File

@ -16,8 +16,8 @@ pep8:
full: true full: true
ignore-paths: ignore-paths:
- docs - docs
- caravel/migrations/env.py - superset/migrations/env.py
- caravel/ascii_art.py - superset/ascii_art.py
ignore-patterns: ignore-patterns:
- ^example/doc_.*\.py$ - ^example/doc_.*\.py$
- (^|/)docs(/|$) - (^|/)docs(/|$)

View File

@ -24,10 +24,10 @@ env:
before_install: before_install:
- npm install -g npm@'>=3.9.5' - npm install -g npm@'>=3.9.5'
before_script: before_script:
- mysql -e 'drop database if exists caravel; create database caravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci' -u root - mysql -e 'drop database if exists superset; create database superset DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci' -u root
- mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';" - mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';"
- mysql -u root -e "GRANT ALL ON caravel.* TO 'mysqluser'@'localhost';" - mysql -u root -e "GRANT ALL ON superset.* TO 'mysqluser'@'localhost';"
- psql -c 'create database caravel;' -U postgres - psql -c 'create database superset;' -U postgres
- psql -c "CREATE USER postgresuser WITH PASSWORD 'pguserpassword';" -U postgres - psql -c "CREATE USER postgresuser WITH PASSWORD 'pguserpassword';" -U postgres
- export PATH=${PATH}:/tmp/hive/bin - export PATH=${PATH}:/tmp/hive/bin
install: install:

View File

@ -30,8 +30,8 @@ Look through the GitHub issues for features. Anything tagged with
### Documentation ### Documentation
Caravel could always use better documentation, Superset could always use better documentation,
whether as part of the official Caravel docs, whether as part of the official Superset docs,
in docstrings, `docs/*.rst` or even on the web as blog posts or in docstrings, `docs/*.rst` or even on the web as blog posts or
articles. articles.
@ -49,16 +49,16 @@ If you are proposing a feature:
## Latest Documentation ## Latest Documentation
Latest documentation and tutorial are available [here](http://airbnb.io/caravel) Latest documentation and tutorial are available [here](http://airbnb.io/superset)
## Setting up a Python development environment ## Setting up a Python development environment
Check the [OS dependencies](http://airbnb.io/caravel/installation.html#os-dependencies) before follows these steps. Check the [OS dependencies](http://airbnb.io/superset/installation.html#os-dependencies) before follows these steps.
# fork the repo on GitHub and then clone it # fork the repo on GitHub and then clone it
# alternatively you may want to clone the main repo but that won't work # alternatively you may want to clone the main repo but that won't work
# so well if you are planning on sending PRs # so well if you are planning on sending PRs
# git clone git@github.com:airbnb/caravel.git # git clone git@github.com:airbnb/superset.git
# [optional] setup a virtual env and activate it # [optional] setup a virtual env and activate it
virtualenv env virtualenv env
@ -68,24 +68,24 @@ Check the [OS dependencies](http://airbnb.io/caravel/installation.html#os-depend
python setup.py develop python setup.py develop
# Create an admin user # Create an admin user
fabmanager create-admin --app caravel fabmanager create-admin --app superset
# Initialize the database # Initialize the database
caravel db upgrade superset db upgrade
# Create default roles and permissions # Create default roles and permissions
caravel init superset init
# Load some data to play with # Load some data to play with
caravel load_examples superset load_examples
# start a dev web server # start a dev web server
caravel runserver -d superset runserver -d
## Setting up the node / npm javascript environment ## Setting up the node / npm javascript environment
`caravel/assets` contains all npm-managed, front end assets. `superset/assets` contains all npm-managed, front end assets.
Flask-Appbuilder itself comes bundled with jQuery and bootstrap. Flask-Appbuilder itself comes bundled with jQuery and bootstrap.
While these may be phased out over time, these packages are currently not While these may be phased out over time, these packages are currently not
managed with npm. managed with npm.
@ -112,14 +112,14 @@ export PATH="$HOME/.npm-packages/bin:$PATH"
#### npm packages #### npm packages
To install third party libraries defined in `package.json`, run the To install third party libraries defined in `package.json`, run the
following within the `caravel/assets/` directory which will install them in a following within the `superset/assets/` directory which will install them in a
new `node_modules/` folder within `assets/`. new `node_modules/` folder within `assets/`.
``` ```
npm install npm install
``` ```
To parse and generate bundled files for caravel, run either of the To parse and generate bundled files for superset, run either of the
following commands. The `dev` flag will keep the npm script running and following commands. The `dev` flag will keep the npm script running and
re-run it upon any changes within the assets directory. re-run it upon any changes within the assets directory.
@ -135,7 +135,7 @@ For every development session you will have to start a flask dev server
as well as an npm watcher as well as an npm watcher
``` ```
caravel runserver -d -p 8081 superset runserver -d -p 8081
npm run dev npm run dev
``` ```
@ -147,7 +147,7 @@ Python tests can be run with:
We use [Mocha](https://mochajs.org/), [Chai](http://chaijs.com/) and [Enzyme](http://airbnb.io/enzyme/) to test Javascript. Tests can be run with: We use [Mocha](https://mochajs.org/), [Chai](http://chaijs.com/) and [Enzyme](http://airbnb.io/enzyme/) to test Javascript. Tests can be run with:
cd /caravel/caravel/assets/javascripts cd /superset/superset/assets/javascripts
npm i npm i
npm run test npm run test
@ -157,13 +157,13 @@ Lint the project with:
# for python changes # for python changes
flake8 changes tests flake8 changes tests
flake8 changes caravel flake8 changes superset
# for javascript # for javascript
npm run lint npm run lint
## Linting with codeclimate ## Linting with codeclimate
Codeclimate is a service we use to measure code quality and test coverage. To get codeclimate's report on your branch, ideally before sending your PR, you can setup codeclimate against your Caravel fork. After you push to your fork, you should be able to get the report at http://codeclimate.com . Alternatively, if you prefer to work locally, you can install the codeclimate cli tool. Codeclimate is a service we use to measure code quality and test coverage. To get codeclimate's report on your branch, ideally before sending your PR, you can setup codeclimate against your Superset fork. After you push to your fork, you should be able to get the report at http://codeclimate.com . Alternatively, if you prefer to work locally, you can install the codeclimate cli tool.
*Install the codeclimate cli tool* *Install the codeclimate cli tool*
``` ```
@ -193,12 +193,12 @@ Generate the documentation with:
cd docs && ./build.sh cd docs && ./build.sh
## CSS Themes ## CSS Themes
As part of the npm build process, CSS for Caravel is compiled from `Less`, a dynamic stylesheet language. As part of the npm build process, CSS for Superset is compiled from `Less`, a dynamic stylesheet language.
It's possible to customize or add your own theme to Caravel, either by overriding CSS rules or preferably It's possible to customize or add your own theme to Superset, either by overriding CSS rules or preferably
by modifying the Less variables or files in `assets/stylesheets/less/`. by modifying the Less variables or files in `assets/stylesheets/less/`.
The `variables.less` and `bootswatch.less` files that ship with Caravel are derived from The `variables.less` and `bootswatch.less` files that ship with Superset are derived from
[Bootswatch](https://bootswatch.com) and thus extend Bootstrap. Modify variables in these files directly, or [Bootswatch](https://bootswatch.com) and thus extend Bootstrap. Modify variables in these files directly, or
swap them out entirely with the equivalent files from other Bootswatch (themes)[https://github.com/thomaspark/bootswatch.git] swap them out entirely with the equivalent files from other Bootswatch (themes)[https://github.com/thomaspark/bootswatch.git]
@ -221,14 +221,14 @@ meets these guidelines:
## Translations ## Translations
We use [Babel](http://babel.pocoo.org/en/latest/) to translate Caravel. The We use [Babel](http://babel.pocoo.org/en/latest/) to translate Superset. The
key is to instrument the strings that need translation using key is to instrument the strings that need translation using
`from flask_babel import lazy_gettext as _`. Once this is imported in `from flask_babel import lazy_gettext as _`. Once this is imported in
a module, all you have to do is to `_("Wrap your strings")` using the a module, all you have to do is to `_("Wrap your strings")` using the
underscore `_` "function". underscore `_` "function".
To enable changing language in your environment, you can simply add the To enable changing language in your environment, you can simply add the
`LANGUAGES` parameter to your `caravel_config.py`. Having more than one `LANGUAGES` parameter to your `superset_config.py`. Having more than one
options here will add a language selection dropdown on the right side of the options here will add a language selection dropdown on the right side of the
navigation bar. navigation bar.
@ -241,23 +241,23 @@ navigation bar.
As per the [Flask AppBuilder documentation] about translation, to create a As per the [Flask AppBuilder documentation] about translation, to create a
new language dictionary, run the following command: new language dictionary, run the following command:
pybabel init -i ./babel/messages.pot -d caravel/translations -l es pybabel init -i ./babel/messages.pot -d superset/translations -l es
Then it's a matter of running the statement below to gather all stings that Then it's a matter of running the statement below to gather all stings that
need translation need translation
fabmanager babel-extract --target caravel/translations/ fabmanager babel-extract --target superset/translations/
You can then translate the strings gathered in files located under You can then translate the strings gathered in files located under
`caravel/translation`, where there's one per language. For the translations `superset/translation`, where there's one per language. For the translations
to take effect, they need to be compiled using this command: to take effect, they need to be compiled using this command:
fabmanager babel-compile --target caravel/translations/ fabmanager babel-compile --target superset/translations/
## Adding new datasources ## Adding new datasources
1. Create Models and Views for the datasource, add them under caravel folder, like a new my_models.py 1. Create Models and Views for the datasource, add them under superset folder, like a new my_models.py
with models for cluster, datasources, columns and metrics and my_views.py with clustermodelview with models for cluster, datasources, columns and metrics and my_views.py with clustermodelview
and datasourcemodelview. and datasourcemodelview.
@ -267,6 +267,6 @@ to take effect, they need to be compiled using this command:
For example: For example:
`ADDITIONAL_MODULE_DS_MAP = {'caravel.my_models': ['MyDatasource', 'MyOtherDatasource']}` `ADDITIONAL_MODULE_DS_MAP = {'superset.my_models': ['MyDatasource', 'MyOtherDatasource']}`
This means it'll register MyDatasource and MyOtherDatasource in caravel.my_models module in the source registry. This means it'll register MyDatasource and MyOtherDatasource in superset.my_models module in the source registry.

View File

@ -1,4 +1,4 @@
Please use [pull requests](https://github.com/airbnb/caravel/pull/new/master) Please use [pull requests](https://github.com/airbnb/superset/pull/new/master)
to add your organization and/or project to this document! to add your organization and/or project to this document!
Organizations Organizations

View File

@ -1,11 +1,11 @@
Make sure these boxes are checked before submitting your issue - thank you! Make sure these boxes are checked before submitting your issue - thank you!
- [ ] I have checked the caravel logs for python stacktraces and included it here as text if any - [ ] I have checked the superset logs for python stacktraces and included it here as text if any
- [ ] I have reproduced the issue with at least the latest released version of caravel - [ ] I have reproduced the issue with at least the latest released version of superset
- [ ] I have checked the issue tracker for the same issue and I haven't found one similar - [ ] I have checked the issue tracker for the same issue and I haven't found one similar
### Caravel version ### Superset version
### Expected results ### Expected results

View File

@ -1,9 +1,9 @@
recursive-include caravel/templates * recursive-include superset/templates *
recursive-include caravel/static * recursive-include superset/static *
recursive-exclude caravel/static/assets/node_modules * recursive-exclude superset/static/assets/node_modules *
recursive-include caravel/static/assets/node_modules/font-awesome * recursive-include superset/static/assets/node_modules/font-awesome *
recursive-exclude caravel/static/docs * recursive-exclude superset/static/docs *
recursive-exclude caravel/static/spec * recursive-exclude superset/static/spec *
recursive-exclude tests * recursive-exclude tests *
recursive-include caravel/data * recursive-include superset/data *
recursive-include caravel/migrations * recursive-include superset/migrations *

View File

@ -1,20 +1,20 @@
Caravel Superset
========= =========
<img src="http://i.imgur.com/H0Kyvyi.jpg" style="border-radius: 20px; box-shadow:5px 5px 5px gray;" alt="Caravel" width="500"/> <img src="http://i.imgur.com/H0Kyvyi.jpg" style="border-radius: 20px; box-shadow:5px 5px 5px gray;" alt="Superset" width="500"/>
[![Build Status](https://travis-ci.org/airbnb/caravel.svg?branch=master)](https://travis-ci.org/airbnb/caravel) [![Build Status](https://travis-ci.org/airbnb/superset.svg?branch=master)](https://travis-ci.org/airbnb/superset)
[![PyPI version](https://badge.fury.io/py/caravel.svg)](https://badge.fury.io/py/caravel) [![PyPI version](https://badge.fury.io/py/superset.svg)](https://badge.fury.io/py/superset)
[![Coverage Status](https://coveralls.io/repos/airbnb/caravel/badge.svg?branch=master&service=github)](https://coveralls.io/github/airbnb/caravel?branch=master) [![Coverage Status](https://coveralls.io/repos/airbnb/superset/badge.svg?branch=master&service=github)](https://coveralls.io/github/airbnb/superset?branch=master)
[![JS Test Coverage](https://codeclimate.com/github/airbnb/caravel/badges/coverage.svg)](https://codeclimate.com/github/airbnb/caravel/coverage) [![JS Test Coverage](https://codeclimate.com/github/airbnb/superset/badges/coverage.svg)](https://codeclimate.com/github/airbnb/superset/coverage)
[![Code Health](https://landscape.io/github/airbnb/caravel/master/landscape.svg?style=flat)](https://landscape.io/github/airbnb/caravel/master) [![Code Health](https://landscape.io/github/airbnb/superset/master/landscape.svg?style=flat)](https://landscape.io/github/airbnb/superset/master)
[![Code Climate](https://codeclimate.com/github/airbnb/caravel/badges/gpa.svg)](https://codeclimate.com/github/airbnb/caravel) [![Code Climate](https://codeclimate.com/github/airbnb/superset/badges/gpa.svg)](https://codeclimate.com/github/airbnb/superset)
[![PyPI](https://img.shields.io/pypi/pyversions/caravel.svg?maxAge=2592000)](https://pypi.python.org/pypi/caravel) [![PyPI](https://img.shields.io/pypi/pyversions/superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/superset)
[![Requirements Status](https://requires.io/github/airbnb/caravel/requirements.svg?branch=master)](https://requires.io/github/airbnb/caravel/requirements/?branch=master) [![Requirements Status](https://requires.io/github/airbnb/superset/requirements.svg?branch=master)](https://requires.io/github/airbnb/superset/requirements/?branch=master)
[![Join the chat at https://gitter.im/airbnb/caravel](https://badges.gitter.im/airbnb/caravel.svg)](https://gitter.im/airbnb/caravel?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Join the chat at https://gitter.im/airbnb/superset](https://badges.gitter.im/airbnb/superset.svg)](https://gitter.im/airbnb/superset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Documentation](https://img.shields.io/badge/docs-airbnb.io-blue.svg)](http://airbnb.io/caravel/) [![Documentation](https://img.shields.io/badge/docs-airbnb.io-blue.svg)](http://airbnb.io/superset/)
[![dependencies Status](https://david-dm.org/airbnb/caravel/status.svg?path=caravel/assets)](https://david-dm.org/airbnb/caravel?path=caravel/assets) [![dependencies Status](https://david-dm.org/airbnb/superset/status.svg?path=superset/assets)](https://david-dm.org/airbnb/superset?path=superset/assets)
Caravel is a data exploration platform designed to be visual, intuitive Superset is a data exploration platform designed to be visual, intuitive
and interactive. and interactive.
[this project used to be named **Panoramix**] [this project used to be named **Panoramix**]
@ -36,12 +36,12 @@ Screenshots & Gifs
--- ---
![img](http://i.imgur.com/DRCnbq6.png) ![img](http://i.imgur.com/DRCnbq6.png)
Caravel Superset
--------- ---------
Caravel's main goal is to make it easy to slice, dice and visualize data. Superset's main goal is to make it easy to slice, dice and visualize data.
It empowers users to perform **analytics at the speed of thought**. It empowers users to perform **analytics at the speed of thought**.
Caravel provides: Superset provides:
* A quick way to intuitively visualize datasets by allowing users to create * A quick way to intuitively visualize datasets by allowing users to create
and share interactive dashboards and share interactive dashboards
* A rich set of visualizations to analyze your data, as well as a flexible * A rich set of visualizations to analyze your data, as well as a flexible
@ -54,7 +54,7 @@ Caravel provides:
displayed in the UI, by defining which fields should show up in displayed in the UI, by defining which fields should show up in
which dropdown and which aggregation and function (metrics) are which dropdown and which aggregation and function (metrics) are
made available to the user made available to the user
* Deep integration with Druid allows for Caravel to stay blazing fast while * Deep integration with Druid allows for Superset to stay blazing fast while
slicing and dicing large, realtime datasets slicing and dicing large, realtime datasets
* Fast loading dashboards with configurable caching * Fast loading dashboards with configurable caching
@ -62,7 +62,7 @@ Caravel provides:
Database Support Database Support
---------------- ----------------
Caravel was originally designed on top of Druid.io, but quickly broadened Superset was originally designed on top of Druid.io, but quickly broadened
its scope to support other databases through the use of SQLAlchemy, a Python its scope to support other databases through the use of SQLAlchemy, a Python
ORM that is compatible with ORM that is compatible with
[most common databases](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html). [most common databases](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html).
@ -83,7 +83,7 @@ power analytic dashboards and applications.*
Installation & Configuration Installation & Configuration
---------------------------- ----------------------------
[See in the documentation](http://airbnb.io/caravel/installation.html) [See in the documentation](http://airbnb.io/superset/installation.html)
More screenshots More screenshots
@ -112,26 +112,26 @@ More screenshots
Resources Resources
------------- -------------
* [Caravel Google Group](https://groups.google.com/forum/#!forum/airbnb_caravel) * [Superset Google Group](https://groups.google.com/forum/#!forum/airbnb_superset)
* [Gitter (live chat) Channel](https://gitter.im/airbnb/caravel) * [Gitter (live chat) Channel](https://gitter.im/airbnb/superset)
* [Docker image 1](https://hub.docker.com/r/kochalex/caravel/) * [Docker image 1](https://hub.docker.com/r/kochalex/superset/)
[Docker image 2](https://hub.docker.com/r/amancevice/caravel/) (community contributed) [Docker image 2](https://hub.docker.com/r/amancevice/superset/) (community contributed)
* [Slides from Strata (March 2016)](https://drive.google.com/open?id=0B5PVE0gzO81oOVJkdF9aNkJMSmM) * [Slides from Strata (March 2016)](https://drive.google.com/open?id=0B5PVE0gzO81oOVJkdF9aNkJMSmM)
Tip of the Hat Tip of the Hat
-------------- --------------
Caravel would not be possible without these great frameworks / libs Superset would not be possible without these great frameworks / libs
* Flask App Builder - Allowing us to focus on building the app quickly while * Flask App Builder - Allowing us to focus on building the app quickly while
getting the foundation for free getting the foundation for free
* The Flask ecosystem - Simply amazing. So much Plug, easy play. * The Flask ecosystem - Simply amazing. So much Plug, easy play.
* NVD3 - One of the best charting libraries out there * NVD3 - One of the best charting libraries out there
* Much more, check out the `install_requires` section in the [setup.py](https://github.com/airbnb/caravel/blob/master/setup.py) file! * Much more, check out the `install_requires` section in the [setup.py](https://github.com/airbnb/superset/blob/master/setup.py) file!
Contributing Contributing
------------ ------------
Interested in contributing? Casual hacking? Check out [Contributing.MD](https://github.com/airbnb/caravel/blob/master/CONTRIBUTING.md) Interested in contributing? Casual hacking? Check out [Contributing.MD](https://github.com/airbnb/superset/blob/master/CONTRIBUTING.md)

View File

@ -1,5 +1,5 @@
# TODO # TODO
List of TODO items for Caravel List of TODO items for Superset
## Important ## Important
* **Getting proper JS testing:** unit tests on the Python side are pretty * **Getting proper JS testing:** unit tests on the Python side are pretty
@ -7,7 +7,7 @@ List of TODO items for Caravel
testing all the ajax-type calls testing all the ajax-type calls
* **Viz Plugins:** Allow people to define and share visualization plugins. * **Viz Plugins:** Allow people to define and share visualization plugins.
ideally one would only need to drop in a set of files in a folder and ideally one would only need to drop in a set of files in a folder and
Caravel would discover and expose the plugins Superset would discover and expose the plugins
## Features ## Features
* **Dashboard URL filters:** `{dash_url}#fltin__fieldname__value1,value2` * **Dashboard URL filters:** `{dash_url}#fltin__fieldname__value1,value2`

View File

@ -29,7 +29,7 @@ script_location = migrations
# are written from script.py.mako # are written from script.py.mako
# output_encoding = utf-8 # output_encoding = utf-8
sqlalchemy.url = scheme://localhost/caravel sqlalchemy.url = scheme://localhost/superset
# Logging configuration # Logging configuration
[loggers] [loggers]

View File

@ -1,4 +1,4 @@
[ignore: caravel/assets/node_modules/**] [ignore: superset/assets/node_modules/**]
[python: caravel/**.py] [python: superset/**.py]
[jinja2: caravel/**/templates/**.html] [jinja2: superset/**/templates/**.html]
encoding = utf-8 encoding = utf-8

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

View File

@ -5,6 +5,7 @@ mock
mysqlclient mysqlclient
nose nose
psycopg2 psycopg2
pyyaml
sphinx sphinx
sphinx-rtd-theme sphinx-rtd-theme
sphinxcontrib.youtube sphinxcontrib.youtube

View File

@ -87,9 +87,9 @@ qthelp:
@echo @echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:" ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/caravel.qhcp" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/superset.qhcp"
@echo "To view the help file:" @echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/caravel.qhc" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/superset.qhc"
applehelp: applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@ -104,8 +104,8 @@ devhelp:
@echo @echo
@echo "Build finished." @echo "Build finished."
@echo "To view the help file:" @echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/caravel" @echo "# mkdir -p $$HOME/.local/share/devhelp/superset"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/caravel" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/superset"
@echo "# devhelp" @echo "# devhelp"
epub: epub:

View File

@ -21,7 +21,7 @@
<img src="_static/img/dash.png"> <img src="_static/img/dash.png">
<div class="carousel-caption"> <div class="carousel-caption">
<div> <div>
<h1>Caravel</h1> <h1>Superset</h1>
<p> <p>
an open source data visualization platform an open source data visualization platform
</p> </p>
@ -80,7 +80,7 @@
<hr/> <hr/>
<div class="container"> <div class="container">
<div class="jumbotron"> <div class="jumbotron">
<h1>Caravel</h1> <h1>Superset</h1>
<p> <p>
is an open source data visualization platform that provides easy is an open source data visualization platform that provides easy
exploration of your data and allows you to create and share exploration of your data and allows you to create and share

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
rm -rf _build rm -rf _build
make html make html
#cp -r ../caravel/assets/images/ _build/html/_static/img/ #cp -r ../superset/assets/images/ _build/html/_static/img/
cp -r ../caravel/assets/images/ _static/img/ cp -r ../superset/assets/images/ _static/img/
rm -rf /tmp/caravel-docs rm -rf /tmp/superset-docs
cp -r _build/html /tmp/caravel-docs cp -r _build/html /tmp/superset-docs

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# caravel documentation build configuration file, created by # superset documentation build configuration file, created by
# sphinx-quickstart on Thu Dec 17 15:42:06 2015. # sphinx-quickstart on Thu Dec 17 15:42:06 2015.
# #
# This file is execfile()d with the current directory set to its # This file is execfile()d with the current directory set to its
@ -51,7 +51,7 @@ source_suffix = '.rst'
master_doc = 'index' master_doc = 'index'
# General information about the project. # General information about the project.
project = "Caravel's documentation" project = "Superset's documentation"
copyright = None copyright = None
author = u'Maxime Beauchemin' author = u'Maxime Beauchemin'
@ -209,7 +209,7 @@ html_show_copyright = False
#html_search_scorer = 'scorer.js' #html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'caraveldoc' htmlhelp_basename = 'supersetdoc'
# -- Options for LaTeX output --------------------------------------------- # -- Options for LaTeX output ---------------------------------------------
@ -231,7 +231,7 @@ latex_elements = {
# (source start file, target name, title, # (source start file, target name, title,
# author, documentclass [howto, manual, or own class]). # author, documentclass [howto, manual, or own class]).
latex_documents = [ latex_documents = [
(master_doc, 'caravel.tex', u'Caravel Documentation', (master_doc, 'superset.tex', u'Superset Documentation',
u'Maxime Beauchemin', 'manual'), u'Maxime Beauchemin', 'manual'),
] ]
@ -261,7 +261,7 @@ latex_documents = [
# One entry per manual page. List of tuples # One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section). # (source start file, name, description, authors, manual section).
man_pages = [ man_pages = [
(master_doc, 'Caravel', u'caravel Documentation', (master_doc, 'Superset', u'superset Documentation',
[author], 1) [author], 1)
] ]
@ -275,8 +275,8 @@ man_pages = [
# (source start file, target name, title, author, # (source start file, target name, title, author,
# dir menu entry, description, category) # dir menu entry, description, category)
texinfo_documents = [ texinfo_documents = [
(master_doc, 'Caravel', u'Caravel Documentation', (master_doc, 'Superset', u'Superset Documentation',
author, 'Caravel', 'One line description of project.', author, 'Superset', 'One line description of project.',
'Miscellaneous'), 'Miscellaneous'),
] ]

View File

@ -1,7 +1,7 @@
Druid Druid
===== =====
Caravel works well with Druid, though currently not all Superset works well with Druid, though currently not all
advanced features out of Druid are covered. This page clarifies what is advanced features out of Druid are covered. This page clarifies what is
covered and what isn't and explains how to use some of the features. covered and what isn't and explains how to use some of the features.
@ -15,7 +15,7 @@ Supported
Aggregations Aggregations
------------ ------------
Common aggregations, or Druid metrics can be defined and used in Caravel. Common aggregations, or Druid metrics can be defined and used in Superset.
The first and simpler use case is to use the checkbox matrix expose in your The first and simpler use case is to use the checkbox matrix expose in your
datasource's edit view (``Sources -> Druid Datasources -> datasource's edit view (``Sources -> Druid Datasources ->
[your datasource] -> Edit -> [tab] List Druid Column``). [your datasource] -> Edit -> [tab] List Druid Column``).
@ -34,7 +34,7 @@ documentation.
Post-Aggregations Post-Aggregations
----------------- -----------------
Druid supports post aggregation and this works in Caravel. All you have to Druid supports post aggregation and this works in Superset. All you have to
do is creating a metric, much like you would create an aggregation manually, do is creating a metric, much like you would create an aggregation manually,
but specify ``postagg`` as a ``Metric Type``. You then have to provide a valid but specify ``postagg`` as a ``Metric Type``. You then have to provide a valid
json post-aggregation definition (as specified in the Druid docs) in the json post-aggregation definition (as specified in the Druid docs) in the

View File

@ -4,7 +4,7 @@ FAQ
Can I query/join multiple tables at one time? Can I query/join multiple tables at one time?
--------------------------------------------- ---------------------------------------------
Not directly no. A Caravel SQLAlchemy datasource can only be a single table Not directly no. A Superset SQLAlchemy datasource can only be a single table
or a view. or a view.
When working with tables, the solution would be to materialize When working with tables, the solution would be to materialize
@ -14,15 +14,15 @@ through some scheduled batch process.
A view is a simple logical layer that abstract an arbitrary SQL queries as A view is a simple logical layer that abstract an arbitrary SQL queries as
a virtual table. This can allow you to join and union multiple tables, and a virtual table. This can allow you to join and union multiple tables, and
to apply some transformation using arbitrary SQL expressions. The limitation to apply some transformation using arbitrary SQL expressions. The limitation
there is your database performance as Caravel effectively will run a query there is your database performance as Superset effectively will run a query
on top of your query (view). A good practice may be to limit yourself to on top of your query (view). A good practice may be to limit yourself to
joining your main large table to one or many small tables only, and avoid joining your main large table to one or many small tables only, and avoid
using ``GROUP BY`` where possible as Caravel will do its own ``GROUP BY`` and using ``GROUP BY`` where possible as Superset will do its own ``GROUP BY`` and
doing the work twice might slow down performance. doing the work twice might slow down performance.
Whether you use a table or a view, the important factor is whether your Whether you use a table or a view, the important factor is whether your
database is fast enough to serve it in an interactive fashion to provide database is fast enough to serve it in an interactive fashion to provide
a good user experience in Caravel. a good user experience in Superset.
How BIG can my data source be? How BIG can my data source be?
@ -42,7 +42,7 @@ framework, in the meantime, we've tagged a few pull requests as
``example`` to give people examples of how to contribute new ``example`` to give people examples of how to contribute new
visualizations. visualizations.
https://github.com/airbnb/caravel/issues?q=label%3Aexample+is%3Aclosed https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed
Why are my queries timing out? Why are my queries timing out?
@ -53,14 +53,14 @@ it's because the web server is timing out web requests. If you want to
increase the default (50), you can specify the timeout when starting the increase the default (50), you can specify the timeout when starting the
web server with the ``-t`` flag, which is expressed in seconds. web server with the ``-t`` flag, which is expressed in seconds.
``caravel runserver -t 300`` ``superset runserver -t 300``
Why is the map not visible in the mapbox visualization? Why is the map not visible in the mapbox visualization?
------------------------------------------------------- -------------------------------------------------------
You need to register to mapbox.com, get an API key and configure it as You need to register to mapbox.com, get an API key and configure it as
``MAPBOX_API_KEY`` in ``caravel_config.py``. ``MAPBOX_API_KEY`` in ``superset_config.py``.
How to add dynamic filters to a dashboard? How to add dynamic filters to a dashboard?

View File

@ -1,15 +1,13 @@
Caravel's documentation Superset's documentation
''''''''''''''''''''''' '''''''''''''''''''''''
Caravel is a data exploration platform designed to be visual, intuitive Superset is a data exploration platform designed to be visual, intuitive
and interactive. and interactive.
.. image:: _static/img/caravel.jpg
---------------- ----------------
.. warning:: This project used to be named Panoramix and has been renamed .. warning:: This project was originally named Panoramix, was renamed to
to Caravel in March 2016 Caravel in March 2016, and is currently named Superset as of November 2016
Overview Overview
======================================= =======================================

View File

@ -4,19 +4,19 @@ Installation & Configuration
Getting Started Getting Started
--------------- ---------------
Caravel is tested using Python 2.7 and Python 3.4+. Python 3 is the recommended version, Superset is tested using Python 2.7 and Python 3.4+. Python 3 is the recommended version,
Python 2.6 won't be supported. Python 2.6 won't be supported.
OS dependencies OS dependencies
--------------- ---------------
Caravel stores database connection information in its metadata database. Superset stores database connection information in its metadata database.
For that purpose, we use the ``cryptography`` Python library to encrypt For that purpose, we use the ``cryptography`` Python library to encrypt
connection passwords. Unfortunately this library has OS level dependencies. connection passwords. Unfortunately this library has OS level dependencies.
You may want to attempt the next step You may want to attempt the next step
("Caravel installation and initialization") and come back to this step if ("Superset installation and initialization") and come back to this step if
you encounter an error. you encounter an error.
Here's how to install them: Here's how to install them:
@ -47,7 +47,7 @@ attempt it, download `get-pip.py <https://bootstrap.pypa.io/get-pip.py>`_, and r
Python virtualenv Python virtualenv
----------------- -----------------
It is recommended to install Caravel inside a virtualenv. Python 3 already ships virtualenv, for It is recommended to install Superset inside a virtualenv. Python 3 already ships virtualenv, for
Python 2 you need to install it. If it's packaged for your operating systems install it from there Python 2 you need to install it. If it's packaged for your operating systems install it from there
otherwise you can install from pip: :: otherwise you can install from pip: ::
@ -73,40 +73,40 @@ and ``setuptools`` libraries.::
pip install --upgrade setuptools pip pip install --upgrade setuptools pip
Caravel installation and initialization Superset installation and initialization
--------------------------------------- ---------------------------------------
Follow these few simple steps to install Caravel.:: Follow these few simple steps to install Superset.::
# Install caravel # Install superset
pip install caravel pip install superset
# Create an admin user # Create an admin user
fabmanager create-admin --app caravel fabmanager create-admin --app superset
# Initialize the database # Initialize the database
caravel db upgrade superset db upgrade
# Load some data to play with # Load some data to play with
caravel load_examples superset load_examples
# Create default roles and permissions # Create default roles and permissions
caravel init superset init
# Start the web server on port 8088 # Start the web server on port 8088
caravel runserver -p 8088 superset runserver -p 8088
# To start a development web server, use the -d switch # To start a development web server, use the -d switch
# caravel runserver -d # superset runserver -d
After installation, you should be able to point your browser to the right After installation, you should be able to point your browser to the right
hostname:port `http://localhost:8088 <http://localhost:8088>`_, login using hostname:port `http://localhost:8088 <http://localhost:8088>`_, login using
the credential you entered while creating the admin account, and navigate to the credential you entered while creating the admin account, and navigate to
`Menu -> Admin -> Refresh Metadata`. This action should bring in all of `Menu -> Admin -> Refresh Metadata`. This action should bring in all of
your datasources for Caravel to be aware of, and they should show up in your datasources for Superset to be aware of, and they should show up in
`Menu -> Datasources`, from where you can start playing with your data! `Menu -> Datasources`, from where you can start playing with your data!
Please note that *gunicorn*, Caravel default application server, does not Please note that *gunicorn*, Superset default application server, does not
work on Windows so you need to use the development web server. work on Windows so you need to use the development web server.
The development web server though is not intended to be used on production systems The development web server though is not intended to be used on production systems
so better use a supported platform that can run *gunicorn*. so better use a supported platform that can run *gunicorn*.
@ -114,14 +114,14 @@ so better use a supported platform that can run *gunicorn*.
Configuration behind a load balancer Configuration behind a load balancer
------------------------------------ ------------------------------------
If you are running caravel behind a load balancer or reverse proxy (e.g. NGINX If you are running superset behind a load balancer or reverse proxy (e.g. NGINX
or ELB on AWS), you may need to utilise a healthcheck endpoint so that your or ELB on AWS), you may need to utilise a healthcheck endpoint so that your
load balancer knows if your caravel instance is running. This is provided load balancer knows if your superset instance is running. This is provided
at ``/health`` which will return a 200 response containing "OK" if the at ``/health`` which will return a 200 response containing "OK" if the
webserver is running. webserver is running.
If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you
should set `ENABLE_PROXY_FIX = True` in the caravel config file to extract and use should set `ENABLE_PROXY_FIX = True` in the superset config file to extract and use
the headers. the headers.
@ -129,16 +129,16 @@ Configuration
------------- -------------
To configure your application, you need to create a file (module) To configure your application, you need to create a file (module)
``caravel_config.py`` and make sure it is in your PYTHONPATH. Here are some ``superset_config.py`` and make sure it is in your PYTHONPATH. Here are some
of the parameters you can copy / paste in that configuration module: :: of the parameters you can copy / paste in that configuration module: ::
#--------------------------------------------------------- #---------------------------------------------------------
# Caravel specific config # Superset specific config
#--------------------------------------------------------- #---------------------------------------------------------
ROW_LIMIT = 5000 ROW_LIMIT = 5000
CARAVEL_WORKERS = 4 SUPERSET_WORKERS = 4
CARAVEL_WEBSERVER_PORT = 8088 SUPERSET_WEBSERVER_PORT = 8088
#--------------------------------------------------------- #---------------------------------------------------------
#--------------------------------------------------------- #---------------------------------------------------------
@ -149,10 +149,10 @@ of the parameters you can copy / paste in that configuration module: ::
# The SQLAlchemy connection string to your database backend # The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your # This connection defines the path to the database that stores your
# caravel metadata (slices, connections, tables, dashboards, ...). # superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources # Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI # you want to explore are managed directly in the web UI
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/caravel.db' SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
# Flask-WTF flag for CSRF # Flask-WTF flag for CSRF
CSRF_ENABLED = True CSRF_ENABLED = True
@ -161,24 +161,24 @@ of the parameters you can copy / paste in that configuration module: ::
MAPBOX_API_KEY = '' MAPBOX_API_KEY = ''
This file also allows you to define configuration parameters used by This file also allows you to define configuration parameters used by
Flask App Builder, the web framework used by Caravel. Please consult Flask App Builder, the web framework used by Superset. Please consult
the `Flask App Builder Documentation the `Flask App Builder Documentation
<http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_ <http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_
for more information on how to configure Caravel. for more information on how to configure Superset.
Please make sure to change: Please make sure to change:
* *SQLALCHEMY_DATABASE_URI*, by default it is stored at *~/.caravel/caravel.db* * *SQLALCHEMY_DATABASE_URI*, by default it is stored at *~/.superset/superset.db*
* *SECRET_KEY*, to a long random string * *SECRET_KEY*, to a long random string
Database dependencies Database dependencies
--------------------- ---------------------
Caravel does not ship bundled with connectivity to databases, except Superset does not ship bundled with connectivity to databases, except
for Sqlite, which is part of the Python standard library. for Sqlite, which is part of the Python standard library.
You'll need to install the required packages for the database you You'll need to install the required packages for the database you
want to use as your metadata database as well as the packages needed to want to use as your metadata database as well as the packages needed to
connect to the databases you want to access through Caravel. connect to the databases you want to access through Superset.
Here's a list of some of the recommended packages. Here's a list of some of the recommended packages.
@ -213,9 +213,9 @@ database you want to connect to should get you to the right place.
Caching Caching
------- -------
Caravel uses `Flask-Cache <https://pythonhosted.org/Flask-Cache/>`_ for Superset uses `Flask-Cache <https://pythonhosted.org/Flask-Cache/>`_ for
caching purpose. Configuring your caching backend is as easy as providing caching purpose. Configuring your caching backend is as easy as providing
a ``CACHE_CONFIG``, constant in your ``caravel_config.py`` that a ``CACHE_CONFIG``, constant in your ``superset_config.py`` that
complies with the Flask-Cache specifications. complies with the Flask-Cache specifications.
Flask-Cache supports multiple caching backends (Redis, Memcached, Flask-Cache supports multiple caching backends (Redis, Memcached,
@ -224,7 +224,7 @@ Memcached please use the pylibmc client library as python-memcached does
not handle storing binary data correctly. If you use Redis, please install not handle storing binary data correctly. If you use Redis, please install
[python-redis](https://pypi.python.org/pypi/redis). [python-redis](https://pypi.python.org/pypi/redis).
For setting your timeouts, this is done in the Caravel metadata and goes For setting your timeouts, this is done in the Superset metadata and goes
up the "timeout searchpath", from your slice configuration, to your up the "timeout searchpath", from your slice configuration, to your
data source's configuration, to your database's and ultimately falls back data source's configuration, to your database's and ultimately falls back
into your global default defined in ``CACHE_CONFIG``. into your global default defined in ``CACHE_CONFIG``.
@ -252,7 +252,7 @@ Schemas (Postgres & Redshift)
Postgres and Redshift, as well as other database, Postgres and Redshift, as well as other database,
use the concept of **schema** as a logical entity use the concept of **schema** as a logical entity
on top of the **database**. For Caravel to connect to a specific schema, on top of the **database**. For Superset to connect to a specific schema,
there's a **schema** parameter you can set in the table form. there's a **schema** parameter you can set in the table form.
@ -284,7 +284,7 @@ Druid
* Navigate to your datasources * Navigate to your datasources
Note that you can run the ``caravel refresh_druid`` command to refresh the Note that you can run the ``superset refresh_druid`` command to refresh the
metadata from your Druid cluster(s) metadata from your Druid cluster(s)
@ -293,10 +293,10 @@ CORS
The extra CORS Dependency must be installed: The extra CORS Dependency must be installed:
caravel[cors] superset[cors]
The following keys in `caravel_config.py` can be specified to configure CORS: The following keys in `superset_config.py` can be specified to configure CORS:
* ``ENABLE_CORS``: Must be set to True in order to enable CORS * ``ENABLE_CORS``: Must be set to True in order to enable CORS
@ -307,16 +307,16 @@ Upgrading
Upgrading should be as straightforward as running:: Upgrading should be as straightforward as running::
pip install caravel --upgrade pip install superset --upgrade
caravel db upgrade superset db upgrade
caravel init superset init
SQL Lab SQL Lab
------- -------
SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible
databases out there. By default, queries are run in a web request, and databases out there. By default, queries are run in a web request, and
may eventually timeout as queries exceed the maximum duration of a web may eventually timeout as queries exceed the maximum duration of a web
request in your environment, whether it'd be a reverse proxy or the Caravel request in your environment, whether it'd be a reverse proxy or the Superset
server itself. server itself.
In the modern analytics world, it's not uncommon to run large queries that In the modern analytics world, it's not uncommon to run large queries that
@ -324,7 +324,7 @@ run for minutes or hours.
To enable support for long running queries that To enable support for long running queries that
execute beyond the typical web request's timeout (30-60 seconds), it is execute beyond the typical web request's timeout (30-60 seconds), it is
necessary to deploy an asynchronous backend, which consist of one or many necessary to deploy an asynchronous backend, which consist of one or many
Caravel worker, which is implemented as a Celery worker, and a Celery Superset worker, which is implemented as a Celery worker, and a Celery
broker for which we recommend using Redis or RabbitMQ. broker for which we recommend using Redis or RabbitMQ.
It's also preferable to setup an async result backend as a key value store It's also preferable to setup an async result backend as a key value store
@ -333,20 +333,20 @@ details to come as to how to set this up here soon.
SQL Lab supports templating in queries, and it's possible to override SQL Lab supports templating in queries, and it's possible to override
the default Jinja context in your environment by defining the the default Jinja context in your environment by defining the
``JINJA_CONTEXT_ADDONS`` in your caravel configuration. Objects referenced ``JINJA_CONTEXT_ADDONS`` in your superset configuration. Objects referenced
in this dictionary are made available for users to use in their SQL. in this dictionary are made available for users to use in their SQL.
Making your own build Making your own build
--------------------- ---------------------
For more advanced users, you may want to build Caravel from sources. That For more advanced users, you may want to build Superset from sources. That
would be the case if you fork the project to add features specific to would be the case if you fork the project to add features specific to
your environment.:: your environment.::
# assuming $CARAVEL_HOME as the root of the repo # assuming $SUPERSET_HOME as the root of the repo
cd $CARAVEL_HOME/caravel/assets cd $SUPERSET_HOME/superset/assets
npm install npm install
npm run prod npm run prod
cd $CARAVEL_HOME cd $SUPERSET_HOME
python setup.py install python setup.py install

View File

@ -1,14 +1,14 @@
Security Security
======== ========
Security in Caravel is handled by Flask AppBuilder (FAB). FAB is a Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
"Simple and rapid application development framework, built on top of Flask.". "Simple and rapid application development framework, built on top of Flask.".
FAB provides authentication, user management, permissions and roles. FAB provides authentication, user management, permissions and roles.
Provided Roles Provided Roles
-------------- --------------
Caravel ships with 3 roles that are handled by Caravel itself. You can Superset ships with 3 roles that are handled by Superset itself. You can
assume that these 3 roles will stay up-to-date as Caravel evolves. assume that these 3 roles will stay up-to-date as Superset evolves.
Admin Admin
""""" """""
@ -59,17 +59,17 @@ Customizing
The permissions exposed by FAB are very granular and allow for a great level The permissions exposed by FAB are very granular and allow for a great level
of customization. FAB creates many permissions automagically for each model of customization. FAB creates many permissions automagically for each model
that is create (can_add, can_delete, can_show, can_edit, ...) as well as for that is create (can_add, can_delete, can_show, can_edit, ...) as well as for
each view. On top of that, Caravel can expose more granular permissions like each view. On top of that, Superset can expose more granular permissions like
``all_datasource_access``. ``all_datasource_access``.
We do not recommend altering the 3 base roles as there We do not recommend altering the 3 base roles as there
are a set of assumptions that Caravel build upon. It is possible though for are a set of assumptions that Superset build upon. It is possible though for
you to create your own roles, and union them to existing ones. you to create your own roles, and union them to existing ones.
Permissions Permissions
""""""""""" """""""""""
Roles are composed of a set of permissions, and Caravel has many categories Roles are composed of a set of permissions, and Superset has many categories
of permissions. Here are the different categories of permissions: of permissions. Here are the different categories of permissions:
- **Model & action**: models are entities like ``Dashboard``, - **Model & action**: models are entities like ``Dashboard``,

View File

@ -9,7 +9,7 @@ Feature Overview
---------------- ----------------
- Connects to just about any database backend - Connects to just about any database backend
- A multi-tab environment to work on multiple queries at a time - A multi-tab environment to work on multiple queries at a time
- A smooth flow to visualize your query results using Caravel's rich - A smooth flow to visualize your query results using Superset's rich
visualization capabilities visualization capabilities
- Browse database metadata: tables, columns, indexes, partitions - Browse database metadata: tables, columns, indexes, partitions
- Support for long-running queries - Support for long-running queries
@ -45,7 +45,7 @@ Available macros
'''''''''''''''' ''''''''''''''''
We expose certain modules from Python's standard library in We expose certain modules from Python's standard library in
Caravel's Jinja context: Superset's Jinja context:
- ``time``: ``time`` - ``time``: ``time``
- ``datetime``: ``datetime.datetime`` - ``datetime``: ``datetime.datetime``
- ``uuid``: ``uuid`` - ``uuid``: ``uuid``
@ -56,5 +56,5 @@ Caravel's Jinja context:
`Jinja's builtin filters <http://jinja.pocoo.org/docs/dev/templates/>`_ can be also be applied where needed. `Jinja's builtin filters <http://jinja.pocoo.org/docs/dev/templates/>`_ can be also be applied where needed.
.. autoclass:: caravel.jinja_context.PrestoContext .. autoclass:: superset.jinja_context.PrestoTemplateProcessor
:members: :members:

View File

@ -3,7 +3,7 @@ Tutorial
This basic linear tutorial will take you through connecting to a database, This basic linear tutorial will take you through connecting to a database,
adding a table, creating a slice and a dashboard. First you'll need to tell adding a table, creating a slice and a dashboard. First you'll need to tell
Caravel where to find the database you want to Superset where to find the database you want to
query. First go to the database menu query. First go to the database menu
.. image:: _static/img/tutorial/db_menu.png .. image:: _static/img/tutorial/db_menu.png
@ -29,7 +29,7 @@ plus (``+``) sign there (similar to the one ).
Now enter the name of the table in the ``Table Name`` textbox, and select Now enter the name of the table in the ``Table Name`` textbox, and select
the database you just created in the ``Database`` dropdown, hit save. At this the database you just created in the ``Database`` dropdown, hit save. At this
moment, Caravel fetched the column names, their data types and tries to guess moment, Superset fetched the column names, their data types and tries to guess
which fields are metrics in dimensions. From the list view, edit the table which fields are metrics in dimensions. From the list view, edit the table
that you just created by clicking the tiny pen icon. that you just created by clicking the tiny pen icon.
@ -42,9 +42,9 @@ showing you the list of columns in your table as well as their data types.
.. image:: _static/img/tutorial/matrix.png .. image:: _static/img/tutorial/matrix.png
:scale: 30 % :scale: 30 %
Click the checkboxes here that inform Caravel how your columns should be Click the checkboxes here that inform Superset how your columns should be
shown in the explore view, and which metrics should be created. Make sure shown in the explore view, and which metrics should be created. Make sure
to inform Caravel about your date columns. You could also create to inform Superset about your date columns. You could also create
"SQL expression" columns here, or metrics in that tab as aggregate expressions, "SQL expression" columns here, or metrics in that tab as aggregate expressions,
but let's not do that just yet. Hit ``save``. but let's not do that just yet. Hit ``save``.

View File

@ -2,11 +2,11 @@ Videos
====== ======
Here is a collection of short videos showing different aspect Here is a collection of short videos showing different aspect
of Caravel. of Superset.
Quick Intro Quick Intro
''''''''''' '''''''''''
This video demonstrates how Caravel works at a high level, it shows how This video demonstrates how Superset works at a high level, it shows how
to navigate through datasets and dashboards that are already available. to navigate through datasets and dashboards that are already available.
.. youtube:: https://www.youtube.com/watch?v=3Txm_nj_R7M .. youtube:: https://www.youtube.com/watch?v=3Txm_nj_R7M
@ -41,7 +41,7 @@ to toggle them on dashboards.
Adding a Table Adding a Table
'''''''''''''' ''''''''''''''
This videos shows you how to expose a new table in Caravel, and how to This videos shows you how to expose a new table in Superset, and how to
define the semantics on how this can be accessed by others in the ``Explore`` define the semantics on how this can be accessed by others in the ``Explore``
and ``Dashboard`` views. and ``Dashboard`` views.

View File

@ -1,4 +1,4 @@
cd caravel/assets/ cd superset/assets/
rm build/* rm build/*
npm run prod npm run prod
cd ../.. cd ../..

View File

@ -1,9 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo $DB echo $DB
rm -f .coverage rm -f .coverage
export CARAVEL_CONFIG=tests.caravel_test_config export SUPERSET_CONFIG=tests.superset_test_config
set -e set -e
caravel/bin/caravel version -v superset/bin/superset version -v
export SOLO_TEST=1 export SOLO_TEST=1
# e.g. tests.core_tests:CoreTests.test_templated_sql_json # e.g. tests.core_tests:CoreTests.test_templated_sql_json
nosetests $1 nosetests $1

View File

@ -1,13 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo $DB echo $DB
rm ~/.caravel/unittests.db rm ~/.superset/unittests.db
rm ~/.caravel/celerydb.sqlite rm ~/.superset/celerydb.sqlite
rm ~/.caravel/celery_results.sqlite rm ~/.superset/celery_results.sqlite
rm -f .coverage rm -f .coverage
export CARAVEL_CONFIG=tests.caravel_test_config export SUPERSET_CONFIG=tests.superset_test_config
set -e set -e
caravel/bin/caravel db upgrade superset/bin/superset db upgrade
caravel/bin/caravel db upgrade # running twice on purpose as a test superset/bin/superset db upgrade # running twice on purpose as a test
caravel/bin/caravel version -v superset/bin/superset version -v
python setup.py nosetests python setup.py nosetests
coveralls coveralls

View File

@ -1,5 +1,5 @@
[metadata] [metadata]
name = Caravel name = Superset
summary = a data exploration platform summary = a data exploration platform
description-file = README.md description-file = README.md
author = Maxime Beauchemin author = Maxime Beauchemin
@ -7,7 +7,7 @@ author-email = maximebeauchemin@gmail.com
license = Apache License, Version 2.0 license = Apache License, Version 2.0
[files] [files]
packages = caravel packages = superset
[build_sphinx] [build_sphinx]
source-dir = docs/ source-dir = docs/
@ -22,7 +22,7 @@ verbosity=3
detailed-errors=1 detailed-errors=1
with-coverage=1 with-coverage=1
nocapture=1 nocapture=1
cover-package=caravel cover-package=superset
[pycodestyle] [pycodestyle]
max-line-length=90 max-line-length=90

View File

@ -4,13 +4,13 @@ import json
from setuptools import setup, find_packages from setuptools import setup, find_packages
BASE_DIR = os.path.abspath(os.path.dirname(__file__)) BASE_DIR = os.path.abspath(os.path.dirname(__file__))
PACKAGE_DIR = os.path.join(BASE_DIR, 'caravel', 'static', 'assets') PACKAGE_DIR = os.path.join(BASE_DIR, 'superset', 'static', 'assets')
PACKAGE_FILE = os.path.join(PACKAGE_DIR, 'package.json') PACKAGE_FILE = os.path.join(PACKAGE_DIR, 'package.json')
with open(PACKAGE_FILE) as package_file: with open(PACKAGE_FILE) as package_file:
version_string = json.load(package_file)['version'] version_string = json.load(package_file)['version']
setup( setup(
name='caravel', name='superset',
description=( description=(
"A interactive data visualization platform build on SqlAlchemy " "A interactive data visualization platform build on SqlAlchemy "
"and druid.io"), "and druid.io"),
@ -18,7 +18,7 @@ setup(
packages=find_packages(), packages=find_packages(),
include_package_data=True, include_package_data=True,
zip_safe=False, zip_safe=False,
scripts=['caravel/bin/caravel'], scripts=['superset/bin/superset'],
install_requires=[ install_requires=[
'celery==3.1.23', 'celery==3.1.23',
'cryptography==1.5.3', 'cryptography==1.5.3',
@ -57,9 +57,9 @@ setup(
], ],
author='Maxime Beauchemin', author='Maxime Beauchemin',
author_email='maximebeauchemin@gmail.com', author_email='maximebeauchemin@gmail.com',
url='https://github.com/airbnb/caravel', url='https://github.com/airbnb/superset',
download_url=( download_url=(
'https://github.com/airbnb/caravel/tarball/' + version_string), 'https://github.com/airbnb/superset/tarball/' + version_string),
classifiers=[ classifiers=[
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.4',

View File

@ -13,13 +13,13 @@ from flask_appbuilder import SQLA, AppBuilder, IndexView
from flask_appbuilder.baseviews import expose from flask_appbuilder.baseviews import expose
from flask_cache import Cache from flask_cache import Cache
from flask_migrate import Migrate from flask_migrate import Migrate
from caravel.source_registry import SourceRegistry from superset.source_registry import SourceRegistry
from werkzeug.contrib.fixers import ProxyFix from werkzeug.contrib.fixers import ProxyFix
from caravel import utils from superset import utils
APP_DIR = os.path.dirname(__file__) APP_DIR = os.path.dirname(__file__)
CONFIG_MODULE = os.environ.get('CARAVEL_CONFIG', 'caravel.config') CONFIG_MODULE = os.environ.get('SUPERSET_CONFIG', 'superset.config')
app = Flask(__name__) app = Flask(__name__)
app.config.from_object(CONFIG_MODULE) app.config.from_object(CONFIG_MODULE)
@ -66,11 +66,11 @@ if app.config.get('UPLOAD_FOLDER'):
class MyIndexView(IndexView): class MyIndexView(IndexView):
@expose('/') @expose('/')
def index(self): def index(self):
return redirect('/caravel/welcome') return redirect('/superset/welcome')
appbuilder = AppBuilder( appbuilder = AppBuilder(
app, db.session, app, db.session,
base_template='caravel/base.html', base_template='superset/base.html',
indexview=MyIndexView, indexview=MyIndexView,
security_manager_class=app.config.get("CUSTOM_SECURITY_MANAGER")) security_manager_class=app.config.get("CUSTOM_SECURITY_MANAGER"))
@ -84,4 +84,4 @@ module_datasource_map = app.config.get("DEFAULT_MODULE_DS_MAP")
module_datasource_map.update(app.config.get("ADDITIONAL_MODULE_DS_MAP")) module_datasource_map.update(app.config.get("ADDITIONAL_MODULE_DS_MAP"))
SourceRegistry.register_sources(module_datasource_map) SourceRegistry.register_sources(module_datasource_map)
from caravel import views, config # noqa from superset import views, config # noqa

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 459 KiB

View File

Before

Width:  |  Height:  |  Size: 702 KiB

After

Width:  |  Height:  |  Size: 702 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 328 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 552 KiB

After

Width:  |  Height:  |  Size: 552 KiB

View File

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 154 KiB

View File

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

View File

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 245 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 128 KiB

View File

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 132 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 253 KiB

After

Width:  |  Height:  |  Size: 253 KiB

View File

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 425 KiB

After

Width:  |  Height:  |  Size: 425 KiB

View File

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 738 KiB

After

Width:  |  Height:  |  Size: 738 KiB

View File

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View File

Before

Width:  |  Height:  |  Size: 220 KiB

After

Width:  |  Height:  |  Size: 220 KiB

View File

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

View File

Before

Width:  |  Height:  |  Size: 460 KiB

After

Width:  |  Height:  |  Size: 460 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 270 KiB

View File

Before

Width:  |  Height:  |  Size: 200 KiB

After

Width:  |  Height:  |  Size: 200 KiB

View File

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

View File

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -77,7 +77,7 @@ export function requestQueryResults(query) {
export function fetchQueryResults(query) { export function fetchQueryResults(query) {
return function (dispatch) { return function (dispatch) {
dispatch(requestQueryResults(query)); dispatch(requestQueryResults(query));
const sqlJsonUrl = `/caravel/results/${query.resultsKey}/`; const sqlJsonUrl = `/superset/results/${query.resultsKey}/`;
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
dataType: 'json', dataType: 'json',
@ -95,7 +95,7 @@ export function fetchQueryResults(query) {
export function runQuery(query) { export function runQuery(query) {
return function (dispatch) { return function (dispatch) {
dispatch(startQuery(query)); dispatch(startQuery(query));
const sqlJsonUrl = '/caravel/sql_json/'; const sqlJsonUrl = '/superset/sql_json/';
const sqlJsonRequest = { const sqlJsonRequest = {
client_id: query.id, client_id: query.id,
database_id: query.dbId, database_id: query.dbId,
@ -211,7 +211,7 @@ export function mergeTable(table, query) {
export function addTable(query, tableName) { export function addTable(query, tableName) {
return function (dispatch) { return function (dispatch) {
let url = `/caravel/table/${query.dbId}/${tableName}/${query.schema}/`; let url = `/superset/table/${query.dbId}/${tableName}/${query.schema}/`;
$.get(url, (data) => { $.get(url, (data) => {
const dataPreviewQuery = { const dataPreviewQuery = {
id: shortid.generate(), id: shortid.generate(),
@ -244,7 +244,7 @@ export function addTable(query, tableName) {
); );
}); });
url = `/caravel/extra_table_metadata/${query.dbId}/${tableName}/${query.schema}/`; url = `/superset/extra_table_metadata/${query.dbId}/${tableName}/${query.schema}/`;
$.get(url, (data) => { $.get(url, (data) => {
const table = { const table = {
dbId: query.dbId, dbId: query.dbId,

Some files were not shown because too many files have changed in this diff Show More