Easily configurable, chart dashboards from any arbitrary API endpoint. JSON config only

Overview

Flask JSONDash

Codacy Badge Code Climate Scrutinizer Code Quality Build Status Build Status Code Health Coverage Status PyPI version

Easily configurable, chart dashboards from any arbitrary API endpoint. JSON config only. Ready to go.

kitchen sink 2

kitchen sink 1

Vega lite

dashboard overview

adding a widget

kitchensink screenshot 1

This project is a flask blueprint that allows you to create sleek dashboards without writing any front end (or backend) code. Everything is powered through simple JSON configurations for declaring arbitrary charts.

Features

  • Leveraging popular libraries like C3.js and D3.js, and MUCH MORE.
  • Also supports templates and iframes
  • Only a basic intuitive configuration is required.
  • The dashboard layout and blueprint styles are pre-packaged, and provide only the essentials, while getting out of the way.
  • Drag-and-drop your layout easily and intuitively
  • Multiple layout modes - bootstrap grid based or totally freeform
  • Data utilities for munging and manipulating data suitable for various charts

View all supported libraries

It uses any specified json endpoint to get data from, so long as the payload format is correct.

JSON configurations intro

The configuration JSON provides core functionality and is at the heart of the project. There are several comprehensive examples available in the examples/config directory to give you an idea of how it works, as well as the core configuration documentation. An simple example:

{
    "modules": [
        {
            "type": "timeseries",
            "name": "name3",
            "width": 510,
            "height": 400,
            "dataSource": "http://localhost:5001/test1",
            "order": 0
        }
    ]
}

(4.0 and later) You can even provide custom inputs to allow interactivity on each chart!

E.g.

{
    "modules": [
        {
            "name": "line",
            "height": "400",
            "width": "500",
            "dataSource": "http://127.0.0.1:5004/custom-inputs",
            "override": false,
            "guid": "a6eb10e7-26fa-7814-818a-3699b24415c5",
            "type": "line",
            "inputs": {
                "btn_classes": ["btn", "btn-info", "btn-sm"],
                "submit_text": "Submit",
                "options": [
                    {
                        "type": "number",
                        "name": "entries",
                        "input_classes": ["form-control", "input-sm"],
                        "label": "Number of points",
                        "help_text": "Change the number of points per entry shown"
                    }
                ]
            }
        }
    ]
}

Which will map to query parameters (entries=10 in this example) that you can use to filter or change what your endpoint returns!

Also note that the order of the inputs in the json will determine their order in html.

Below is an example output using a custom input configuration:

inputs example

See the examples/config directory for all the supported options.

Demo

If you want to see all/most charts in action, you'll need to fire up the endpoints.py flask app (included) alongside your main app that uses the blueprint, create a new dashboard, then choose the edit raw json option, specifying one of the json files found in examples/config. (This has been tested using mongodb).

Various chart schemas JSON formats

Each chart is very straightforward. Most of the power is leveraged by the various charting libraries that flask-jsondash defers to. See schemas for more detail on how your endpoint json data should be formatted for a given chart type, as well as how to find docs for each supported library.

Usage

Quickstart

Setting database environment variables.

Make sure the following env vars are set:

  • CHARTS_DB_HOST - The DB server hostname (defaults to 'localhost')
  • CHARTS_DB_PORT - The DB server port (defaults to 27017)
  • CHARTS_DB_NAME - The DB database name (defaults to 'charts')
  • CHARTS_DB_TABLE The DB collection name (defaults to 'views')
  • CHARTS_ACTIVE_DB The DB backend to use - options: 'mongo' (default)
Starting DB

Make sure to start so json configuration can be saved.

Starting db: MongoDB

Start however you'd like, but usually mongod will work. Note: you will need to make sure the collection has been created within your mongo instance, and is specified in the CHARTS_DB_TABLE env var, as well as specify your database name under the CHARTS_DB_NAME env var

Download the package and start the app

Method 1 - use provided flask app

git clone https://github.com/christabor/flask_jsondash.git
cd flask_jsondash
virtualenv env
source env/bin/activate
python setup.py install
cd example_app
python app.py

This will setup the app in a virtual environment and run the included test app (app.py) immediately on port 8080.

If you want to import the blueprint into your own existing flask instance:

Method 2 - use your existing app

pip install flask-jsondash

Your app will need to import and register the blueprint, as well as have the appropriate template tags. An example of this can be found here.

Method 3 - Docker

Assuming you have docker and docker-compose installed:

git clone https://github.com/christabor/flask_jsondash.git
make dockerize

This will build the base and services images, setup your docker services and link them together. The endpoints will run on 0.0.0.0:5004 by default, and your app is available at 0.0.0.0:8080.

Note that there are three docker files, a base and then inheriting ones. This is a way to speed up subsequent app-specific builds without having to reinstall python and update apt repos

Note, for any serious usage, you'll always want to configure external volumes for mongodb, so that your data is persisted OUTSIDE of docker.

Python 3.x usage

The above should work, but you'll need to use the python 3.x equivalent for all of the operations; e.g.:

...
virtualenv -p python3 env
python3 setup.py install
python3 app.py

Requirements

Core

  • Flask
  • Jinja2

Javascript/CSS

These are not included, as you are likely going to have them yourself. If you don't, you'll need to add them:

  • Jquery (JS)
  • Bootstrap (CSS/JS)

These are necessary and included, based simply on the likelihood they may not already be used:

  • JRespond (JS)
  • Masonry (JS)
  • Jquery UI (CSS/JS)

Starting flask app

Either import and use the blueprint in your own flask app, or run app.py directly to start the app as-is.

Starting the test server

Run endpoints.py if you'd like to test out existing endpoints to link your chart json to.

Using remote AJAX endpoints

See endpoints.py for examples on how to achieve this. If you do not allow CORS on the server-side, all ajax requests will fail.

Customization

Beyond the above outlined configurations that power the core of jsondash, there are more ways to control how the application works.

Flask configuration

Authentication

By default, no authentication is performed for a given action. However, supporting your own custom auth for each type is just a simple config away. Using the flask pattern of injecting configurations into the app.config namespace (in this case, JSONDASH must be specified), you can put whichever functions you want, and only those specified will be checked. Here is a working example:

def can_edit_others(view_id=None):
    if view_id == '...' and session.get('user')['name'] in SECRET_ADMINS:
        return True
    return False

def can_delete_charts():
    return session.get('user')['name'] in SECRET_ADMINS

charts_config = dict(
    auth=dict(
        edit_others=can_edit_others,
        delete=can_delete_charts,
    ),
)
app.config['JSONDASH'] = charts_config

See below for the supported types and their details.

Authentication types

edit_global

This determines if a user can create OR update a chart with the "global" flag set, which will show the dashboard to all users if the appropriate application flags are set (see global config flags below) If no flag is set for allowing global dashboards, then this option will not be available.

delete

Allows deleting of charts.

clone

Allows cloning of charts.

update

Allows updating of charts.

create

Allows creation of new charts.

view

Allows viewing of a chart. The provided function will be passed the id of the view as a view_id kwarg.

edit_others

Allow editing of other creators' charts. The provided function will be passed the id of the view as a view_id kwarg. If the created_by matches the logged in user, it will automatically be allowed, regardless of the auth override.

Metadata configuration

Metadata can be added to the json configuration for further customization purposes. All arbitrary values will expect an accompanying function to be populated with, in the exact same way as the auth functions listed above. They will all be namespaced under the metadata key inside of the app.config['JSONDASH'] dictionary, if specified.

Below is an example of how you can override these fields with your own arbitrary functions. Note: by default, none take arguments. This may change for specific types.

charts_config = dict(
    metadata=dict(
        created_by=get_username,
    ),
)
app.config['JSONDASH'] = charts_config

The following metadata overrides are used, but you can also add arbitrary keys and values, which will be saved to the dashboard config, just not necessarily used here.

created_by

This is used to organize views on the front-page by user, if there is such a key present on the configuration. This key is updated and saved if present, null otherwise.

user

This is the current logged in user. This is required for filtering dashboards by user. You must also set the JSONDASH_FILTERUSERS flag to True in app.config.

Global config flags

Below are global app config flags. Their default values are represented in the example working Python code.

app.config['JSONDASH_FILTERUSERS'] = False: for filtering dashboards by the logged in user. See above for setting user data.

app.config['JSONDASH_GLOBALDASH'] = True: for allowing "global" dashboards to be shown. These dashboards must have a created_user of "global" or be overridden (see below).

app.config['JSONDASH_GLOBAL_USER'] = "global": An owner name to use when allowing global dashboards to be seen. This is set on the created_by property in the specific json config. See above for more examples.

app.config['JSONDASH_MAX_PERPAGE'] = 50: The number of results to show per page. Remaining results will be paginated.

Static asset config options

By default, all assets (css/js) will be loaded remotely by popular CDNs recommended for the given charting library.

However, you might want to ensure assets are always available, or cannot access them because of network/proxy issues. If you would like to use your own local assets specified inside of the settings.py file, you can download them, put them in your app somewhere, and then tell jsondash where they should be loaded from (using the standard flask url_for('static', filename=XXX) pattern.)

Just add a static key in your JSONDASH config with these values like so:

app.config['JSONDASH'] = dict(
    static=dict(
        js_path='js/vendor',
        css_path='css/vendor',
    )
)

With default flask static settings, this would resolve the url to /static/js/vendor/filename.js for example.

You can use one or the other, but it's recommended to use both or none.

Jinja template configuration

