dtale 1.7.0
pip install dtale==1.7.0
Released:
Web Client for Visualizing Pandas Objects
Navigation
Verified details
These details have been verified by PyPIMaintainers
π Avatar for ahldev from gravatar.comahldev π Avatar for aschonfeld from gravatar.com
aschonfeld
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: GNU Library or Lesser General Public License (LGPL) (LGPL)
- Author: MAN Alpha Technology
- Tags numeric , pandas , visualization , flask
Classifiers
- Development Status
- Intended Audience
- License
- Operating System
- Programming Language
- Topic
Project description
π CircleCI
π PyPI
π ReadTheDocs
π codecov
π Downloads
What is it?
D-Tale was born out a conversion from SAS to Python. What was originally a perl script wrapper on top of SASβs insight function is now a lightweight web client on top of Pandas data structures. D-Tale is the combination of a Flask back-end and a React front-end to bring you an easy way to view & analyze Pandas data structures. Currently this tool supports such Pandas objects as DataFrame, Series, MultiIndex, DatetimeIndex & RangeIndex. It integrates seamlessly with ipython notebooks & python/ipython terminals.
Contents
Getting Started
PyCharm |
jupyter |
|---|---|
Setup/Activate your environment and install the egg
Python 3
# create a virtualenv, if you haven't already created one
$python3-mvenv~/pyenvs/dtale$source~/pyenvs/dtale/bin/activate# install dtale egg (important to use the "--upgrade" every time you install so it will grab the latest version)
$pipinstall--upgradedtale
Python 2
# create a virtualenv, if you haven't already created one
$python-mvirtualenv~/pyenvs/dtale$source~/pyenvs/dtale/bin/activate# install dtale egg (important to use the "--upgrade" every time you install so it will grab the latest version)
$pipinstall--upgradedtale
Now you will have to ability to use D-Tale from the command-line or within a python-enabled terminal
Python Terminal
This comes courtesy of PyCharm π image8
Feel free to invoke python
or ipython directly and use the commands in the screenshot above and
it should work
Additional functions available programatically
import dtaleimport pandas as pddf = pd.DataFrame([dict(a=1,b=2,c=3)])# Assigning a reference to a running D-Tale processd = dtale.show(df)# Accessing data associated with D-Tale processtmp = d.data.copy()tmp['d'] = 4# Altering data associated with D-Tale process# FYI: this will clear any front-end settings you have at the time for this process (filter, sorts, formatting)d.data = tmp# Shutting down D-Tale processd.kill()# using Python's `webbrowser` package it will try and open your server's default browser to this processd.open_browser()# There is also some helpful metadata about the processd._data_id # the process's data identifierd._url # the url to access the processd2 = dtale.get_instance(d._data_id) # returns a new reference to the instance running at that data_iddtale.instances() # returns a dictionary of all instances available, this would be { 1: ... }
Jupyter Notebook
Within any jupyter (ipython) notebook executing a cell like this will display a small instance of D-Tale in the output cell. Here are some examples:
dtale.show |
assignment |
instance |
|---|---|---|
If you are running ipython<=5.0 then you also have the ability to adjust the size of your output cell for the most recent instance displayed:
One thing of note is that alot of the modal popups you see in the standard browser version will now open separate browser windows for spacial convienence:
Column Menus |
Correlations |
Describe |
Histogram |
Charts |
Instances |
|---|---|---|---|---|---|
Command-line
Base CLI options (run dtale --help to see all options available)
Prop |
Description |
|---|---|
--host |
the name of the host you would like to use (most likely not needed since socket.gethostname() should figure this out) |
--port |
the port you would like to assign to your D-Tale instance |
--name |
an optional name you can assign to your D-Tale instance (this will be displayed in the <title> & Instances popup) |
--debug |
turn on Flaskβs βdebugβ mode for your D-Tale instance |
--no-reaper |
flag to turn off auto-reaping subprocess (kill D-Tale instances after an hour of inactivity), good for long-running displays |
--open-browser |
flag to automatically open up your serverβs default browser to your D-Tale instance |
--force |
flag to force D-Tale to try an kill any pre-existing process at the port youβve specified so it can use it |
Loading data from arctic
dtale--arctic-hostmongodb://localhost:27027--arctic-libraryjdoe.my_lib--arctic-nodemy_node--arctic-start20130101--arctic-end20161231
Loading data from CSV
dtale--csv-path/home/jdoe/my_csv.csv--csv-parse_datesdate
Loading data from a Custom loader - Using the DTALE_CLI_LOADERS environment variable, specify a path to a location containing some python modules - Any python module containing the global variables LOADER_KEY & LOADER_PROPS will be picked up as a custom loader - LOADER_KEY: the key that will be associated with your loader. By default you are given arctic & csv (if you use one of these are your key it will override these) - LOADER_PROPS: the individual props available to be specified. - For example, with arctic we have host, library, node, start & end. - If you leave this property as an empty list your loader will be treated as a flag. For example, instead of using all the arctic properties we would simply specify --arctic (this wouldnβt work well in arcticβs case since it depends on all those properties) - You will also need to specify a function with the following signature def find_loader(kwargs) which returns a function that returns a dataframe or None - Here is an example of a custom loader:
from dtale.cli.clickutils import get_loader_options'''
IMPORTANT!!! This global variable is required for building any customized CLI loader.
When find loaders on startup it will search for any modules containing the global variable LOADER_KEY.
'''LOADER_KEY = 'testdata'LOADER_PROPS = ['rows', 'columns']def test_data(rows, columns): import pandas as pd import numpy as np import random from past.utils import old_div from pandas.tseries.offsets import Day from dtale.utils import dict_merge import string now = pd.Timestamp(pd.Timestamp('now').date()) dates = pd.date_range(now - Day(364), now) num_of_securities = max(old_div(rows, len(dates)), 1) # always have at least one security securities = [ dict(security_id=100000 + sec_id, int_val=random.randint(1, 100000000000), str_val=random.choice(string.ascii_letters) * 5) for sec_id in range(num_of_securities) ] data = pd.concat([ pd.DataFrame([dict_merge(dict(date=date), sd) for sd in securities]) for date in dates ], ignore_index=True)[['date', 'security_id', 'int_val', 'str_val']] col_names = ['Col{}'.format(c) for c in range(columns)] return pd.concat([data, pd.DataFrame(np.random.randn(len(data), columns), columns=col_names)], axis=1)# IMPORTANT!!! This function is required for building any customized CLI loader.def find_loader(kwargs): test_data_opts = get_loader_options(LOADER_KEY, kwargs) if len([f for f in test_data_opts.values() if f]): def _testdata_loader(): return test_data(int(test_data_opts.get('rows', 1000500)), int(test_data_opts.get('columns', 96))) return _testdata_loader return None
In this example we simplying building a dataframe with some dummy data based on dimensions specified on the command-line: - --testdata-rows - --testdata-columns
Hereβs how you would use this loader:
DTALE_CLI_LOADERS=./path_to_loadersbash-c'dtale --testdata-rows 10 --testdata-columns 5'
UI
Once you have kicked off your D-Tale session please copy & paste the
link on the last line of output in your browser π image19
Dimensions/Main Menu
The information in the upper right-hand corner gives grid dimensions
π image20
- lower-left => row count - upper-right => column count -
clicking the triangle displays the menu of standard functions (click
outside menu to close it) π image21
Selecting/Deselecting Columns
to select a column, simply click on the column header (to deselect, click the column header again)
Youβll notice that the columns youβve selected will display in the top of your browser π image22
Menu functions w/ no columns selected
Describe
View all the columns & their data types as well as individual details of each column
Data Type |
Display |
Notes |
|---|---|---|
date |
||
string |
If you have less than or equal to 100 unique values they will be displayed at the bottom of your popup |
|
int |
Anything with standard numeric classifications (min, max, 25%, 50%, 75%) will have a nice boxplot with the mean (if it exists) displayed as an outlier if you look closely. |
|
float |
Filter
Apply a simple pandas query to your data (link to pandas documentation included in popup)
Editing |
Result |
|---|---|
Charts
Build custom charts based off your data.
To build a chart you must pick a value for X & Y inputs which effectively drive what data is along the X & Y axes
If your data along the x-axis has duplicates you have three options:
specify a group, which will create series for each group
specify an aggregation, you can choose from one of the following: Count, First, Last, Mean, Median, Minimum, MAximum, Standard Deviation, Variance, Mean Absolute Deviation, Product of All Items, Sum, Rolling
Specifying a βRollingβ aggregation will also require a Window & a Computation (Correlation, Coiunt, Covariance, Kurtosis, Maximum, Mean, Median, Minimum, Skew, Standard Deviation, Sum or Variance)
specify both a group & an aggregation
Click the βLoadβ button which will load the data and display the default cahrt type βlineβ
You now have the ability to toggle between different chart types: line, bar, stacked bar, pie & wordcloud
If you have specified a group then you have the ability between showing all series in one chart and breaking each series out into its own chart βChart per Groupβ
Here are some examples with the following inputs: X: date, Y: Col0, Group: security_id, Aggregation: Mean, Query: security_id in (100000, 100001) and date >= '20181220' and date <= '20181231'
Chart Type |
Chart |
Chart per Group |
|---|---|---|
line |
||
bar |
||
stacked |
||
pie |
||
wordcloud |
Selecting multiple columns for the Y-Axis will produce similar results to grouping in the sense that the chart will contain multiple series, but the difference is that for each column there will be a different Y-Axis associated with it in case the values contained within each column are on different scales.
Multi Y-Axis |
Editing Axis Ranges |
|---|---|
With a bar chart that only has a single Y-Axis you have the ability to sort the bars based on the values for the Y-Axis
Pre-sort |
Post-sort |
|---|---|
This is a very powerful feature with many more features that could be offered (heatmaps, different statistical aggregations, etcβ¦) so please submit issues :)
Correlations
Shows a pearson correlation matrix of all numeric columns against all other numeric columns - By deafult, it will show a grid of pearson correlations (filtering available by using drop-down see 2nd table of screenshots) - If you have a date-type column, you can click an individual cell and see a timeseries of pearson correlations for that column combination - Currently if you have multiple date-type columns you will have the ability to toggle between them by way of a drop-down - Furthermore, you can click on individual points in the timeseries to view the scatter plot of the points going into that correlation
Matrix |
Timeseries |
Scatter |
|---|---|---|
Col1 Filtered |
Col2 Filtered |
Col1 & Col2 Filtered |
|---|---|---|
When the data being viewed in D-Tale has date or timestamp columns but for each date/timestamp vlaue there is only one row of data the behavior of the Correlations popup is a little different - Instead of a timeseries correlation chart the user is given a rolling correlation chart which can have the window (default: 10) altered - The scatter chart will be created when a user clicks on a point in the rollign correlation chart. The data displayed in the scatter will be for the ranges of dates involved in the rolling correlation for that date.
Data |
Correlations |
|---|---|
Heat Map
This will hide any non-float columns (with the exception of the index on
the right) and apply a color to the background of each cell - Each float
is renormalized to be a value between 0 and 1.0 - Each renormalized
value is passed to a color scale of red(0) - yellow(0.5) - green(1.0)
π image53
Turn off Heat Map by clicking menu option again π image54
Instances
This will give you information about other D-Tale instances are running under your current Python process.
For example, if you ran the following script:
import pandas as pdimport dtaledtale.show(pd.DataFrame([dict(foo=1, bar=2, biz=3, baz=4, snoopy_D_O_double_gizzle=5)]))dtale.show(pd.DataFrame([ dict(a=1, b=2, c=3, d=4), dict(a=2, b=3, c=4, d=5), dict(a=3, b=4, c=5, d=6), dict(a=4, b=5, c=6, d=7)]))dtale.show(pd.DataFrame([range(6), range(6), range(6), range(6), range(6), range(6)]), name="foo")
This will make the Instances button available in all 3 of these D-Tale instances. Clicking that button while in the first instance invoked above will give you this popup:
The grid above contains the following information: - Process: timestamp when the process was started along with the name (if specified in dtale.show()) - Rows: number of rows - Columns: number of columns - Column Names: comma-separated string of column names (only first 30 characters, hover for full listing) - Preview: this button is available any of the non-current instances. Clicking this will bring up left-most 5X5 grid information for that instance - The row highlighted in green signifys the current D-Tale instance - Any other row can be clicked to switch to that D-Tale instance
Here is an example of clicking the βPreviewβ button:
About
This will give you information about what version of D-Tale youβre running as well as if its out of date to whats on PyPi.
Up To Date |
Out Of Date |
|---|---|
Resize
Mostly a fail-safe in the event that your columns are no longer lining up. Click this and should fix that
Iframe-mode/Full-mode
This is only available if you are not viewing D-Tale from an jupyter notebook output cell. This will toggle between the two types of functionality: - Full-mode: column selection, column-specific options in in the main menu & all tools are displayed in modal windows - Iframe-mode: no column selection, column-specific menus on head click & some tools will now open separate browser windows (Correlations, Describe, Histogram & Instances)
Shutdown
Pretty self-explanatory, kills your D-Tale session (there is also an auto-kill process that will kill your D-Tale after an hour of inactivity)
Menu functions w/ column(s) selected
Move To Front
Moves your column to the front of the βunlockedβ columns
Lock
Adds your column to βlockedβ columns - βlockedβ means that if you scroll horizontally these columns will stay pinned to the right-hand side - this is handy when you want to keep track of which date or security_id youβre looking at - by default, any index columns on the data passed to D-Tale will be locked
Unlock
Removed column from βlockedβ columns
Sorting
Applies/removes sorting (Ascending/Descending/Clear) to the column selected
Important: as you add sorts they sort added will be added to the end of the multi-sort. For example:
Action |
Sort |
|---|---|
select βaβ |
|
sort asc |
a (asc) |
deselect βaβ |
a (asc) |
select βbβ |
a (asc) |
sort desc |
a (asc), b(desc) |
select βaβ |
a (asc), b(desc) |
clear sort |
b(desc) |
sort desc |
b(desc), a(desc) |
select βbβ |
b(desc), a(desc) |
clear sort |
|
sort asc |
a (asc), b(asc) |
Formats
Apply simple formats to numeric values in your grid
Editing |
Result |
|---|---|
Hereβs a grid of all the formats available with -123456.789 as input:
Format |
Output |
|---|---|
Precision (6) |
-123456.789000 |
Thousands Sep |
-123,456.789 |
Abbreviate |
-123k |
Exponent |
-1e+5 |
BPS |
-1234567890BPS |
Red Negatives |
-123457 |
Histogram
Display histograms in any number of bins (defaul: 20), simply type a new integer value in the bins input
Menu functions within a Jupyter Notebook
These are the same functions as the menu listed earlier, but there is no more column selection (instead theres menus for each column). Also the following buttons will no longer open modals, but separate browser windows: Correlations, Describe & Instances (see images from Jupyter Notebook, also Charts will always open in a separate browser window)
There are also menus associated with each column header which can be trigger by clicking on a column header. The functions that are contained within each are: Sorting, Move To Front, Lock/Unlock, Histogram, Describe, Formats (see image from Jupyter Notebook) - Histogram & Describe open separate browser windows
For Developers
Cloning
Clone the code (git clone ), then start the backend server:
$gitclonessh://git@github.com:manahl/dtale.git# install the dependencies
$pythonsetup.pydevelop# start the server
$pythondtale--csv-path/home/jdoe/my_csv.csv--csv-parse_datesdate
You can also run dtale from PyDev directly.
You will also want to import javascript dependencies and build the source:
$npminstall# 1) a persistent server that serves the latest JS:
$npmrunwatch# 2) or one-off build:
$npmrunbuild
Running tests
The usual npm test command works:
$ npm test
You can run individual test files:
$ TEST=static/__tests__/dtale/DataViewer-base-test.jsx npm run test-file
Linting
You can lint all the JS and CSS to confirm thereβs nothing obviously wrong with it:
$npmrunlint-s
You can also lint individual JS files:
$npmrunlint-js-file-s--static/dtale/DataViewer.jsx
Formatting JS
You can auto-format code as follows:
$npmrunformat
Docker Development
You can build python 27-3 & run D-Tale as follows:
$yarnrunbuild$docker-composebuilddtale_2_7$dockerrun-it--networkhostdtale_2_7:latest$python>>>importpandasaspd>>>df=pd.DataFrame([dict(a=1,b=2,c=3)])>>>importdtale>>>dtale.show(df)
Then view your D-Tale instance in your browser using the link that gets printed
You can build python 36-1 & run D-Tale as follows:
$yarnrunbuild$docker-composebuilddtale_3_6$dockerrun-it--networkhostdtale_3_6:latest$python>>>importpandasaspd>>>df=pd.DataFrame([dict(a=1,b=2,c=3)])>>>importdtale>>>dtale.show(df)
Then view your D-Tale instance in your browser using the link that gets printed
Startup Behavior
Hereβs a little background on how the dtale.show() function works: - by default it will look for ports between 40000 & 49000, but you can change that range by specifying the environment variables DTALE_MIN_PORT & DTALE_MAX_PORT - think of sessions as python consoles or jupyter notebooks
Session 1 executes dtale.show(df) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40000 |
1 |
Session 1 executes dtale.show(df) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40000 |
1,2 |
Session 2 executes dtale.show(df) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40000 |
1,2 |
|
2 |
40001 |
1 |
Session 1 executes dtale.show(df, port=40001, force=True) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40001 |
1,2,3 |
Session 3 executes dtale.show(df) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40001 |
1,2,3 |
|
3 |
40000 |
1 |
Session 2 executes dtale.show(df) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40001 |
1,2,3 |
|
3 |
40000 |
1 |
|
2 |
40002 |
1 |
Session 4 executes dtale.show(df, port=8080) our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40001 |
1,2,3 |
|
3 |
40000 |
1 |
|
2 |
40002 |
1 |
|
4 |
8080 |
1 |
Session 1 executes dtale.get_instance(1).kill() our state is:
Session |
Port |
Active Data IDs |
URL(s) |
|---|---|---|---|
1 |
40001 |
2,3 |
|
3 |
40000 |
1 |
|
2 |
40002 |
1 |
|
4 |
8080 |
1 |
Session 5 sets DTALE_MIN_RANGE to 30000 and DTALE_MAX_RANGE 39000 and executes dtale.show(df) our state is:
Session |
Port |
Active Data ID(s) |
URL(s) |
|---|---|---|---|
1 |
40001 |
2,3 |
|
3 |
40000 |
1 |
|
2 |
40002 |
1 |
|
4 |
8080 |
1 |
|
5 |
30000 |
1 |
Documentation
Have a look at the detailed documentation.
Requirements
D-Tale works with:
Back-end
arctic
Flask
Flask-Caching
Flask-Compress
flasgger
Pandas
scipy
six
Front-end
react-virtualized
chart.js
Acknowledgements
D-Tale has been under active development at Man Numeric since 2019.
Original concept and implementation: Andrew Schonfeld
Contributors:
Mike Kelly
Youssef Habchi - title font
β¦ and many others β¦
Contributions welcome!
License
D-Tale is licensed under the GNU LGPL v2.1. A copy of which is included in LICENSE
Changelog
1.7.0 (2020-1-28)
1.6.10 (2020-1-12)
better front-end handling of dates for charting as to avoid timezone issues
the ability to switch between sorting any axis in bar charts
1.6.9 (2020-1-9)
bugfix for timezone issue around passing date filters to server for scatter charts in correlations popup
1.6.8 (2020-1-9)
additional information about how to use Correlations popup
handling of all-nan data in charts popup
styling issues on popups (especially Histogram)
removed auto-filtering on correlation popup
scatter point color change
added chart icon to cell that has been selected in correlation popup
responsiveness to scatter charts
handling of links to βmainβ,βiframeβ & βpopupβ missing data_id
handling of βinfβ values when getting min/max & describe data
added header to window popups (correlations, charts, β¦) and a link back to the grid
added egg building to cirleci script
correlation timeseries chart hover line
1.6.7 (2020-1-3)
#50: updates to rolling correlation functionality
1.6.6 (2020-1-2)
#47: selection of multiple columns for y-axis
updated histogram bin selection to be an input box for full customization
better display of timestamps in axis ticks for charts
sorting of bar charts by y-axis
#48: scatter charts in chart builder
βnuniqueβ added to list of aggregations
turned on βthreaded=Trueβ for app.run to avoid hanging popups
#45: rolling computations as aggregations
Y-Axis editor
1.6.5 (2019-12-29)
test whether filters entered will return no data and block the user from apply those
allow for group values of type int or float to be displayed in charts popup
timeseries correlation values which return βnanβ will be replaced by zero for chart purposes
update βdistributionβ to βseriesβ on charts so that missing dates will not show up as ticks
added βfork on githubβ flag for demo version & links to github/docs on βAboutβ popup
limited lz4 to <= 2.2.1 in python 27-3 since latest version is no longer supported
1.6.4 (2019-12-26)
testing of hostname returned by socket.gethostname, use βlocalhostβ if it fails
removal of flask dev server banner when running in production environments
better handling of long strings in wordclouds
#43: only show timeseries correlations if datetime columns exist with multiple values per date
1.6.3 (2019-12-23)
updated versions of packages in yarn.lock due to issue with chart.js box & whisker plots
1.6.2 (2019-12-23)
#40: loading initial chart as non-line in chart builder
#41: double clicking cells in correlation grid for scatter will cause chart not to display
βOpen Popupβ button for ipython iframes
column width resizing on sorting
additional int/float descriptors (sum, median, mode, var, sem, skew, kurt)
wordcloud chart type
1.6.1 (2019-12-19)
bugfix for url display when running from command-line
1.6.0 (2019-12-19)
charts integration
the ability to look at data in line, bar, stacked bar & pie charts
the ability to group & aggregate data within the charts
direct ipython iframes to correlations & charts pages with pre-selected inputs
the ability to access instances from code by data id dtale.get_instance(data_id)
view all active data instances dtale.instances()
1.5.1 (2019-12-12)
conversion of new flask instance for each dtale.show call to serving all data associated with one parent process under the same flask instance unless otherwise specified by the user (the force parameter)
1.5.0 (2019-12-02)
ipython integration
ipython output cell adjustment
column-wise menu support
browser window popups for: Correlations, Coverage, Describe, Histogram & Instances
1.4.1 (2019-11-20)
#32: unpin jsonschema by moving flasgger to extras_require
1.4.0 (2019-11-19)
Correlations Pearson Matrix filters
βnameβ display in title tab
βHeat Mapβ toggle
dropped unused βFlask-Cachingβ requirement
1.3.7 (2019-11-12)
1.3.6 (2019-11-08)
Bug fixes for:
choose between pandas.corr & numpy.corrcoef depending on presence of NaNs
hide timeseries correlations when date columns only contain one day
1.3.5 (2019-11-07)
Bug fixes for:
duplicate loading of histogram data
string serialization failing when mixing future.str & str in scatter function
1.3.4 (2019-11-07)
updated correlation calculation to use numpy.corrcoef for performance purposes
github rebranding from manahl -> man-group
1.3.3 (2019-11-05)
hotfix for failing test under certain versions of future package
1.3.2 (2019-11-05)
Bug fixes for:
display of histogram column information
reload of hidden βprocessesβ input when loading instances data
correlations json failures on string conversion
1.3.1 (2019-10-29)
fix for incompatible str types when directly altering state of data in running D-Tale instance
1.3.0 (2019-10-29)
webbrowser integration (the ability to automatically open a webbrowser upon calling dtale.show())
flag for hiding the βShutdownβ button for long-running demos
βInstancesβ navigator popup for viewing all activate D-Tale instances for the current python process
1.2.0 (2019-10-24)
1.1.1 (2019-10-23)
#13: fix for auto-detection of column widths for strings and floats
1.1.0 (2019-10-08)
IE support
Describe & About popups
Custom CLI support
1.0.0 (2019-09-06)
Initial public release
Project details
Verified details
These details have been verified by PyPIMaintainers
π Avatar for ahldev from gravatar.comahldev π Avatar for aschonfeld from gravatar.com
aschonfeld
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: GNU Library or Lesser General Public License (LGPL) (LGPL)
- Author: MAN Alpha Technology
- Tags numeric , pandas , visualization , flask
Classifiers
- Development Status
- Intended Audience
- License
- Operating System
- Programming Language
- Topic
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dtale-1.7.0.tar.gz.
File metadata
- Download URL: dtale-1.7.0.tar.gz
- Upload date:
- Size: 5.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/None requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
702f8a75bf39406fabaf5f8cfbbc082670d78541793291ebc43bd291dc55ea7a
|
|
| MD5 |
de050d3719a0670ef78a895910d872f6
|
|
| BLAKE2b-256 |
5b7be0f286fb2eb38aef514db0f25dbc7f8b0d800e821e426175b7d0ffcd7c43
|
File details
Details for the file dtale-1.7.0-py3.6.egg.
File metadata
- Download URL: dtale-1.7.0-py3.6.egg
- Upload date:
- Size: 5.3 MB
- Tags: Egg
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/None requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd70413e7131c61f6b7cca514cfe452352e38e1e146733496f9d5171529dfb38
|
|
| MD5 |
c149dbf2978a4ae1cbbbef6368d46ad1
|
|
| BLAKE2b-256 |
987eacfc67bdc45303a78b86774a1271ec259b4afbb235508f718e7429121081
|
File details
Details for the file dtale-1.7.0-py2.py3-none-any.whl.
File metadata
- Download URL: dtale-1.7.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.2 MB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/None requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8394f39d0bf262881e546fe991a182be1ea04b9bf6f174ec64ae1755c3b1fafe
|
|
| MD5 |
9d969b5c0a3cb58280d654d71c6a20b1
|
|
| BLAKE2b-256 |
97115e157621a68053312624fc5016bee7e652988def83e8a32ac852b6adfe66
|
File details
Details for the file dtale-1.7.0-py2.7.egg.
File metadata
- Download URL: dtale-1.7.0-py2.7.egg
- Upload date:
- Size: 5.3 MB
- Tags: Egg
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/None requests/2.22.0 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/2.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
954dd04fcc194ca8b1a375f9260fb379a93fda2bf2184cb05c4a60d2eee1e6dd
|
|
| MD5 |
cc18e4f6abe7d444053f88d4931585ae
|
|
| BLAKE2b-256 |
2ce14fa3efa1eaa64e1a71b103a4e559d4c4f487d894485133b26cbceb1d2bab
|
