Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f249d6d0be | ||
|
|
41e52469a9 | ||
|
|
a21f3330ac |
11
.codecov.yml
@@ -1,11 +0,0 @@
|
||||
coverage:
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
# Commits pushed to master should not make the overall
|
||||
# project coverage decrease:
|
||||
target: auto
|
||||
threshold: 0%
|
||||
patch:
|
||||
default:
|
||||
threshold: 0%
|
||||
@@ -1,39 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
**/__pycache__/
|
||||
**/.mypy_cache
|
||||
**/.pytest_cache
|
||||
**/.tox
|
||||
**/.vscode
|
||||
**/.idea
|
||||
**/.coverage
|
||||
**/.DS_Store
|
||||
**/.eggs
|
||||
**/.python-version
|
||||
**/*.egg-info
|
||||
**/*.bak
|
||||
**/*.db
|
||||
**/*.pyc
|
||||
**/*.sqllite
|
||||
**/*.swp
|
||||
|
||||
tests/
|
||||
docs/
|
||||
install/
|
||||
superset/assets/node_modules/
|
||||
superset/assets/cypress/
|
||||
superset/assets/coverage/
|
||||
18
.flaskenv
@@ -1,18 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
FLASK_APP=superset:app
|
||||
FLASK_ENV=development
|
||||
38
.fossa.yml
@@ -1,38 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Generated by FOSSA CLI (https://github.com/fossas/fossa-cli)
|
||||
# Visit https://fossa.com to learn more
|
||||
|
||||
version: 2
|
||||
cli:
|
||||
server: https://app.fossa.com
|
||||
fetcher: custom
|
||||
analyze:
|
||||
modules:
|
||||
- name: assets
|
||||
type: npm
|
||||
target: superset/assets
|
||||
path: superset/assets
|
||||
- name: docs
|
||||
type: pip
|
||||
target: docs
|
||||
path: docs
|
||||
- name: .
|
||||
type: pip
|
||||
target: .
|
||||
path: .
|
||||
47
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,47 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
### Expected results
|
||||
|
||||
what you expected to happen.
|
||||
|
||||
### Actual results
|
||||
|
||||
what actually happens.
|
||||
|
||||
#### Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
#### How to reproduce the bug
|
||||
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
### Environment
|
||||
|
||||
(please complete the following information):
|
||||
|
||||
- superset version: `superset version`
|
||||
- python version: `python --version`
|
||||
- node.js version: `node -v`
|
||||
- npm version: `npm -v`
|
||||
|
||||
### Checklist
|
||||
|
||||
Make sure these boxes are checked before submitting your issue - thank you!
|
||||
|
||||
- [ ] I have checked the superset logs for python stacktraces and included it here as text if there are any.
|
||||
- [ ] 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.
|
||||
|
||||
### Additional context
|
||||
|
||||
Add any other context about the problem here.
|
||||
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,17 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
31
.github/ISSUE_TEMPLATE/sip.md
vendored
@@ -1,31 +0,0 @@
|
||||
---
|
||||
name: SIP
|
||||
about: Superset Improvement Proposal
|
||||
|
||||
---
|
||||
|
||||
## [SIP] Proposal for XXX
|
||||
|
||||
### Motivation
|
||||
|
||||
Description of the problem to be solved.
|
||||
|
||||
### Proposed Change
|
||||
|
||||
Describe how the feature will be implemented, or the problem will be solved. If possible, include mocks, screenshots, or screencasts (even if from different tools).
|
||||
|
||||
### New or Changed Public Interfaces
|
||||
|
||||
Describe any new additions to the model, views or `REST` endpoints. Describe any changes to existing visualizations, dashboards and React components. Describe changes that affect the Superset CLI and how Superset is deployed.
|
||||
|
||||
### New dependencies
|
||||
|
||||
Describe any `npm`/`PyPI` packages that are required. Are they actively maintained? What are their licenses?
|
||||
|
||||
### Migration Plan and Compatibility
|
||||
|
||||
Describe any database migrations that are necessary, or updates to stored URLs.
|
||||
|
||||
### Rejected Alternatives
|
||||
|
||||
Describe alternative approaches that were considered and rejected.
|
||||
31
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,31 +0,0 @@
|
||||
### CATEGORY
|
||||
|
||||
Choose one
|
||||
|
||||
- [ ] Bug Fix
|
||||
- [ ] Enhancement (new features, refinement)
|
||||
- [ ] Refactor
|
||||
- [ ] Add tests
|
||||
- [ ] Build / Development Environment
|
||||
- [ ] Documentation
|
||||
|
||||
### SUMMARY
|
||||
<!--- Describe the change below, including rationale and design decisions -->
|
||||
|
||||
### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
|
||||
<!--- Skip this if not applicable -->
|
||||
|
||||
### TEST PLAN
|
||||
<!--- What steps should be taken to verify the changes -->
|
||||
|
||||
### ADDITIONAL INFORMATION
|
||||
<!--- Check any relevant boxes with "x" -->
|
||||
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
|
||||
- [ ] Has associated issue:
|
||||
- [ ] Changes UI
|
||||
- [ ] Requires DB Migration.
|
||||
- [ ] Confirm DB Migration upgrade and downgrade tested.
|
||||
- [ ] Introduces new feature or API
|
||||
- [ ] Removes existing feature or API
|
||||
|
||||
### REVIEWERS
|
||||
15
.github/config.yml
vendored
@@ -1,15 +0,0 @@
|
||||
# Configuration for request-info - https://github.com/behaviorbot/request-info
|
||||
|
||||
# *Required* Comment to reply with
|
||||
requestInfoReplyComment: >
|
||||
We would appreciate it if you could provide us with more info about this issue/pr!
|
||||
Please do not leave the `title` or `description` empty.
|
||||
|
||||
# *OPTIONAL* default titles to check against for lack of descriptiveness
|
||||
# MUST BE ALL LOWERCASE
|
||||
requestInfoDefaultTitles:
|
||||
- update readme.md
|
||||
- updates
|
||||
|
||||
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
|
||||
requestInfoLabelToAdd: "need:more-info"
|
||||
5
.github/issue_label_bot.yaml
vendored
@@ -1,5 +0,0 @@
|
||||
# for Issue Label Bot https://github.com/marketplace/issue-label-bot
|
||||
label-alias:
|
||||
bug: '#bug'
|
||||
feature_request: '#enhancement'
|
||||
question: '#question'
|
||||
27
.github/move.yml
vendored
@@ -1,27 +0,0 @@
|
||||
# Configuration for Move Issues - https://github.com/dessant/move-issues
|
||||
|
||||
# Delete the command comment when it contains no other content
|
||||
deleteCommand: true
|
||||
|
||||
# Close the source issue after moving
|
||||
closeSourceIssue: true
|
||||
|
||||
# Lock the source issue after moving
|
||||
lockSourceIssue: false
|
||||
|
||||
# Mention issue and comment authors
|
||||
mentionAuthors: true
|
||||
|
||||
# Preserve mentions in the issue content
|
||||
keepContentMentions: false
|
||||
|
||||
# Move labels that also exist on the target repository
|
||||
moveLabels: true
|
||||
|
||||
# Set custom aliases for targets
|
||||
# aliases:
|
||||
# r: repo
|
||||
# or: owner/repo
|
||||
|
||||
# Repository to extend settings from
|
||||
# _extends: repo
|
||||
19
.github/stale.yml
vendored
@@ -1,19 +0,0 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- "#SIP"
|
||||
- ".pinned"
|
||||
- ".security"
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: inactive
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs.
|
||||
Thank you for your contributions. For admin, please label this issue `.pinned`
|
||||
to prevent stale bot from closing the issue.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
93
.gitignore
vendored
@@ -1,89 +1,42 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
*.ipynb
|
||||
*.bak
|
||||
*.db
|
||||
*.pyc
|
||||
*.sqllite
|
||||
*.swp
|
||||
.cache-loader
|
||||
.coverage
|
||||
yarn-error.log
|
||||
_modules
|
||||
superset/assets/coverage/*
|
||||
changelog.sh
|
||||
.DS_Store
|
||||
.eggs
|
||||
.envrc
|
||||
.idea
|
||||
.mypy_cache
|
||||
.python-version
|
||||
.tox
|
||||
.vscode
|
||||
.coverage
|
||||
_build
|
||||
_static
|
||||
_images
|
||||
_modules
|
||||
_static
|
||||
build
|
||||
app.db
|
||||
apache_superset.egg-info/
|
||||
changelog.sh
|
||||
dist
|
||||
dump.rdb
|
||||
env
|
||||
venv*
|
||||
env_py3
|
||||
envpy3
|
||||
env36
|
||||
local_config.py
|
||||
superset_config.py
|
||||
superset.egg-info/
|
||||
superset/bin/supersetc
|
||||
env_py3
|
||||
.eggs
|
||||
build
|
||||
*.db
|
||||
tmp
|
||||
superset_config.py
|
||||
local_config.py
|
||||
env
|
||||
dist
|
||||
superset.egg-info/
|
||||
app.db
|
||||
*.bak
|
||||
.idea
|
||||
*.sqllite
|
||||
.vscode
|
||||
.python-version
|
||||
.tox
|
||||
dump.rdb
|
||||
|
||||
# Node.js, webpack artifacts
|
||||
*.entry.js
|
||||
*.js.map
|
||||
node_modules
|
||||
npm-debug.log*
|
||||
superset/assets/coverage/*
|
||||
superset/assets/cypress/screenshots
|
||||
superset/assets/cypress/videos
|
||||
superset/assets/version_info.json
|
||||
yarn-error.log
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
venv
|
||||
@eaDir/
|
||||
|
||||
# Docker
|
||||
./Dockerfile
|
||||
./docker-build.sh
|
||||
./docker-compose.yml
|
||||
./docker-entrypoint.sh
|
||||
./docker-init.sh
|
||||
|
||||
# Test data
|
||||
celery_results.sqlite
|
||||
celerybeat-schedule
|
||||
celerydb.sqlite
|
||||
celerybeat.pid
|
||||
geckodriver.log
|
||||
ghostdriver.log
|
||||
testCSV.csv
|
||||
.terser-plugin-cache/
|
||||
apache-superset-*.tar.gz*
|
||||
|
||||
# Translation binaries
|
||||
messages.mo
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
repos:
|
||||
- repo: https://github.com/ambv/black
|
||||
rev: 19.3b0
|
||||
hooks:
|
||||
- id: black
|
||||
language_version: python3
|
||||
|
||||
- repo: https://github.com/asottile/seed-isort-config
|
||||
rev: v1.9.3
|
||||
hooks:
|
||||
- id: seed-isort-config
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-isort
|
||||
rev: v4.3.21
|
||||
hooks:
|
||||
- id: isort
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v2.2.3
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-docstring-first
|
||||
- id: check-added-large-files
|
||||
- id: check-yaml
|
||||
- id: debug-statements
|
||||
32
.pylintrc
@@ -1,19 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
[MASTER]
|
||||
|
||||
# Specify a configuration file.
|
||||
@@ -39,7 +23,7 @@ persistent=yes
|
||||
load-plugins=
|
||||
|
||||
# Use multiple processes to speed up Pylint.
|
||||
jobs=2
|
||||
jobs=1
|
||||
|
||||
# Allow loading of arbitrary C extensions. Extensions are imported into the
|
||||
# active Python interpreter and may run arbitrary code.
|
||||
@@ -81,7 +65,7 @@ confidence=
|
||||
# --enable=similarities". If you want to run only the classes checker, but have
|
||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||
# --disable=W"
|
||||
disable=standarderror-builtin,long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,dict-iter-method,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,old-ne-operator,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,invalid-unary-operand-type,missing-docstring,too-many-lines,duplicate-code,bad-continuation
|
||||
disable=standarderror-builtin,long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,dict-iter-method,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,old-ne-operator,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,invalid-unary-operand-type
|
||||
|
||||
|
||||
[REPORTS]
|
||||
@@ -115,7 +99,7 @@ evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / stateme
|
||||
[BASIC]
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_,d,e,v,o,l,x,ts,f
|
||||
good-names=i,j,k,ex,Run,_,d,e,v,o,l,x,ts
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata,d,fd
|
||||
@@ -209,7 +193,7 @@ max-nested-blocks=5
|
||||
[FORMAT]
|
||||
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=88
|
||||
max-line-length=90
|
||||
|
||||
# Regexp for a line that is allowed to be longer than the limit.
|
||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
||||
@@ -248,7 +232,7 @@ logging-modules=logging
|
||||
[MISCELLANEOUS]
|
||||
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
@@ -293,12 +277,12 @@ ignore-mixin-members=yes
|
||||
# (useful for modules/projects where namespaces are manipulated during runtime
|
||||
# and thus existing member attributes cannot be deduced by static analysis. It
|
||||
# supports qualified module names, as well as Unix pattern matching.
|
||||
ignored-modules=numpy,pandas,alembic.op,sqlalchemy,alembic.context,flask_appbuilder.security.sqla.PermissionView.role,flask_appbuilder.Model.metadata,flask_appbuilder.Base.metadata,distutils
|
||||
ignored-modules=numpy,pandas,alembic.op,sqlalchemy,alembic.context,flask_appbuilder.security.sqla.PermissionView.role,flask_appbuilder.Model.metadata,flask_appbuilder.Base.metadata
|
||||
|
||||
# List of class names for which member attributes should not be checked (useful
|
||||
# for classes with dynamically set attributes). This supports the use of
|
||||
# qualified names.
|
||||
ignored-classes=contextlib.closing,optparse.Values,thread._local,_thread._local,sqlalchemy.orm.scoping.scoped_session
|
||||
ignored-classes=optparse.Values,thread._local,_thread._local,sqlalchemy.orm.scoping.scoped_session
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
||||
@@ -308,7 +292,7 @@ generated-members=
|
||||
# List of decorators that produce context managers, such as
|
||||
# contextlib.contextmanager. Add to this list to register other decorators that
|
||||
# produce valid context managers.
|
||||
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
|
||||
contextmanager-decorators=contextlib.contextmanager
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
.gitignore
|
||||
.gitattributes
|
||||
.coverage
|
||||
.coveragerc
|
||||
.codecov.yml
|
||||
.eslintrc
|
||||
.eslintignore
|
||||
.flake8
|
||||
.prettierrc
|
||||
.rat-excludes
|
||||
.*log
|
||||
.*pyc
|
||||
.*lock
|
||||
.*geojson
|
||||
DISCLAIMER
|
||||
licenses/*
|
||||
node_modules/*
|
||||
rat-results.txt
|
||||
babel-node
|
||||
dist
|
||||
build
|
||||
superset.egg-info
|
||||
apache_superset.egg-info
|
||||
.idea
|
||||
.*sql
|
||||
.*zip
|
||||
.*lock
|
||||
# json and csv in general cannot have comments
|
||||
.*json
|
||||
.*csv
|
||||
# Generated doc files
|
||||
docs/_build/*
|
||||
_build/*
|
||||
_static/*
|
||||
.buildinfo
|
||||
searchindex.js
|
||||
# auto generated
|
||||
requirements.txt
|
||||
# vendorized
|
||||
vendor/*
|
||||
# github configuration
|
||||
.github/*
|
||||
151
.travis.yml
@@ -1,117 +1,46 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
jobs:
|
||||
language: python
|
||||
python:
|
||||
- 2.7
|
||||
- 3.6
|
||||
services:
|
||||
- mysql
|
||||
- postgres
|
||||
- redis-server
|
||||
cache:
|
||||
- pip
|
||||
matrix:
|
||||
include:
|
||||
- language: python
|
||||
python: 3.6
|
||||
env:
|
||||
- TOXENV=fossa
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install tox
|
||||
- language: python
|
||||
python: 3.6
|
||||
env:
|
||||
- TOXENV=license-check
|
||||
- TRAVIS_CACHE=$HOME/.travis_cache/
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- openjdk-8-jdk
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install tox
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=cypress-dashboard
|
||||
services:
|
||||
- redis-server
|
||||
before_install:
|
||||
- nvm install 10.14.2
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=cypress-explore
|
||||
services:
|
||||
- redis-server
|
||||
before_install:
|
||||
- nvm install 10.14.2
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=cypress-sqllab
|
||||
services:
|
||||
- redis-server
|
||||
before_install:
|
||||
- nvm install 10.14.2
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=py36-mysql
|
||||
services:
|
||||
- mysql
|
||||
- redis-server
|
||||
before_script:
|
||||
- mysql -u root -e "DROP DATABASE IF EXISTS superset; CREATE DATABASE superset DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"
|
||||
- mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';"
|
||||
- mysql -u root -e "GRANT ALL ON superset.* TO 'mysqluser'@'localhost';"
|
||||
- language: python
|
||||
env: TOXENV=javascript
|
||||
before_install:
|
||||
- nvm install 10.14.2
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=black
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=isort
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=mypy
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=py36-sqlite
|
||||
services:
|
||||
- redis-server
|
||||
- language: python
|
||||
python: 3.6
|
||||
env: TOXENV=py36-postgres
|
||||
services:
|
||||
- postgresql
|
||||
- redis-server
|
||||
before_script:
|
||||
- psql -U postgres -c "CREATE DATABASE superset;"
|
||||
- psql -U postgres -c "CREATE USER postgresuser WITH PASSWORD 'pguserpassword';"
|
||||
- language: python
|
||||
python: 3.6
|
||||
- python: 2.7
|
||||
env: TOXENV=flake8
|
||||
- python: 2.7
|
||||
env: TOXENV=py27-mysql
|
||||
- python: 2.7
|
||||
env: TOXENV=py27-sqlite
|
||||
- python: 2.7
|
||||
env: TOXENV=pylint
|
||||
|
||||
- python: 3.6
|
||||
env: TOXENV=flake8
|
||||
- python: 3.6
|
||||
env: TOXENV=javascript
|
||||
- python: 3.6
|
||||
env: TOXENV=py36-postgres
|
||||
- python: 3.6
|
||||
env: TOXENV=py36-sqlite
|
||||
- python: 3.6
|
||||
env: TOXENV=pylint
|
||||
exclude:
|
||||
- python: 2.7
|
||||
- python: 3.6
|
||||
before_script:
|
||||
- mysql -u root -e "DROP DATABASE IF EXISTS superset; CREATE DATABASE superset DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"
|
||||
- mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';"
|
||||
- mysql -u root -e "GRANT ALL ON superset.* TO 'mysqluser'@'localhost';"
|
||||
- psql -U postgres -c "CREATE DATABASE superset;"
|
||||
- psql -U postgres -c "CREATE USER postgresuser WITH PASSWORD 'pguserpassword';"
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install codecov tox
|
||||
script:
|
||||
- tox
|
||||
after_success:
|
||||
- codecov
|
||||
cache:
|
||||
pip: true
|
||||
directories:
|
||||
- ~/.npm
|
||||
- ~/.cache
|
||||
- ~/.travis_cache/
|
||||
- superset/assets/.terser-plugin-cache/
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- libgconf-2-4
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install codecov tox
|
||||
|
||||
1746
CHANGELOG.md
@@ -1,22 +1,84 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
# Code of Conduct
|
||||
|
||||
We follow the
|
||||
[Apache Software Foundation's Code of Conduct](https://www.apache.org/foundation/policies/conduct.html)
|
||||
## 1. Purpose
|
||||
|
||||
A primary goal of Apache Superset is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
|
||||
|
||||
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
|
||||
|
||||
We invite all those who participate in Apache Superset to help us create safe and positive experiences for everyone.
|
||||
|
||||
## 2. Open Source Citizenship
|
||||
|
||||
A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
|
||||
|
||||
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
|
||||
|
||||
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
|
||||
|
||||
## 3. Expected Behavior
|
||||
|
||||
The following behaviors are expected and requested of all community members:
|
||||
|
||||
* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
|
||||
* Exercise consideration and respect in your speech and actions.
|
||||
* Attempt collaboration before conflict.
|
||||
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
|
||||
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
|
||||
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
|
||||
|
||||
## 4. Unacceptable Behavior
|
||||
|
||||
The following behaviors are considered harassment and are unacceptable within our community:
|
||||
|
||||
* Violence, threats of violence or violent language directed against another person.
|
||||
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
|
||||
* Posting or displaying sexually explicit or violent material.
|
||||
* Posting or threatening to post other people’s personally identifying information ("doxing").
|
||||
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
|
||||
* Inappropriate photography or recording.
|
||||
* Inappropriate physical contact. You should have someone’s consent before touching them.
|
||||
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
|
||||
* Deliberate intimidation, stalking or following (online or in person).
|
||||
* Advocating for, or encouraging, any of the above behavior.
|
||||
* Sustained disruption of community events, including talks and presentations.
|
||||
|
||||
## 5. Consequences of Unacceptable Behavior
|
||||
|
||||
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
|
||||
|
||||
Anyone asked to stop unacceptable behavior is expected to comply immediately.
|
||||
|
||||
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
|
||||
|
||||
## 6. Reporting Guidelines
|
||||
|
||||
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. dev@superset.incubator.apache.org .
|
||||
|
||||
|
||||
|
||||
Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
|
||||
|
||||
## 7. Addressing Grievances
|
||||
|
||||
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Apache with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
|
||||
|
||||
|
||||
|
||||
## 8. Scope
|
||||
|
||||
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community business.
|
||||
|
||||
This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
|
||||
|
||||
## 9. Contact info
|
||||
|
||||
dev@superset.incubator.apache.org
|
||||
|
||||
## 10. License and attribution
|
||||
|
||||
This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
|
||||
|
||||
Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
|
||||
|
||||
Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/)
|
||||
|
||||
914
CONTRIBUTING.md
11
DISCLAIMER
@@ -1,11 +0,0 @@
|
||||
DISCLAIMER
|
||||
|
||||
Apache Superset (incubating) is an effort undergoing incubation at the Apache
|
||||
Software Foundation (ASF), sponsored by the Apache Incubator PMC.
|
||||
Incubation is required of all newly accepted projects until a further review
|
||||
indicates that the infrastructure, communications, and decision making process
|
||||
have stabilized in a manner consistent with other successful ASF projects.
|
||||
|
||||
While incubation status is not necessarily a reflection of the completeness or
|
||||
stability of the code, it does indicate that the project has yet to be fully
|
||||
endorsed by the ASF.
|
||||
23
INSTALL.md
@@ -1,23 +0,0 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
# INSTALL / BUILD instructions for Apache Superset (incubating)
|
||||
|
||||
At this time, the docker file at RELEASING/Dockerfile.from_tarball
|
||||
constitutes the recipe on how to get to a working release from a source
|
||||
release tarball.
|
||||
19
ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1,19 @@
|
||||
Make sure these boxes are checked before submitting your issue - thank you!
|
||||
|
||||
- [ ] 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 superset
|
||||
- [ ] I have checked the issue tracker for the same issue and I haven't found one similar
|
||||
|
||||
|
||||
### Superset version
|
||||
|
||||
|
||||
### Expected results
|
||||
|
||||
|
||||
### Actual results
|
||||
|
||||
|
||||
### Steps to reproduce
|
||||
|
||||
|
||||
15
LICENSE.txt
@@ -199,18 +199,3 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
============================================================================
|
||||
APACHE SUPERSET SUBCOMPONENTS:
|
||||
|
||||
The Apache Superset project contains subcomponents with separate copyright
|
||||
notices and license terms. Your use of the source code for the these
|
||||
subcomponents is subject to the terms and conditions of the following
|
||||
licenses.
|
||||
|
||||
|
||||
========================================================================
|
||||
Third party Apache 2.0 licenses
|
||||
========================================================================
|
||||
|
||||
(Apache 2.0 License) The Roboto family of fonts (https://github.com/google/roboto)
|
||||
|
||||
39
MANIFEST.in
@@ -1,37 +1,12 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
include NOTICE
|
||||
include LICENSE.txt
|
||||
graft licenses/
|
||||
include README.md
|
||||
recursive-include superset/examples *
|
||||
recursive-include superset/data *
|
||||
recursive-include superset/migrations *
|
||||
|
||||
include superset/assets/package.json
|
||||
|
||||
# Whitelist anything that needs to be added to the static bundle
|
||||
recursive-exclude superset/static *
|
||||
recursive-include superset/static/assets/branding *
|
||||
recursive-include superset/static/assets/dist *
|
||||
recursive-include superset/static/assets/images *
|
||||
recursive-include superset/static *
|
||||
recursive-exclude superset/static/assets/docs *
|
||||
recursive-exclude superset/static/assets/images/viz_thumbnails_large *
|
||||
recursive-exclude superset/static/docs *
|
||||
recursive-exclude superset/static/spec *
|
||||
recursive-exclude superset/static/images/viz_thumbnails_large *
|
||||
recursive-include superset/static/assets/stylesheets *
|
||||
include superset/static/assets/version_info.json
|
||||
|
||||
recursive-exclude superset/static/assets/node_modules *
|
||||
recursive-include superset/templates *
|
||||
recursive-include superset/translations *
|
||||
recursive-exclude tests *
|
||||
|
||||
5
NOTICE
@@ -1,5 +0,0 @@
|
||||
Apache Superset (incubating)
|
||||
Copyright 2016-2019 The Apache Software Foundation
|
||||
|
||||
This product includes software developed at The Apache Software
|
||||
Foundation (http://www.apache.org/).
|
||||
154
README.md
@@ -1,29 +1,11 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
Superset
|
||||
=========
|
||||
|
||||
[](https://travis-ci.org/apache/incubator-superset)
|
||||
[](https://badge.fury.io/py/apache-superset)
|
||||
[](https://badge.fury.io/py/superset)
|
||||
[](https://codecov.io/github/apache/incubator-superset)
|
||||
[](https://pypi.python.org/pypi/apache-superset)
|
||||
[](https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU)
|
||||
[](https://pypi.python.org/pypi/superset)
|
||||
[](https://gitter.im/airbnb/superset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://superset.incubator.apache.org)
|
||||
[](https://david-dm.org/apache/incubator-superset?path=superset/assets)
|
||||
|
||||
@@ -92,12 +74,29 @@ Database Support
|
||||
|
||||
Superset speaks many SQL dialects through SQLAlchemy, a Python
|
||||
ORM that is compatible with
|
||||
[most common databases](https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html).
|
||||
[most common databases](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html).
|
||||
|
||||
A list of currently supported SQL databases can be found
|
||||
[here](https://superset.incubator.apache.org/#databases).
|
||||
Superset can be used to visualize data out of most databases:
|
||||
* MySQL
|
||||
* Postgres
|
||||
* Vertica
|
||||
* Oracle
|
||||
* Microsoft SQL Server
|
||||
* SQLite
|
||||
* Greenplum
|
||||
* Firebird
|
||||
* MariaDB
|
||||
* Sybase
|
||||
* IBM DB2
|
||||
* Exasol
|
||||
* MonetDB
|
||||
* Snowflake
|
||||
* Redshift
|
||||
* **more!** look for the availability of a SQLAlchemy dialect for your database
|
||||
to find out whether it will work with Superset
|
||||
|
||||
Apache Druid (Incubating)!
|
||||
|
||||
Druid!
|
||||
------
|
||||
|
||||
On top of having the ability to query your relational databases,
|
||||
@@ -130,7 +129,6 @@ Resources
|
||||
* [Docker image](https://hub.docker.com/r/amancevice/superset/) (community contributed)
|
||||
* [Slides from Strata (March 2016)](https://drive.google.com/open?id=0B5PVE0gzO81oOVJkdF9aNkJMSmM)
|
||||
* [Stackoverflow tag](https://stackoverflow.com/questions/tagged/apache-superset)
|
||||
* [Join our Slack](https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU)
|
||||
* [DEPRECATED Google Group](https://groups.google.com/forum/#!forum/airbnb_superset)
|
||||
|
||||
|
||||
@@ -147,73 +145,37 @@ Who uses Apache Superset (incubating)?
|
||||
Here's a list of organizations who have taken the time to send a PR to let
|
||||
the world know they are using Superset. Join our growing community!
|
||||
|
||||
1. [6play](https://www.6play.fr)
|
||||
1. [AiHello](https://www.aihello.com)
|
||||
1. [Airbnb](https://github.com/airbnb)
|
||||
1. [Airboxlab](https://foobot.io)
|
||||
1. [Aktia Bank plc](https://www.aktia.com)
|
||||
1. [American Express](https://www.americanexpress.com)
|
||||
1. [Amino](https://amino.com)
|
||||
1. [Apollo GraphQL](https://www.apollographql.com/)
|
||||
1. [Ascendica Development](http://ascendicadevelopment.com)
|
||||
1. [Astronomer](https://www.astronomer.io)
|
||||
1. [Brilliant.org](https://brilliant.org/)
|
||||
1. [Capital Service S.A.](http://capitalservice.pl)
|
||||
1. [Clark.de](http://clark.de/)
|
||||
1. [Cloudsmith](https://cloudsmith.io)
|
||||
1. [CnOvit](http://www.cnovit.com/)
|
||||
1. [Deepomatic](https://deepomatic.com/)
|
||||
1. [Dial Once](https://www.dial-once.com/en/)
|
||||
1. [Digit Game Studios](https://www.digitgaming.com/)
|
||||
1. [Douban](https://www.douban.com/)
|
||||
1. [Endress+Hauser](http://www.endress.com/)
|
||||
1. [Faasos](http://faasos.com/)
|
||||
1. [Fanatics](https://www.fanatics.com)
|
||||
1. [FBK - ICT center](http://ict.fbk.eu)
|
||||
1. [Fordeal](http://www.fordeal.com)
|
||||
1. [GFG - Global Fashion Group](https://global-fashion-group.com)
|
||||
1. [GfK Data Lab](http://datalab.gfk.com)
|
||||
1. [Grassroot](https://www.grassrootinstitute.org/)
|
||||
1. [Hostnfly](https://www.hostnfly.com/)
|
||||
1. [HuiShouBao](http://www.huishoubao.com/)
|
||||
1. [Intercom](https://www.intercom.com/)
|
||||
1. [jampp](https://jampp.com/)
|
||||
1. [komoot](https://www.komoot.com/)
|
||||
1. [Konfío](http://konfio.mx)
|
||||
1. [Kuaishou](https://www.kuaishou.com/)
|
||||
1. [Lime](https://www.limebike.com/)
|
||||
1. [Living Goods](https://www.livinggoods.org)
|
||||
1. [Lyft](https://www.lyft.com/)
|
||||
1. [Maieutical Labs](https://maieuticallabs.it)
|
||||
1. [Myra Labs](http://www.myralabs.com/)
|
||||
1. [Now](https://www.now.vn/)
|
||||
1. [Ona](https://ona.io)
|
||||
1. [PeopleDoc](https://www.people-doc.com)
|
||||
1. [Pronto Tools](http://www.prontotools.io)
|
||||
1. [QPID Health](http://www.qpidhealth.com/ )
|
||||
1. [Qunar](https://www.qunar.com/)
|
||||
1. [Safaricom](https://www.safaricom.co.ke/)
|
||||
1. [Scoot](https://scoot.co/)
|
||||
1. [ScopeAI](https://www.getscopeai.com)
|
||||
1. [Shopee](https://shopee.sg)
|
||||
1. [Shopkick](https://www.shopkick.com)
|
||||
1. [Showmax](https://tech.showmax.com)
|
||||
1. [source{d}](https://www.sourced.tech)
|
||||
1. [Steamroot](https://streamroot.io/)
|
||||
1. [Tails.com](https://tails.com)
|
||||
1. [Tenable](https://www.tenable.com)
|
||||
1. [THE ICONIC](http://theiconic.com.au/)
|
||||
1. [TME QQMUSIC/WESING](https://www.tencentmusic.com/)
|
||||
1. [Tobii](http://www.tobii.com/)
|
||||
1. [Tooploox](https://www.tooploox.com/)
|
||||
1. [TrustMedis](https://trustmedis.com)
|
||||
1. [Twitter](https://twitter.com/)
|
||||
1. [Udemy](https://www.udemy.com/)
|
||||
1. [VIPKID](https://www.vipkid.com.cn/)
|
||||
1. [WeSure](https://www.wesure.cn/)
|
||||
1. [Windsor.ai](https://www.windsor.ai/)
|
||||
1. [WP-Semantix](https://wpsemantix.com/)
|
||||
1. [Yahoo!](https://yahoo.com/)
|
||||
1. [Zaihang](http://www.zaih.com/)
|
||||
1. [Zalando](https://www.zalando.com)
|
||||
1. [Zalora](https://www.zalora.com)
|
||||
- [AiHello](https://www.aihello.com)
|
||||
- [Airbnb](https://github.com/airbnb)
|
||||
- [Aktia Bank plc](https://www.aktia.com)
|
||||
- [Amino](https://amino.com)
|
||||
- [Ascendica Development](http://ascendicadevelopment.com)
|
||||
- [Astronomer](https://www.astronomer.io)
|
||||
- [Brilliant.org](https://brilliant.org/)
|
||||
- [Capital Service S.A.](http://capitalservice.pl)
|
||||
- [Clark.de](http://clark.de/)
|
||||
- [Digit Game Studios](https://www.digitgaming.com/)
|
||||
- [Douban](https://www.douban.com/)
|
||||
- [Endress+Hauser](http://www.endress.com/)
|
||||
- [FBK - ICT center](http://ict.fbk.eu)
|
||||
- [Faasos](http://faasos.com/)
|
||||
- [GfK Data Lab](http://datalab.gfk.com)
|
||||
- [Konfío](http://konfio.mx)
|
||||
- [Lyft](https://www.lyft.com/)
|
||||
- [Maieutical Labs](https://cloudschooling.it)
|
||||
- [PeopleDoc](https://www.people-doc.com)
|
||||
- [Ona](https://ona.io)
|
||||
- [Pronto Tools](http://www.prontotools.io)
|
||||
- [Qunar](https://www.qunar.com/)
|
||||
- [ScopeAI](https://www.getscopeai.com)
|
||||
- [Shopee](https://shopee.sg)
|
||||
- [Shopkick](https://www.shopkick.com)
|
||||
- [Tails.com](https://tails.com)
|
||||
- [Tobii](http://www.tobii.com/)
|
||||
- [Tooploox](https://www.tooploox.com/)
|
||||
- [Twitter](https://twitter.com/)
|
||||
- [Udemy](https://www.udemy.com/)
|
||||
- [VIPKID](https://www.vipkid.com.cn/)
|
||||
- [Yahoo!](https://yahoo.com/)
|
||||
- [Zaihang](http://www.zaih.com/)
|
||||
- [Zalando](https://www.zalando.com)
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
FROM python:3.6-jessie
|
||||
|
||||
RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset
|
||||
|
||||
# Configure environment
|
||||
ENV LANG=C.UTF-8 \
|
||||
LC_ALL=C.UTF-8
|
||||
|
||||
RUN apt-get update -y
|
||||
|
||||
# Install dependencies to fix `curl https support error` and `elaying package configuration warning`
|
||||
RUN apt-get install -y apt-transport-https apt-utils
|
||||
|
||||
# Install superset dependencies
|
||||
# https://superset.incubator.apache.org/installation.html#os-dependencies
|
||||
RUN apt-get install -y build-essential libssl-dev \
|
||||
libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev
|
||||
|
||||
# Install nodejs for custom build
|
||||
# https://superset.incubator.apache.org/installation.html#making-your-own-build
|
||||
# https://nodejs.org/en/download/package-manager/
|
||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
||||
&& apt-get install -y nodejs
|
||||
|
||||
RUN mkdir -p /home/superset
|
||||
RUN chown superset /home/superset
|
||||
|
||||
WORKDIR /home/superset
|
||||
ARG VERSION
|
||||
|
||||
RUN svn co https://dist.apache.org/repos/dist/dev/incubator/superset/$VERSION ./
|
||||
RUN tar -xvf *.tar.gz
|
||||
WORKDIR apache-superset-incubating-$VERSION
|
||||
|
||||
RUN cd superset/assets \
|
||||
&& npm ci \
|
||||
&& npm run build \
|
||||
&& rm -rf node_modules
|
||||
|
||||
|
||||
WORKDIR /home/superset/apache-superset-incubating-$VERSION
|
||||
RUN pip install --upgrade setuptools pip \
|
||||
&& pip install -r requirements.txt -r requirements-dev.txt \
|
||||
&& pip install -e . \
|
||||
&& rm -rf /root/.cache/pip
|
||||
|
||||
RUN fabmanager babel-compile --target superset/translations
|
||||
|
||||
RUN pip install -e . \
|
||||
&& rm -rf /root/.cache/pip
|
||||
|
||||
ENV PATH=/home/superset/superset/bin:$PATH \
|
||||
PYTHONPATH=/home/superset/superset/:$PYTHONPATH
|
||||
COPY from_tarball_entrypoint.sh /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -1,19 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
FROM python:3.6-jessie
|
||||
COPY make_tarball.sh /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -1,160 +0,0 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# Apache Releases
|
||||
|
||||
You'll probably want to run these commands manually and understand what
|
||||
they do prior to doing so.
|
||||
|
||||
For coordinating on releases, on more operational topics that require more
|
||||
synchronous communications, we tend to use the `#apache-releases` channel
|
||||
on the Superset Slack. People crafting releases and those interested in
|
||||
partaking in the process should join the channel.
|
||||
|
||||
## Release setup
|
||||
|
||||
First you need to setup a few things. This is a one-off and doesn't
|
||||
need to be done at every release.
|
||||
|
||||
```bash
|
||||
# Create PGP Key, and use your @apache.org email address
|
||||
gpg --gen-key
|
||||
|
||||
# Checkout ASF dist repo
|
||||
|
||||
svn checkout https://dist.apache.org/repos/dist/dev/incubator/superset/ ~/svn/superset_dev
|
||||
|
||||
svn checkout https://dist.apache.org/repos/dist/release/incubator/superset/ ~/svn/superset
|
||||
cd ~/svn/superset
|
||||
|
||||
|
||||
# Add your GPG pub key to KEYS file. Replace "Maxime Beauchemin" with your name
|
||||
export FULLNAME="Maxime Beauchemin"
|
||||
(gpg --list-sigs $FULLNAME && gpg --armor --export $FULLNAME ) >> KEYS
|
||||
|
||||
|
||||
# Commit the changes
|
||||
svn commit -m "Add PGP keys of new Superset committer"
|
||||
```
|
||||
|
||||
## Crafting tarball and signatures
|
||||
|
||||
Now let's craft a source release
|
||||
```bash
|
||||
# Assuming these commands are executed from the root of the repo
|
||||
export REPO_DIR=$(pwd)
|
||||
# Set VERSION to the release being prepared (rc1 for first vote on version)
|
||||
export VERSION=0.34.1rc1
|
||||
export RELEASE=apache-superset-incubating-${VERSION}
|
||||
export RELEASE_TARBALL=${RELEASE}-source.tar.gz
|
||||
|
||||
# Let's create a git tag
|
||||
git tag -f ${VERSION}
|
||||
|
||||
# Create the target folder
|
||||
mkdir -p ~/svn/superset_dev/${VERSION}/
|
||||
git archive \
|
||||
--format=tar.gz ${VERSION} \
|
||||
--prefix="${RELEASE}/" \
|
||||
-o ~/svn/superset_dev/${VERSION}/${RELEASE_TARBALL}
|
||||
|
||||
cd ~/svn/superset_dev/${VERSION}/
|
||||
${REPO_DIR}/scripts/sign.sh ${RELEASE}-source.tar.gz
|
||||
```
|
||||
|
||||
## Shipping to SVN
|
||||
|
||||
Now let's ship this RC into svn's dev folder
|
||||
|
||||
```bash
|
||||
cd ~/svn/superset_dev/
|
||||
svn add ${VERSION}
|
||||
svn commit -m "${VERSION}"
|
||||
```
|
||||
|
||||
Now you're ready to start the VOTE thread.
|
||||
|
||||
## Validating a release
|
||||
|
||||
https://www.apache.org/info/verification.html
|
||||
|
||||
## Publishing a successful release
|
||||
|
||||
Upon a successful vote, you'll have to copy the folder into the non-"dev/"
|
||||
folder.
|
||||
```bash
|
||||
cp -r ~/svn/superset_dev/${VERSION}/ ~/svn/superset/${VERSION}/
|
||||
cd ~/svn/superset/
|
||||
svn add ${VERSION}
|
||||
svn commit -m "${VERSION}"
|
||||
```
|
||||
|
||||
Now you can announce the release on the mailing list, make sure to use the
|
||||
proper template
|
||||
|
||||
## Post release
|
||||
|
||||
In `UPDATING.md`, a file that contains a list of notifications around
|
||||
deprecations and upgrading-related topics,
|
||||
make sure to move the content now under the `Next Version` section under a new
|
||||
section for the new release.
|
||||
|
||||
## Build from source tarball
|
||||
|
||||
To make a working build given a tarball
|
||||
```bash
|
||||
# Building a docker from a tarball
|
||||
VERSION=0.33.0rc2 && \
|
||||
docker build -t apache-superset:$VERSION -f Dockerfile.from_tarball . --build-arg VERSION=$VERSION
|
||||
|
||||
# testing the resulting docker
|
||||
docker run -p 5001:8088 apache-superset:$VERSION
|
||||
# you should be able to access localhost:5001 on your browser
|
||||
# login using admin/admin
|
||||
```
|
||||
|
||||
# Refresh documentation website
|
||||
|
||||
Every once in a while we want to compile the documentation and publish it.
|
||||
Here's how to do it.
|
||||
|
||||
```bash
|
||||
# install doc dependencies
|
||||
pip install -r docs/requirements.txt
|
||||
|
||||
# build the docs
|
||||
python setup.py build_sphinx
|
||||
|
||||
# copy html files to temp folder
|
||||
cp -r docs/_build/html/ /tmp/tmp_superset_docs/
|
||||
|
||||
# clone the docs repo
|
||||
cd ~/
|
||||
git clone https://git-wip-us.apache.org/repos/asf/incubator-superset-site.git
|
||||
|
||||
# copy
|
||||
cp -r /tmp/tmp_superset_docs/ ~/incubator-superset-site.git/
|
||||
|
||||
# commit and push to `asf-site` branch
|
||||
cd ~/incubator-superset-site.git/
|
||||
git checkout asf-site
|
||||
git add .
|
||||
git commit -a -m "New doc version"
|
||||
git push origin master
|
||||
```
|
||||
@@ -1,42 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
set -ex
|
||||
|
||||
echo "[WARNING] this entrypoint creates an admin/admin user"
|
||||
echo "[WARNING] it should only be used for lightweight testing/validation"
|
||||
|
||||
# Create an admin user (you will be prompted to set username, first and last name before setting a password)
|
||||
fabmanager create-admin \
|
||||
--app superset \
|
||||
--username admin \
|
||||
--firstname admin \
|
||||
--lastname admin \
|
||||
--email admin@admin.com \
|
||||
--password admin
|
||||
|
||||
# Initialize the database
|
||||
superset db upgrade
|
||||
|
||||
# Loading examples
|
||||
superset load_examples
|
||||
|
||||
# Create default roles and permissions
|
||||
superset init
|
||||
|
||||
FLASK_ENV=development FLASK_APP=superset:app \
|
||||
flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
set -ex
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "VERSION is required to run this container"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo "version: $VERSION"
|
||||
cd /tmp
|
||||
git clone --depth 1 --branch $VERSION https://github.com/apache/incubator-superset.git
|
||||
mkdir ~/$VERSION
|
||||
cd incubator-superset && \
|
||||
git archive \
|
||||
--format=tar.gz \
|
||||
--prefix=apache-superset-incubating-$VERSION/ \
|
||||
HEAD \
|
||||
-o ~/$VERSION/apache-superset-incubating.tar.gz
|
||||
|
||||
gpg --armor --output apache-superset-incubating.tar.gz.asc --detach-sig apache-superset-incubating.tar.gz
|
||||
gpg --print-md SHA512 apache-superset-incubating.tar.gz > apache-superset-incubating.tar.gz.sha512
|
||||
188
UPDATING.md
@@ -1,190 +1,10 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
# Updating Superset
|
||||
|
||||
This file documents any backwards-incompatible changes in Superset and
|
||||
assists people when migrating to a new version.
|
||||
|
||||
## Next Version
|
||||
## Superset 0.23.0
|
||||
|
||||
* [8370](https://github.com/apache/incubator-superset/pull/8370): Deprecates
|
||||
the `HTTP_HEADERS` variable in favor of `DEFAULT_HTTP_HEADERS` and
|
||||
`OVERRIDE_HTTP_HEADERS`. To retain the same behavior you should use
|
||||
`OVERRIDE_HTTP_HEADERS` instead of `HTTP_HEADERS`. `HTTP_HEADERS` will still
|
||||
work but may be removed in a future update.
|
||||
|
||||
* We're deprecating the concept of "restricted metric", this feature
|
||||
was not fully working anyhow.
|
||||
* [8117](https://github.com/apache/incubator-superset/pull/8117): If you are
|
||||
using `ENABLE_PROXY_FIX = True`, review the newly-introducted variable,
|
||||
`PROXY_FIX_CONFIG`, which changes the proxy behavior in accordance with
|
||||
[Werkzeug](https://werkzeug.palletsprojects.com/en/0.15.x/middleware/proxy_fix/)
|
||||
|
||||
* [8069](https://github.com/apache/incubator-superset/pull/8069): introduces
|
||||
[MessagePack](https://github.com/msgpack/msgpack-python) and
|
||||
[PyArrow](https://arrow.apache.org/docs/python/) for async query results
|
||||
backend serialization. To disable set `RESULTS_BACKEND_USE_MSGPACK = False`
|
||||
in your configuration.
|
||||
|
||||
* [8371](https://github.com/apache/incubator-superset/pull/8371): makes
|
||||
`tables.table_name`, `dbs.database_name`, `datasources.cluster_name`, and `clusters.cluster_name` non-nullable.
|
||||
Depending on the integrity of the data, manual intervention may be required.
|
||||
|
||||
## 0.34.0
|
||||
|
||||
* [7848](https://github.com/apache/incubator-superset/pull/7848): If you are
|
||||
running redis with celery, celery bump to 4.3.0 requires redis-py upgrade to
|
||||
3.2.0 or later.
|
||||
|
||||
* [7667](https://github.com/apache/incubator-superset/pull/7667): a change to
|
||||
make all Unix timestamp (which by definition are in UTC) comparisons refer
|
||||
to a timestamp in UTC as opposed to local time.
|
||||
|
||||
* [7653](https://github.com/apache/incubator-superset/pull/7653): a change
|
||||
which deprecates the table_columns.database_expression column. Expressions
|
||||
should be handled by the DB engine spec conversion, Python date format, or
|
||||
custom column expression/type.
|
||||
|
||||
* The repo no longer contains translation binaries (`.mo`) files. If you
|
||||
want translations in your build, you now have to run the command
|
||||
`babel-compile --target superset/translations` as part of your builds
|
||||
* [5451](https://github.com/apache/incubator-superset/pull/5451): a change
|
||||
which adds missing non-nullable fields to the `datasources` table. Depending on
|
||||
the integrity of the data, manual intervention may be required.
|
||||
|
||||
* [5452](https://github.com/apache/incubator-superset/pull/5452): a change
|
||||
which adds missing non-nullable fields and uniqueness constraints (which may be
|
||||
case insensitive depending on your database configuration) to the `columns`and
|
||||
`table_columns` tables. Depending on the integrity of the data, manual
|
||||
intervention may be required.
|
||||
* `fabmanager` command line is deprecated since Flask-AppBuilder 2.0.0, use
|
||||
the new `flask fab <command>` integrated with *Flask cli*.
|
||||
* `SUPERSET_UPDATE_PERMS` environment variable was replaced by
|
||||
`FAB_UPDATE_PERMS` config boolean key. To disable automatic
|
||||
creation of permissions set `FAB_UPDATE_PERMS = False` on config.
|
||||
* [5453](https://github.com/apache/incubator-superset/pull/5453): a change
|
||||
which adds missing non-nullable fields and uniqueness constraints (which may be
|
||||
case insensitive depending on your database configuration) to the metrics
|
||||
and sql_metrics tables. Depending on the integrity of the data, manual
|
||||
intervention may be required.
|
||||
* [7616](https://github.com/apache/incubator-superset/pull/7616): this bug fix
|
||||
changes time_compare deltas to correctly evaluate to the number of days prior
|
||||
instead of number of days in the future. It will change the data for advanced
|
||||
analytics time_compare so `1 year` from 5/1/2019 will be calculated as 365 days
|
||||
instead of 366 days.
|
||||
|
||||
## Superset 0.32.0
|
||||
|
||||
* `npm run backend-sync` is deprecated and no longer needed, will fail if called
|
||||
* [5445](https://github.com/apache/incubator-superset/pull/5445): a change
|
||||
which prevents encoding of empty string from form data in the database.
|
||||
This involves a non-schema changing migration which does potentially impact
|
||||
a large number of records. Scheduled downtime may be advised.
|
||||
|
||||
## Superset 0.31.0
|
||||
|
||||
* If you use `Hive` or `Presto`, we've moved some dependencies that were
|
||||
in the main package as optional now. To get these packages,
|
||||
run `pip install superset[presto]` and/or `pip install superset[hive]` as
|
||||
required.
|
||||
|
||||
* Similarly, if you use Celery's `flower`, `gsheetsdb`, `thrift` or
|
||||
`thrift-sasl`, those dependencies have now been made optional in our
|
||||
package, meaning you may have to install them in your environment post
|
||||
0.31.0
|
||||
|
||||
* boto3 / botocore was removed from the dependency list. If you use s3
|
||||
as a place to store your SQL Lab result set or Hive uploads, you may
|
||||
have to rely on an alternate requirements.txt file to install those
|
||||
dependencies.
|
||||
* From 0.31.0 onwards, we recommend not using the npm package `yarn` in
|
||||
favor of good old `npm install`. While yarn should still work just fine,
|
||||
you should probably align to guarantee builds similar to the ones we
|
||||
use in testing and across the community in general.
|
||||
|
||||
## Superset 0.30.0
|
||||
* 0.30.0 includes a db_migration that removes allow_run_sync. This may
|
||||
require downtime because during the migration if the db is migrated first,
|
||||
superset will get 500 errors when the code can't find the field (until
|
||||
the deploy finishes).
|
||||
|
||||
## Superset 0.29.0
|
||||
* India was removed from the "Country Map" visualization as the geojson
|
||||
file included in the package was very large
|
||||
|
||||
## Superset 0.28.0
|
||||
* Support for Python 2 is deprecated, we only support >=3.6 from
|
||||
`0.28.0` onwards
|
||||
|
||||
* Superset 0.28 deprecates the previous dashboard layout. While 0.27
|
||||
offered a migration workflow to users and allowed them to validate and
|
||||
publish their migrated dashboards individually, 0.28 forces
|
||||
the migration of all
|
||||
dashboards through an automated db migration script. We
|
||||
do recommend that you take a backup prior to this migration.
|
||||
|
||||
* Superset 0.28 deprecates the `median` cluster label aggregator for mapbox visualizations. This particular aggregation is not supported on mapbox visualizations going forward.
|
||||
|
||||
* Superset 0.28 upgrades `flask-login` to `>=0.3`, which includes a
|
||||
backwards-incompatible change: `g.user.is_authenticated`,
|
||||
`g.user.is_anonymous`, and `g.user.is_active` are now properties
|
||||
instead of methods.
|
||||
|
||||
## Superset 0.27.0
|
||||
* Superset 0.27 start to use nested layout for dashboard builder, which is not
|
||||
backward-compatible with earlier dashboard grid data. We provide migration script
|
||||
to automatically convert dashboard grid to nested layout data. To be safe, please
|
||||
take a database backup prior to this upgrade. It's the only way people could go
|
||||
back to a previous state.
|
||||
|
||||
|
||||
## Superset 0.26.0
|
||||
* Superset 0.26.0 deprecates the `superset worker` CLI, which is a simple
|
||||
wrapper around the `celery worker` command, forcing you into crafting
|
||||
your own native `celery worker` command. Your command should look something
|
||||
like `celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair`
|
||||
|
||||
## Superset 0.25.0
|
||||
Superset 0.25.0 contains a backwards incompatible changes.
|
||||
If you run a production system you should schedule downtime for this
|
||||
upgrade.
|
||||
|
||||
The PRs bellow have more information around the breaking changes:
|
||||
* [4587](https://github.com/apache/incubator-superset/pull/4587) : a backward
|
||||
incompatible database migration that requires downtime. Once the
|
||||
db migration succeeds, the web server needs to be restarted with the
|
||||
new version. The previous version will fail
|
||||
* [4565](https://github.com/apache/incubator-superset/pull/4565) : we've
|
||||
changed the security model a bit where in the past you would have to
|
||||
define your authentication scheme by inheriting from Flask
|
||||
App Builder's
|
||||
`from flask_appbuilder.security.sqla.manager import SecurityManager`,
|
||||
you now have to derive Superset's
|
||||
own derivative `superset.security.SupersetSecurityManager`. This
|
||||
can provide you with more hooks to define your own logic and/or defer
|
||||
permissions to another system as needed. For all implementation, you
|
||||
simply have to import and derive `SupersetSecurityManager` in place
|
||||
of the `SecurityManager`
|
||||
* [4835](https://github.com/apache/incubator-superset/pull/4835) :
|
||||
our `setup.py` now only pins versions where required, giving you
|
||||
more latitude in using versions of libraries as needed. We do now
|
||||
provide a `requirements.txt` with pinned versions if you want to run
|
||||
the suggested versions that `Superset` builds and runs tests against.
|
||||
Simply `pip install -r requirements.txt` in your build pipeline, likely
|
||||
prior to `pip install superset==0.25.0`
|
||||
* [4565](https://github.com/apache/incubator-superset/pull/4565)
|
||||
* [4587](https://github.com/apache/incubator-superset/pull/4587)
|
||||
* [4835](https://github.com/apache/incubator-superset/pull/4835)
|
||||
|
||||
17
alembic.ini
@@ -1,20 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# A generic, single database configuration.
|
||||
|
||||
[alembic]
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
COMPOSE_PROJECT_NAME=superset
|
||||
@@ -1,72 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
FROM python:3.6-jessie
|
||||
|
||||
RUN useradd --user-group --create-home --no-log-init --shell /bin/bash superset
|
||||
|
||||
# Configure environment
|
||||
ENV LANG=C.UTF-8 \
|
||||
LC_ALL=C.UTF-8
|
||||
|
||||
RUN apt-get update -y
|
||||
|
||||
# Install dependencies to fix `curl https support error` and `elaying package configuration warning`
|
||||
RUN apt-get install -y apt-transport-https apt-utils
|
||||
|
||||
# Install superset dependencies
|
||||
# https://superset.incubator.apache.org/installation.html#os-dependencies
|
||||
RUN apt-get install -y build-essential libssl-dev \
|
||||
libffi-dev python3-dev libsasl2-dev libldap2-dev libxi-dev
|
||||
|
||||
# Install extra useful tool for development
|
||||
RUN apt-get install -y vim less postgresql-client redis-tools
|
||||
|
||||
# Install nodejs for custom build
|
||||
# https://superset.incubator.apache.org/installation.html#making-your-own-build
|
||||
# https://nodejs.org/en/download/package-manager/
|
||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
|
||||
&& apt-get install -y nodejs
|
||||
|
||||
WORKDIR /home/superset
|
||||
|
||||
COPY requirements.txt .
|
||||
COPY requirements-dev.txt .
|
||||
COPY contrib/docker/requirements-extra.txt .
|
||||
|
||||
RUN pip install --upgrade setuptools pip \
|
||||
&& pip install -r requirements.txt -r requirements-dev.txt -r requirements-extra.txt \
|
||||
&& rm -rf /root/.cache/pip
|
||||
|
||||
COPY --chown=superset:superset superset superset
|
||||
|
||||
ENV PATH=/home/superset/superset/bin:$PATH \
|
||||
PYTHONPATH=/home/superset/superset/:$PYTHONPATH
|
||||
|
||||
USER superset
|
||||
|
||||
RUN cd superset/assets \
|
||||
&& npm ci \
|
||||
&& npm run build \
|
||||
&& rm -rf node_modules
|
||||
|
||||
COPY contrib/docker/docker-init.sh .
|
||||
COPY contrib/docker/docker-entrypoint.sh /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
HEALTHCHECK CMD ["curl", "-f", "http://localhost:8088/health"]
|
||||
|
||||
EXPOSE 8088
|
||||
@@ -1,58 +0,0 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# Getting Started with Superset using Docker
|
||||
|
||||
Docker is an easy way to get started with Superset.
|
||||
|
||||
## Initializing Database
|
||||
|
||||
To initialize the database with a user and example charts, dashboards and datasets run:
|
||||
|
||||
```bash
|
||||
docker-compose run -e SUPERSET_LOAD_EXAMPLES=yes --rm superset ./docker-init.sh
|
||||
```
|
||||
|
||||
This may take a minute.
|
||||
|
||||
## Normal Operation
|
||||
|
||||
To run the container, simply run:
|
||||
|
||||
```bash
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
After several minutes for superset initialization to finish, you can open a browser and view [`http://localhost:8088`](http://localhost:8088)
|
||||
to start your journey.
|
||||
|
||||
## Developing
|
||||
|
||||
While running, the container server will reload on modification of the superset python and javascript source code.
|
||||
Don't forget to reload the page to take the new frontend into account though.
|
||||
|
||||
## Production
|
||||
|
||||
It is also possible to run Superset in non-development mode: in the `docker-compose.yml` file remove
|
||||
the volumes needed for development and change the variable `SUPERSET_ENV` to `production`.
|
||||
|
||||
## Resource Constraints
|
||||
|
||||
If you are attempting to build on a Mac and it exits with 137 you need to increase your docker resources.
|
||||
OSX instructions: https://docs.docker.com/docker-for-mac/#advanced (Search for memory)
|
||||
@@ -1,71 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
version: '2'
|
||||
services:
|
||||
redis:
|
||||
image: redis:3.2
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:6379:6379"
|
||||
volumes:
|
||||
- redis:/data
|
||||
|
||||
postgres:
|
||||
image: postgres:10
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: superset
|
||||
POSTGRES_PASSWORD: superset
|
||||
POSTGRES_USER: superset
|
||||
ports:
|
||||
- "127.0.0.1:5432:5432"
|
||||
volumes:
|
||||
- postgres:/var/lib/postgresql/data
|
||||
|
||||
superset:
|
||||
build:
|
||||
context: ../../
|
||||
dockerfile: contrib/docker/Dockerfile
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: superset
|
||||
POSTGRES_USER: superset
|
||||
POSTGRES_PASSWORD: superset
|
||||
POSTGRES_HOST: postgres
|
||||
POSTGRES_PORT: 5432
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
# If using production, comment development volume below
|
||||
#SUPERSET_ENV: production
|
||||
SUPERSET_ENV: development
|
||||
user: root:root
|
||||
ports:
|
||||
- 8088:8088
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
volumes:
|
||||
# this is needed to communicate with the postgres and redis services
|
||||
- ./superset_config.py:/home/superset/superset/superset_config.py
|
||||
# this is needed for development, remove with SUPERSET_ENV=production
|
||||
- ../../superset:/home/superset/superset
|
||||
|
||||
volumes:
|
||||
postgres:
|
||||
external: false
|
||||
redis:
|
||||
external: false
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
set -ex
|
||||
|
||||
if [ "$#" -ne 0 ]; then
|
||||
exec "$@"
|
||||
elif [ "$SUPERSET_ENV" = "development" ]; then
|
||||
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair &
|
||||
# needed by superset runserver
|
||||
(cd superset/assets/ && npm ci)
|
||||
(cd superset/assets/ && npm run dev) &
|
||||
FLASK_ENV=development FLASK_APP=superset:app flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
|
||||
elif [ "$SUPERSET_ENV" = "production" ]; then
|
||||
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair &
|
||||
exec gunicorn --bind 0.0.0.0:8088 \
|
||||
--workers $((2 * $(getconf _NPROCESSORS_ONLN) + 1)) \
|
||||
--timeout 60 \
|
||||
--limit-request-line 0 \
|
||||
--limit-request-field_size 0 \
|
||||
superset:app
|
||||
else
|
||||
superset --help
|
||||
fi
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
set -ex
|
||||
|
||||
# Create an admin user (you will be prompted to set username, first and last name before setting a password)
|
||||
export FLASK_APP=superset:app
|
||||
flask fab create-admin
|
||||
|
||||
# Initialize the database
|
||||
superset db upgrade
|
||||
|
||||
if [ "$SUPERSET_LOAD_EXAMPLES" = "yes" ]; then
|
||||
# Load some data to play with
|
||||
superset load_examples
|
||||
fi
|
||||
|
||||
# Create default roles and permissions
|
||||
superset init
|
||||
@@ -1,17 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
gevent==1.4.0
|
||||
@@ -1,58 +0,0 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import os
|
||||
|
||||
|
||||
def get_env_variable(var_name, default=None):
|
||||
"""Get the environment variable or raise exception."""
|
||||
try:
|
||||
return os.environ[var_name]
|
||||
except KeyError:
|
||||
if default is not None:
|
||||
return default
|
||||
else:
|
||||
error_msg = 'The environment variable {} was missing, abort...'\
|
||||
.format(var_name)
|
||||
raise EnvironmentError(error_msg)
|
||||
|
||||
|
||||
POSTGRES_USER = get_env_variable('POSTGRES_USER')
|
||||
POSTGRES_PASSWORD = get_env_variable('POSTGRES_PASSWORD')
|
||||
POSTGRES_HOST = get_env_variable('POSTGRES_HOST')
|
||||
POSTGRES_PORT = get_env_variable('POSTGRES_PORT')
|
||||
POSTGRES_DB = get_env_variable('POSTGRES_DB')
|
||||
|
||||
# The SQLAlchemy connection string.
|
||||
SQLALCHEMY_DATABASE_URI = 'postgresql://%s:%s@%s:%s/%s' % (POSTGRES_USER,
|
||||
POSTGRES_PASSWORD,
|
||||
POSTGRES_HOST,
|
||||
POSTGRES_PORT,
|
||||
POSTGRES_DB)
|
||||
|
||||
REDIS_HOST = get_env_variable('REDIS_HOST')
|
||||
REDIS_PORT = get_env_variable('REDIS_PORT')
|
||||
|
||||
|
||||
class CeleryConfig(object):
|
||||
BROKER_URL = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT)
|
||||
CELERY_IMPORTS = ('superset.sql_lab', )
|
||||
CELERY_RESULT_BACKEND = 'redis://%s:%s/1' % (REDIS_HOST, REDIS_PORT)
|
||||
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
|
||||
CELERY_TASK_PROTOCOL = 1
|
||||
|
||||
|
||||
CELERY_CONFIG = CeleryConfig
|
||||
@@ -1,19 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
@@ -25,7 +9,7 @@ BUILDDIR = _build
|
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from https://sphinx-doc.org/)
|
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||
endif
|
||||
|
||||
# Internal variables.
|
||||
|
||||
18
docs/_static/docs.css
vendored
@@ -1,21 +1,3 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
body {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
95
docs/_templates/layout.html
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
{% extends "!layout.html" %}
|
||||
|
||||
{% set bootswatch_css_custom = ['_static/docs.css'] %}
|
||||
|
||||
{%- block content %}
|
||||
{{ navBar() }}
|
||||
{% if pagename == 'index' %}
|
||||
<div id="carousel" class="carousel slide" data-ride="carousel">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators">
|
||||
<li data-target="#carousel" data-slide-to="0" class="active"></li>
|
||||
<li data-target="#carousel" data-slide-to="1"></li>
|
||||
<li data-target="#carousel" data-slide-to="2"></li>
|
||||
<li data-target="#carousel" data-slide-to="3"></li>
|
||||
<li data-target="#carousel" data-slide-to="4"></li>
|
||||
</ol>
|
||||
|
||||
<!-- Wrapper for slides -->
|
||||
<div class="carousel-inner" role="listbox">
|
||||
<div class="item active text-center">
|
||||
<img src="_static/img/dash.png">
|
||||
<div class="carousel-caption">
|
||||
<div>
|
||||
<h1>Superset</h1>
|
||||
<p>
|
||||
an open source data visualization platform
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="_static/img/bubble.png">
|
||||
<div class="carousel-caption">
|
||||
<h2>Explore your data
|
||||
</h2>
|
||||
<p>
|
||||
Intuitively navigate your data while slicing, dicing, and
|
||||
visualizing through a rich set of widgets
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="_static/img/dash.png">
|
||||
<div class="carousel-caption">
|
||||
<h2>Create and share dashboards</h2>
|
||||
<p>Assemble many data visualization "slices" into a rich collection</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="_static/img/cloud.png">
|
||||
<div class="carousel-caption">
|
||||
<h2>Extend</h2>
|
||||
<p>Join the community and take part in extending the widget library</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="_static/img/servers.jpg">
|
||||
<div class="carousel-caption">
|
||||
<h2>Connect</h2>
|
||||
<p>
|
||||
Access data from MySql, Presto.db, Postgres, RedShift, Oracle, MsSql,
|
||||
SQLite, and more through the SqlAlchemy integration. You can also
|
||||
query realtime data blazingly fast out of Druid.io
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Controls -->
|
||||
<div>
|
||||
<a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
|
||||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||||
<span class="sr-only">Previous</span>
|
||||
</a>
|
||||
<a class="right carousel-control" href="#carousel" role="button" data-slide="next">
|
||||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||
<span class="sr-only">Next</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="container">
|
||||
<div class="jumbotron">
|
||||
<h1>Superset</h1>
|
||||
<p>
|
||||
is an open source data visualization platform that provides easy
|
||||
exploration of your data and allows you to create and share
|
||||
beautiful charts and dashboards
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="container mainbody">
|
||||
{% block body %}{% endblock %}
|
||||
</div>
|
||||
{%- endblock %}
|
||||
@@ -1,20 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
rm -rf _build
|
||||
make html
|
||||
#cp -r ../superset/assets/images/ _build/html/_static/img/
|
||||
|
||||
28
docs/conf.py
@@ -1,19 +1,5 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# superset documentation build configuration file, created by
|
||||
# sphinx-quickstart on Thu Dec 17 15:42:06 2015.
|
||||
#
|
||||
@@ -47,7 +33,7 @@ import sphinx_rtd_theme
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.viewcode',
|
||||
'sphinx_autodoc_typehints',
|
||||
'sphinxcontrib.youtube',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
@@ -66,8 +52,8 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = "Apache Superset"
|
||||
copyright = 'Copyright © 2019 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.'
|
||||
author = u'Apache Superset Dev'
|
||||
copyright = 'Apache Software Foundation'
|
||||
author = u'Maxime Beauchemin'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -147,7 +133,7 @@ html_theme_options = {}
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
# html_logo = "images/s.png"
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
@@ -192,7 +178,7 @@ html_static_path = ['_static']
|
||||
html_show_sourcelink = False
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
html_show_sphinx = False
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
html_show_copyright = False
|
||||
@@ -243,7 +229,7 @@ latex_elements = {
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'superset.tex', u'Superset Documentation',
|
||||
u'Apache Superset Dev', 'manual'),
|
||||
u'Maxime Beauchemin', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
|
||||
@@ -1,36 +1,19 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Druid
|
||||
=====
|
||||
|
||||
Superset has a native connector to Druid and a majority of Druid's
|
||||
Superset has a native connector to Druid, and a majority of Druid's
|
||||
features are accessible through Superset.
|
||||
|
||||
.. note ::
|
||||
Druid now supports SQL and can be accessed through Superset's
|
||||
SQLAlchemy connector. The long-term vision is to deprecate
|
||||
SQLAlchemy connector. The long term vision is to deprecate
|
||||
the Druid native REST connector and query Druid exclusively through
|
||||
the SQL interface.
|
||||
|
||||
Aggregations
|
||||
------------
|
||||
|
||||
Common aggregations or Druid metrics can be defined and used in Superset.
|
||||
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
|
||||
datasource's edit view (``Sources -> Druid Datasources ->
|
||||
[your datasource] -> Edit -> [tab] List Druid Column``).
|
||||
@@ -38,8 +21,8 @@ Clicking the ``GroupBy`` and ``Filterable`` checkboxes will make the column
|
||||
appear in the related dropdowns while in explore view. Checking
|
||||
``Count Distinct``, ``Min``, ``Max`` or ``Sum`` will result in creating
|
||||
new metrics that will appear in the ``List Druid Metric`` tab upon saving the
|
||||
datasource. By editing these metrics, you'll notice that their ``json``
|
||||
element corresponds to Druid aggregation definition. You can create your own
|
||||
datasource. By editing these metrics, you'll notice that they their ``json``
|
||||
element correspond to Druid aggregation definition. You can create your own
|
||||
aggregations manually from the ``List Druid Metric`` tab following Druid
|
||||
documentation.
|
||||
|
||||
@@ -50,7 +33,7 @@ Post-Aggregations
|
||||
-----------------
|
||||
|
||||
Druid supports post aggregation and this works in Superset. All you have to
|
||||
do is create 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
|
||||
json post-aggregation definition (as specified in the Druid docs) in the
|
||||
Json field.
|
||||
|
||||
83
docs/faq.rst
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
FAQ
|
||||
===
|
||||
|
||||
@@ -105,7 +88,7 @@ It's easy: use the ``Filter Box`` widget, build a slice, and add it to your
|
||||
dashboard.
|
||||
|
||||
The ``Filter Box`` widget allows you to define a query to populate dropdowns
|
||||
that can be used for filtering. To build the list of distinct values, we
|
||||
that can be use for filtering. To build the list of distinct values, we
|
||||
run a query, and sort the result by the metric you provide, sorting
|
||||
descending.
|
||||
|
||||
@@ -131,8 +114,8 @@ never be affected by any dashboard level filtering.
|
||||
"filter_immune_slices": [324, 65, 92],
|
||||
"expanded_slices": {},
|
||||
"filter_immune_slice_fields": {
|
||||
"177": ["country_name", "__time_range"],
|
||||
"32": ["__time_range"]
|
||||
"177": ["country_name", "__from", "__to"],
|
||||
"32": ["__from", "__to"]
|
||||
},
|
||||
"timed_refresh_immune_slices": [324]
|
||||
}
|
||||
@@ -144,8 +127,8 @@ Now note the ``filter_immune_slice_fields`` key. This one allows you to
|
||||
be more specific and define for a specific slice_id, which filter fields
|
||||
should be disregarded.
|
||||
|
||||
Note the use of the ``__time_range`` keyword, which is reserved for dealing
|
||||
with the time boundary filtering mentioned above.
|
||||
Note the use of the ``__from`` and ``__to`` keywords, those are reserved
|
||||
for dealing with the time boundary filtering mentioned above.
|
||||
|
||||
But what happens with filtering when dealing with slices coming from
|
||||
different tables or databases? If the column name is shared, the filter will
|
||||
@@ -186,8 +169,8 @@ by setting the ``stagger_refresh`` to ``false`` and modify the stagger period by
|
||||
Here, the entire dashboard will refresh at once if periodic refresh is on. The stagger time of
|
||||
2.5 seconds is ignored.
|
||||
|
||||
Why does 'flask fab' or superset freezed/hung/not responding when started (my home directory is NFS mounted)?
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
By default, superset creates and uses an sqlite database at ``~/.superset/superset.db``. Sqlite is known to `don't work well if used on NFS`__ due to broken file locking implementation on NFS.
|
||||
|
||||
__ https://www.sqlite.org/lockingv3.html
|
||||
@@ -263,55 +246,3 @@ labels to colors in the ``JSON Metadata`` attribute using the
|
||||
"Boys": "#ADD8E6"
|
||||
}
|
||||
}
|
||||
|
||||
Does Superset work with [insert database engine here]?
|
||||
------------------------------------------------------
|
||||
|
||||
The community over time has curated a list of databases that work well with
|
||||
Superset in the :ref:`ref_database_deps` section of the docs. Database
|
||||
engines not listed in this page may work too. We rely on the
|
||||
community to contribute to this knowledge base.
|
||||
|
||||
.. _SQLAlchemy dialect: https://docs.sqlalchemy.org/en/latest/dialects/
|
||||
.. _DBAPI driver: https://www.python.org/dev/peps/pep-0249/
|
||||
|
||||
For a database engine to be supported in Superset through the
|
||||
SQLAlchemy connector, it requires having a Python compliant
|
||||
`SQLAlchemy dialect`_ as well as a
|
||||
`DBAPI driver`_ defined.
|
||||
Database that have limited SQL support may
|
||||
work as well. For instance it's possible to connect
|
||||
to Druid through the SQLAlchemy connector even though Druid does not support
|
||||
joins and subqueries. Another key element for a database to be supported is through
|
||||
the Superset `Database Engine Specification
|
||||
<https://github.com/apache/incubator-superset/blob/master/superset/db_engine_specs.py>`_
|
||||
interface. This interface allows for defining database-specific configurations
|
||||
and logic
|
||||
that go beyond the SQLAlchemy and DBAPI scope. This includes features like:
|
||||
|
||||
|
||||
* date-related SQL function that allow Superset to fetch different
|
||||
time granularities when running time-series queries
|
||||
* whether the engine supports subqueries. If false, Superset may run 2-phase
|
||||
queries to compensate for the limitation
|
||||
* methods around processing logs and inferring the percentage of completion
|
||||
of a query
|
||||
* technicalities as to how to handle cursors and connections if the driver
|
||||
is not standard DBAPI
|
||||
* more, read the code for more details
|
||||
|
||||
Beyond the SQLAlchemy connector, it's also possible, though much more
|
||||
involved, to extend Superset and write
|
||||
your own connector. The only example of this at the moment is the Druid
|
||||
connector, which is getting superseded by Druid's growing SQL support and
|
||||
the recent availability of a DBAPI and SQLAlchemy driver. If the database
|
||||
you are considering integrating has any kind of of SQL support, it's probably
|
||||
preferable to go the SQLAlchemy route. Note that for a native connector to
|
||||
be possible the database needs to have support for running OLAP-type queries
|
||||
and should be able to things that are typical in basic SQL:
|
||||
|
||||
- aggregate data
|
||||
- apply filters (==, !=, >, <, >=, <=, IN, ...)
|
||||
- apply HAVING-type filters
|
||||
- be schema-aware, expose columns and types
|
||||
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Visualizations Gallery
|
||||
======================
|
||||
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Importing and Exporting Datasources
|
||||
===================================
|
||||
|
||||
@@ -66,7 +49,7 @@ By default, default (null) values will be omitted. Use the ``-d`` flag to includ
|
||||
If you want back references to be included (e.g. a column to include the table id
|
||||
it belongs to) use the ``-b`` flag.
|
||||
|
||||
Alternatively, you can export datasources using the UI:
|
||||
Alternatively you can export datasources using the UI:
|
||||
|
||||
1. Open **Sources** -> **Databases** to export all tables associated to a
|
||||
single or multiple databases. (**Tables** for one or more tables,
|
||||
@@ -112,7 +95,7 @@ those would be synchronised as well.
|
||||
|
||||
|
||||
If you don't supply the sync flag (``-s``) importing will only add and update (override) fields.
|
||||
E.g. you can add a ``verbose_name`` to the column ``ds`` in the table ``random_time_series`` from the example datasets
|
||||
E.g. you can add a ``verbose_name`` to the the column ``ds`` in the table ``random_time_series`` from the example datasets
|
||||
by saving the following YAML to file and then running the ``import_datasources`` command. ::
|
||||
|
||||
databases:
|
||||
|
||||
@@ -1,29 +1,4 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
|apache_img| |superset_img|
|
||||
|
||||
.. |apache_img| image:: images/apache_feather.png
|
||||
:width: 7%
|
||||
:target: http://www.apache.org/
|
||||
:alt: The Apache Software Foundation
|
||||
|
||||
.. |superset_img| image:: images/s.png
|
||||
:width: 25%
|
||||
.. image:: images/s.png
|
||||
|
||||
Apache Superset (incubating)
|
||||
''''''''''''''''''''''''''''
|
||||
@@ -34,6 +9,9 @@ intelligence web application
|
||||
|
||||
----------------
|
||||
|
||||
.. warning:: This project was originally named Panoramix, was renamed to
|
||||
Caravel in March 2016, and is currently named Superset as of November 2016
|
||||
|
||||
.. important::
|
||||
|
||||
**Disclaimer**: Apache Superset is an effort undergoing incubation at The
|
||||
@@ -46,32 +24,6 @@ intelligence web application
|
||||
the code, it does indicate that the project has yet to be fully
|
||||
endorsed by the ASF.
|
||||
|
||||
.. note:: Apache Superset, Superset, Apache, the Apache feather logo, and
|
||||
the Apache Superset project logo are either registered trademarks or
|
||||
trademarks of The Apache Software Foundation in the United States
|
||||
and other countries.
|
||||
|
||||
Superset Resources
|
||||
==================
|
||||
- `Superset's Github <https://github.com/apache/incubator-superset>`_, note
|
||||
that `we use Github for issue tracking <https://github.com/apache/incubator-superset/issues>`_
|
||||
- Superset's
|
||||
`contribution guidelines <https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md>`_
|
||||
and
|
||||
`code of conduct <https://github.com/apache/incubator-superset/blob/master/CODE_OF_CONDUCT.md>`_
|
||||
on Github.
|
||||
- Our `mailing list archives <https://lists.apache.org/list.html?dev@superset.apache.org>`_.
|
||||
To subscribe, send an email to ``dev-subscribe@superset.apache.org``
|
||||
- `Join our Slack <https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU>`_
|
||||
|
||||
Apache Software Foundation Resources
|
||||
====================================
|
||||
- `The Apache Software Foundation Website <http://www.apache.org>`_
|
||||
- `Current Events <http://www.apache.org/events/current-event>`_
|
||||
- `License <https://www.apache.org/licenses/>`_
|
||||
- `Thanks <https://www.apache.org/foundation/thanks.html>`_ to the ASF's sponsors
|
||||
- `Sponsor Apache! <http://www.apache.org/foundation/sponsorship.html>`_
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
@@ -93,39 +45,6 @@ Features
|
||||
- Integration with most SQL-speaking RDBMS through SQLAlchemy
|
||||
- Deep integration with Druid.io
|
||||
|
||||
Databases
|
||||
---------
|
||||
|
||||
The following RDBMS are currently supported:
|
||||
|
||||
- `Amazon Athena <https://aws.amazon.com/athena/>`_
|
||||
- `Amazon Redshift <https://aws.amazon.com/redshift/>`_
|
||||
- `Apache Drill <https://drill.apache.org/>`_
|
||||
- `Apache Druid <http://druid.io/>`_
|
||||
- `Apache Hive <https://hive.apache.org/>`_
|
||||
- `Apache Impala <https://impala.apache.org/>`_
|
||||
- `Apache Kylin <http://kylin.apache.org/>`_
|
||||
- `Apache Pinot <https://pinot.incubator.apache.org/>`_
|
||||
- `Apache Spark SQL <https://spark.apache.org/sql/>`_
|
||||
- `BigQuery <https://cloud.google.com/bigquery/>`_
|
||||
- `ClickHouse <https://clickhouse.yandex/>`_
|
||||
- `Exasol <https://www.exasol.com/>`_
|
||||
- `Google Sheets <https://www.google.com/sheets/about/>`_
|
||||
- `Greenplum <https://greenplum.org/>`_
|
||||
- `IBM Db2 <https://www.ibm.com/analytics/db2/>`_
|
||||
- `MySQL <https://www.mysql.com/>`_
|
||||
- `Oracle <https://www.oracle.com/database/>`_
|
||||
- `PostgreSQL <https://www.postgresql.org/>`_
|
||||
- `Presto <http://prestodb.github.io/>`_
|
||||
- `Snowflake <https://www.snowflake.com/>`_
|
||||
- `SQLite <https://www.sqlite.org/>`_
|
||||
- `SQL Server <https://www.microsoft.com/en-us/sql-server/>`_
|
||||
- `Teradata <https://www.teradata.com/>`_
|
||||
- `Vertica <https://www.vertica.com/>`_
|
||||
|
||||
Other database engines with a proper DB-API driver and SQLAlchemy dialect should
|
||||
be supported as well.
|
||||
|
||||
Screenshots
|
||||
-----------
|
||||
|
||||
@@ -168,3 +87,4 @@ Indices and tables
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
sphinx==2.1.2
|
||||
sphinx_autodoc_typehints==1.6.0
|
||||
sphinx-rtd-theme==0.4.3
|
||||
sphinx==1.7.1
|
||||
sphinx-rtd-theme==0.2.4
|
||||
sphinxcontrib.youtube==0.1.2
|
||||
|
||||
@@ -1,27 +1,10 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Security
|
||||
========
|
||||
Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
|
||||
"Simple and rapid application development framework, built on top of Flask.".
|
||||
FAB provides authentication, user management, permissions and roles.
|
||||
Please read its `Security documentation
|
||||
<https://flask-appbuilder.readthedocs.io/en/latest/security.html>`_.
|
||||
Please read its `Security documentation
|
||||
<http://flask-appbuilder.readthedocs.io/en/latest/security.html>`_.
|
||||
|
||||
Provided Roles
|
||||
--------------
|
||||
@@ -35,7 +18,7 @@ their original values as you run your next ``superset init`` command.
|
||||
Since it's not recommended to alter the roles described here, it's right
|
||||
to assume that your security strategy should be to compose user access based
|
||||
on these base roles and roles that you create. For instance you could
|
||||
create a role ``Financial Analyst`` that would be made of a set of permissions
|
||||
create a role ``Financial Analyst`` that would be made of set of permissions
|
||||
to a set of data sources (tables) and/or databases. Users would then be
|
||||
granted ``Gamma``, ``Financial Analyst``, and perhaps ``sql_lab``.
|
||||
|
||||
@@ -46,13 +29,13 @@ other users and altering other people's slices and dashboards.
|
||||
|
||||
Alpha
|
||||
"""""
|
||||
Alpha users have access to all data sources, but they cannot grant or revoke access
|
||||
Alpha have access to all data sources, but they cannot grant or revoke access
|
||||
from other users. They are also limited to altering the objects that they
|
||||
own. Alpha users can add and alter data sources.
|
||||
|
||||
Gamma
|
||||
"""""
|
||||
Gamma users have limited access. They can only consume data coming from data sources
|
||||
Gamma have limited access. They can only consume data coming from data sources
|
||||
they have been given access to through another complementary role.
|
||||
They only have access to view the slices and
|
||||
dashboards made from data sources that they have access to. Currently Gamma
|
||||
@@ -92,7 +75,7 @@ click the ``+`` sign.
|
||||
|
||||
This new window allows you to give this new role a name, attribute it to users
|
||||
and select the tables in the ``Permissions`` dropdown. To select the data
|
||||
sources you want to associate with this role, simply click on the dropdown
|
||||
sources you want to associate with this role, simply click in the dropdown
|
||||
and use the typeahead to search for your table names.
|
||||
|
||||
You can then confirm with your Gamma users that they see the objects
|
||||
@@ -104,12 +87,12 @@ Customizing
|
||||
|
||||
The permissions exposed by FAB are very granular and allow for a great level
|
||||
of customization. FAB creates many permissions automagically for each model
|
||||
that is created (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, Superset can expose more granular permissions like
|
||||
``all_datasource_access``.
|
||||
|
||||
We do not recommend altering the 3 base roles as there
|
||||
are a set of assumptions that Superset is built 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.
|
||||
|
||||
Permissions
|
||||
@@ -124,7 +107,8 @@ of permissions. Here are the different categories of permissions:
|
||||
so on. By adding ``can_delete on Dashboard`` to a role, and granting that
|
||||
role to a user, this user will be able to delete dashboards.
|
||||
- **Views**: views are individual web pages, like the ``explore`` view or the
|
||||
``SQL Lab`` view. When granted to a user, he/she will see that view in its menu items, and be able to load that page.
|
||||
``SQL Lab`` view. When granted to a user, he/she will see that view in
|
||||
the its menu items, and be able to load that page.
|
||||
- **Data source**: For each data source, a permission is created. If the user
|
||||
does not have the ``all_datasource_access`` permission granted, the user
|
||||
will only be able to see Slices or explore the data sources that are granted
|
||||
@@ -153,3 +137,26 @@ a set of data sources that power dashboards only made available to executives.
|
||||
When looking at its dashboard list, this user will only see the
|
||||
list of dashboards it has access to, based on the roles and
|
||||
permissions that were attributed.
|
||||
|
||||
|
||||
Restricting the access to some metrics
|
||||
""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
Sometimes some metrics are relatively sensitive (e.g. revenue).
|
||||
We may want to restrict those metrics to only a few roles.
|
||||
For example, assumed there is a metric ``[cluster1].[datasource1].[revenue]``
|
||||
and only Admin users are allowed to see it. Here’s how to restrict the access.
|
||||
|
||||
1. Edit the datasource (``Menu -> Source -> Druid datasources -> edit the
|
||||
record "datasource1"``) and go to the tab ``List Druid Metric``. Check
|
||||
the checkbox ``Is Restricted`` in the row of the metric ``revenue``.
|
||||
|
||||
2. Edit the role (``Menu -> Security -> List Roles -> edit the record
|
||||
“Admin”``), in the permissions field, type-and-search the permission
|
||||
``metric access on [cluster1].[datasource1].[revenue] (id: 1)``, then
|
||||
click the Save button on the bottom of the page.
|
||||
|
||||
Any users without the permission will see the error message
|
||||
*Access to the metrics denied: revenue (Status: 500)* in the slices.
|
||||
It also happens when the user wants to access a post-aggregation metric that
|
||||
is dependent on revenue.
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
SQL Lab
|
||||
=======
|
||||
|
||||
@@ -36,7 +19,7 @@ Feature Overview
|
||||
- Browse database metadata: tables, columns, indexes, partitions
|
||||
- Support for long-running queries
|
||||
|
||||
- uses the `Celery distributed queue <http://www.celeryproject.org/>`_
|
||||
- uses the `Celery distributed queue <http://www.python.org/>`_
|
||||
to dispatch query handling to workers
|
||||
- supports defining a "results backend" to persist query results
|
||||
|
||||
@@ -56,7 +39,7 @@ Templating with Jinja
|
||||
|
||||
SELECT *
|
||||
FROM some_table
|
||||
WHERE partition_key = '{{ presto.first_latest_partition('some_table') }}'
|
||||
WHERE partition_key = '{{ presto.latest_partition('some_table') }}'
|
||||
|
||||
Templating unleashes the power and capabilities of a
|
||||
programming language within your SQL code.
|
||||
@@ -79,21 +62,10 @@ Superset's Jinja context:
|
||||
|
||||
`Jinja's builtin filters <http://jinja.pocoo.org/docs/dev/templates/>`_ can be also be applied where needed.
|
||||
|
||||
.. autofunction:: superset.jinja_context.current_user_id
|
||||
|
||||
.. autofunction:: superset.jinja_context.current_username
|
||||
|
||||
.. autofunction:: superset.jinja_context.url_param
|
||||
|
||||
.. autofunction:: superset.jinja_context.filter_values
|
||||
|
||||
.. autofunction:: superset.jinja_context.CacheKeyWrapper.cache_key_wrapper
|
||||
|
||||
.. autoclass:: superset.jinja_context.PrestoTemplateProcessor
|
||||
:members:
|
||||
|
||||
.. autoclass:: superset.jinja_context.HiveTemplateProcessor
|
||||
:members:
|
||||
.. autofunction:: superset.jinja_context.url_param
|
||||
|
||||
Extending macros
|
||||
''''''''''''''''
|
||||
@@ -103,41 +75,3 @@ it's possible for administrators to expose more more macros in their
|
||||
environment using the configuration variable ``JINJA_CONTEXT_ADDONS``.
|
||||
All objects referenced in this dictionary will become available for users
|
||||
to integrate in their queries in **SQL Lab**.
|
||||
|
||||
Query cost estimation
|
||||
'''''''''''''''''''''
|
||||
|
||||
Some databases support ``EXPLAIN`` queries that allow users to estimate the cost
|
||||
of queries before executing this. Currently, Presto is supported in SQL Lab. To
|
||||
enable query cost estimation, add the following keys to the "Extra" field in the
|
||||
database configuration:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"version": "0.319",
|
||||
"cost_estimate_enabled": true,
|
||||
...
|
||||
}
|
||||
|
||||
Here, "version" should be the version of your Presto cluster. Support for this
|
||||
functionality was introduced in Presto 0.319.
|
||||
|
||||
.. _ref_ctas_engine_config:
|
||||
|
||||
Create Table As (CTAS)
|
||||
''''''''''''''''''''''
|
||||
|
||||
You can use ``CREATE TABLE AS SELECT ...`` statements on SQLLab. This feature can be toggled on
|
||||
and off at the database configuration level.
|
||||
|
||||
Note that since ``CREATE TABLE..`` belongs to a SQL DDL category. Specifically on PostgreSQL, DDL is transactional,
|
||||
this means that to properly use this feature you have to set ``autocommit`` to true on your engine parameters:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
...
|
||||
"engine_params": {"isolation_level":"AUTOCOMMIT"},
|
||||
...
|
||||
}
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Tutorial - Creating your first dashboard
|
||||
========================================
|
||||
|
||||
@@ -61,7 +44,7 @@ this walkthrough, you’ll only need to do **two things**:
|
||||
This example shows the connection string for our test weather database.
|
||||
As noted in the text below the URI, you should refer to the SQLAlchemy
|
||||
documentation on
|
||||
`creating new connection URIs <https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls>`_
|
||||
`creating new connection URIs <http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls>`_
|
||||
for your target database.
|
||||
|
||||
Click the **Test Connection** button to confirm things work end to end.
|
||||
@@ -248,7 +231,7 @@ You may want to do a couple more things with this measure:
|
||||
Config > List Sql Metric > Edit Metric > D3Format*)
|
||||
* Moreover, you may want to see the temperature measurements in plain degrees C,
|
||||
not tenths of a degree. Or you may want to convert the temperature to degrees
|
||||
Fahrenheit. You can change the SQL that gets executed against the database, baking
|
||||
Fahrenheit. You can change the SQL that gets executed agains the database, baking
|
||||
the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
|
||||
Metric > SQL Expression*)
|
||||
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Videos
|
||||
======
|
||||
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
.. Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
.. http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
.. Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
Visualization Tools
|
||||
===================
|
||||
|
||||
@@ -513,11 +496,11 @@ List of Countries
|
||||
+------+------------------------------------+
|
||||
|IT-PE |Pescara |
|
||||
+------+------------------------------------+
|
||||
|IT-TE |Teramo |
|
||||
|IT-TE |Teramo |
|
||||
+------+------------------------------------+
|
||||
|IT-BA |Bari |
|
||||
+------+------------------------------------+
|
||||
|IT-BT |Barletta-Andria-Trani |
|
||||
|IT-BT |Barletta-Andria-Trani |
|
||||
+------+------------------------------------+
|
||||
|IT-BR |Brindisi |
|
||||
+------+------------------------------------+
|
||||
@@ -553,283 +536,181 @@ List of Countries
|
||||
+------+------------------------------------+
|
||||
|IT-BO |Bologna |
|
||||
+------+------------------------------------+
|
||||
|IT-FE |Ferrara |
|
||||
|IT-FE |Ferrara |
|
||||
+------+------------------------------------+
|
||||
|IT-FC | Forli' - Cesena |
|
||||
+------+------------------------------------+
|
||||
|IT-MO |Modena |
|
||||
|IT-MO |Modena |
|
||||
+------+------------------------------------+
|
||||
|IT-PR |Parma |
|
||||
+------+------------------------------------+
|
||||
|IT-PC |Piacenza |
|
||||
|IT-PC |Piacenza |
|
||||
+------+------------------------------------+
|
||||
|IT-RA |Ravenna |
|
||||
|IT-RA |Ravenna |
|
||||
+------+------------------------------------+
|
||||
|IT-RE |Reggio Nell'Emilia |
|
||||
|IT-RE |Reggio Nell'Emilia |
|
||||
+------+------------------------------------+
|
||||
|IT-RN |Rimini |
|
||||
|IT-RN |Rimini |
|
||||
+------+------------------------------------+
|
||||
|IT-GO |Gorizia |
|
||||
|IT-GO |Gorizia |
|
||||
+------+------------------------------------+
|
||||
|IT-PN |Pordenone |
|
||||
|IT-PN |Pordenone |
|
||||
+------+------------------------------------+
|
||||
|IT-TS |Trieste |
|
||||
|IT-TS |Trieste |
|
||||
+------+------------------------------------+
|
||||
|IT-UD |Udine |
|
||||
|IT-UD |Udine |
|
||||
+------+------------------------------------+
|
||||
|IT-FR |Frosinone |
|
||||
|IT-FR |Frosinone |
|
||||
+------+------------------------------------+
|
||||
|IT-LT |Latina |
|
||||
|IT-LT |Latina |
|
||||
+------+------------------------------------+
|
||||
|IT-RI |Rieti |
|
||||
|IT-RI |Rieti |
|
||||
+------+------------------------------------+
|
||||
|IT-RM |Roma |
|
||||
|IT-RM |Roma |
|
||||
+------+------------------------------------+
|
||||
|IT-VT |Viterbo |
|
||||
|IT-VT |Viterbo |
|
||||
+------+------------------------------------+
|
||||
|IT-GE |Genova |
|
||||
|IT-GE |Genova |
|
||||
+------+------------------------------------+
|
||||
|IT-IM |Imperia |
|
||||
|IT-IM |Imperia |
|
||||
+------+------------------------------------+
|
||||
|IT-SP |La Spezia |
|
||||
|IT-SP |La Spezia |
|
||||
+------+------------------------------------+
|
||||
|IT-SV |Savona |
|
||||
|IT-SV |Savona |
|
||||
+------+------------------------------------+
|
||||
|IT-BG |Bergamo |
|
||||
|IT-BG |Bergamo |
|
||||
+------+------------------------------------+
|
||||
|IT-BS |Brescia |
|
||||
|IT-BS |Brescia |
|
||||
+------+------------------------------------+
|
||||
|IT-CO |Como |
|
||||
|IT-CO |Como |
|
||||
+------+------------------------------------+
|
||||
|IT-CR |Cremona |
|
||||
|IT-CR |Cremona |
|
||||
+------+------------------------------------+
|
||||
|IT-LC |Lecco |
|
||||
|IT-LC |Lecco |
|
||||
+------+------------------------------------+
|
||||
|IT-LO |Lodi |
|
||||
|IT-LO |Lodi |
|
||||
+------+------------------------------------+
|
||||
|IT-MN |Mantua |
|
||||
|IT-MN |Mantua |
|
||||
+------+------------------------------------+
|
||||
|IT-MI |Milano |
|
||||
|IT-MI |Milano |
|
||||
+------+------------------------------------+
|
||||
|IT-MB |Monza and Brianza |
|
||||
|IT-MB |Monza and Brianza |
|
||||
+------+------------------------------------+
|
||||
|IT-PV |Pavia |
|
||||
|IT-PV |Pavia |
|
||||
+------+------------------------------------+
|
||||
|IT-SO |Sondrio |
|
||||
|IT-SO |Sondrio |
|
||||
+------+------------------------------------+
|
||||
|IT-VA |Varese |
|
||||
|IT-VA |Varese |
|
||||
+------+------------------------------------+
|
||||
|IT-AN |Ancona |
|
||||
|IT-AN |Ancona |
|
||||
+------+------------------------------------+
|
||||
|IT-AP |Ascoli Piceno |
|
||||
|IT-AP |Ascoli Piceno |
|
||||
+------+------------------------------------+
|
||||
|IT-FM |Fermo |
|
||||
|IT-FM |Fermo |
|
||||
+------+------------------------------------+
|
||||
|IT-MC |Macerata |
|
||||
|IT-MC |Macerata |
|
||||
+------+------------------------------------+
|
||||
|IT-PU |Pesaro E Urbino |
|
||||
|IT-PU |Pesaro E Urbino |
|
||||
+------+------------------------------------+
|
||||
|IT-CB |Campobasso |
|
||||
|IT-CB |Campobasso |
|
||||
+------+------------------------------------+
|
||||
|IT-IS |Isernia |
|
||||
|IT-IS |Isernia |
|
||||
+------+------------------------------------+
|
||||
|IT-AL |Alessandria |
|
||||
|IT-AL |Alessandria |
|
||||
+------+------------------------------------+
|
||||
|IT-AT |Asti |
|
||||
|IT-AT |Asti |
|
||||
+------+------------------------------------+
|
||||
|IT-BI |Biella |
|
||||
|IT-BI |Biella |
|
||||
+------+------------------------------------+
|
||||
|IT-CN |Cuneo |
|
||||
|IT-CN |Cuneo |
|
||||
+------+------------------------------------+
|
||||
|IT-NO |Novara |
|
||||
|IT-NO |Novara |
|
||||
+------+------------------------------------+
|
||||
|IT-TO |Torino |
|
||||
|IT-TO |Torino |
|
||||
+------+------------------------------------+
|
||||
|IT-VB |Verbano-Cusio-Ossola |
|
||||
|IT-VB |Verbano-Cusio-Ossola |
|
||||
+------+------------------------------------+
|
||||
|IT-VC |Vercelli |
|
||||
|IT-VC |Vercelli |
|
||||
+------+------------------------------------+
|
||||
|IT-CA |Cagliari |
|
||||
|IT-CA |Cagliari |
|
||||
+------+------------------------------------+
|
||||
|IT-CI |Carbonia-Iglesias |
|
||||
|IT-CI |Carbonia-Iglesias |
|
||||
+------+------------------------------------+
|
||||
|IT-VS |Medio Campidano |
|
||||
|IT-VS |Medio Campidano |
|
||||
+------+------------------------------------+
|
||||
|IT-NU |Nuoro |
|
||||
|IT-NU |Nuoro |
|
||||
+------+------------------------------------+
|
||||
|IT-OG |Ogliastra |
|
||||
|IT-OG |Ogliastra |
|
||||
+------+------------------------------------+
|
||||
|IT-OT |Olbia-Tempio |
|
||||
|IT-OT |Olbia-Tempio |
|
||||
+------+------------------------------------+
|
||||
|IT-OR |Oristano |
|
||||
|IT-OR |Oristano |
|
||||
+------+------------------------------------+
|
||||
|IT-SS |Sassari |
|
||||
|IT-SS |Sassari |
|
||||
+------+------------------------------------+
|
||||
|IT-AG |Agrigento |
|
||||
|IT-AG |Agrigento |
|
||||
+------+------------------------------------+
|
||||
|IT-CL |Caltanissetta |
|
||||
|IT-CL |Caltanissetta |
|
||||
+------+------------------------------------+
|
||||
|IT-CT |Catania |
|
||||
+------+------------------------------------+
|
||||
|IT-EN |Enna |
|
||||
+------+------------------------------------+
|
||||
|IT-ME |Messina |
|
||||
|IT-ME |Messina |
|
||||
+------+------------------------------------+
|
||||
|IT-PA |Palermo |
|
||||
+------+------------------------------------+
|
||||
|IT-RG |Ragusa |
|
||||
+------+------------------------------------+
|
||||
|IT-SR |Syracuse |
|
||||
|IT-SR |Syracuse |
|
||||
+------+------------------------------------+
|
||||
|IT-TP |Trapani |
|
||||
+------+------------------------------------+
|
||||
|IT-AR |Arezzo |
|
||||
|IT-AR |Arezzo |
|
||||
+------+------------------------------------+
|
||||
|IT-FI |Florence |
|
||||
|IT-FI |Florence |
|
||||
+------+------------------------------------+
|
||||
|IT-GR |Grosseto |
|
||||
|IT-GR |Grosseto |
|
||||
+------+------------------------------------+
|
||||
|IT-LI |Livorno |
|
||||
|IT-LI |Livorno |
|
||||
+------+------------------------------------+
|
||||
|IT-LU |Lucca |
|
||||
+------+------------------------------------+
|
||||
|IT-MS |Massa Carrara |
|
||||
|IT-MS |Massa Carrara |
|
||||
+------+------------------------------------+
|
||||
|IT-PI |Pisa |
|
||||
+------+------------------------------------+
|
||||
|IT-PT |Pistoia |
|
||||
|IT-PT |Pistoia |
|
||||
+------+------------------------------------+
|
||||
|IT-PO |Prato |
|
||||
+------+------------------------------------+
|
||||
|IT-SI |Siena |
|
||||
+------+------------------------------------+
|
||||
|IT-BZ |Bolzano |
|
||||
|IT-BZ |Bolzano |
|
||||
+------+------------------------------------+
|
||||
|IT-TN |Trento |
|
||||
|IT-TN |Trento |
|
||||
+------+------------------------------------+
|
||||
|IT-PG |Perugia |
|
||||
|IT-PG |Perugia |
|
||||
+------+------------------------------------+
|
||||
|IT-TR |Terni |
|
||||
|IT-TR |Terni |
|
||||
+------+------------------------------------+
|
||||
|IT-AO |Aosta |
|
||||
|IT-AO |Aosta |
|
||||
+------+------------------------------------+
|
||||
|IT-BL |Belluno |
|
||||
|IT-BL |Belluno |
|
||||
+------+------------------------------------+
|
||||
|IT-PD |Padua |
|
||||
|IT-PD |Padua |
|
||||
+------+------------------------------------+
|
||||
|IT-RO |Rovigo |
|
||||
|IT-RO |Rovigo |
|
||||
+------+------------------------------------+
|
||||
|IT-TV |Treviso |
|
||||
|IT-TV |Treviso |
|
||||
+------+------------------------------------+
|
||||
|IT-VE |Venezia |
|
||||
|IT-VE |Venezia |
|
||||
+------+------------------------------------+
|
||||
|IT-VR |Verona |
|
||||
|IT-VR |Verona |
|
||||
+------+------------------------------------+
|
||||
|IT-VI |Vicenza |
|
||||
+------+------------------------------------+
|
||||
|
||||
|
||||
* Japan
|
||||
|
||||
+-------+----------------+
|
||||
| ISO | Name of region |
|
||||
+=======+================+
|
||||
| JP-01 | Hokkaido |
|
||||
+-------+----------------+
|
||||
| JP-02 | Aomori |
|
||||
+-------+----------------+
|
||||
| JP-03 | Iwate |
|
||||
+-------+----------------+
|
||||
| JP-04 | Miyagi |
|
||||
+-------+----------------+
|
||||
| JP-05 | Akita |
|
||||
+-------+----------------+
|
||||
| JP-06 | Yamagata |
|
||||
+-------+----------------+
|
||||
| JP-07 | Fukushima |
|
||||
+-------+----------------+
|
||||
| JP-08 | Ibaraki |
|
||||
+-------+----------------+
|
||||
| JP-09 | Tochigi |
|
||||
+-------+----------------+
|
||||
| JP-10 | Gunma |
|
||||
+-------+----------------+
|
||||
| JP-11 | Saitama |
|
||||
+-------+----------------+
|
||||
| JP-12 | Chiba |
|
||||
+-------+----------------+
|
||||
| JP-13 | Tokyo |
|
||||
+-------+----------------+
|
||||
| JP-14 | Kanagawa |
|
||||
+-------+----------------+
|
||||
| JP-15 | Niigata |
|
||||
+-------+----------------+
|
||||
| JP-16 | Toyama |
|
||||
+-------+----------------+
|
||||
| JP-17 | Ishikawa |
|
||||
+-------+----------------+
|
||||
| JP-18 | Fukui |
|
||||
+-------+----------------+
|
||||
| JP-19 | Yamanashi |
|
||||
+-------+----------------+
|
||||
| JP-20 | Nagano |
|
||||
+-------+----------------+
|
||||
| JP-21 | Gifu |
|
||||
+-------+----------------+
|
||||
| JP-22 | Shizuoka |
|
||||
+-------+----------------+
|
||||
| JP-23 | Aichi |
|
||||
+-------+----------------+
|
||||
| JP-24 | Mie |
|
||||
+-------+----------------+
|
||||
| JP-25 | Shiga |
|
||||
+-------+----------------+
|
||||
| JP-26 | Kyoto |
|
||||
+-------+----------------+
|
||||
| JP-27 | Osaka |
|
||||
+-------+----------------+
|
||||
| JP-28 | Hyogo |
|
||||
+-------+----------------+
|
||||
| JP-29 | Nara |
|
||||
+-------+----------------+
|
||||
| JP-30 | Wakayama |
|
||||
+-------+----------------+
|
||||
| JP-31 | Tottori |
|
||||
+-------+----------------+
|
||||
| JP-32 | Shimane |
|
||||
+-------+----------------+
|
||||
| JP-33 | Okayama |
|
||||
+-------+----------------+
|
||||
| JP-34 | Hiroshima |
|
||||
+-------+----------------+
|
||||
| JP-35 | Yamaguchi |
|
||||
+-------+----------------+
|
||||
| JP-36 | Tokushima |
|
||||
+-------+----------------+
|
||||
| JP-37 | Kagawa |
|
||||
+-------+----------------+
|
||||
| JP-38 | Ehime |
|
||||
+-------+----------------+
|
||||
| JP-39 | Kochi |
|
||||
+-------+----------------+
|
||||
| JP-40 | Fukuoka |
|
||||
+-------+----------------+
|
||||
| JP-41 | Saga |
|
||||
+-------+----------------+
|
||||
| JP-42 | Nagasaki |
|
||||
+-------+----------------+
|
||||
| JP-43 | Kumamoto |
|
||||
+-------+----------------+
|
||||
| JP-44 | Oita |
|
||||
+-------+----------------+
|
||||
| JP-45 | Miyazaki |
|
||||
+-------+----------------+
|
||||
| JP-46 | Kagoshima |
|
||||
+-------+----------------+
|
||||
| JP-47 | Okinawa |
|
||||
+-------+----------------+
|
||||
|
||||
|
||||
* Morocco
|
||||
|
||||
+-------+------------------------------+
|
||||
@@ -1590,7 +1471,7 @@ List of Countries
|
||||
+-------+------------------------------+
|
||||
|GB-MRY | Moray |
|
||||
+-------+------------------------------+
|
||||
|GB-NAY | North Ayrshire |
|
||||
|GB-NAY | North Ayshire |
|
||||
+-------+------------------------------+
|
||||
|GB-NLK | North Lanarkshire |
|
||||
+-------+------------------------------+
|
||||
@@ -1831,25 +1712,25 @@ List of Countries
|
||||
+------+------------------------------+
|
||||
|
||||
|
||||
Need to add a new Country?
|
||||
You need to add a new Country ?
|
||||
-------------------------------
|
||||
|
||||
To add a new country in country map tools, we need to follow the following steps :
|
||||
To add a new country in country map tools, we need follow next steps :
|
||||
|
||||
1. You need shapefiles which contain data of your map.
|
||||
You can get this file on this site: https://www.diva-gis.org/gdata
|
||||
1. You need shapfiles why contains data of your map.
|
||||
You can get this file in this site : http://www.diva-gis.org/gdata
|
||||
|
||||
2. You need to add ISO 3166-2 with column name ISO for all record in your file.
|
||||
It's important because it's a norm for mapping your data with geojson file
|
||||
It's important because, it's a norm for mapping your data with geojson file
|
||||
|
||||
3. You need to convert shapefile to geojson file.
|
||||
This action can make with ogr2ogr tools: https://www.gdal.org/ogr2ogr.html
|
||||
3. You need to convert shapfile to geojson file.
|
||||
This action can make with ogr2ogr tools : http://www.gdal.org/ogr2ogr.html
|
||||
|
||||
4. Put your geojson file in next folder : superset/assets/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
|
||||
4. Put your geojson file in next folder : superset/assets/visualizations/countries with the next name : nameofyourcountries.geojson
|
||||
|
||||
5. You can to reduce size of geojson file on this site: https://mapshaper.org/
|
||||
5. You can to reduce size of geojson file ont this site : http://mapshaper.org/
|
||||
|
||||
6. Go in file superset/assets/src/explore/controls.jsx
|
||||
6. Go in file superset/assets/javascripts/explorev2/stores/controls.jsx
|
||||
|
||||
7. Add your country in component 'select_country'
|
||||
Example :
|
||||
@@ -1868,7 +1749,6 @@ To add a new country in country map tools, we need to follow the following steps
|
||||
'France',
|
||||
'Germany',
|
||||
'Italy',
|
||||
'Japan',
|
||||
'Morocco',
|
||||
'Netherlands',
|
||||
'Russia',
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# requires github-changes, run
|
||||
# `npm install -g github-changes`
|
||||
# requires $GITHUB_TOKEN to be set
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
@@ -1,25 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: superset
|
||||
maintainers:
|
||||
- name: Chuan-Yen Chiang
|
||||
email: cychiang0823@gmail.com
|
||||
url: https://github.com/cychiang
|
||||
version: 0.1.0
|
||||
@@ -1,37 +0,0 @@
|
||||
{{/*
|
||||
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/}}
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range .Values.ingress.hosts }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "superset.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get svc -w {{ template "superset.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "superset.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "superset.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:80
|
||||
{{- end }}
|
||||
@@ -1,50 +0,0 @@
|
||||
{{/*
|
||||
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/}}
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "superset.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "superset.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "superset.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
@@ -1,27 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: superset-configmap
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
{{ (.Files.Glob "config/*").AsConfig | indent 2 }}
|
||||
@@ -1,66 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "superset.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: superset-config
|
||||
mountPath: /etc/superset/
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8088
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: "superset-config"
|
||||
configMap:
|
||||
name: superset-configmap
|
||||
@@ -1,54 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
{{ if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "superset.fullname" . -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,35 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "superset.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
@@ -1,62 +0,0 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Default values for superset.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: amancevice/superset
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: NodePort
|
||||
port: 8088
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
path: /
|
||||
hosts:
|
||||
- chart-example.local
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
19
pypi_push.sh
@@ -1,24 +1,7 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# first bump up package.json manually, commit and tag
|
||||
rm superset/assets/dist/*
|
||||
cd superset/assets/
|
||||
npm run build
|
||||
cd ../..
|
||||
python setup.py sdist
|
||||
echo "RUN: twine upload dist/superset-{VERSION}.tar.gz"
|
||||
python setup.py sdist upload
|
||||
|
||||
|
||||
@@ -1,34 +1,8 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
black==19.3b0
|
||||
coverage==4.5.3
|
||||
flask-cors==3.0.7
|
||||
ipdb==0.12
|
||||
isort==4.3.21
|
||||
mypy==0.670
|
||||
nose==1.3.7
|
||||
pip-tools==3.7.0
|
||||
pre-commit==1.17.0
|
||||
psycopg2-binary==2.7.5
|
||||
pycodestyle==2.5.0
|
||||
pydruid==0.5.6
|
||||
pyhive==0.6.1
|
||||
pylint==1.9.2
|
||||
redis==3.2.1
|
||||
requests==2.22.0
|
||||
statsd==3.3.0
|
||||
tox==3.11.1
|
||||
flask-cors==3.0.3
|
||||
ipdb==0.11
|
||||
mysqlclient==1.3.12
|
||||
psycopg2==2.7.4
|
||||
redis==2.10.6
|
||||
statsd==3.2.2
|
||||
tox==2.9.1
|
||||
console_log==0.2.10
|
||||
|
||||
115
requirements.txt
@@ -1,84 +1,39 @@
|
||||
#
|
||||
# This file is autogenerated by pip-compile
|
||||
# To update, run:
|
||||
#
|
||||
# pip-compile --output-file=requirements.txt setup.py
|
||||
#
|
||||
alembic==1.0.11 # via flask-migrate
|
||||
amqp==2.5.0 # via kombu
|
||||
apispec[yaml]==1.3.3 # via flask-appbuilder
|
||||
asn1crypto==0.24.0 # via cryptography
|
||||
attrs==19.1.0 # via jsonschema
|
||||
babel==2.7.0 # via flask-babel
|
||||
backoff==1.8.0
|
||||
billiard==3.6.0.0 # via celery
|
||||
bleach==3.1.0
|
||||
celery==4.3.0
|
||||
cffi==1.12.3 # via cryptography
|
||||
click==6.7
|
||||
colorama==0.4.1
|
||||
contextlib2==0.5.5
|
||||
croniter==0.3.30
|
||||
cryptography==2.7
|
||||
decorator==4.4.0 # via retry
|
||||
defusedxml==0.6.0 # via python3-openid
|
||||
flask-appbuilder==2.1.13
|
||||
flask-babel==0.12.2 # via flask-appbuilder
|
||||
flask-caching==1.7.2
|
||||
bleach==2.1.2
|
||||
boto3==1.4.7
|
||||
celery==4.1.0
|
||||
colorama==0.3.9
|
||||
cryptography==1.9
|
||||
flask==0.12.2
|
||||
flask-appbuilder==1.10.0
|
||||
flask-cache==0.13.1
|
||||
flask-compress==1.4.0
|
||||
flask-jwt-extended==3.20.0 # via flask-appbuilder
|
||||
flask-login==0.4.1 # via flask-appbuilder
|
||||
flask-migrate==2.5.2
|
||||
flask-openid==1.2.5 # via flask-appbuilder
|
||||
flask-sqlalchemy==2.4.0 # via flask-appbuilder, flask-migrate
|
||||
flask-talisman==0.7.0
|
||||
flask-migrate==2.1.1
|
||||
flask-script==2.0.6
|
||||
flask-testing==0.7.1
|
||||
flask-wtf==0.14.2
|
||||
flask==1.1.1
|
||||
future==0.17.1 # via parsedatetime
|
||||
geographiclib==1.49 # via geopy
|
||||
geopy==1.20.0
|
||||
gunicorn==19.8.1
|
||||
flower==0.9.2
|
||||
future==0.16.0
|
||||
geopy==1.11.0
|
||||
gunicorn==19.7.1
|
||||
humanize==0.5.1
|
||||
isodate==0.6.0
|
||||
itsdangerous==1.1.0 # via flask
|
||||
jinja2==2.10.1 # via flask, flask-babel
|
||||
jsonschema==3.0.1 # via flask-appbuilder
|
||||
kombu==4.6.3 # via celery
|
||||
mako==1.0.14 # via alembic
|
||||
markdown==3.1.1
|
||||
markupsafe==1.1.1 # via jinja2, mako
|
||||
marshmallow-enum==1.4.1 # via flask-appbuilder
|
||||
marshmallow-sqlalchemy==0.17.0 # via flask-appbuilder
|
||||
marshmallow==2.19.5 # via flask-appbuilder, marshmallow-enum, marshmallow-sqlalchemy
|
||||
msgpack==0.6.1
|
||||
numpy==1.17.0 # via pandas, pyarrow
|
||||
pandas==0.24.2
|
||||
parsedatetime==2.4
|
||||
pathlib2==2.3.4
|
||||
polyline==1.4.0
|
||||
prison==0.1.2 # via flask-appbuilder
|
||||
py==1.8.0 # via retry
|
||||
pyarrow==0.15.1
|
||||
pycparser==2.19 # via cffi
|
||||
pyjwt==1.7.1 # via flask-appbuilder, flask-jwt-extended
|
||||
pyrsistent==0.15.4 # via jsonschema
|
||||
python-dateutil==2.8.0
|
||||
python-dotenv==0.10.3
|
||||
python-editor==1.0.4 # via alembic
|
||||
idna==2.6
|
||||
markdown==2.6.11
|
||||
pandas==0.22.0
|
||||
parsedatetime==2.0.0
|
||||
pathlib2==2.3.0
|
||||
polyline==1.3.2
|
||||
pydruid==0.4.1
|
||||
pyhive==0.5.0
|
||||
python-dateutil==2.6.1
|
||||
python-geohash==0.8.5
|
||||
python3-openid==3.1.0 # via flask-openid
|
||||
pytz==2019.2 # via babel, celery, pandas
|
||||
pyyaml==5.1.2
|
||||
retry==0.9.2
|
||||
selenium==3.141.0
|
||||
simplejson==3.16.0
|
||||
six==1.12.0 # via bleach, cryptography, flask-jwt-extended, flask-talisman, isodate, jsonschema, pathlib2, polyline, prison, pyarrow, pyrsistent, python-dateutil, sqlalchemy-utils, wtforms-json
|
||||
sqlalchemy-utils==0.34.1
|
||||
sqlalchemy==1.3.6
|
||||
sqlparse==0.3.0
|
||||
urllib3==1.25.3 # via selenium
|
||||
vine==1.3.0 # via amqp, celery
|
||||
webencodings==0.5.1 # via bleach
|
||||
werkzeug==0.15.5 # via flask, flask-jwt-extended
|
||||
wtforms-json==0.3.3
|
||||
wtforms==2.2.1 # via flask-wtf, wtforms-json
|
||||
pyyaml==3.12
|
||||
requests==2.18.4
|
||||
simplejson==3.13.2
|
||||
six==1.11.0
|
||||
sqlalchemy==1.2.2
|
||||
sqlalchemy-utils==0.32.21
|
||||
sqlparse==0.2.4
|
||||
thrift==0.11.0
|
||||
thrift-sasl==0.3.0
|
||||
unicodecsv==0.14.1
|
||||
unidecode==1.0.22
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
|
||||
acquire_rat_jar () {
|
||||
|
||||
URL="https://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
|
||||
|
||||
JAR="$rat_jar"
|
||||
|
||||
# Download rat launch jar if it hasn't been downloaded yet
|
||||
if [ ! -f "$JAR" ]; then
|
||||
# Download
|
||||
printf "Attempting to fetch rat\n"
|
||||
JAR_DL="${JAR}.part"
|
||||
if [ $(command -v curl) ]; then
|
||||
curl -L --silent "${URL}" > "$JAR_DL" && mv "$JAR_DL" "$JAR"
|
||||
elif [ $(command -v wget) ]; then
|
||||
wget --quiet ${URL} -O "$JAR_DL" && mv "$JAR_DL" "$JAR"
|
||||
else
|
||||
printf "You do not have curl or wget installed, please install rat manually.\n"
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
|
||||
unzip -tq "$JAR" &> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
# We failed to download
|
||||
rm "$JAR"
|
||||
printf "Our attempt to download rat locally to ${JAR} failed. Please install rat manually.\n"
|
||||
exit -1
|
||||
fi
|
||||
printf "Done downloading.\n"
|
||||
}
|
||||
|
||||
# Go to the project root directory
|
||||
FWDIR="$(cd "`dirname "$0"`"/..; pwd)"
|
||||
cd "$FWDIR"
|
||||
|
||||
TMP_DIR=/tmp
|
||||
|
||||
if test -x "$JAVA_HOME/bin/java"; then
|
||||
declare java_cmd="$JAVA_HOME/bin/java"
|
||||
else
|
||||
declare java_cmd=java
|
||||
fi
|
||||
|
||||
export RAT_VERSION=0.13
|
||||
export rat_jar="${TMP_DIR}"/lib/apache-rat-${RAT_VERSION}.jar
|
||||
mkdir -p ${TMP_DIR}/lib
|
||||
|
||||
|
||||
[[ -f "$rat_jar" ]] || acquire_rat_jar || {
|
||||
echo "Download failed. Obtain the rat jar manually and place it at $rat_jar"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# This is the target of a symlink in superset/assets/docs - and rat exclude doesn't cope with the symlink target doesn't exist
|
||||
mkdir -p docs/_build/html/
|
||||
|
||||
echo "Running license checks. This can take a while."
|
||||
echo "$FWDIR"/.rat-excludes
|
||||
$java_cmd -jar "$rat_jar" -E "$FWDIR"/.rat-excludes -d "$FWDIR" > rat-results.txt
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "RAT exited abnormally"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ERRORS="$(cat rat-results.txt | grep -e "??")"
|
||||
|
||||
if test ! -z "$ERRORS"; then
|
||||
echo >&2 "Could not find Apache license headers in the following files:"
|
||||
echo >&2 "$ERRORS"
|
||||
exit 1
|
||||
else
|
||||
echo -e "RAT checks passed."
|
||||
fi
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# This is the recommended way to install FOSSA's cli per the docs:
|
||||
# https://docs.fossa.com/docs/travisci#section-add-fossa-steps-to-travisyml
|
||||
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash
|
||||
|
||||
# This key is a push-only API key, also recommended for public projects
|
||||
# https://docs.fossa.com/docs/api-reference#section-push-only-api-token
|
||||
FOSSA_API_KEY="f72e93645bdfeab94bd227c7bbdda4ef" fossa
|
||||
@@ -1,19 +1,9 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
from superset import sm
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Use this to sign the tar balls generated from
|
||||
# python setup.py sdist --formats=gztar
|
||||
# ie. sign.sh <my_tar_ball>
|
||||
# you will still be required to type in your signing key password
|
||||
# or it needs to be available in your keychain
|
||||
|
||||
NAME=${1}
|
||||
|
||||
gpg --armor --output ${NAME}.asc --detach-sig ${NAME}
|
||||
gpg --print-md SHA512 ${NAME} > ${NAME}.sha512
|
||||
32
setup.cfg
@@ -1,25 +1,9 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
[metadata]
|
||||
name = Superset
|
||||
summary = a data exploration platform
|
||||
description-file = README.md
|
||||
author = Apache Superset Dev
|
||||
author-email = dev@superset.incubator.apache.org
|
||||
author = Maxime Beauchemin
|
||||
author-email = maximebeauchemin@gmail.com
|
||||
license = Apache License, Version 2.0
|
||||
|
||||
[files]
|
||||
@@ -39,15 +23,3 @@ detailed-errors = 1
|
||||
with-coverage = 1
|
||||
nocapture = 1
|
||||
cover-package = superset
|
||||
|
||||
[isort]
|
||||
combine_as_imports = true
|
||||
include_trailing_comma = true
|
||||
line_length = 88
|
||||
known_first_party = superset
|
||||
known_third_party =alembic,backoff,bleach,celery,click,colorama,contextlib2,croniter,dateutil,flask,flask_appbuilder,flask_babel,flask_caching,flask_compress,flask_login,flask_migrate,flask_sqlalchemy,flask_talisman,flask_wtf,geohash,geopy,humanize,isodate,jinja2,markdown,marshmallow,msgpack,numpy,pandas,parsedatetime,pathlib2,polyline,prison,psycopg2,pyarrow,pyhive,pytz,retry,selenium,setuptools,simplejson,sphinx_rtd_theme,sqlalchemy,sqlalchemy_utils,sqlparse,werkzeug,wtforms,wtforms_json,yaml
|
||||
multi_line_output = 3
|
||||
order_by_type = false
|
||||
|
||||
[mypy]
|
||||
ignore_missing_imports = true
|
||||
|
||||
176
setup.py
@@ -1,129 +1,109 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import io
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from setuptools import find_packages, setup
|
||||
|
||||
if sys.version_info < (3, 6):
|
||||
sys.exit("Sorry, Python < 3.6 is not supported")
|
||||
|
||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
PACKAGE_JSON = os.path.join(BASE_DIR, "superset", "assets", "package.json")
|
||||
with open(PACKAGE_JSON, "r") as package_file:
|
||||
version_string = json.load(package_file)["version"]
|
||||
|
||||
with io.open("README.md", "r", encoding="utf-8") as f:
|
||||
long_description = f.read()
|
||||
PACKAGE_DIR = os.path.join(BASE_DIR, 'superset', 'static', 'assets')
|
||||
PACKAGE_FILE = os.path.join(PACKAGE_DIR, 'package.json')
|
||||
with open(PACKAGE_FILE) as package_file:
|
||||
version_string = json.load(package_file)['version']
|
||||
|
||||
|
||||
def get_git_sha():
|
||||
try:
|
||||
s = subprocess.check_output(["git", "rev-parse", "HEAD"])
|
||||
return s.decode().strip()
|
||||
s = str(subprocess.check_output(['git', 'rev-parse', 'HEAD']))
|
||||
return s.strip()
|
||||
except Exception:
|
||||
return ""
|
||||
return ''
|
||||
|
||||
|
||||
GIT_SHA = get_git_sha()
|
||||
version_info = {"GIT_SHA": GIT_SHA, "version": version_string}
|
||||
print("-==-" * 15)
|
||||
print("VERSION: " + version_string)
|
||||
print("GIT SHA: " + GIT_SHA)
|
||||
print("-==-" * 15)
|
||||
version_info = {
|
||||
'GIT_SHA': GIT_SHA,
|
||||
'version': version_string,
|
||||
}
|
||||
print('-==-' * 15)
|
||||
print('VERSION: ' + version_string)
|
||||
print('GIT SHA: ' + GIT_SHA)
|
||||
print('-==-' * 15)
|
||||
|
||||
VERSION_INFO_FILE = os.path.join(
|
||||
BASE_DIR, "superset", "static", "assets", "version_info.json"
|
||||
)
|
||||
|
||||
with open(VERSION_INFO_FILE, "w") as version_file:
|
||||
with open(os.path.join(PACKAGE_DIR, 'version_info.json'), 'w') as version_file:
|
||||
json.dump(version_info, version_file)
|
||||
|
||||
|
||||
setup(
|
||||
name="apache-superset",
|
||||
description=("A modern, enterprise-ready business intelligence web application"),
|
||||
long_description=long_description,
|
||||
long_description_content_type="text/markdown",
|
||||
name='superset',
|
||||
description=(
|
||||
'A interactive data visualization platform build on SqlAlchemy '
|
||||
'and druid.io'),
|
||||
version=version_string,
|
||||
packages=find_packages(),
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
scripts=["superset/bin/superset"],
|
||||
scripts=['superset/bin/superset'],
|
||||
install_requires=[
|
||||
"backoff>=1.8.0",
|
||||
"bleach>=3.0.2, <4.0.0",
|
||||
"celery>=4.3.0, <5.0.0",
|
||||
"click>=6.0, <7.0.0", # `click`>=7 forces "-" instead of "_"
|
||||
"colorama",
|
||||
"contextlib2",
|
||||
"croniter>=0.3.28",
|
||||
"cryptography>=2.4.2",
|
||||
"flask>=1.1.0, <2.0.0",
|
||||
"flask-appbuilder>=2.1.13, <2.3.0",
|
||||
"flask-caching",
|
||||
"flask-compress",
|
||||
"flask-talisman",
|
||||
"flask-migrate",
|
||||
"flask-wtf",
|
||||
"geopy",
|
||||
"gunicorn<19.9.0", # deprecated
|
||||
"humanize",
|
||||
"isodate",
|
||||
"markdown>=3.0",
|
||||
"msgpack>=0.6.1, <0.7.0",
|
||||
"pandas>=0.24.2, <0.25.0",
|
||||
"parsedatetime",
|
||||
"pathlib2",
|
||||
"polyline",
|
||||
"python-dateutil",
|
||||
"python-dotenv",
|
||||
"python-geohash",
|
||||
"pyarrow>=0.15.1, <0.16.0",
|
||||
"pyyaml>=5.1",
|
||||
"retry>=0.9.2",
|
||||
"selenium>=3.141.0",
|
||||
"simplejson>=3.15.0",
|
||||
"sqlalchemy>=1.3.5,<2.0",
|
||||
"sqlalchemy-utils>=0.33.2",
|
||||
"sqlparse>=0.3.0,<0.4",
|
||||
"wtforms-json",
|
||||
'bleach',
|
||||
'boto3>=1.4.6',
|
||||
'celery',
|
||||
'colorama',
|
||||
'cryptography',
|
||||
'flask',
|
||||
'flask-appbuilder',
|
||||
'flask-cache',
|
||||
'flask-compress',
|
||||
'flask-migrate',
|
||||
'flask-script',
|
||||
'flask-testing',
|
||||
'flask-wtf',
|
||||
'flower', # deprecated
|
||||
'future>=0.16.0, <0.17',
|
||||
'geopy',
|
||||
'gunicorn', # deprecated
|
||||
'humanize',
|
||||
'idna',
|
||||
'markdown',
|
||||
'pandas',
|
||||
'parsedatetime',
|
||||
'pathlib2',
|
||||
'polyline',
|
||||
'pydruid',
|
||||
'pyhive>=0.4.0',
|
||||
'python-dateutil',
|
||||
'python-geohash',
|
||||
'pyyaml>=3.11',
|
||||
'requests',
|
||||
'simplejson',
|
||||
'six',
|
||||
'sqlalchemy',
|
||||
'sqlalchemy-utils',
|
||||
'sqlparse',
|
||||
'thrift>=0.9.3',
|
||||
'thrift-sasl>=0.2.1',
|
||||
'unicodecsv',
|
||||
'unidecode>=0.04.21',
|
||||
],
|
||||
extras_require={
|
||||
"bigquery": ["pybigquery>=0.4.10", "pandas_gbq>=0.10.0"],
|
||||
"cors": ["flask-cors>=2.0.0"],
|
||||
"gsheets": ["gsheetsdb>=0.1.9"],
|
||||
"hive": ["pyhive[hive]>=0.6.1", "tableschema", "thrift>=0.11.0, <1.0.0"],
|
||||
"mysql": ["mysqlclient==1.4.2.post1"],
|
||||
"postgres": ["psycopg2-binary==2.7.5"],
|
||||
"presto": ["pyhive[presto]>=0.4.0"],
|
||||
"druid": ["pydruid==0.5.7", "requests==2.22.0"],
|
||||
'cors': ['flask-cors>=2.0.0'],
|
||||
'console_log': ['console_log==0.2.10'],
|
||||
},
|
||||
python_requires="~=3.6",
|
||||
author="Apache Software Foundation",
|
||||
author_email="dev@superset.incubator.apache.org",
|
||||
url="https://superset.apache.org/",
|
||||
download_url="https://www.apache.org/dist/incubator/superset/" + version_string,
|
||||
author='Maxime Beauchemin',
|
||||
author_email='maximebeauchemin@gmail.com',
|
||||
url='https://github.com/apache/incubator-superset',
|
||||
download_url=(
|
||||
'https://github.com'
|
||||
'/apache/incubator-superset/tarball/' + version_string
|
||||
),
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3.6",
|
||||
"Programming Language :: Python :: 3.7",
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,150 +1,127 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# pylint: disable=C,R,W
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Package's main module!"""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import json
|
||||
import logging
|
||||
from logging.handlers import TimedRotatingFileHandler
|
||||
import os
|
||||
from copy import deepcopy
|
||||
from typing import Any, Dict
|
||||
|
||||
import wtforms_json
|
||||
from flask import Flask, redirect
|
||||
from flask_appbuilder import AppBuilder, IndexView, SQLA
|
||||
from flask_appbuilder.baseviews import expose
|
||||
from flask_compress import Compress
|
||||
from flask_migrate import Migrate
|
||||
from flask_talisman import Talisman
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
from werkzeug.contrib.fixers import ProxyFix
|
||||
|
||||
from superset import config
|
||||
from superset import config, utils
|
||||
from superset.connectors.connector_registry import ConnectorRegistry
|
||||
from superset.security import SupersetSecurityManager
|
||||
from superset.utils.core import pessimistic_connection_handling, setup_cache
|
||||
from superset.utils.log import DBEventLogger, get_event_logger_from_cfg_value
|
||||
|
||||
wtforms_json.init()
|
||||
|
||||
APP_DIR = os.path.dirname(__file__)
|
||||
CONFIG_MODULE = os.environ.get("SUPERSET_CONFIG", "superset.config")
|
||||
CONFIG_MODULE = os.environ.get('SUPERSET_CONFIG', 'superset.config')
|
||||
|
||||
if not os.path.exists(config.DATA_DIR):
|
||||
os.makedirs(config.DATA_DIR)
|
||||
|
||||
with open(APP_DIR + '/static/assets/backendSync.json', 'r') as f:
|
||||
frontend_config = json.load(f)
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(CONFIG_MODULE) # type: ignore
|
||||
app.config.from_object(CONFIG_MODULE)
|
||||
conf = app.config
|
||||
|
||||
#################################################################
|
||||
# Handling manifest file logic at app start
|
||||
#################################################################
|
||||
MANIFEST_FILE = APP_DIR + "/static/assets/dist/manifest.json"
|
||||
manifest: Dict[Any, Any] = {}
|
||||
MANIFEST_FILE = APP_DIR + '/static/assets/dist/manifest.json'
|
||||
manifest = {}
|
||||
|
||||
|
||||
def parse_manifest_json():
|
||||
global manifest
|
||||
try:
|
||||
with open(MANIFEST_FILE, "r") as f:
|
||||
# the manifest inclues non-entry files
|
||||
# we only need entries in templates
|
||||
full_manifest = json.load(f)
|
||||
manifest = full_manifest.get("entrypoints", {})
|
||||
with open(MANIFEST_FILE, 'r') as f:
|
||||
manifest = json.load(f)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def get_js_manifest_files(filename):
|
||||
def get_manifest_file(filename):
|
||||
if app.debug:
|
||||
parse_manifest_json()
|
||||
entry_files = manifest.get(filename, {})
|
||||
return entry_files.get("js", [])
|
||||
|
||||
|
||||
def get_css_manifest_files(filename):
|
||||
if app.debug:
|
||||
parse_manifest_json()
|
||||
entry_files = manifest.get(filename, {})
|
||||
return entry_files.get("css", [])
|
||||
|
||||
|
||||
def get_unloaded_chunks(files, loaded_chunks):
|
||||
filtered_files = [f for f in files if f not in loaded_chunks]
|
||||
for f in filtered_files:
|
||||
loaded_chunks.add(f)
|
||||
return filtered_files
|
||||
return '/static/assets/dist/' + manifest.get(filename, '')
|
||||
|
||||
|
||||
parse_manifest_json()
|
||||
|
||||
|
||||
@app.context_processor
|
||||
def get_manifest():
|
||||
return dict(
|
||||
loaded_chunks=set(),
|
||||
get_unloaded_chunks=get_unloaded_chunks,
|
||||
js_manifest=get_js_manifest_files,
|
||||
css_manifest=get_css_manifest_files,
|
||||
)
|
||||
def get_js_manifest():
|
||||
return dict(js_manifest=get_manifest_file)
|
||||
|
||||
|
||||
#################################################################
|
||||
|
||||
for bp in conf["BLUEPRINTS"]:
|
||||
for bp in conf.get('BLUEPRINTS'):
|
||||
try:
|
||||
print("Registering blueprint: '{}'".format(bp.name))
|
||||
app.register_blueprint(bp)
|
||||
except Exception as e:
|
||||
print("blueprint registration failed")
|
||||
print('blueprint registration failed')
|
||||
logging.exception(e)
|
||||
|
||||
if conf.get("SILENCE_FAB"):
|
||||
logging.getLogger("flask_appbuilder").setLevel(logging.ERROR)
|
||||
if conf.get('SILENCE_FAB'):
|
||||
logging.getLogger('flask_appbuilder').setLevel(logging.ERROR)
|
||||
|
||||
if app.debug:
|
||||
app.logger.setLevel(logging.DEBUG)
|
||||
else:
|
||||
# In production mode, add log handler to sys.stderr.
|
||||
app.logger.addHandler(logging.StreamHandler())
|
||||
app.logger.setLevel(logging.INFO)
|
||||
logging.getLogger('pyhive.presto').setLevel(logging.INFO)
|
||||
|
||||
db = SQLA(app)
|
||||
|
||||
if conf.get("WTF_CSRF_ENABLED"):
|
||||
if conf.get('WTF_CSRF_ENABLED'):
|
||||
csrf = CSRFProtect(app)
|
||||
csrf_exempt_list = conf.get("WTF_CSRF_EXEMPT_LIST", [])
|
||||
csrf_exempt_list = conf.get('WTF_CSRF_EXEMPT_LIST', [])
|
||||
for ex in csrf_exempt_list:
|
||||
csrf.exempt(ex)
|
||||
|
||||
pessimistic_connection_handling(db.engine)
|
||||
utils.pessimistic_connection_handling(db.engine)
|
||||
|
||||
cache = setup_cache(app, conf.get("CACHE_CONFIG"))
|
||||
tables_cache = setup_cache(app, conf.get("TABLE_NAMES_CACHE_CONFIG"))
|
||||
cache = utils.setup_cache(app, conf.get('CACHE_CONFIG'))
|
||||
tables_cache = utils.setup_cache(app, conf.get('TABLE_NAMES_CACHE_CONFIG'))
|
||||
|
||||
migrate = Migrate(app, db, directory=APP_DIR + "/migrations")
|
||||
migrate = Migrate(app, db, directory=APP_DIR + '/migrations')
|
||||
|
||||
app.config["LOGGING_CONFIGURATOR"].configure_logging(app.config, app.debug)
|
||||
# Logging configuration
|
||||
logging.basicConfig(format=app.config.get('LOG_FORMAT'))
|
||||
logging.getLogger().setLevel(app.config.get('LOG_LEVEL'))
|
||||
|
||||
if app.config.get("ENABLE_CORS"):
|
||||
if app.config.get('ENABLE_TIME_ROTATE'):
|
||||
logging.getLogger().setLevel(app.config.get('TIME_ROTATE_LOG_LEVEL'))
|
||||
handler = TimedRotatingFileHandler(
|
||||
app.config.get('FILENAME'),
|
||||
when=app.config.get('ROLLOVER'),
|
||||
interval=app.config.get('INTERVAL'),
|
||||
backupCount=app.config.get('BACKUP_COUNT'))
|
||||
logging.getLogger().addHandler(handler)
|
||||
|
||||
if app.config.get('ENABLE_CORS'):
|
||||
from flask_cors import CORS
|
||||
CORS(app, **app.config.get('CORS_OPTIONS'))
|
||||
|
||||
CORS(app, **app.config.get("CORS_OPTIONS"))
|
||||
if app.config.get('ENABLE_PROXY_FIX'):
|
||||
app.wsgi_app = ProxyFix(app.wsgi_app)
|
||||
|
||||
if app.config.get("ENABLE_PROXY_FIX"):
|
||||
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||
|
||||
app.wsgi_app = ProxyFix( # type: ignore
|
||||
app.wsgi_app, **app.config.get("PROXY_FIX_CONFIG")
|
||||
)
|
||||
|
||||
if app.config.get("ENABLE_CHUNK_ENCODING"):
|
||||
if app.config.get('ENABLE_CHUNK_ENCODING'):
|
||||
|
||||
class ChunkedEncodingFix(object):
|
||||
def __init__(self, app):
|
||||
@@ -153,92 +130,61 @@ if app.config.get("ENABLE_CHUNK_ENCODING"):
|
||||
def __call__(self, environ, start_response):
|
||||
# Setting wsgi.input_terminated tells werkzeug.wsgi to ignore
|
||||
# content-length and read the stream till the end.
|
||||
if environ.get("HTTP_TRANSFER_ENCODING", "").lower() == u"chunked":
|
||||
environ["wsgi.input_terminated"] = True
|
||||
if environ.get('HTTP_TRANSFER_ENCODING', '').lower() == u'chunked':
|
||||
environ['wsgi.input_terminated'] = True
|
||||
return self.app(environ, start_response)
|
||||
|
||||
app.wsgi_app = ChunkedEncodingFix(app.wsgi_app) # type: ignore
|
||||
app.wsgi_app = ChunkedEncodingFix(app.wsgi_app)
|
||||
|
||||
if app.config["UPLOAD_FOLDER"]:
|
||||
if app.config.get('UPLOAD_FOLDER'):
|
||||
try:
|
||||
os.makedirs(app.config["UPLOAD_FOLDER"])
|
||||
os.makedirs(app.config.get('UPLOAD_FOLDER'))
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
for middleware in app.config["ADDITIONAL_MIDDLEWARE"]:
|
||||
app.wsgi_app = middleware(app.wsgi_app) # type: ignore
|
||||
for middleware in app.config.get('ADDITIONAL_MIDDLEWARE'):
|
||||
app.wsgi_app = middleware(app.wsgi_app)
|
||||
|
||||
|
||||
class MyIndexView(IndexView):
|
||||
@expose("/")
|
||||
@expose('/')
|
||||
def index(self):
|
||||
return redirect("/superset/welcome")
|
||||
return redirect('/superset/welcome')
|
||||
|
||||
|
||||
custom_sm = app.config.get("CUSTOM_SECURITY_MANAGER") or SupersetSecurityManager
|
||||
custom_sm = app.config.get('CUSTOM_SECURITY_MANAGER') or SupersetSecurityManager
|
||||
if not issubclass(custom_sm, SupersetSecurityManager):
|
||||
raise Exception(
|
||||
"""Your CUSTOM_SECURITY_MANAGER must now extend SupersetSecurityManager,
|
||||
not FAB's security manager.
|
||||
See [4565] in UPDATING.md"""
|
||||
)
|
||||
See [4565] in UPDATING.md""")
|
||||
|
||||
with app.app_context():
|
||||
appbuilder = AppBuilder(
|
||||
app,
|
||||
db.session,
|
||||
base_template="superset/base.html",
|
||||
indexview=MyIndexView,
|
||||
security_manager_class=custom_sm,
|
||||
update_perms=False, # Run `superset init` to update FAB's perms
|
||||
)
|
||||
appbuilder = AppBuilder(
|
||||
app,
|
||||
db.session,
|
||||
base_template='superset/base.html',
|
||||
indexview=MyIndexView,
|
||||
security_manager_class=custom_sm,
|
||||
update_perms=utils.get_update_perms_flag(),
|
||||
)
|
||||
|
||||
security_manager = appbuilder.sm
|
||||
|
||||
results_backend = app.config.get("RESULTS_BACKEND")
|
||||
results_backend_use_msgpack = app.config.get("RESULTS_BACKEND_USE_MSGPACK")
|
||||
|
||||
# Merge user defined feature flags with default feature flags
|
||||
_feature_flags = app.config.get("DEFAULT_FEATURE_FLAGS") or {}
|
||||
_feature_flags.update(app.config.get("FEATURE_FLAGS") or {})
|
||||
|
||||
# Event Logger
|
||||
event_logger = get_event_logger_from_cfg_value(
|
||||
app.config.get("EVENT_LOGGER", DBEventLogger())
|
||||
)
|
||||
|
||||
|
||||
def get_feature_flags():
|
||||
GET_FEATURE_FLAGS_FUNC = app.config.get("GET_FEATURE_FLAGS_FUNC")
|
||||
if GET_FEATURE_FLAGS_FUNC:
|
||||
return GET_FEATURE_FLAGS_FUNC(deepcopy(_feature_flags))
|
||||
return _feature_flags
|
||||
|
||||
|
||||
def is_feature_enabled(feature):
|
||||
"""Utility function for checking whether a feature is turned on"""
|
||||
return get_feature_flags().get(feature)
|
||||
results_backend = app.config.get('RESULTS_BACKEND')
|
||||
|
||||
# Registering sources
|
||||
module_datasource_map = app.config.get('DEFAULT_MODULE_DS_MAP')
|
||||
module_datasource_map.update(app.config.get('ADDITIONAL_MODULE_DS_MAP'))
|
||||
ConnectorRegistry.register_sources(module_datasource_map)
|
||||
|
||||
# Flask-Compress
|
||||
if conf.get("ENABLE_FLASK_COMPRESS"):
|
||||
if conf.get('ENABLE_FLASK_COMPRESS'):
|
||||
Compress(app)
|
||||
|
||||
|
||||
talisman = Talisman()
|
||||
|
||||
if app.config["TALISMAN_ENABLED"]:
|
||||
talisman.init_app(app, **app.config["TALISMAN_CONFIG"])
|
||||
|
||||
# Hook that provides administrators a handle on the Flask APP
|
||||
# after initialization
|
||||
flask_app_mutator = app.config.get("FLASK_APP_MUTATOR")
|
||||
flask_app_mutator = app.config.get('FLASK_APP_MUTATOR')
|
||||
if flask_app_mutator:
|
||||
flask_app_mutator(app)
|
||||
|
||||
from superset import views # noqa isort:skip
|
||||
|
||||
# Registering sources
|
||||
module_datasource_map = app.config["DEFAULT_MODULE_DS_MAP"]
|
||||
module_datasource_map.update(app.config["ADDITIONAL_MODULE_DS_MAP"])
|
||||
ConnectorRegistry.register_sources(module_datasource_map)
|
||||
from superset import views # noqa
|
||||
|
||||
@@ -1,31 +1,3 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
{
|
||||
"sourceMaps": true,
|
||||
"retainLines": true,
|
||||
"presets" : ["airbnb", "@babel/preset-react", "@babel/preset-env"],
|
||||
"plugins": ["lodash", "@babel/plugin-syntax-dynamic-import", "react-hot-loader/babel"],
|
||||
"env": {
|
||||
"test": {
|
||||
"plugins": [
|
||||
"babel-plugin-dynamic-import-node"
|
||||
]
|
||||
}
|
||||
}
|
||||
{
|
||||
"presets" : ["airbnb"],
|
||||
}
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
**/*{.,-}min.js
|
||||
**/*.sh
|
||||
coverage/**
|
||||
@@ -24,4 +8,3 @@ node_modules*/*
|
||||
stylesheets/*
|
||||
vendor/*
|
||||
docs/*
|
||||
src/dashboard/deprecated/*
|
||||
|
||||
@@ -1,76 +1,45 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
{
|
||||
"extends": "airbnb",
|
||||
"parser": "babel-eslint",
|
||||
"parserOptions": {
|
||||
"parserOptions":{
|
||||
"ecmaFeatures": {
|
||||
"experimentalObjectRestSpread": true
|
||||
}
|
||||
},
|
||||
"env": {
|
||||
"browser": true
|
||||
"globals": {
|
||||
"document": true,
|
||||
},
|
||||
"rules": {
|
||||
"camelcase": ["error", {
|
||||
"allow": ["^UNSAFE_"],
|
||||
"properties": "never"
|
||||
}],
|
||||
"class-methods-use-this": 0,
|
||||
"func-names": 0,
|
||||
"prefer-template": 0,
|
||||
"new-cap": 0,
|
||||
"no-restricted-syntax": 0,
|
||||
"guard-for-in": 0,
|
||||
"import/extensions": ["error", {
|
||||
".js": "always",
|
||||
".jsx": "always",
|
||||
".ts": "always",
|
||||
".tsx": "always",
|
||||
".json": "always"
|
||||
}],
|
||||
"prefer-arrow-callback": 0,
|
||||
"func-names": 0,
|
||||
"react/jsx-no-bind": 0,
|
||||
"no-confusing-arrow": 0,
|
||||
|
||||
"jsx-a11y/no-static-element-interactions": 0,
|
||||
"jsx-a11y/anchor-has-content": 0,
|
||||
"react/require-default-props": 0,
|
||||
"no-plusplus": 0,
|
||||
"no-mixed-operators": 0,
|
||||
"no-continue": 0,
|
||||
"no-bitwise": 0,
|
||||
"no-undef": 0,
|
||||
"no-multi-assign": 0,
|
||||
"react/no-array-index-key": 0,
|
||||
"no-restricted-properties": 0,
|
||||
"no-prototype-builtins": 0,
|
||||
"jsx-a11y/href-no-hash": 0,
|
||||
"react/forbid-prop-types": 0,
|
||||
"class-methods-use-this": 0,
|
||||
"import/no-named-as-default": 0,
|
||||
"import/prefer-default-export": 0,
|
||||
"indent": 0,
|
||||
"jsx-a11y/anchor-has-content": 0,
|
||||
"jsx-a11y/href-no-hash": 0,
|
||||
"jsx-a11y/no-static-element-interactions": 0,
|
||||
"new-cap": 0,
|
||||
"no-bitwise": 0,
|
||||
"no-confusing-arrow": 0,
|
||||
"no-continue": 0,
|
||||
"no-mixed-operators": 0,
|
||||
"no-multi-assign": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"no-plusplus": 0,
|
||||
"no-prototype-builtins": 0,
|
||||
"no-restricted-properties": 0,
|
||||
"no-restricted-syntax": 0,
|
||||
"padded-blocks": 0,
|
||||
"prefer-arrow-callback": 0,
|
||||
"prefer-template": 0,
|
||||
"react/forbid-prop-types": 0,
|
||||
"react/jsx-no-bind": 0,
|
||||
"react/no-array-index-key": 0,
|
||||
"react/no-string-refs": 0,
|
||||
"react/no-unescaped-entities": 0,
|
||||
"react/no-unused-prop-types": 0,
|
||||
"react/require-default-props": 0
|
||||
},
|
||||
"settings": {
|
||||
"import/resolver": "webpack"
|
||||
"react/no-string-refs": 0,
|
||||
"indent": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"padded-blocks": 0,
|
||||
}
|
||||
}
|
||||
|
||||
54
superset/assets/.istanbul.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
verbose: true
|
||||
instrumentation:
|
||||
root: './javascripts'
|
||||
extensions: ['.js', '.jsx']
|
||||
excludes: [
|
||||
'dist/**'
|
||||
]
|
||||
embed-source: false
|
||||
variable: __coverage__
|
||||
compact: true
|
||||
preserve-comments: false
|
||||
complete-copy: false
|
||||
save-baseline: true
|
||||
baseline-file: ./coverage/coverage-baseline.json
|
||||
include-all-sources: true
|
||||
include-pid: false
|
||||
es-modules: true
|
||||
reporting:
|
||||
print: summary
|
||||
reports:
|
||||
- lcov
|
||||
dir: ./coverage
|
||||
watermarks:
|
||||
statements: [50, 80]
|
||||
lines: [50, 80]
|
||||
functions: [50, 80]
|
||||
branches: [50, 80]
|
||||
report-config:
|
||||
clover: {file: clover.xml}
|
||||
cobertura: {file: cobertura-coverage.xml}
|
||||
json: {file: coverage-final.json}
|
||||
json-summary: {file: coverage-summary.json}
|
||||
lcovonly: {file: lcov.info}
|
||||
teamcity: {file: null, blockName: Code Coverage Summary}
|
||||
text: {file: null, maxCols: 0}
|
||||
text-lcov: {file: lcov.info}
|
||||
text-summary: {file: null}
|
||||
hooks:
|
||||
hook-run-in-context: false
|
||||
post-require-hook: null
|
||||
handle-sigint: false
|
||||
check:
|
||||
global:
|
||||
statements: 0
|
||||
lines: 0
|
||||
branches: 0
|
||||
functions: 0
|
||||
excludes: []
|
||||
each:
|
||||
statements: 0
|
||||
lines: 0
|
||||
branches: 0
|
||||
functions: 0
|
||||
excludes: []
|
||||
2995
superset/assets/backendSync.json
Normal file
45
superset/assets/branding/FullLockupWithText.svg
Normal file
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="210px" height="202px" viewBox="0 0 210 202" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Full Lockup With Text</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="path-1"></path>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-5" y="-5" width="122.183871" height="65.65">
|
||||
<rect x="-5" y="-5" width="122.183871" height="65.65" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="Main" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Superset" transform="translate(-177.000000, -812.000000)">
|
||||
<g id="Full-Lockup-With-Text" transform="translate(177.000000, 812.000000)">
|
||||
<g id="Group-7" transform="translate(0.500000, 0.500000)">
|
||||
<g id="Group-17">
|
||||
<g id="Group-6-Copy">
|
||||
<g id="Group" fill="#484848">
|
||||
<path d="M0,80.85 C8.56021505,80.85 15.0179211,84.6 15.0179211,94.8 L15.0179211,116.1 C15.0179211,135.9 25.9810036,145.2 44.1526882,145.2 L48.8082437,145.2 L48.8082437,130.05 L44.3028674,130.05 C36.944086,130.05 31.8379928,126.6 31.8379928,116.55 L31.8379928,91.5 C31.8379928,81.9 26.281362,75 16.6698925,72.6 C26.281362,70.05 31.8379928,63.3 31.8379928,53.7 L31.8379928,28.5 C31.8379928,18.45 36.944086,15.15 44.3028674,15.15 L48.8082437,15.15 L48.8082437,0 L44.1526882,0 C25.9810036,0 15.0179211,9.15 15.0179211,28.95 L15.0179211,50.25 C15.0179211,60.45 8.56021505,64.2 0,64.2 L0,80.85 Z" id="{-copy-4"></path>
|
||||
<path d="M160.691756,80.85 C169.251971,80.85 175.709677,84.6 175.709677,94.8 L175.709677,116.1 C175.709677,135.9 186.67276,145.2 204.844444,145.2 L209.5,145.2 L209.5,130.05 L204.994624,130.05 C197.635842,130.05 192.529749,126.6 192.529749,116.55 L192.529749,91.5 C192.529749,81.9 186.973118,75 177.361649,72.6 C186.973118,70.05 192.529749,63.3 192.529749,53.7 L192.529749,28.5 C192.529749,18.45 197.635842,15.15 204.994624,15.15 L209.5,15.15 L209.5,0 L204.844444,0 C186.67276,0 175.709677,9.15 175.709677,28.95 L175.709677,50.25 C175.709677,60.45 169.251971,64.2 160.691756,64.2 L160.691756,80.85 Z" id="{-copy-5" transform="translate(185.095878, 72.600000) rotate(-180.000000) translate(-185.095878, -72.600000) "></path>
|
||||
<path d="M104.67491,86.25 C95.8143369,95.85 87.8548387,100.65 77.6426523,100.65 C60.9727599,100.65 48.8082437,88.95 48.8082437,72.9 C48.8082437,56.85 60.9727599,45 77.6426523,45 C87.7046595,45 96.7154122,50.25 105.125448,59.85 C113.685663,50.4 122.546237,45 132.157706,45 C148.827599,45 160.992115,56.85 160.992115,72.9 C160.992115,88.95 148.827599,100.65 132.157706,100.65 C121.94552,100.65 113.235125,95.85 104.67491,86.25 Z M77.9430108,62.1 C70.8845878,62.1 66.6795699,66.9 66.6795699,73.05 C66.6795699,79.2 70.8845878,83.85 77.9430108,83.85 C83.8,83.85 89.0562724,79.35 94.0121864,73.35 C88.755914,66.9 83.9501792,62.1 77.9430108,62.1 Z M131.857348,83.85 C126.000358,83.85 121.044444,79.2 115.788172,73.05 C121.194624,66.6 125.850179,62.1 131.857348,62.1 C138.915771,62.1 143.120789,66.9 143.120789,73.05 C143.120789,79.2 138.915771,83.85 131.857348,83.85 Z" id="∞"></path>
|
||||
</g>
|
||||
<rect id="Bottom" fill="#FFFFFF" transform="translate(116.947287, 85.695730) rotate(-320.000000) translate(-116.947287, -85.695730) " x="107.936535" y="73.3847709" width="18.0215054" height="24.6219184"></rect>
|
||||
<rect id="Top" fill="#FFFFFF" transform="translate(91.942412, 61.695730) rotate(-320.000000) translate(-91.942412, -61.695730) " x="82.9316592" y="49.3847709" width="18.0215054" height="24.6219184"></rect>
|
||||
</g>
|
||||
<text id="Superset-Copy" font-family="Roboto-Black, Roboto" font-size="37.5" font-weight="700" letter-spacing="0.500625014" fill="#484848">
|
||||
<tspan x="26.281362" y="192.625">Superset</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group-10" transform="translate(49.500000, 45.500000)">
|
||||
<g id="WORK-SPACE">
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="∞-copy-2" fill="#484848"></path>
|
||||
<path d="M35.3031737,7.82736301 L54.6231734,7.82736301 C54.6231734,7.82736301 54.1382597,11.9130391 54.1201021,16.2068622 C54.1019446,20.5006853 53.079701,24.1223631 53.079701,24.1223631 L35.3031737,24.1223631 L35.3031737,7.82736301 Z" id="Path" fill="#00D1C1" transform="translate(44.963174, 15.974863) rotate(-50.000000) translate(-44.963174, -15.974863) "></path>
|
||||
<rect id="Path-Copy" fill="#00D1C1" transform="translate(67.518574, 40.130521) rotate(-50.000000) translate(-67.518574, -40.130521) " x="57.8585742" y="31.9830205" width="19.3199997" height="16.2950001"></rect>
|
||||
<path d="M29.134767,17.1 C35.1419355,17.1 39.9476703,21.9 45.2039427,28.35 C40.2480287,34.35 34.9917563,38.85 29.134767,38.85 C22.0763441,38.85 17.8713262,34.2 17.8713262,28.05 C17.8713262,21.9 22.0763441,17.1 29.134767,17.1 Z" id="Path" fill="#FFFFFF"></path>
|
||||
<path d="M83.0491039,38.85 C77.1921147,38.85 72.2362007,34.2 66.9799283,28.05 C72.3863799,21.6 77.0419355,17.1 83.0491039,17.1 C90.1075269,17.1 94.3125448,21.9 94.3125448,28.05 C94.3125448,34.2 90.1075269,38.85 83.0491039,38.85 Z" id="Path" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
<use id="∞-copy-2" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="10" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
BIN
superset/assets/branding/FullLockupWithText@2x.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
34
superset/assets/branding/FullLockupWithoutText@1x.svg
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="210px" height="146px" viewBox="0 0 210 146" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Full Lockup Without Text@1x</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="path-1"></path>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-5" y="-5" width="122.183871" height="65.65">
|
||||
<rect x="-5" y="-5" width="122.183871" height="65.65" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="Main" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Superset" transform="translate(-177.000000, -466.000000)">
|
||||
<g id="Full-Lockup-Without-Text" transform="translate(177.000000, 466.000000)">
|
||||
<path d="M0.5,81.35 C9.06021505,81.35 15.5179211,85.1 15.5179211,95.3 L15.5179211,116.6 C15.5179211,136.4 26.4810036,145.7 44.6526882,145.7 L49.3082437,145.7 L49.3082437,130.55 L44.8028674,130.55 C37.444086,130.55 32.3379928,127.1 32.3379928,117.05 L32.3379928,92 C32.3379928,82.4 26.781362,75.5 17.1698925,73.1 C26.781362,70.55 32.3379928,63.8 32.3379928,54.2 L32.3379928,29 C32.3379928,18.95 37.444086,15.65 44.8028674,15.65 L49.3082437,15.65 L49.3082437,0.5 L44.6526882,0.5 C26.4810036,0.5 15.5179211,9.65 15.5179211,29.45 L15.5179211,50.75 C15.5179211,60.95 9.06021505,64.7 0.5,64.7 L0.5,81.35 Z" id="{-copy-4" fill="#484848"></path>
|
||||
<path d="M161.191756,81.35 C169.751971,81.35 176.209677,85.1 176.209677,95.3 L176.209677,116.6 C176.209677,136.4 187.17276,145.7 205.344444,145.7 L210,145.7 L210,130.55 L205.494624,130.55 C198.135842,130.55 193.029749,127.1 193.029749,117.05 L193.029749,92 C193.029749,82.4 187.473118,75.5 177.861649,73.1 C187.473118,70.55 193.029749,63.8 193.029749,54.2 L193.029749,29 C193.029749,18.95 198.135842,15.65 205.494624,15.65 L210,15.65 L210,0.5 L205.344444,0.5 C187.17276,0.5 176.209677,9.65 176.209677,29.45 L176.209677,50.75 C176.209677,60.95 169.751971,64.7 161.191756,64.7 L161.191756,81.35 Z" id="{-copy-5" fill="#484848" transform="translate(185.595878, 73.100000) rotate(-180.000000) translate(-185.595878, -73.100000) "></path>
|
||||
<path d="M105.366667,86.75 C96.5060932,96.35 88.546595,101.15 78.3344086,101.15 C61.6645161,101.15 49.5,89.45 49.5,73.4 C49.5,57.35 61.6645161,45.5 78.3344086,45.5 C88.3964158,45.5 97.4071685,50.75 105.817204,60.35 C114.377419,50.9 123.237993,45.5 132.849462,45.5 C149.519355,45.5 161.683871,57.35 161.683871,73.4 C161.683871,89.45 149.519355,101.15 132.849462,101.15 C122.637276,101.15 113.926882,96.35 105.366667,86.75 Z M78.634767,62.6 C71.5763441,62.6 67.3713262,67.4 67.3713262,73.55 C67.3713262,79.7 71.5763441,84.35 78.634767,84.35 C84.4917563,84.35 89.7480287,79.85 94.7039427,73.85 C89.4476703,67.4 84.6419355,62.6 78.634767,62.6 Z M132.549104,84.35 C126.692115,84.35 121.736201,79.7 116.479928,73.55 C121.88638,67.1 126.541935,62.6 132.549104,62.6 C139.607527,62.6 143.812545,67.4 143.812545,73.55 C143.812545,79.7 139.607527,84.35 132.549104,84.35 Z" id="∞" fill="#484848"></path>
|
||||
<rect id="Bottom" fill="#FFFFFF" transform="translate(117.815969, 86.222742) rotate(-320.000000) translate(-117.815969, -86.222742) " x="108.805216" y="73.9117829" width="18.0215054" height="24.6219184"></rect>
|
||||
<polygon id="Top" fill="#FFFFFF" transform="translate(93.488745, 61.141018) rotate(-320.000000) translate(-93.488745, -61.141018) " points="84.477992 50.894853 102.499497 50.894853 102.499497 71.3871824 84.5471936 70.9586997"></polygon>
|
||||
<g id="Group-10" transform="translate(49.500000, 45.500000)">
|
||||
<g id="WORK-SPACE">
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="∞-copy-2" fill="#484848"></path>
|
||||
<path d="M35.3031737,7.82736301 L54.6231734,7.82736301 C54.6231734,7.82736301 54.1382597,11.9130391 54.1201021,16.2068622 C54.1019446,20.5006853 53.079701,24.1223631 53.079701,24.1223631 L35.3031737,24.1223631 L35.3031737,7.82736301 Z" id="Path" fill="#00D1C1" transform="translate(44.963174, 15.974863) rotate(-50.000000) translate(-44.963174, -15.974863) "></path>
|
||||
<rect id="Path-Copy" fill="#00D1C1" transform="translate(67.518574, 40.130521) rotate(-50.000000) translate(-67.518574, -40.130521) " x="57.8585742" y="31.9830205" width="19.3199997" height="16.2950001"></rect>
|
||||
<path d="M29.134767,17.1 C35.1419355,17.1 39.9476703,21.9 45.2039427,28.35 C40.2480287,34.35 34.9917563,38.85 29.134767,38.85 C22.0763441,38.85 17.8713262,34.2 17.8713262,28.05 C17.8713262,21.9 22.0763441,17.1 29.134767,17.1 Z" id="Path" fill="#FFFFFF"></path>
|
||||
<path d="M83.0491039,38.85 C77.1921147,38.85 72.2362007,34.2 66.9799283,28.05 C72.3863799,21.6 77.0419355,17.1 83.0491039,17.1 C90.1075269,17.1 94.3125448,21.9 94.3125448,28.05 C94.3125448,34.2 90.1075269,38.85 83.0491039,38.85 Z" id="Path" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
<use id="∞-copy-2" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="10" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.1 KiB |
BIN
superset/assets/branding/FullLockupWithoutText@2x.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
35
superset/assets/branding/Horizontal.svg
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="350px" height="66px" viewBox="0 0 350 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Horizontal</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="path-1"></path>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-5" y="-5" width="122.183871" height="65.65">
|
||||
<rect x="-5" y="-5" width="122.183871" height="65.65" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="Main" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Superset" transform="translate(-319.000000, -195.000000)">
|
||||
<g id="Horizontal" transform="translate(324.000000, 200.000000)">
|
||||
<g id="Group-3">
|
||||
<text id="Superset" font-family="Roboto-Black, Roboto" font-size="50" font-weight="700" letter-spacing="0.670000017" fill="#484848">
|
||||
<tspan x="137" y="46">Superse</tspan>
|
||||
<tspan x="328.335508" y="46">t</tspan>
|
||||
</text>
|
||||
<g id="Group-10-Copy-8">
|
||||
<g id="WORK-SPACE">
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="∞-copy-2" fill="#484848"></path>
|
||||
<path d="M35.3031737,7.82736301 L54.6231734,7.82736301 C54.6231734,7.82736301 54.1382597,11.9130391 54.1201021,16.2068622 C54.1019446,20.5006853 53.079701,24.1223631 53.079701,24.1223631 L35.3031737,24.1223631 L35.3031737,7.82736301 Z" id="Path" fill="#00D1C1" transform="translate(44.963174, 15.974863) rotate(-50.000000) translate(-44.963174, -15.974863) "></path>
|
||||
<rect id="Path-Copy" fill="#00D1C1" transform="translate(67.518574, 40.130521) rotate(-50.000000) translate(-67.518574, -40.130521) " x="57.8585742" y="31.9830205" width="19.3199997" height="16.2950001"></rect>
|
||||
<path d="M29.134767,17.1 C35.1419355,17.1 39.9476703,21.9 45.2039427,28.35 C40.2480287,34.35 34.9917563,38.85 29.134767,38.85 C22.0763441,38.85 17.8713262,34.2 17.8713262,28.05 C17.8713262,21.9 22.0763441,17.1 29.134767,17.1 Z" id="Path" fill="#FFFFFF"></path>
|
||||
<path d="M83.0491039,38.85 C77.1921147,38.85 72.2362007,34.2 66.9799283,28.05 C72.3863799,21.6 77.0419355,17.1 83.0491039,17.1 C90.1075269,17.1 94.3125448,21.9 94.3125448,28.05 C94.3125448,34.2 90.1075269,38.85 83.0491039,38.85 Z" id="Path" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
<use id="∞-copy-2" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="10" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
BIN
superset/assets/branding/Horizontal@2x.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
superset/assets/branding/SoloMark.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
27
superset/assets/branding/SoloMark@1x.svg
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="123px" height="66px" viewBox="0 0 123 66" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Solo Mark@1x</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="path-1"></path>
|
||||
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-5" y="-5" width="122.183871" height="65.65">
|
||||
<rect x="-5" y="-5" width="122.183871" height="65.65" fill="white"></rect>
|
||||
<use xlink:href="#path-1" fill="black"></use>
|
||||
</mask>
|
||||
</defs>
|
||||
<g id="Main" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Superset" transform="translate(-787.000000, -557.000000)">
|
||||
<g id="Solo-Mark" transform="translate(792.000000, 562.000000)">
|
||||
<g id="WORK-SPACE">
|
||||
<path d="M55.8666667,41.25 C64.4268817,50.85 73.137276,55.65 83.3494624,55.65 C100.019355,55.65 112.183871,43.95 112.183871,27.9 C112.183871,11.85 100.019355,0 83.3494624,0 C73.7379928,0 64.8774194,5.4 56.3172043,14.85 C47.9071685,5.25 38.8964158,0 28.8344086,0 C12.1645161,0 -2.84217094e-14,11.85 -2.84217094e-14,27.9 C-2.84217094e-14,43.95 12.1645161,55.65 28.8344086,55.65 C39.046595,55.65 47.0060932,50.85 55.8666667,41.25 Z" id="∞-copy-2" fill="#484848"></path>
|
||||
<path d="M35.3031737,7.82736301 L54.6231734,7.82736301 C54.6231734,7.82736301 54.1382597,11.9130391 54.1201021,16.2068622 C54.1019446,20.5006853 53.079701,24.1223631 53.079701,24.1223631 L35.3031737,24.1223631 L35.3031737,7.82736301 Z" id="Path" fill="#00D1C1" transform="translate(44.963174, 15.974863) rotate(-50.000000) translate(-44.963174, -15.974863) "></path>
|
||||
<rect id="Path-Copy" fill="#00D1C1" transform="translate(67.518574, 40.130521) rotate(-50.000000) translate(-67.518574, -40.130521) " x="57.8585742" y="31.9830205" width="19.3199997" height="16.2950001"></rect>
|
||||
<path d="M29.134767,17.1 C35.1419355,17.1 39.9476703,21.9 45.2039427,28.35 C40.2480287,34.35 34.9917563,38.85 29.134767,38.85 C22.0763441,38.85 17.8713262,34.2 17.8713262,28.05 C17.8713262,21.9 22.0763441,17.1 29.134767,17.1 Z" id="Path" fill="#FFFFFF"></path>
|
||||
<path d="M83.0491039,38.85 C77.1921147,38.85 72.2362007,34.2 66.9799283,28.05 C72.3863799,21.6 77.0419355,17.1 83.0491039,17.1 C90.1075269,17.1 94.3125448,21.9 94.3125448,28.05 C94.3125448,34.2 90.1075269,38.85 83.0491039,38.85 Z" id="Path" fill="#FFFFFF"></path>
|
||||
</g>
|
||||
<use id="∞-copy-2" stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="10" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 81 KiB |
@@ -1,19 +0,0 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 265.69 68.51"><defs><style>.cls-1{fill:#484848;}.cls-2{fill:#00d1c1;}.cls-3{isolation:isolate;}</style></defs><title>superset-logo-horiz</title><path class="cls-1" d="M73.79,15.23c-6.47,0-12.43,3.64-18.19,10-5.66-6.46-11.72-10-18.49-10-11.21,0-19.39,8-19.39,18.77S25.9,52.67,37.11,52.67C44,52.67,49.34,49.44,55.3,43c5.76,6.46,11.62,9.69,18.49,9.69C85,52.67,93.18,44.8,93.18,34S85,15.23,73.79,15.23ZM37.19,41.37c-4.75,0-7.58-3.13-7.58-7.27s2.83-7.36,7.58-7.36c4,0,7.27,3.22,10.81,7.56C44.66,38.34,41.13,41.37,37.19,41.37Zm36.26,0c-3.94,0-7.27-3.13-10.81-7.27,3.64-4.34,6.77-7.36,10.81-7.36C78.2,26.74,81,30,81,34.1S78.2,41.37,73.45,41.37Z"/><path class="cls-2" d="M63.74,50l7.54-9c-3-.9-5.77-3.6-8.64-6.95L55.3,43A33,33,0,0,0,63.74,50Z"/><g id="Main"><g id="Superset"><g id="Full-Lockup-With-Text"><g id="Group-7"><g id="Group-17"><g id="Superset-Copy" class="cls-3"><g class="cls-3"><path class="cls-1" d="M116.72,40.39A3,3,0,0,0,115.66,38a10.77,10.77,0,0,0-3.73-1.72,21,21,0,0,1-7-3.18,6,6,0,0,1-2.38-5,6.23,6.23,0,0,1,2.73-5.22,11.27,11.27,0,0,1,7-2,10.46,10.46,0,0,1,7,2.28,6.83,6.83,0,0,1,2.6,5.62l0,.1h-5.06a3.79,3.79,0,0,0-1.21-2.92,4.8,4.8,0,0,0-3.38-1.11,5.08,5.08,0,0,0-3.24.92,3,3,0,0,0-1.14,2.38A2.55,2.55,0,0,0,109,30.23,16.83,16.83,0,0,0,113.2,32a16.38,16.38,0,0,1,6.52,3.16,6.57,6.57,0,0,1,2.22,5.17,6.18,6.18,0,0,1-2.64,5.27,11.46,11.46,0,0,1-7,1.93,12.68,12.68,0,0,1-7.41-2.19,6.84,6.84,0,0,1-3.08-6.14l0-.11H107a4,4,0,0,0,1.42,3.41,6.43,6.43,0,0,0,4,1.08,5.16,5.16,0,0,0,3.25-.88A2.78,2.78,0,0,0,116.72,40.39Z"/><path class="cls-1" d="M137,44.4a6.54,6.54,0,0,1-2.27,2.34,6.7,6.7,0,0,1-8-1.14q-1.72-2-1.72-6.08V27.85h5.2V39.58a5.09,5.09,0,0,0,.71,3,2.52,2.52,0,0,0,2.11.92,5.36,5.36,0,0,0,2.15-.4,3.62,3.62,0,0,0,1.46-1.2V27.85h5.22V47.18h-4.45Z"/><path class="cls-1" d="M162.87,38.05a11.06,11.06,0,0,1-2,6.9,6.56,6.56,0,0,1-5.54,2.61,6.3,6.3,0,0,1-2.7-.56,5.63,5.63,0,0,1-2-1.66v9.28h-5.2V27.85h4.7l.31,2.28a6.26,6.26,0,0,1,2.06-1.95,5.61,5.61,0,0,1,2.82-.69,6.43,6.43,0,0,1,5.57,2.81,12.47,12.47,0,0,1,2,7.38Zm-5.22-.4a9.49,9.49,0,0,0-.91-4.44,3,3,0,0,0-2.79-1.7,3.94,3.94,0,0,0-2,.48,3.58,3.58,0,0,0-1.32,1.38v8.49a3.24,3.24,0,0,0,1.32,1.25,4.34,4.34,0,0,0,2,.43,3,3,0,0,0,2.78-1.49,7.83,7.83,0,0,0,.89-4Z"/><path class="cls-1" d="M174.21,47.56a8.71,8.71,0,0,1-6.69-2.68,9.59,9.59,0,0,1-2.5-6.81v-.71a10.57,10.57,0,0,1,2.37-7.1,8.83,8.83,0,0,1,12.43-.41A9.08,9.08,0,0,1,182,36.23v2.84H170.43l0,.11a5,5,0,0,0,1.28,3.13,4,4,0,0,0,3.08,1.23,10.15,10.15,0,0,0,2.88-.35,13.29,13.29,0,0,0,2.5-1.1l1.41,3.23a9.62,9.62,0,0,1-3.09,1.6A13.26,13.26,0,0,1,174.21,47.56Zm-.47-16a2.73,2.73,0,0,0-2.29,1.11,5.76,5.76,0,0,0-1,2.91l.05.09h6.4v-.46a4.19,4.19,0,0,0-.78-2.66A2.8,2.8,0,0,0,173.74,31.51Z"/><path class="cls-1" d="M195.3,32.33l-1.92,0a3.49,3.49,0,0,0-1.91.48,3.06,3.06,0,0,0-1.14,1.36V47.18h-5.2V27.85H190l.23,2.86A6.09,6.09,0,0,1,192,28.34a3.92,3.92,0,0,1,2.5-.85,4,4,0,0,1,.72.06l.67.15Z"/><path class="cls-1" d="M208.32,41.86a1.82,1.82,0,0,0-.83-1.49,8.55,8.55,0,0,0-3.08-1.1,12.46,12.46,0,0,1-5.17-2.07,4.46,4.46,0,0,1-1.75-3.72,5.33,5.33,0,0,1,2.1-4.25,8.54,8.54,0,0,1,5.62-1.74,9.26,9.26,0,0,1,5.89,1.73,5.13,5.13,0,0,1,2.1,4.38l0,.11h-5a2.57,2.57,0,0,0-.74-1.9,3,3,0,0,0-2.18-.73,3,3,0,0,0-2,.62,1.94,1.94,0,0,0-.72,1.54,1.75,1.75,0,0,0,.76,1.47,8.29,8.29,0,0,0,3.08,1,12.5,12.5,0,0,1,5.31,2.1,4.61,4.61,0,0,1,1.73,3.81,5.1,5.1,0,0,1-2.23,4.27,9.71,9.71,0,0,1-5.9,1.65,8.93,8.93,0,0,1-6.1-2A5.46,5.46,0,0,1,197,41.14l0-.1h4.77a2.69,2.69,0,0,0,1,2.25,4.22,4.22,0,0,0,2.52.7,3.61,3.61,0,0,0,2.2-.58A1.83,1.83,0,0,0,208.32,41.86Z"/><path class="cls-1" d="M224.86,47.56a8.69,8.69,0,0,1-6.68-2.68,9.59,9.59,0,0,1-2.5-6.81v-.71a10.62,10.62,0,0,1,2.36-7.1,8.83,8.83,0,0,1,12.43-.41,9,9,0,0,1,2.17,6.38v2.84H221.09l0,.11a5,5,0,0,0,1.27,3.13,4,4,0,0,0,3.09,1.23,10.08,10.08,0,0,0,2.87-.35,13.08,13.08,0,0,0,2.51-1.1l1.41,3.23a9.73,9.73,0,0,1-3.09,1.6A13.32,13.32,0,0,1,224.86,47.56Zm-.46-16a2.71,2.71,0,0,0-2.29,1.11,5.77,5.77,0,0,0-1,2.91l.06.09h6.4v-.46a4.19,4.19,0,0,0-.78-2.66A2.8,2.8,0,0,0,224.4,31.51Z"/><path class="cls-1" d="M242.35,23.11v4.74h3.26v3.66h-3.26v9.85a2.28,2.28,0,0,0,.47,1.61,1.65,1.65,0,0,0,1.25.48,4.58,4.58,0,0,0,.7-.05,6.28,6.28,0,0,0,.69-.15l.45,3.77a10.69,10.69,0,0,1-1.54.41,10.23,10.23,0,0,1-1.62.13,5.56,5.56,0,0,1-4.16-1.48,6.52,6.52,0,0,1-1.46-4.7V31.51h-2.82V27.85h2.82V23.11Z"/></g></g></g></g></g></g></g><path class="cls-2" d="M55.6,25.22a33.93,33.93,0,0,0-8.39-7.16l-7.55,9.1c2.87,1,5.41,3.58,8.11,6.87l.3.21Z"/><path class="cls-1" d="M248.77,23.62h-.85v2.66h-.55V23.62h-.85v-.48h2.25Zm3.16.65h0l-.88,2h-.3l-.91-2.1h0v2.09h-.54V23.14h.68l.94,2.28h0l1-2.28h.65v3.14h-.55Z"/></svg>
|
||||
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 152 KiB |