The following blocks are used in the master template:

  1. jsondash_body: required for the entire layout
  2. jsondash_css: required for loading the css
  3. jsondash_js: required for loading the js
  4. jsondash_api_scripts: optional if you want to register callbacks (see below) ✔️
  5. jsondash_init: required to initialize the dashboards
  6. jsondash_title: optional if you want to override or augment your page title. ✔️

You can just check out the example app to see how it all should work.

JavaScript configuration

Custom callbacks

While the point of jsondash is to make front-end coding completely unnecessary, and use serializable declarative configurations for making dashboards, sometimes you need to do one off stuff that requires scripting. A callback module exists to allow this very easily without getting in the way of existing configurations.

You can customize individual charts by adding your own javascript files alongside your existing app that uses this blueprint and then register call backs on a per-chart id basis. All callbacks will be run in the order you register them, after the chart has been loaded and rendered completely.

To get started: override the template block in your template to allow javascript to be executed, and register a callback with your own arguments.

{% block jsondash_api_scripts %}
<script>
    jsondash.api.registerCallback('my-chart-guid', function(container, config, myargs){
            console.log('Running FIRST callbacK!');
            console.log(myargs[0]);
            console.log(myargs[1]);
            container.style('background-color', 'green');
            console.log(config.guid);
    }, ['all', 'my', 'optional', 'arguments']);
    // Register a second one, which runs after.
    jsondash.api.registerCallback('my-chart-guid', function(container, config){
            console.log('Running SECOND callbacK!');
    });
script>
{% endblock %}

All callbacks will be passed the following arguments order:

  1. container: The d3 selector for the chart container.
  2. config: The json object configuration for this chart.
  3. args: The array of arguments you supplied when registering the callback.

To see a list of all your callbacks by chart, you can call jsondash.api.listCallbacks();

Custom events

Several events are triggered throughout the process and can be listened to by your own callbacks, or just other code you have embedded in your application:

  • jsondash.init
  • jsondash.editform.loaded
  • jsondash.widget.added
  • jsondash.widget.updated
  • jsondash.widget.deleted
  • jsondash.widget.refresh
  • jsondash.row.add
  • jsondash.row.delete
  • jsondash.preview

See all events in app.js under EVENTS.

Versioning

This project uses semantic versioning for releases. However, the master branch is considered to be unstable as it represents "bleeding edge", with updates, hotfixes, etc... which will eventually get tagged with a release. If you want to use a stable version, make sure to pin the specific release you want to target.

FAQs

Q: "Why'd you choose to expose library X, Y, or Z?"

A: I tried to go for libraries that are pretty widely known and popular. If you are dissatisfied with what's exposed, you can always add your own by embedding any js/css and html in a template, and loading it through the iframe option.

Q: "How do I customize X, Y, Z?"

A: Because of the level of abstraction used here, a lot of charts will naturally be less configurable than if they had been scripted by hand. This is the tradeoff with being able to quickly setup a lot of charts easily.

The goal here is to use intelligent defaults as much as possible, and then allow the most universal aspects to be customized through a common interface.

However, you can inject raw json-friendly configurations if your chart has the override flag set. This will not work for all charts. See configuration options for more.

Keep in mind, many stylistic customizations can be overridden in css, since most all charts are html and/or SVG. And, as mentioned above, you can always use override option, or the iframe/custom option and make your dataSource endpoint return whatever you want, including a full html/js/css pre-rendered template.

Q: "When exposing metadata, why don't you just use the g variable and read from that?"

A: One way this can be done is using the @app.before_request decorator, and populating the g variable with metadata. The problem is that it creates extremely unnecessary overhead.

Tips & tricks

Using the included data utils

Check out data utils for more.

Loading example dashboards config automatically

Run make fixtures.

Using endpoints dynamically

Because the chart builder utilizes simple endpoints, you can use the power of REST to create more complicated views. For example:

curl -XGET http://localhost:8080/api/foo/

could return {"data": [1, 2, 3, 4]}, but you could customize the url by updating the url saved in your dashboard to support query arguments:

curl -XGET http://localhost:8080/api/foo?gt=9

could return {"data": [10, 20, 30, 40]} instead!

Using shared data for performance and simplicity.

Data from a single source can be shared amongst N charts using namespaced "keys" in the payload. See the shared data section and visit an example configuration here for more.

Generating test data

Included are CLI utilities for generating fake charts, etc. You will need to run them like a python package due to their relative import style which is required for py2/p3 compatibility. To run, for example, the model factory generator, run python -m flask_jsondash.model_factories --records 10. For python3.x, just replace that with python3 -m ....

Using the demo mode

If you append the query argument jsondash_demo_mode=1 to your url (e.g. ...?jsondash_demo_mode=1, the UI will automatically hide any dashboard edit buttons and back button. This can be used for example, for displaying on a mounted screen to hide extraneous details.

Embedding charts elsewhere

Similar to jsondash_demo_mode, you can append the query param embeddable (e.g. ?embeddable=1) in your url which will hide all interactive elements, as well as dashboard titles and other ancillary elements.

Note: this will not remove other aspects of your UI that are outside the scope of the jsondash jinja blocks. Those will need to be hidden separately.

Using gist.github.com

While the data is not dynamically generated, you can easily use Github gists (or any raw file from github.com for that matter) to load charts! Check out the kitchensink dashboard to see a real working chart loaded from via gist!

Embedding graphs from other resources

For example, the build tool Jenkins provides a plugin for build statistics. The raw generated png (url is typically of the format https://{JENKINS_SERVER}/view/{VIEW_NAME}/job/{JOB_NAME}/buildTimeGraph/png) can be directly embedded using the iframe chart option.

Other cool stuff

Check out the Makefile for more useful commands.

Performance

Performance metrics are not available, but you can view some "stress test" examples for the example endpoints. The configuration for these are available in examples/config/stresstest.json. Also, the comprehensive examples (plotly, kitchensink) above are very complex dashboards (20-30 charts, webgl, etc), and have been tested in the browser.

A couple observations on stress tests (performed on Macbook Pro / 16gb / 2.7ghz i7):

  • Native D3.js handles large datasets very well. It handled 1-2mb json files with no problem.
  • Datatables handles extremely large datasets with no problem. Maximum tested before degradation was around 100,000 rows.
  • C3.js starts to lag heavily and spends a good 10 seconds and in some cases crashed Google Chrome (with multiple charts on the page) when updwards of 2-300 data points are used per chart (the example config has 10 charts).

Your performance may be better or worse, so just test it out. As always, Your Mileage May Vary.

Debugging/Troubleshooting

My chart won't load even though the url is correct!

http issues

If your site is using https (it should be), this is likely caused by an issue with third-parties not using it, but instead running an insecure http web server. This is unfortunately not easy to fix, unless you:

  • Make your site insecure by no longer have an SSL certificate (not preferable)
  • Tell the owner of the endpoint to enforce SSL on their end and provide https.

javascript issues

To troubleshoot potential javascript parse errors, open up your browser console (In Chrome for example, it's cmd+option+i for Mac, and ctrl+alt+i on Windows) and see if there are any errors. If there are any parse errors, then the format of your json response may be invalid for a given content type. Make sure to check the schemas page for format requirements

My chart is ugly or is flowing outside the container

This is usually only an issue with datatables, particularly when selecting the number of entries to show. The size of the table will grow, and the layout does not account for that, nor should it. The best case here is to determine what size actually makes sense for you and adjust your chart size accordingly.

You can also use the override option supported by this chart, and specify the number of results per page, and the number of entries that can be shown. See the datatables schema docs for more.

Contributing/Development

If you'd like to work on the project, a good place to start is using the example app to develop against. To do this easily, you'll want to setup a virtual environment and setup the package locally, using the develop mode of setuptools. The below should get you started:

git clone github.com/christabor/flask_jsondash.git
cd flask_jsondash
virtualenv env
source env/bin/activate
git checkout -b YOUR_NEW_BRANCH
python setup.py develop
cd example_app
python app.py

And voila! You can now edit the folder directly, and still use it as a normal pip package without having to reinstall every time you change something.

Tests

To run all tests for python 2.7 and 3.x, with coverage, just run tox (assuming tox is installed.)

Python

You can run these tests using pytest (pip install -U pytest) and then in the existing virtualenv, run pytest tests.

If you are having issues with this approach, an alternative would be to install pytest within the projects' virtualenv (assuming you've created one), and then running it like so: python -m pytest tests.

Test coverage

To find coverage information (assuming pytest-cov is installed), you can run: pytest tests -s --cov=flask_jsondash.

Javascript

JS tests are run using the node library Jasmine. To install and run it, you'll need nodejs installed, then the package: npm install -g jasmine. You can then cd into the tests_js folder and run the provided python script python runner.py

Comments
  • [question]How to plot timeseries data using C3js

    [question]How to plot timeseries data using C3js

    @christabor I'm looking to plot something like http://c3js.org/samples/axes_x_tick_values.html which modifies the x axes value as well. Currently, for C3, I am only able to get the standard 1, 2, 3, 4 in the x axis and only able to pass y axis data

        @app.route('/graph-data')
        def linechart():
            return jsonify({
                "line1": [1, 4, 3, 10, 12, 14, 18, 10],
                "line2": [1, 2, 10, 20, 30, 6, 10, 12, 18, 2],
            })
    
    
    question 
    opened by bholagabbar 11
  • Cannot start the example app.

    Cannot start the example app.

    When I run the example app both with method 1 and method 3, I got this trouble of viewing the chart, I don't know if I miss any configuration, but it is like loading forever but not showing the chart. I have attached the image, would you pls take a look! screen shot 2017-01-25 at 8 37 53 am

    screen shot 2017-01-25 at 8 38 11 am
    opened by buithugiang 9
  • new: [Chart options] POST or GET request with custom headers

    new: [Chart options] POST or GET request with custom headers

    Hello,

    As some API endpoints require to have specific headers like Authorization or use request headers to select their response format (CSV, JSON, ...), The following features has been implemented:

    • Added possibility to choose between POST and GET request type
    • Added possibility to set custom headers
    • Added possibility to add a POST body (POST request only)
    • Support of the API preview

    If you have comments or suggestions about the code, feel free to let me know.

    Screenshot result:

    image

    opened by mokaddem 8
  • trouble getting started

    trouble getting started

    When start the app (ie python run.py) there arent any plots that appear on the page, only a link to /charts/. I cant even get it started? Surely i am missing something very simple in the configuration ?

    I have uploaded a screenshot of what I am getting.

    screen shot 2016-12-14 at 5 56 49 pm

    when enter url /charts/plotly

    screen shot 2016-12-14 at 5 55 08 pm question 
    opened by oksigma 8
  • Using the example app

    Using the example app

    I am sorry if this sounds stupid, but I am new to flask development. I am confused with how exactly to use the example app to study how the flask_jsondash work. I run the app and click the link that said 'Visit the chart blueprints' but it lead to server timeout error. When I looked at the code I understand that there is no function mapped to '/charts' URL, I guess you want people to implement that themselves but I can't figure out what I need to do. The doc seems to be built so people with experiences can understand quickly, but I can't. Do you have some guideline for people who are new to this? Specifically, I would appreciate a newbie tutorial. It does not have to be detailed, but a steps that I can follow to understand more easily.

    opened by FMFluke 7
  • Demo app is not compatible with Python 3.5

    Demo app is not compatible with Python 3.5

    According to the readme file, flash-jsondash should work with Python 3 but I had no luck to run the demo app. It complains the "dict_values" type doesn't support indexing access. Seems like a compatible issue.

    Environment:

    • flask-jsondash 5.2.3
    • Python 3.5.2
    • macOS 10.12.4

    Repro:

    1. Launch the demo app
    # Start the mongodb daemon before start.
    pip3 install flask-jsondash
    git clone https://github.com/christabor/flask_jsondash.git
    cd flask_jsondash/example_app
    python3 app.py
    python3 endpoints.py  # in another terminal.
    
    1. Navigate to http://127.0.0.1:8080/charts/ and create a new gird dashboard.

    2. Click Options > Edit raw JSON and paste the content of example_app/examples/config/fixedlayout-d3.json.

    3. Got the error:

    File "/usr/local/lib/python3.5/site-packages/flask_jsondash/charts_builder.py", line 388, in view
    modules=sort_modules(viewjson),
    
    File "/usr/local/lib/python3.5/site-packages/flask_jsondash/charts_builder.py", line 311, in sort_modules
    modules[int(module['row']) - 1].append(module)
    TypeError: 'dict_values' object does not support indexing
    
    bug 
    opened by h4x3rotab 6
  • example_app$ python3 app.py does not work

    example_app$ python3 app.py does not work

    Traceback (most recent call last): File "app.py", line 7, in from flask_jsondash.charts_builder import charts File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask_jsondash-6.3.3-py3.5.egg/flask_jsondash/charts_builder.py", line 26, in from .utils import ( File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask_jsondash-6.3.3-py3.5.egg/flask_jsondash/utils.py", line 15, in import charts_builder ImportError: No module named 'charts_builder'

    bug 
    opened by olzhas23 5
  • quickstart instructions don't work -- cant load db_adapters

    quickstart instructions don't work -- cant load db_adapters

    ➜ ~ cd flask_jsondash/

    Create virtualenv: ➜ flask_jsondash git:(master) virtualenv env Using base prefix '/usr' New python executable in env/bin/python3 Also creating executable in env/bin/python Installing setuptools, pip, wheel...done.

    Activate: ➜ flask_jsondash git:(master) source env/bin/activate (env)➜ flask_jsondash git:(master) which python /home/Dan/flask_jsondash/env/bin/python (env)➜ flask_jsondash git:(master) pythonnsetup.py install running install running bdist_egg running egg_info creating flask_jsondash.egg-info writing dependency_links to flask_jsondash.egg-info/dependency_links.txt writing top-level names to flask_jsondash.egg-info/top_level.txt writing flask_jsondash.egg-info/PKG-INFO writing requirements to flask_jsondash.egg-info/requires.txt writing manifest file 'flask_jsondash.egg-info/SOURCES.txt' reading manifest file 'flask_jsondash.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'flask_jsondash.egg-info/SOURCES.txt' installing library code to build/bdist.cygwin-2.6.0-x86_64/egg running install_lib running build_py creating build creating build/lib creating build/lib/flask_jsondash copying flask_jsondash/charts_builder.py -> build/lib/flask_jsondash copying flask_jsondash/db_adapters.py -> build/lib/flask_jsondash copying flask_jsondash/model_factories.py -> build/lib/flask_jsondash copying flask_jsondash/settings.py -> build/lib/flask_jsondash copying flask_jsondash/init.py -> build/lib/flask_jsondash creating build/lib/flask_jsondash/static copying flask_jsondash/static/init.py -> build/lib/flask_jsondash/static creating build/lib/flask_jsondash/static/css copying flask_jsondash/static/css/app.css -> build/lib/flask_jsondash/static/css copying flask_jsondash/static/css/overrides.css -> build/lib/flask_jsondash/static/css creating build/lib/flask_jsondash/static/css/fonts copying flask_jsondash/static/css/fonts/fontawesome-webfont.eot -> build/lib/flask_jsondash/static/css/fonts copying flask_jsondash/static/css/fonts/fontawesome-webfont.svg -> build/lib/flask_jsondash/static/css/fonts copying flask_jsondash/static/css/fonts/fontawesome-webfont.ttf -> build/lib/flask_jsondash/static/css/fonts copying flask_jsondash/static/css/fonts/fontawesome-webfont.woff -> build/lib/flask_jsondash/static/css/fonts copying flask_jsondash/static/css/fonts/fontawesome-webfont.woff2 -> build/lib/flask_jsondash/static/css/fonts creating build/lib/flask_jsondash/static/css/vendor copying flask_jsondash/static/css/vendor/font-awesome.css -> build/lib/flask_jsondash/static/css/vendor copying flask_jsondash/static/css/vendor/jquery-ui.min.css -> build/lib/flask_jsondash/static/css/vendor copying flask_jsondash/static/css/vendor/timeline.css -> build/lib/flask_jsondash/static/css/vendor creating build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_444444_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_555555_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_777620_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_777777_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_cc0000_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images copying flask_jsondash/static/css/vendor/images/ui-icons_ffffff_256x240.png -> build/lib/flask_jsondash/static/css/vendor/images creating build/lib/flask_jsondash/static/js copying flask_jsondash/static/js/app.js -> build/lib/flask_jsondash/static/js copying flask_jsondash/static/js/handlers.js -> build/lib/flask_jsondash/static/js copying flask_jsondash/static/js/utils.js -> build/lib/flask_jsondash/static/js creating build/lib/flask_jsondash/static/js/vendor copying flask_jsondash/static/js/vendor/jRespond.min.js -> build/lib/flask_jsondash/static/js/vendor copying flask_jsondash/static/js/vendor/jquery-ui.min.js -> build/lib/flask_jsondash/static/js/vendor copying flask_jsondash/static/js/vendor/masonry.pkgd.min.js -> build/lib/flask_jsondash/static/js/vendor creating build/lib/flask_jsondash/templates copying flask_jsondash/templates/init.py -> build/lib/flask_jsondash/templates creating build/lib/flask_jsondash/templates/layouts copying flask_jsondash/templates/layouts/charts_base.html -> build/lib/flask_jsondash/templates/layouts creating build/lib/flask_jsondash/templates/pages copying flask_jsondash/templates/pages/chart_detail.html -> build/lib/flask_jsondash/templates/pages copying flask_jsondash/templates/pages/charts_index.html -> build/lib/flask_jsondash/templates/pages creating build/lib/flask_jsondash/templates/partials copying flask_jsondash/templates/partials/dashboard-options.html -> build/lib/flask_jsondash/templates/partials copying flask_jsondash/templates/partials/edit-data-modal.html -> build/lib/flask_jsondash/templates/partials copying flask_jsondash/templates/partials/form-diagram-options.html -> build/lib/flask_jsondash/templates/partials copying flask_jsondash/templates/partials/form-json.html -> build/lib/flask_jsondash/templates/partials copying flask_jsondash/templates/partials/form-view.html -> build/lib/flask_jsondash/templates/partials creating build/bdist.cygwin-2.6.0-x86_64 creating build/bdist.cygwin-2.6.0-x86_64/egg creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash copying build/lib/flask_jsondash/charts_builder.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash copying build/lib/flask_jsondash/db_adapters.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash copying build/lib/flask_jsondash/model_factories.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash copying build/lib/flask_jsondash/settings.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css copying build/lib/flask_jsondash/static/css/app.css -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/fonts/fontawesome-webfont.eot -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/fonts/fontawesome-webfont.svg -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/fonts/fontawesome-webfont.ttf -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/fonts/fontawesome-webfont.woff -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/fonts/fontawesome-webfont.woff2 -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/fonts copying build/lib/flask_jsondash/static/css/overrides.css -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor copying build/lib/flask_jsondash/static/css/vendor/font-awesome.css -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_444444_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_555555_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_777620_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_777777_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_cc0000_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/images/ui-icons_ffffff_256x240.png -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor/images copying build/lib/flask_jsondash/static/css/vendor/jquery-ui.min.css -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor copying build/lib/flask_jsondash/static/css/vendor/timeline.css -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/css/vendor creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js copying build/lib/flask_jsondash/static/js/app.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js copying build/lib/flask_jsondash/static/js/handlers.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js copying build/lib/flask_jsondash/static/js/utils.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js/vendor copying build/lib/flask_jsondash/static/js/vendor/jquery-ui.min.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js/vendor copying build/lib/flask_jsondash/static/js/vendor/jRespond.min.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js/vendor copying build/lib/flask_jsondash/static/js/vendor/masonry.pkgd.min.js -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/js/vendor copying build/lib/flask_jsondash/static/init.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/layouts copying build/lib/flask_jsondash/templates/layouts/charts_base.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/layouts creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/pages copying build/lib/flask_jsondash/templates/pages/charts_index.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/pages copying build/lib/flask_jsondash/templates/pages/chart_detail.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/pages creating build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/partials/dashboard-options.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/partials/edit-data-modal.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/partials/form-diagram-options.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/partials/form-json.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/partials/form-view.html -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/partials copying build/lib/flask_jsondash/templates/init.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates copying build/lib/flask_jsondash/init.py -> build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/charts_builder.py to charts_builder.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/db_adapters.py to db_adapters.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/model_factories.py to model_factories.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/settings.py to settings.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/static/init.py to init.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/templates/init.py to init.cpython-34.pyc byte-compiling build/bdist.cygwin-2.6.0-x86_64/egg/flask_jsondash/init.py to init.cpython-34.pyc creating build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/PKG-INFO -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/SOURCES.txt -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/dependency_links.txt -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/not-zip-safe -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/requires.txt -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO copying flask_jsondash.egg-info/top_level.txt -> build/bdist.cygwin-2.6.0-x86_64/egg/EGG-INFO creating dist creating 'dist/flask_jsondash-4.0.0-py3.4.egg' and adding 'build/bdist.cygwin-2.6.0-x86_64/egg' to it removing 'build/bdist.cygwin-2.6.0-x86_64/egg' (and everything under it) Processing flask_jsondash-4.0.0-py3.4.egg creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/flask_jsondash-4.0.0-py3.4.egg Extracting flask_jsondash-4.0.0-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding flask-jsondash 4.0.0 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/flask_jsondash-4.0.0-py3.4.egg Processing dependencies for flask-jsondash==4.0.0 Searching for WTForms==2.1 Reading https://pypi.python.org/simple/WTForms/ Best match: WTForms 2.1 Downloading https://pypi.python.org/packages/bf/91/2e553b86c55e9cf2f33265de50e052441fb753af46f5f20477fe9c61280e/WTForms-2.1.zip#md5=6938a541fafd1a1ae2f6b9b88588eef2 Processing WTForms-2.1.zip Writing /tmp/easy_install-kuzsbaue/WTForms-2.1/setup.cfg Running WTForms-2.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-kuzsbaue/WTForms-2.1/egg-dist-tmp-xb628ila warning: no previously-included files matching '' found under directory 'docs/_build' warning: no previously-included files matching '.pyc' found under directory 'tests' zip_safe flag not set; analyzing archive contents... wtforms.pycache.i18n.cpython-34: module references file creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/WTForms-2.1-py3.4.egg Extracting WTForms-2.1-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding WTForms 2.1 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/WTForms-2.1-py3.4.egg Searching for Werkzeug==0.11.10 Reading https://pypi.python.org/simple/Werkzeug/ Best match: Werkzeug 0.11.10 Downloading https://pypi.python.org/packages/b7/7f/44d3cfe5a12ba002b253f6985a4477edfa66da53787a2a838a40f6415263/Werkzeug-0.11.10.tar.gz#md5=780967186f9157e88f2bfbfa6f07a893 Processing Werkzeug-0.11.10.tar.gz Writing /tmp/easy_install-zp4d29tt/Werkzeug-0.11.10/setup.cfg Running Werkzeug-0.11.10/setup.py -q bdist_egg --dist-dir /tmp/easy_install-zp4d29tt/Werkzeug-0.11.10/egg-dist-tmp-qeiyjn9i no previously-included directories found matching 'docs/_build' no previously-included directories found matching 'docs/_themes' warning: no previously-included files matching '.py[cdo]' found anywhere in distribution warning: no previously-included files matching 'pycache' found anywhere in distribution warning: no previously-included files matching '.so' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Werkzeug-0.11.10-py3.4.egg Extracting Werkzeug-0.11.10-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding Werkzeug 0.11.10 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Werkzeug-0.11.10-py3.4.egg Searching for pymongo==3.3.0 Reading https://pypi.python.org/simple/pymongo/ Best match: pymongo 3.3.0 Downloading https://pypi.python.org/packages/31/63/5a7826bdee88db6d49ef1737a17de63cf6f50f8cb04f2a0339f048cb33b5/pymongo-3.3.0.tar.gz#md5=42cd12a5014fb7d3e1987ca04f5c651f Processing pymongo-3.3.0.tar.gz Writing /tmp/easy_install-grm8ojrq/pymongo-3.3.0/setup.cfg Running pymongo-3.3.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-grm8ojrq/pymongo-3.3.0/egg-dist-tmp-8tsnndmz zip_safe flag not set; analyzing archive contents... bson.pycache._cbson.cpython-34: module references file pymongo.pycache._cmessage.cpython-34: module references file creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/pymongo-3.3.0-py3.4-cygwin-2.6.0-x86_64.egg Extracting pymongo-3.3.0-py3.4-cygwin-2.6.0-x86_64.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding pymongo 3.3.0 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/pymongo-3.3.0-py3.4-cygwin-2.6.0-x86_64.egg Searching for MarkupSafe==0.23 Reading https://pypi.python.org/simple/MarkupSafe/ Best match: MarkupSafe 0.23 Downloading https://pypi.python.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz#md5=f5ab3deee4c37cd6a922fb81e730da6e Processing MarkupSafe-0.23.tar.gz Writing /tmp/easy_install-f6kpl21f/MarkupSafe-0.23/setup.cfg Running MarkupSafe-0.23/setup.py -q bdist_egg --dist-dir /tmp/easy_install-f6kpl21f/MarkupSafe-0.23/egg-dist-tmp-78ugcsyw creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/MarkupSafe-0.23-py3.4-cygwin-2.6.0-x86_64.egg Extracting MarkupSafe-0.23-py3.4-cygwin-2.6.0-x86_64.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding MarkupSafe 0.23 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/MarkupSafe-0.23-py3.4-cygwin-2.6.0-x86_64.egg Searching for Jinja2==2.8 Reading https://pypi.python.org/simple/Jinja2/ Best match: Jinja2 2.8 Downloading https://pypi.python.org/packages/f2/2f/0b98b06a345a761bec91a079ccae392d282690c2d8272e708f4d10829e22/Jinja2-2.8.tar.gz#md5=edb51693fe22c53cee5403775c71a99e Processing Jinja2-2.8.tar.gz Writing /tmp/easy_install-lxr3r3ga/Jinja2-2.8/setup.cfg Running Jinja2-2.8/setup.py -q bdist_egg --dist-dir /tmp/easy_install-lxr3r3ga/Jinja2-2.8/egg-dist-tmp-7h59jbx2 warning: no files found matching 'run-tests.py' warning: no files found matching '' under directory 'custom_fixers' warning: no files found matching '' under directory 'jinja2/testsuite/res' warning: no previously-included files matching '' found under directory 'docs/_build' warning: no previously-included files matching '.pyc' found under directory 'jinja2' warning: no previously-included files matching '.pyc' found under directory 'docs' warning: no previously-included files matching '.pyo' found under directory 'jinja2' warning: no previously-included files matching '*.pyo' found under directory 'docs' creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Jinja2-2.8-py3.4.egg Extracting Jinja2-2.8-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding Jinja2 2.8 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Jinja2-2.8-py3.4.egg Searching for itsdangerous==0.24 Reading https://pypi.python.org/simple/itsdangerous/ Best match: itsdangerous 0.24 Downloading https://pypi.python.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz#md5=a3d55aa79369aef5345c036a8a26307f Processing itsdangerous-0.24.tar.gz Writing /tmp/easy_install-kssc9a7t/itsdangerous-0.24/setup.cfg Running itsdangerous-0.24/setup.py -q bdist_egg --dist-dir /tmp/easy_install-kssc9a7t/itsdangerous-0.24/egg-dist-tmp-m8fsj7sc warning: no previously-included files matching '*' found under directory 'docs/_build' creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/itsdangerous-0.24-py3.4.egg Extracting itsdangerous-0.24-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding itsdangerous 0.24 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/itsdangerous-0.24-py3.4.egg Searching for Flask-WTF==0.12 Reading https://pypi.python.org/simple/Flask-WTF/ Best match: Flask-WTF 0.12 Downloading https://pypi.python.org/packages/f6/fe/9fe6a8a4edcc39f8ec365dc16d292d659f7a77a0ed596947f29c0c5c9dc1/Flask-WTF-0.12.tar.gz#md5=c53a74e8ba481bf53405fd5efdf0339e Processing Flask-WTF-0.12.tar.gz Writing /tmp/easy_install-hvc_ise6/Flask-WTF-0.12/setup.cfg Running Flask-WTF-0.12/setup.py -q bdist_egg --dist-dir /tmp/easy_install-hvc_ise6/Flask-WTF-0.12/egg-dist-tmp-bielt_xh warning: no previously-included files matching '.pyc' found under directory 'tests' warning: no previously-included files matching '.pyc' found under directory 'tests' warning: no previously-included files matching '.pyc' found under directory 'docs' warning: no previously-included files matching '.pyo' found under directory 'docs' no previously-included directories found matching 'docs/_build' no previously-included directories found matching 'docs/_themes/.git' creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask_WTF-0.12-py3.4.egg Extracting Flask_WTF-0.12-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding Flask-WTF 0.12 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask_WTF-0.12-py3.4.egg Searching for Flask==0.10.1 Reading https://pypi.python.org/simple/Flask/ Best match: Flask 0.10.1 Downloading https://pypi.python.org/packages/db/9c/149ba60c47d107f85fe52564133348458f093dd5e6b57a5b60ab9ac517bb/Flask-0.10.1.tar.gz#md5=378670fe456957eb3c27ddaef60b2b24 Processing Flask-0.10.1.tar.gz Writing /tmp/easy_install-unh2nk2k/Flask-0.10.1/setup.cfg Running Flask-0.10.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-unh2nk2k/Flask-0.10.1/egg-dist-tmp-d085govc warning: no files found matching '' under directory 'tests' warning: no previously-included files matching '.pyc' found under directory 'docs' warning: no previously-included files matching '.pyo' found under directory 'docs' warning: no previously-included files matching '.pyc' found under directory 'tests' warning: no previously-included files matching '.pyo' found under directory 'tests' warning: no previously-included files matching '.pyc' found under directory 'examples' warning: no previously-included files matching '*.pyo' found under directory 'examples' no previously-included directories found matching 'docs/_build' no previously-included directories found matching 'docs/_themes/.git' creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask-0.10.1-py3.4.egg Extracting Flask-0.10.1-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding Flask 0.10.1 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask-0.10.1-py3.4.egg Searching for click==6.6 Reading https://pypi.python.org/simple/click/ Best match: click 6.6 Downloading https://pypi.python.org/packages/7a/00/c14926d8232b36b08218067bcd5853caefb4737cda3f0a47437151344792/click-6.6.tar.gz#md5=d0b09582123605220ad6977175f3e51d Processing click-6.6.tar.gz Writing /tmp/easy_install-az1v8yun/click-6.6/setup.cfg Running click-6.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-az1v8yun/click-6.6/egg-dist-tmp-2w27pvzj warning: no previously-included files matching '.pyc' found under directory 'docs' warning: no previously-included files matching '.pyo' found under directory 'docs' warning: no previously-included files matching '.pyc' found under directory 'tests' warning: no previously-included files matching '.pyo' found under directory 'tests' warning: no previously-included files matching '.pyc' found under directory 'examples' warning: no previously-included files matching '.pyo' found under directory 'examples' no previously-included directories found matching 'docs/_build' zip_safe flag not set; analyzing archive contents... click.pycache.core.cpython-34: module references file creating /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/click-6.6-py3.4.egg Extracting click-6.6-py3.4.egg to /home/Dan/flask_jsondash/env/lib/python3.4/site-packages Adding click 6.6 to easy-install.pth file

    Installed /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/click-6.6-py3.4.egg Finished processing dependencies for flask-jsondash==4.0.0 `

    Try running: (env)➜ flask_jsondash git:(master) python app.py python: can't open file 'app.py': [Errno 2] No such file or directory Try running from example app: (env)➜ flask_jsondash git:(master) cd example_app/ (env)➜ example_app git:(master) python app.py Traceback (most recent call last): File "app.py", line 5, in <module> from flask_jsondash.charts_builder import charts File "/home/Dan/flask_jsondash/env/lib/python3.4/site-packages/flask_jsondash-4.0.0-py3.4.egg/flask_jsondash/charts_builder.py", line 30, in <module> import db_adapters as adapter ImportError: No module named 'db_adapters' (env)➜ example_app git:(master) % (env)➜ example_app git:(master) Path: ` (env)➜ example_app git:(master) python -c 'import sys; print('\n".join(sys.path"\n".join(sys.path))'

    /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/flask_jsondash-4.0.0-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/WTForms-2.1-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Werkzeug-0.11.10-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/pymongo-3.3.0-py3.4-cygwin-2.6.0-x86_64.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/MarkupSafe-0.23-py3.4-cygwin-2.6.0-x86_64.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Jinja2-2.8-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/itsdangerous-0.24-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask_WTF-0.12-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/Flask-0.10.1-py3.4.egg /home/Dan/flask_jsondash/env/lib/python3.4/site-packages/click-6.6-py3.4.egg /home/Dan/flask_jsondash/env/lib/python34.zip /home/Dan/flask_jsondash/env/lib/python3.4 /home/Dan/flask_jsondash/env/lib/python3.4/plat-cygwin /home/Dan/flask_jsondash/env/lib/python3.4/lib-dynload /usr/lib/python3.4 /usr/lib/python3.4/plat-cygwin /home/Dan/flask_jsondash/env/lib/python3.4/site-packages (env)➜ example_app git:(master) deactivate ➜ example_app git:(master) `

    bug 
    opened by dlaflamme 5
  • Dendrogram cuts off next of leaf entries on far right

    Dendrogram cuts off next of leaf entries on far right

    screenshot_2016-10-21_10-14-39

    I sort of figured when I resized the chart to give it more horizontal space that it would fix it...

    screenshot_2016-10-21_10-15-24

    Nope. It just stretches out the lines. Maybe have a configurable option for the buffer size?

    bug 
    opened by jetpacktuxedo 5
  • Error on accessing /charts running app.py

    Error on accessing /charts running app.py

    After hitting: http://127.0.0.1:5002/charts/

    Traceback (most recent call last):
      File "/Library/Python/2.7/site-packages/flask/app.py", line 2000, in __call__
        return self.wsgi_app(environ, start_response)
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1991, in wsgi_app
        response = self.make_response(self.handle_exception(e))
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1567, in handle_exception
        reraise(exc_type, exc_value, tb)
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1988, in wsgi_app
        response = self.full_dispatch_request()
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
        rv = self.dispatch_request()
      File "/Library/Python/2.7/site-packages/flask/app.py", line 1625, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/Users/maxwoolf/Downloads/flask_jsondash-master/flask_jsondash/charts_builder.py", line 182, in dashboard
        opts.update(limit=pagination.limit, skip=pagination.skip)
    AttributeError: 'NoneType' object has no attribute 'limit'
    

    Not sure how to address.

    bug 
    opened by minimaxir 5
  • Bump pytest from 3.6.2 to 3.6.3

    Bump pytest from 3.6.2 to 3.6.3

    Bumps pytest from 3.6.2 to 3.6.3.

    Changelog

    Sourced from pytest's changelog.

    Pytest 3.6.3 (2018-07-04)

    Bug Fixes

    • Fix ImportWarning triggered by explicit relative imports in assertion-rewritten package modules. (#3061 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3061>_)

    • Fix error in pytest.approx when dealing with 0-dimension numpy arrays. (#3593 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3593>_)

    • No longer raise ValueError when using the get_marker API. (#3605 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3605>_)

    • Fix problem where log messages with non-ascii characters would not appear in the output log file. (#3630 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3630>_)

    • No longer raise AttributeError when legacy marks can't be stored in functions. (#3631 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3631>_)

    Improved Documentation

    • The description above the example for [**pytest**](https://github.com/pytest).mark.skipif now better matches the code. (#3611 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3611>_)

    Trivial/Internal Changes

    • Internal refactoring: removed unused CallSpec2tox ._globalid_args attribute and metafunc parameter from CallSpec2.copy(). (#3598 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3598>_)

    • Silence usage of reduce warning in Python 2 (#3609 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3609>_)

    • Fix usage of attr.ib deprecated convert parameter. (#3653 <https://github-redirect.dependabot.com/pytest-dev/pytest/issues/3653>_)

    Commits
    • 73d787d HOWTORELEASE: create branch first and run pre-commit after generate-release task
    • fa31610 Improve CHANGELOG for 3.6.3
    • 2921ca6 Run pre-commit on all doc files
    • 43c0346 Preparing release version 3.6.3
    • 3ed8e28 Merge pull request #3654 from LeastAuthority/3653.deprecated-convert
    • b84a646 Add note to the changelog
    • b815f67 add changelog
    • 55ebf26 Switch to new API
    • b509112 Merge pull request #3648 from eelstork/patch-1
    • a43205b Fix monkeypatch doc
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 4
  • Some advice about license compliance

    Some advice about license compliance

    Hello, such a nice repository benefits me a lot and so kind of you to make it open source!

    Question There’s some possible legal issues on the license of your repository when you combine numerous third-party packages. For instance, flask, jinja2, pyquery, random and datetime you imported are licensed with BSD-3-Clause, BSD-3-Clause, BSD-3-Clause, Python Software Foundation License and Zope Public License (ZPL 2.1), respectively. However, the MIT License of your repository are less strict than above package licenses on some terms, which has violated the whole license compatibility in your repository and may bring legal and financial risks.

    Advice You can select another proper license for your repository, or write a custom license with license exception if some license terms couldn’t be summed up consistently.

    Best wishes!

    opened by Ashley123456789 0
  • Bump pymongo from 3.7.2 to 3.12.0

    Bump pymongo from 3.7.2 to 3.12.0

    Bumps pymongo from 3.7.2 to 3.12.0.

    Release notes

    Sourced from pymongo's releases.

    PyMongo 3.12.0b1 - Beta support for MongoDB Versioned API

    No release notes provided.

    PyMongo 3.12.0b0 - Beta support for MongoDB Versioned API

    No release notes provided.

    PyMongo 3.11.4

    https://developer.mongodb.com/community/forums/t/pymongo-3-11-4-released/105609

    PyMongo 3.11.2

    Release notes: https://developer.mongodb.com/community/forums/t/pymongo-3-11-2-released/12475

    PyMongo 3.11.1

    Release notes: https://developer.mongodb.com/community/forums/t/pymongo-3-11-1-released/11782

    3.11.0

    PyMongo 3.11.0 - Add support for MongoDB 4.4

    Release notes: https://developer.mongodb.com/community/forums/t/pymongo-3-11-0-released/7371

    3.11.0b1

    PyMongo 3.11.0b1 - Beta support for MongoDB 4.4

    Release notes: https://developer.mongodb.com/community/forums/t/pymongo-3-11-0b1-released/5156

    3.11.0b0

    PyMongo 3.11.0b0 - Beta support for MongoDB 4.4

    Release notes: https://community.mongodb.com/t/pymongo-3-11-0b0-released/2657

    3.10.1

    Version 3.10.1 fixes the following issues discovered since the release of 3.10.0:

    • Fix a TypeError logged to stderr that could be triggered during server maintenance or during pymongo.mongo_client.MongoClient.close().
    • Avoid creating new connections during pymongo.mongo_client.MongoClient.close().

    Documentation - https://pymongo.readthedocs.io/en/3.10.1/ Changelog - https://pymongo.readthedocs.io/en/3.10.1/changelog.html Installation - https://pymongo.readthedocs.io/en/3.10.1/installation.html

    3.10.0

    Support for Client-Side Field Level Encryption with MongoDB 4.2 and support for Python 3.8.

    Documentation - https://pymongo.readthedocs.io/en/3.10.0/ Changelog - https://pymongo.readthedocs.io/en/3.10.0/changelog.html Installation - https://pymongo.readthedocs.io/en/3.10.0/installation.html

    3.9.0

    MongoDB 4.2 support.

    ... (truncated)

    Changelog

    Sourced from pymongo's changelog.

    Changes in Version 3.12.0

    PyMongo 3.12.0 deprecates support for Python 2.7, 3.4 and 3.5. These Python versions will not be supported by PyMongo 4.

    PyMongo now allows insertion of documents with keys that include dots ('.') or start with dollar signs ('$').

    • PyMongoCrypt 1.1.0 or later is now required for client side field level encryption support.

    Notable improvements

    • Added support for MongoDB 5.0.
    • Support for MongoDB Versioned API, see ~pymongo.server_api.ServerApi.
    • Support for snapshot reads on secondaries (see snapshot-reads-ref).
    • Support for Azure and GCP KMS providers for client side field level encryption. See the docstring for ~pymongo.mongo_client.MongoClient, ~pymongo.encryption_options.AutoEncryptionOpts, and ~pymongo.encryption.
    • Support AWS authentication with temporary credentials when connecting to KMS in client side field level encryption.
    • Support for connecting to load balanced MongoDB clusters via the new loadBalanced URI option.
    • Support for creating timeseries collections via the timeseries and expireAfterSeconds arguments to ~pymongo.database.Database.create_collection.
    • Added pymongo.mongo_client.MongoClient.topology_description.
    • Added hash support to ~pymongo.mongo_client.MongoClient, ~pymongo.database.Database and ~pymongo.collection.Collection (PYTHON-2466).
    • Improved the error message returned by ~pymongo.collection.Collection.insert_many when supplied with an argument of incorrect type (PYTHON-1690).
    • Added session and read concern support to ~pymongo.collection.Collection.find_raw_batches and ~pymongo.collection.Collection.aggregate_raw_batches.

    Bug fixes

    • Fixed a bug that could cause the driver to deadlock during automatic client side field level encryption (PYTHON-2472).
    • Fixed a potential deadlock when garbage collecting an unclosed exhaust ~pymongo.cursor.Cursor.
    • Fixed an bug where using gevent.Timeout to timeout an operation could lead to a deadlock.
    • Fixed the following bug with Atlas Data Lake. When closing cursors, pymongo now sends killCursors with the namespace returned the cursor's initial command response.
    • Fixed a bug in ~pymongo.cursor.RawBatchCursor that caused it to return an empty bytestring when the cursor contained no results. It now raises StopIteration instead.

    Deprecations

    • Deprecated support for Python 2.7, 3.4 and 3.5.
    • Deprecated support for database profiler helpers ~pymongo.database.Database.profiling_level, ~pymongo.database.Database.set_profiling_level, and ~pymongo.database.Database.profiling_info. Instead, users should run the profile command with the ~pymongo.database.Database.command helper directly.
    • Deprecated ~pymongo.errors.NotMasterError. Users should use ~pymongo.errors.NotPrimaryError instead.
    • Deprecated ~pymongo.ismaster.IsMaster and ~pymongo.ismaster which will be removed in PyMongo 4.0 and are replaced by ~pymongo.hello.Hello and ~pymongo.hello which provide the same API.
    • Deprecated the pymongo.messeage module.
    • Deprecated the ssl_keyfile and ssl_certfile URI options in favor of tlsCertificateKeyFile (see examples/tls).

    ... (truncated)

    Commits
    • 78cb0f2 BUMP 3.12.0
    • 6cdc6a2 PYTHON-2797 Update changelog for 5.0 support (#675)
    • 7f5df56 PYTHON-2811 PYTHON-2809 Skip Jython serverless test and fix versioned api tes...
    • da97572 PYTHON-2807 Skip OP_KILL_CURSORS test on 5.0+ (#674)
    • 5714a93 PYTHON-2806 Fix test_aggregate_raw_transaction (#673)
    • e347299 PYTHON-2774 Migrate snappy testing to from Ubuntu 18 to amazon1-2018 (#672)
    • a8f626d PYTHON-2608 Fix KMS TLS testing on Python <3.5 (#671)
    • d5aa6d9 PYTHON-2798 Workaround windows cert issue with SSL_CERT_FILE (#670)
    • a10cbbf PYTHON-2800 Add Atlas connectivity tests for MongoDB Serverless (#669)
    • 4d531d1 PYTHON-2608 Test that KMS TLS connections verify peer certificates (#667)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 0
  • Bump pytest-cov from 2.6.1 to 2.12.1

    Bump pytest-cov from 2.6.1 to 2.12.1

    Bumps pytest-cov from 2.6.1 to 2.12.1.

    Changelog

    Sourced from pytest-cov's changelog.

    2.12.1 (2021-06-01)

    • Changed the toml requirement to be always be directly required (instead of being required through a coverage extra). This fixes issues with pip-compile (pip-tools#1300). Contributed by Sorin Sbarnea in #472.
    • Documented show_contexts. Contributed by Brian Rutledge in #473.

    2.12.0 (2021-05-14)

    • Added coverage's toml extra to install requirements in setup.py. Contributed by Christian Riedel in #410.
    • Fixed pytest_cov.__version__ to have the right value (string with version instead of a string including __version__ =).
    • Fixed license classifier in setup.py. Contributed by Chris Sreesangkom in #467.
    • Fixed commits since badge. Contributed by Terence Honles in #470.

    2.11.1 (2021-01-20)

    • Fixed support for newer setuptools (v42+). Contributed by Michał Górny in #451.

    2.11.0 (2021-01-18)

    • Bumped minimum coverage requirement to 5.2.1. This prevents reporting issues. Contributed by Mateus Berardo de Souza Terra in #433.
    • Improved sample projects (from the examples directory) to support running tox -e pyXY. Now the example configures a suffixed coverage data file, and that makes the cleanup environment unnecessary. Contributed by Ganden Schaffner in #435.
    • Removed the empty console_scripts entrypoint that confused some Gentoo build script. I didn't ask why it was so broken cause I didn't want to ruin my day. Contributed by Michał Górny in #434.
    • Fixed the missing coverage context when using subprocesses. Contributed by Bernát Gábor in #443.
    • Updated the config section in the docs. Contributed by Pamela McA'Nulty in #429.
    • Migrated CI to travis-ci.com (from .org).

    2.10.1 (2020-08-14)

    • Support for pytest-xdist 2.0, which breaks compatibility with pytest-xdist before 1.22.3 (from 2017). Contributed by Zac Hatfield-Dodds in #412.
    • Fixed the LocalPath has no attribute startswith failure that occurred when using the pytester plugin in inline mode.

    2.10.0 (2020-06-12)

    • Improved the --no-cov warning. Now it's only shown if --no-cov is present before --cov.
    • Removed legacy pytest support. Changed setup.py so that pytest>=4.6 is required.

    2.9.0 (2020-05-22)

    • Fixed RemovedInPytest4Warning when using Pytest 3.10. Contributed by Michael Manganiello in #354.
    • Made pytest startup faster when plugin not active by lazy-importing. Contributed by Anders Hovmöller in #339.
    • Various CI improvements. Contributed by Daniel Hahler in #363 and #364.
    • Various Python support updates (drop EOL 3.4, test against 3.8 final). Contributed by Hugo van Kemenade in #336 and #367.
    • Changed --cov-append to always enable data_suffix (a coverage setting). Contributed by Harm Geerts in #387.
    • Changed --cov-append to handle loading previous data better (fixes various path aliasing issues).

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 0
  • Bump click from 7.0 to 8.0.1

    Bump click from 7.0 to 8.0.1

    Bumps click from 7.0 to 8.0.1.

    Release notes

    Sourced from click's releases.

    8.0.1

    8.0.0

    New major versions of all the core Pallets libraries, including Click 8.0, have been released! :tada:

    This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

    8.0.0rc1

    8.0.0a1

    7.1.2

    7.1.1

    7.1

    Changelog

    Sourced from click's changelog.

    Version 8.0.1

    Released 2021-05-19

    • Mark top-level names as exported so type checking understand imports in user projects. 1879
    • Annotate Context.obj as Any so type checking allows all operations on the arbitrary object. 1885
    • Fix some types that weren't available in Python 3.6.0. 1882
    • Fix type checking for iterating over ProgressBar object. 1892
    • The importlib_metadata backport package is installed on Python < 3.8. 1889
    • Arguments with nargs=-1 only use env var value if no command line values are given. 1903
    • Flag options guess their type from flag_value if given, like regular options do from default. 1886
    • Added documentation that custom parameter types may be passed already valid values in addition to strings. 1898
    • Resolving commands returns the name that was given, not command.name, fixing an unintended change to help text and default_map lookups. When using patterns like AliasedGroup, override resolve_command to change the name that is returned if needed. 1895
    • If a default value is invalid, it does not prevent showing help text. 1889
    • Pass windows_expand_args=False when calling the main command to disable pattern expansion on Windows. There is no way to escape patterns in CMD, so if the program needs to pass them on as-is then expansion must be disabled. 1901

    Version 8.0.0

    Released 2021-05-11

    • Drop support for Python 2 and 3.5.
    • Colorama is always installed on Windows in order to provide style and color support. 1784
    • Adds a repr to Command, showing the command name for friendlier debugging. 1267, 1295
    • Add support for distinguishing the source of a command line parameter. 1264, 1329
    • Add an optional parameter to ProgressBar.update to set the current_item. 1226, 1332
    • version_option uses importlib.metadata (or the importlib_metadata backport) instead of pkg_resources. The version is detected based on the package name, not the entry point name. The Python package name must match the installed package name, or be passed with package_name=. 1582
    • If validation fails for a prompt with hide_input=True, the value is not shown in the error message. 1460
    • An IntRange or FloatRange option shows the accepted range in its help text. 1525, 1303
    • IntRange and FloatRange bounds can be open (<) instead of closed (<=) by setting min_open and max_open. Error messages have changed to reflect this. 1100
    • An option defined with duplicate flag names ("--foo/--foo") raises a ValueError. 1465
    • echo() will not fail when using pytest's capsys fixture on Windows. 1590
    • Resolving commands returns the canonical command name instead of the matched name. This makes behavior such as help text and Context.invoked_subcommand consistent when using patterns like AliasedGroup. 1422
    • The BOOL type accepts the values "on" and "off". 1629
    • A Group with invoke_without_command=True will always invoke its result callback. 1178
    • nargs == -1 and nargs > 1 is parsed and validated for values from environment variables and defaults. 729
    • Detect the program name when executing a module or package with python -m name. 1603
    • Include required parent arguments in help synopsis of subcommands. 1475
    • Help for boolean flags with show_default=True shows the flag name instead of True or False. 1538
    • Non-string objects passed to style() and secho() will be converted to string. 1146
    • edit(require_save=True) will detect saves for editors that exit very fast on filesystems with 1 second resolution. 1050
    • New class attributes make it easier to use custom core objects throughout an entire application. 938
      • Command.context_class controls the context created when running the command.
      • Context.invoke creates new contexts of the same type, so a custom type will persist to invoked subcommands.
      • Context.formatter_class controls the formatter used to generate help and usage.
      • Group.command_class changes the default type for subcommands with @group.command().
      • Group.group_class changes the default type for subgroups with @group.group(). Setting it to type will create subgroups of the same type as the group itself.
      • Core objects use super() consistently for better support of subclassing.
    • Use Context.with_resource() to manage resources that would normally be used in a with statement, allowing them to be used across subcommands and callbacks, then cleaned up when the context ends. 1191

    ... (truncated)

    Commits
    • baea623 Merge pull request #1919 from pallets/release-8.0.1
    • 3149679 release version 8.0.1
    • 6e91b13 Merge pull request #1918 from pallets/disable-windows-expansion
    • 6439aae flag to control Windows pattern expansion
    • fcf8205 Merge pull request #1916 from pallets/default-resilient
    • 985ca16 show help text with invalid default
    • 1b49159 Merge pull request #1915 from pallets/command-name
    • 0db91e2 return resolved name, not original name
    • 329b100 Merge pull request #1914 from pallets/custom-type-value
    • 0c108f2 document values passed to types
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 0
  • Upgrade to GitHub-native Dependabot

    Upgrade to GitHub-native Dependabot

    Dependabot Preview will be shut down on August 3rd, 2021. In order to keep getting Dependabot updates, please merge this PR and migrate to GitHub-native Dependabot before then.

    Dependabot has been fully integrated into GitHub, so you no longer have to install and manage a separate app. This pull request migrates your configuration from Dependabot.com to a config file, using the new syntax. When merged, we'll swap out dependabot-preview (me) for a new dependabot app, and you'll be all set!

    With this change, you'll now use the Dependabot page in GitHub, rather than the Dependabot dashboard, to monitor your version updates, and you'll configure Dependabot through the new config file rather than a UI.

    If you've got any questions or feedback for us, please let us know by creating an issue in the dependabot/dependabot-core repository.

    Learn more about migrating to GitHub-native Dependabot

    Please note that regular @dependabot commands do not work on this pull request.

    dependencies 
    opened by dependabot-preview[bot] 1
  • Bump pyquery from 1.4.0 to 1.4.3

    Bump pyquery from 1.4.0 to 1.4.3

    Bumps pyquery from 1.4.0 to 1.4.3.

    Changelog

    Sourced from pyquery's changelog.

    1.4.3 (2020-11-21)

    • No longer use a universal wheel

    1.4.2 (2020-11-21)

    • Fix exception raised when calling PyQuery("<textarea></textarea>").text()
    • python2 is no longer supported

    1.4.1 (2019-10-26)

    • This is the latest release with py2 support
    • Remove py33, py34 support
    • web scraping improvements: default timeout and session support
    • Add API methods to serialize form-related elements according to spec
    • Include HTML markup when querying textarea text/value
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 0
Releases(6.2.3)
  • 6.2.3(Jun 13, 2017)

    Schema changes

    • Extensive schema validation for all types
    • More unit tests and coverage
    • More additions and more precise requirements for various fields.

    New chart types

    See Documentation or git log for more details

    New grid option

    • Support for fixed grid using bootstrap grid classes
    • Better handling in UI between modes

    Misc. bug fixes

    See git log for more details.

    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Dec 19, 2016)

    For a more comprehensive look, run git log 6316f55^1...HEAD on your local repo.

    New features

    • Drag-and-drop capability
    • Resize any chart automatically
    • Change order of charts
    • Custom callbacks js utility and jinja blocks for any chart
    • New digraph chart type for graphviz dot files.

    Breaking changes

    • Jinja block names are now namespaced and more logical

    Fixes

    • Make entire project and tests python 3 compatible
    • Doc fixes
    • Fix potential bugs in some template filters

    Misc

    • Lots more documentation
    • Significantly improved test coverage and overall robustness
    • Test data generator improvements
    • Javascript unit testing integration
    • Re-order/clean-up docs
    • Make view endpoints more consistent
    Source code(tar.gz)
    Source code(zip)
  • 4.0.0(Oct 26, 2016)

    Quite a lot has changed, and this is a breaking release. Major notable things:

    Support for inputs

    Forms can now have custom inputs of any type, making more dynamic and interactive layouts possible.

    UI enhancements

    More intuitive UI, cross-browser fixes, enhancements.

    Swapped grid libs

    From freewallJS to MasonryJS. Some speed improvements and bug fixes.

    Auth

    Added new auth type "make_global". Also fixes a few bugs for all auth checks.

    Lots of docs/examples/config

    Lots more docs, brand new doc pages for schema and core config, more examples and endpoints in example app.

    Repo re-org

    Re-organized lots of files.

    Better youtube, c3, d3 support.

    Fixes and general improvements

    Specific commit list:

    
    6316f55 Fix version.
    3c5b5ea Bump version.
    283e523 Add gist example.
    4762743 Add loader during update call
    930d8b3 Fix error when redrawing grid after updating module.
    984d4bb Switch grid layout library.
    28b5682 Fix a bug where icons are removed when updating title text.
    9bd4ef0 Update the way radial dendrogram is drawn to prevent clipping.
    716377e Fix some misleading js var names.
    cd6046d Add hover for chart index to make differentiating between items easier.
    77360c5 * Fix youtube chart type -- add logic to parse embed code/load widget properly. * Add docs for youtube * Refresh widget freewall instance on other refresh events * Add chart_wall to jsondash namespace.
    674ec98 Defer to a layer of indirection for ajax requests for any future refactoring.
    315dbc0 Fix example auth name.
    bb54e74 Fix anchor.
    6a65365 Fix an anchor in readme.
    89cac4d Add a note for raw editing.
    a4ad0f2 Allow a new authtype: make_global 1. Add new auth function key 2. Add helpers for dealing with global checks for user and update/create scenarios 3. Update templates for new field. 4. Clean up some code in the update function for edit-raw vs. normal.
    ce8551b Exclude created_by field from being overwritten during update. Fixes #64
    84a37b4 Fix typo.
    f694e4d Test remove config for codeclimate unknown error.
    91f9ffb Change codeclimate config to attempt to fix unknown status.
    e2f5277 Update js threshold for DRY code.
    aa23423 Update codeclimate config.
    b192454 fix codeclimate so it doesn't give the repo an F-
    76cb76e Make sure class config is applied to all input types.
    456d05e Delete unused file.
    494eca5 Add new input types. Update docs and example configs.
    2903d88 Ensure there is spacing between bottom and any chart option panels.
    237a49c Update some misleading docs, add a docstring update.
    e18cdbc Fix a link.
    4de12ea Local assets (#59)
    e20eaf0 Make required fields more obvious.
    9efee04 Update readme
    7a2684a Make submit button option for inputs config.
    3493018 Add random chance of input options to model factory generator.
    15826ef Merge branch 'master' of https://github.com/christabor/flask_jsondash
    df4fa34 Make data generator produce actually viewable charts. Closes #41
    0af7f3d Update README.md
    91d133a Fix overlap issue with multiple charts that have custom options.
    3c3c2c2 Add dependency handling to fix a bug where some assets are not loaded when asset filtering is enabled.
    65a495d Update default example app settings to be more lenient. Fix a bug with auth check function that would produce a false negative.
    54ba0d0 Make example auth always true.
    2670af3 Add remaining options documentation.
    e856f8c Add config readme for chart json docs.
    9a443ff Small tweaks for default vals.
    846625a update readme
    071f538 Update readme
    b428d38 Fix json format error in markdown
    ddc66f2 Update readme and example config.
    34119b2 Add some style overrides for charts
    ab06951 Move form html creation to flask template, add form styling.
    24327db Finish first version of working custom input parameters, add example testing endpoint.
    b3dab6d Update with first working PoC for inputs.
    c44255d Merge branch 'master' into custom-inputs
    17ec8df Fix a json parse issue when prettyifying json. It should handle POJOs and String json representations.
    7419587 PoC work for inputs config.
    2f4d0cd Add notes about mongo.
    27f0325 Update readme
    fbee0ba Change localhost to 127.0.0.1 for all example endpoints to fix issues with firefox.
    fed247f Fix an issue with firefox display of form button and rework the chart detail edit form in the process.
    fa1295b More doc updates.
    87074be Refactor auth checks:
    b8fd41f README update
    2193e11 Add some stress testing examples.
    9ed7d22 Center svg
    c809133 Remove linebreaks
    deed0bc Add codeclimate and scrutinizer badges + updates.
    7032afa Ensure a variable is set in view.
    9f57079 Add next/previous buttons to paginator.
    63e727b Clean up some unnecessary css and fix the flash of incorrectly positioned content for grid view when rendering freewalljs grid.
    8068254 Don't override metadata if edit-raw is on. This will overwrite some keys that the user may wish to manually edit, and permissions already exist for editing raw, so this is not necessary.
    0733d4e Add readme versioning notes.
    63bee29 Set template var to none on main dashboard page.
    38eda34 Override title tag, if specified and view is available.
    09cf249 Rename a variable to prevent a potential issue with name collision.
    61b9017 Add template formatting for numeric value.
    75ad8b4 Fix lint errors for handlers script.
    4c6e055 Add quickstart section + instructions.
    bacf6e3 Quick fix to line-height which appears buggy on some chart types.
    65377ab Fix a bug with pagination when filtering is disabled: -Paginator does not filter the actual links, only the paginator buttons. -Pagination calculation is wrong when no override is set and JSONDASH_PERPAGE is used, but filtering IS enabled.
    dcd2f50 Merge branch 'master' of https://github.com/christabor/flask_jsondash
    14a8ab0 Add Procfile and respect `$PORT` (#48)
    d05adaf Convert test command to use click package.
    eb1bf06 Fixed typos (#46)
    8986a5c Add new screenshot.
    
    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(Aug 24, 2016)

    A few small fixes/enhancements (see commits) and a new feature: you can now edit raw json configurations directly, instead of manually adding modules.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Aug 23, 2016)

    Custom chart configs

    You can now pass in arbitrary configuration code for all c3js charts (see #2).

    Doc links in popup

    New documentation links for each respective charting library have been added for referencing when adding a new chart in the add module popup.

    More examples

    Lots more examples, configs, as well as documentation on the required data formats (also see #24).

    Source code(tar.gz)
    Source code(zip)
  • 1.0.3-pre-pypackage(Jul 25, 2016)

    This release represents the last working version meant to be deployed as a submodule. Subsequent releases will be part of a change to convert this to a python package and use the blueprint templates without requiring template loading and configuration with the apps' jinja2 instance.

    Source code(tar.gz)
    Source code(zip)
Owner
Chris Tabor
Python full-stack developer. I'm mostly interested in: dataviz, automation, microservices.
Chris Tabor
Lumen provides a framework for visual analytics, which allows users to build data-driven dashboards from a simple yaml specification

Lumen project provides a framework for visual analytics, which allows users to build data-driven dashboards from a simple yaml specification

HoloViz 120 Jan 4, 2023
Getting started with Python, Dash and Plot.ly for the Data Dashboards team

data_dashboards Getting started with Python, Dash and Plot.ly for the Data Dashboards team Getting started MacOS users: # Install the pyenv version ma

Department for Levelling Up, Housing and Communities 1 Nov 8, 2021
Python implementation of the Density Line Chart by Moritz & Fisher.

PyDLC - Density Line Charts with Python Python implementation of the Density Line Chart (Moritz & Fisher, 2018) to visualize large collections of time

Charles L. Bérubé 10 Jan 6, 2023
An easy to use burndown chart generator for GitHub Project Boards.

Burndown Chart for GitHub Projects An easy to use burndown chart generator for GitHub Project Boards. Table of Contents Features Installation Assumpti

Joseph Hale 15 Dec 28, 2022
Bar Chart of the number of Senators from each party who are up for election in the next three General Elections

Congress-Analysis Bar Chart of the number of Senators from each party who are up for election in the next three General Elections This bar chart shows

null 11 Oct 26, 2021
Friday Night Funkin - converts a chart from 4/4 time to 6/8 time, or from regular to swing tempo.

Chart to swing converter As seen in https://twitter.com/i_winxd/status/1462220493558366214 A program written in python that converts a chart from 4/4

null 5 Dec 23, 2022
Arras.io Highest Scores Over Time Bar Chart Race

Arras.io Highest Scores Over Time Bar Chart Race This repo contains a python script (make_racing_bar_chart.py) that can generate a csv file which can

Road 2 Jan 16, 2022
Use Perspective to create the chart for the trader’s dashboard

Task Overview | Installation Instructions | Link to Module 3 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 22, 2022
Python script for writing text on github contribution chart.

Github Contribution Drawer Python script for writing text on github contribution chart. Requirements Python 3.X Getting Started Create repository Put

Steven 0 May 27, 2022
Movies-chart - A CLI app gets the top 250 movies of all time from imdb.com and the top 100 movies from rottentomatoes.com

movies-chart This CLI app gets the top 250 movies of all time from imdb.com and

null 3 Feb 17, 2022
Automatically Visualize any dataset, any size with a single line of code. Created by Ram Seshadri. Collaborators Welcome. Permission Granted upon Request.

AutoViz Automatically Visualize any dataset, any size with a single line of code. AutoViz performs automatic visualization of any dataset with one lin

AutoViz and Auto_ViML 1k Jan 2, 2023
Automatically Visualize any dataset, any size with a single line of code. Created by Ram Seshadri. Collaborators Welcome. Permission Granted upon Request.

AutoViz Automatically Visualize any dataset, any size with a single line of code. AutoViz performs automatic visualization of any dataset with one lin

AutoViz and Auto_ViML 299 Feb 13, 2021
2021 grafana arbitrary file read

2021_grafana_arbitrary_file_read base on pocsuite3 try 40 default plugins of grafana alertlist annolist barchart cloudwatch dashlist elasticsearch gra

ATpiu 5 Nov 9, 2022
GD-UltraHack - A Mod Menu for Geometry Dash. Specifically a MegahackV5 clone in Python. Only for Windows

GD UltraHack: The Mod Menu that Nobody asked for. This is a mod menu for the gam

zeo 1 Jan 5, 2022
A programming language built on top of Python to easily allow Swahili speakers to get started with programming without ever knowing English

pyswahili A programming language built over Python to easily allow swahili speakers to get started with programming without ever knowing english pyswa

Jordan Kalebu 72 Dec 15, 2022
Easily convert matplotlib plots from Python into interactive Leaflet web maps.

mplleaflet mplleaflet is a Python library that converts a matplotlib plot into a webpage containing a pannable, zoomable Leaflet map. It can also embe

Jacob Wasserman 502 Dec 28, 2022
Process dataframe in a easily way.

Popanda Written by Shengxuan Wang at OSU. Used for processing dataframe, especially for machine learning. The name is from "Po" in the movie Kung Fu P

ShawnWang 1 Dec 24, 2021
Functions for easily making publication-quality figures with matplotlib.

Data-viz utils ?? Functions for data visualization in matplotlib ?? API Can be installed using pip install dvu and then imported with import dvu. You

Chandan Singh 16 Sep 15, 2022
🐍PyNode Next allows you to easily create beautiful graph visualisations and animations

PyNode Next A complete rewrite of PyNode for the modern era. Up to five times faster than the original PyNode. PyNode Next allows you to easily create

ehne 3 Feb 12, 2022