Hello community,
here is the log from the commit of package python-cufflinks for
openSUSE:Factory checked in at 2019-06-04 12:12:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cufflinks (Old)
and /work/SRC/openSUSE:Factory/.python-cufflinks.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cufflinks"
Tue Jun 4 12:12:43 2019 rev:2 rq:707299 version:0.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cufflinks/python-cufflinks.changes
2019-02-24 17:10:24.780505206 +0100
+++
/work/SRC/openSUSE:Factory/.python-cufflinks.new.5148/python-cufflinks.changes
2019-06-04 12:13:05.103807143 +0200
@@ -1,0 +2,21 @@
+Mon Jun 3 18:58:49 UTC 2019 - Todd R <[email protected]>
+
+- Update to version 0.15
+ * Fix for offline mode.
+ * Fix for colorchange in qf.add_volume
+ * Fix scatter3d without categories.
+ * Markers for categories.
+ * Categories with timeseries arrays.
+ * Shared axes in subplots
+ * Shared axes with no shape specified.
+ * Support for offline_config
+ * Support for lists in heatmaps.
+ * opacity for bars
+- Fix jupyter dependencies.
+
+-------------------------------------------------------------------
+Mon Jun 3 18:31:35 UTC 2019 - Todd R <[email protected]>
+
+- Fix jupyter dependencies.
+
+-------------------------------------------------------------------
Old:
----
cufflinks-0.14.6.tar.gz
New:
----
cufflinks-0.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-cufflinks.spec ++++++
--- /var/tmp/diff_new_pack.jLx9Iz/_old 2019-06-04 12:13:06.351806734 +0200
+++ /var/tmp/diff_new_pack.jLx9Iz/_new 2019-06-04 12:13:06.351806734 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-cufflinks
-Version: 0.14.6
+Version: 0.15
Release: 0
Summary: Productivity Tools for Plotly + Pandas
License: MIT
@@ -33,13 +33,13 @@
Requires: python-pandas >= 0.19.2
Requires: python-plotly >= 3.0.0
Requires: python-six >= 1.9.0
-Recommends: python-jupyter_ipython >= 5.3.0
-Recommends: python-jupyter_ipywidgets >= 7.0.0
+Recommends: python-ipython >= 5.3.0
+Recommends: python-ipywidgets >= 7.0.0
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module colorlover >= 0.2.1}
-BuildRequires: %{python_module jupyter_ipython >= 5.3.0}
-BuildRequires: %{python_module jupyter_ipywidgets >= 7.0.0}
+BuildRequires: %{python_module ipython >= 5.3.0}
+BuildRequires: %{python_module ipywidgets >= 7.0.0}
BuildRequires: %{python_module nose >= 1.3.7}
BuildRequires: %{python_module numpy >= 1.9.2}
BuildRequires: %{python_module pandas >= 0.19.2}
++++++ cufflinks-0.14.6.tar.gz -> cufflinks-0.15.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/MANIFEST.in
new/cufflinks-0.15/MANIFEST.in
--- old/cufflinks-0.14.6/MANIFEST.in 2018-09-12 19:59:42.000000000 +0200
+++ new/cufflinks-0.15/MANIFEST.in 2019-03-07 18:57:22.000000000 +0100
@@ -1,3 +1,5 @@
include helper/*.json
include license.txt
include requirements.txt
+include tests.py
+graft data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/PKG-INFO new/cufflinks-0.15/PKG-INFO
--- old/cufflinks-0.14.6/PKG-INFO 2018-11-08 20:56:12.000000000 +0100
+++ new/cufflinks-0.15/PKG-INFO 2019-04-03 10:48:00.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: cufflinks
-Version: 0.14.6
+Version: 0.15
Summary: Productivity Tools for Plotly + Pandas
Home-page: https://github.com/santosjorge/cufflinks
Author: Jorge Santos
@@ -10,3 +10,6 @@
Description: UNKNOWN
Keywords: pandas,plotly,plotting
Platform: UNKNOWN
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/auth.py
new/cufflinks-0.15/cufflinks/auth.py
--- old/cufflinks-0.14.6/cufflinks/auth.py 2018-04-06 21:38:57.000000000
+0200
+++ new/cufflinks-0.15/cufflinks/auth.py 2019-04-02 20:37:19.000000000
+0200
@@ -27,12 +27,14 @@
"theme" : "pearl",
"colorscale" : "dflt",
"offline" : False,
+ "offline_connected" : True,
"offline_url":'',
"offline_show_link" : True,
"offline_link_text" : 'Export
to plot.ly',
"datagen_mode" : 'stocks',
"dimensions" : None,
- "margin" : None
+ "margin" : None,
+ "offline_config" : None
}
}
@@ -81,8 +83,9 @@
"your 'home' ('~') directory")
-def set_config_file(sharing=None,theme=None,colorscale=None,offline=None,
+def
set_config_file(sharing=None,theme=None,colorscale=None,offline=None,offline_connected=None,
offline_url=None,offline_show_link=None,offline_link_text=None,
+ offline_config=None,
datagen_mode=None,**kwargs):
"""
Set the keyword-value pairs in `~/.config`.
@@ -101,12 +104,20 @@
offline : bool
If true then the charts are rendered
locally.
+ offline_connected : bool
+ If True, the plotly.js library will be loaded
+ from an online CDN. If False, the plotly.js library
will be loaded locally
+ from the plotly python package
offline_show_link : bool
If true then the chart will show a link to
plot.ly at the bottom right of the chart
offline_link_text : string
Text to display as link at the bottom
right of the chart
+ offline_config : dict
+ Additional configuration options
+ For the complete list of config options check out:
+
https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js
datagen_mode : string
Mode in which the data is generated
by the datagen module
@@ -122,7 +133,7 @@
if not _file_permissions:
raise Exception("You don't have proper file permissions "
"to
run this function.")
- valid_kwargs=['world_readable','dimensions','margin']
+ valid_kwargs=['world_readable','dimensions','margin','offline_config']
for key in list(kwargs.keys()):
if key not in valid_kwargs:
raise Exception("Invalid keyword : '{0}'".format(key))
@@ -140,6 +151,8 @@
config['theme']=theme
if colorscale:
config['colorscale']=colorscale
+ if offline_connected:
+ config['offline_connected']=offline_connected
if offline is not None:
config['offline']=offline
if offline:
@@ -152,6 +165,8 @@
config['offline_show_link']=offline_show_link
if offline_link_text:
config['offline_link_text']=offline_link_text
+ if offline_config:
+ config['offline_config']=offline_config
for _ in valid_kwargs:
if _ in kwargs:
config[_]=kwargs[_]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/datagen.py
new/cufflinks-0.15/cufflinks/datagen.py
--- old/cufflinks-0.14.6/cufflinks/datagen.py 2018-07-13 09:31:49.000000000
+0200
+++ new/cufflinks-0.15/cufflinks/datagen.py 2019-03-20 23:26:06.000000000
+0100
@@ -391,7 +391,24 @@
if mode is None:
mode=get_config_file()['datagen_mode']
if mode=='abc':
- columns=list(string.ascii_letters[:n])
+ def get_abc(n):
+ def _w(n,base=2):
+ _n=1
+ st=[]
+ while base**_n<=n:
+ _n+=1
+ for _ in range(_n-1,0,-1):
+ n_st=n//(base**_)
+ st.append(n_st)
+ n=n-n_st*(base**_)
+ st.append(n+1)
+ return st
+ st=_w(n,len(string.ascii_lowercase))
+ _st=''
+ for _ in st:
+ _st+=string.ascii_lowercase[_-1]
+ return _st
+ columns=[get_abc(_) for _ in range(n)]
elif mode=='stocks':
columns=[''.join(np.random.choice(list(string.ascii_uppercase),name)) + '.' +
''.join(np.random.choice(list(string.ascii_uppercase),exchange)) for _ in
range(n)]
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/offline.py
new/cufflinks-0.15/cufflinks/offline.py
--- old/cufflinks-0.14.6/cufflinks/offline.py 2018-05-01 09:20:58.000000000
+0200
+++ new/cufflinks-0.15/cufflinks/offline.py 2019-04-02 20:37:19.000000000
+0200
@@ -10,7 +10,19 @@
return False
-def go_offline(connected=False):
+def go_offline(connected=None):
+ """
+ connected : bool
+ If True, the plotly.js library will be loaded
+ from an online CDN. If False, the plotly.js library will be loaded
locally
+ from the plotly python package
+ """
+ from .auth import get_config_file
+ if connected is None:
+ try:
+ connected=True if get_config_file()['offline_connected'] is None
else get_config_file()['offline_connected']
+ except:
+ connected=True
if run_from_ipython():
try:
py_offline.init_notebook_mode(connected)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/plotlytools.py
new/cufflinks-0.15/cufflinks/plotlytools.py
--- old/cufflinks-0.14.6/cufflinks/plotlytools.py 2018-11-08
20:53:43.000000000 +0100
+++ new/cufflinks-0.15/cufflinks/plotlytools.py 2019-03-20 23:26:06.000000000
+0100
@@ -3,13 +3,13 @@
import time
import copy
# from plotly.graph_objs import *
-from plotly.graph_objs import Figure, Bar, Box, Scatter, FigureWidget,
Scatter3d, Histogram, Heatmap, Surface, Pie
+from plotly.graph_objs import Figure, Layout, Bar, Box, Scatter, FigureWidget,
Scatter3d, Histogram, Heatmap, Surface, Pie
import plotly.figure_factory as ff
from collections import defaultdict
from IPython.display import display,Image
from .exceptions import CufflinksError
from .colors import normalize,get_scales,colorgen,to_rgba,get_colorscale
-from .utils import check_kwargs, deep_update, kwargs_from_keyword
+from .utils import check_kwargs, deep_update, kwargs_from_keyword, is_list
from . import tools
from . import offline
from . import auth
@@ -198,7 +198,7 @@
return lines_plotly
def
_iplot(self,kind='scatter',data=None,layout=None,filename='',sharing=None,title='',xTitle='',yTitle='',zTitle='',theme=None,colors=None,colorscale=None,fill=False,width=None,
-
dash='solid',mode='lines',interpolation='linear',symbol='circle',size=12,barmode='',sortbars=False,bargap=None,bargroupgap=None,bins=None,histnorm='',
+
dash='solid',mode='',interpolation='linear',symbol='circle',size=12,barmode='',sortbars=False,bargap=None,bargroupgap=None,bins=None,histnorm='',
histfunc='count',orientation='v',boxpoints=False,annotations=None,keys=False,bestfit=False,
bestfit_colors=None,mean=False,mean_colors=None,categories='',x='',y='',z='',text='',gridcolor=None,
zerolinecolor=None,margin=None,labels=None,values=None,secondary_y='',secondary_y_title='',subplots=False,shape=None,error_x=None,
@@ -757,7 +757,9 @@
bargap=bargap,bargroupgap=bargroupgap,annotations=annotations,gridcolor=gridcolor,
dimensions=dimensions,
zerolinecolor=zerolinecolor,margin=margin,is3d='3d' in kind,**l_kwargs)
-
+ elif isinstance(layout, Layout):
+ layout = layout.to_plotly_json()
+
if not data:
if categories and kind not in ('violin'):
data=[]
@@ -770,7 +772,7 @@
else:
_keys=pd.unique(self[categories])
colors=get_colors(colors,colorscale,_keys)
- mode='markers' if 'markers' not in mode else
mode
+ mode='markers' if not mode else mode
for _ in _keys:
__=self[self[categories]==_].copy()
if text:
@@ -799,6 +801,14 @@
marker=dict(color=colors[_],symbol=symbol,size=_size,opacity=opacity,
line=dict(width=width)),textfont=tools.getLayout(theme=theme)['xaxis']['titlefont'])
else:
+ #see error 168
+ if type(_x)==pd.np.ndarray:
+ if '[ns]' in
_x.dtype.str:
+
_x=_x.astype(str)
+ if type(_y)==pd.np.ndarray:
+ if '[ns]' in
_y.dtype.str:
+
_y=_y.astype(str)
+
_data=Scatter(x=_x,y=_y,mode=mode,name=_,
marker=dict(color=colors[_],symbol=symbol,size=_size,opacity=opacity,
line=dict(width=width)),textfont=tools.getLayout(theme=theme)['xaxis']['titlefont'])
@@ -821,6 +831,7 @@
df=df[y]
if kind=='area':
df=df.transpose().fillna(0).cumsum().transpose()
+ mode='lines' if not mode else mode
if text:
if not isinstance(text,list):
text=self[text].values
@@ -946,8 +957,14 @@
scale=get_scales('rdbu') if not colorscale else
get_scales(colorscale)
colorscale=[[float(_)/(len(scale)-1),scale[_]]
for _ in range(len(scale))]
center_scale = kwargs.get('center_scale',None)
- zmin=z.min()
- zmax=z.max()
+
+ if is_list(z):
+ zmin=min(z)
+ zmax=max(z)
+ else:
+ zmin=z.min()
+ zmax=z.max()
+
if center_scale is not None:
if center_scale<=zmin+(zmax-zmin)/2:
zmin=center_scale*2-zmax
@@ -976,7 +993,7 @@
else:
size=[size for _ in range(len(keys))]
-
_data=Scatter3d(x=df[x].values.tolist(),y=df[y].values.tolist(),z=df[z].values.tolist(),mode=mode,name=keys,
+
_data=Scatter3d(x=df[x].values.tolist(),y=df[y].values.tolist(),z=df[z].values.tolist(),mode=mode,text=keys,
marker=dict(color=colors,symbol=symbol,size=size,opacity=.8))
if text:
_data.update(text=keys)
@@ -1396,6 +1413,7 @@
## Offline Links
show_link = auth.get_config_file()['offline_show_link']
link_text = auth.get_config_file()['offline_link_text']
+ config = auth.get_config_file()['offline_config']
## Remove validation if shapes are present
if 'layout' in figure:
@@ -1411,7 +1429,7 @@
if asImage:
if offline.is_offline() and not online:
return
offline.py_offline.iplot(figure,validate=validate, filename=filename,
show_link=show_link,link_text=link_text,
-
image='png',image_width=dimensions[0],image_height=dimensions[1])
+ image='png', image_width=dimensions[0],
image_height=dimensions[1], config=config)
else:
try:
py.image.save_as(figure,filename='img/'+filename,format='png',
@@ -1432,14 +1450,14 @@
filename+='.html'
if offline.is_offline() and not online:
return offline.py_offline.plot(figure,
filename=filename, validate=validate,
-
show_link=show_link,link_text=link_text,auto_open=auto_open)
+
show_link=show_link, link_text=link_text, auto_open=auto_open, config=config)
else:
return py.plot(figure, sharing=sharing,
filename=filename, validate=validate,
auto_open=auto_open)
## iplot
if offline.is_offline() and not online:
- return offline.py_offline.iplot(figure,validate=validate,
filename=filename, show_link=show_link,link_text=link_text)
+ return offline.py_offline.iplot(figure, validate=validate,
filename=filename, show_link=show_link, link_text=link_text, config=config)
else:
return py.iplot(figure,validate=validate,sharing=sharing,
filename=filename)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/quant_figure.py
new/cufflinks-0.15/cufflinks/quant_figure.py
--- old/cufflinks-0.14.6/cufflinks/quant_figure.py 2018-09-09
23:33:15.000000000 +0200
+++ new/cufflinks-0.15/cufflinks/quant_figure.py 2019-03-20
23:54:59.000000000 +0100
@@ -93,7 +93,7 @@
# self.theme initial values
self.theme['theme']=kwargs.pop('theme',auth.get_config_file()['theme'])
- self.theme['up_color']=kwargs.pop('up_color','#17BECF') # java
+ self.theme['up_color']=kwargs.pop('up_color','java') # java
self.theme['down_color']=kwargs.pop('down_color','grey')
# self.panels initial values
@@ -585,9 +585,12 @@
Parameters:
colorchange : bool
- If true then each volume bar will have a fill
color
+ If True then each volume bar will have a fill
color
depending on if 'base' had a positive or
negative
change compared to the previous value
+ If False then each volume bar will have a fill
color
+ depending on if the volume data itself had a
positive or negative
+ change compared to the previous value
column :string
Defines the data column name that contains the
volume data.
Default: 'volume'
@@ -618,7 +621,7 @@
down_color=kwargs.pop('down_color',self.theme['down_color'])
study={'kind':'volume',
'name':name,
-
'params':{'changecolor':True,'base':'close','column':column,
+
'params':{'colorchange':colorchange,'base':'close','column':column,
'str':None},
'display':utils.merge_dict({'up_color':up_color,'down_color':down_color},kwargs)}
self._add_study(study)
@@ -1040,10 +1043,13 @@
if kind=='volume':
bar_colors=[]
local_kwargs,params=get_params([],params,display,False)
- base=df[self._d[params['base']]]
+ #Fix for 152
+ base_column=params['base'] if params['colorchange']
else 'volume'
+ base=df[self._d[base_column]]
up_color=colors.normalize(display['up_color']) if
'rgba' not in display['up_color'] else display['up_color']
down_color=colors.normalize(display['down_color']) if
'rgba' not in display['down_color'] else display['down_color']
study_kwargs=utils.kwargs_from_keyword(kwargs,{},'study')
+
for i in range(len(base)):
if i != 0:
@@ -1258,5 +1264,4 @@
def __repr__(self):
_d=self.__dict__.copy()
del _d['df']
- print(json.dumps(_d,sort_keys=True, indent=4))
- return ''
\ No newline at end of file
+ return json.dumps(_d,sort_keys=True, indent=4)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/tools.py
new/cufflinks-0.15/cufflinks/tools.py
--- old/cufflinks-0.14.6/cufflinks/tools.py 2018-09-18 00:55:37.000000000
+0200
+++ new/cufflinks-0.15/cufflinks/tools.py 2019-03-07 20:41:23.000000000
+0100
@@ -334,6 +334,7 @@
shapes=[]
def get_shapes(xline):
+
orientation=xline[0]
xline=kwargs[xline]
if isinstance(xline,list):
@@ -749,6 +750,12 @@
if len(figures)==1:
cols=1
rows=1
+ elif shared_xaxes:
+ cols=1
+ rows=len(figures)
+ elif shared_yaxes:
+ cols=len(figures)
+ rows=1
else:
cols=2
rows=len(figures)//2+len(figures)%2
@@ -1298,9 +1305,9 @@
'paper'
'y2' etc
"""
- if not x1:
- if not x0:
- if not x:
+ if x1 is None:
+ if x0 is None:
+ if x is None:
xref='paper'
x0=0
x1=1
@@ -1308,9 +1315,11 @@
x0=x1=x
else:
x1=x0
- if not y1:
- if not y0:
- if not y:
+ else:
+ x
+ if y1 is None:
+ if y0 is None:
+ if y is None:
yref='paper'
y0=0
y1=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks/version.py
new/cufflinks-0.15/cufflinks/version.py
--- old/cufflinks-0.14.6/cufflinks/version.py 2018-11-08 20:55:09.000000000
+0100
+++ new/cufflinks-0.15/cufflinks/version.py 2019-04-02 20:37:19.000000000
+0200
@@ -1 +1 @@
-__version__ = "0.14.6"
+__version__ = "0.15"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks.egg-info/PKG-INFO
new/cufflinks-0.15/cufflinks.egg-info/PKG-INFO
--- old/cufflinks-0.14.6/cufflinks.egg-info/PKG-INFO 2018-11-08
20:56:11.000000000 +0100
+++ new/cufflinks-0.15/cufflinks.egg-info/PKG-INFO 2019-04-03
10:47:59.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.0
+Metadata-Version: 1.1
Name: cufflinks
-Version: 0.14.6
+Version: 0.15
Summary: Productivity Tools for Plotly + Pandas
Home-page: https://github.com/santosjorge/cufflinks
Author: Jorge Santos
@@ -10,3 +10,6 @@
Description: UNKNOWN
Keywords: pandas,plotly,plotting
Platform: UNKNOWN
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks.egg-info/SOURCES.txt
new/cufflinks-0.15/cufflinks.egg-info/SOURCES.txt
--- old/cufflinks-0.14.6/cufflinks.egg-info/SOURCES.txt 2018-11-08
20:56:11.000000000 +0100
+++ new/cufflinks-0.15/cufflinks.egg-info/SOURCES.txt 2019-04-03
10:48:00.000000000 +0200
@@ -4,6 +4,7 @@
requirements.txt
setup.cfg
setup.py
+tests.py
cufflinks/__init__.py
cufflinks/auth.py
cufflinks/colors.py
@@ -29,4 +30,6 @@
cufflinks.egg-info/pkg-info
cufflinks.egg-info/requires.txt
cufflinks.egg-info/top_level.txt
+data/choropleth.csv
+data/scattergeo.csv
helper/params.json
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/cufflinks.egg-info/requires.txt
new/cufflinks-0.15/cufflinks.egg-info/requires.txt
--- old/cufflinks-0.14.6/cufflinks.egg-info/requires.txt 2018-11-08
20:56:11.000000000 +0100
+++ new/cufflinks-0.15/cufflinks.egg-info/requires.txt 2019-04-03
10:47:59.000000000 +0200
@@ -5,5 +5,4 @@
colorlover>=0.2.1
setuptools>=34.4.1
ipython>=5.3.0
-nose==1.3.7
ipywidgets>=7.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/data/choropleth.csv
new/cufflinks-0.15/data/choropleth.csv
--- old/cufflinks-0.14.6/data/choropleth.csv 1970-01-01 01:00:00.000000000
+0100
+++ new/cufflinks-0.15/data/choropleth.csv 2016-05-13 15:28:33.000000000
+0200
@@ -0,0 +1,223 @@
+,text,locations
+0,Afghanistan,AFG
+1,Albania,ALB
+2,Algeria,DZA
+3,American Samoa,ASM
+4,Andorra,AND
+5,Angola,AGO
+6,Anguilla,AIA
+7,Antigua and Barbuda,ATG
+8,Argentina,ARG
+9,Armenia,ARM
+10,Aruba,ABW
+11,Australia,AUS
+12,Austria,AUT
+13,Azerbaijan,AZE
+14,"Bahamas, The",BHM
+15,Bahrain,BHR
+16,Bangladesh,BGD
+17,Barbados,BRB
+18,Belarus,BLR
+19,Belgium,BEL
+20,Belize,BLZ
+21,Benin,BEN
+22,Bermuda,BMU
+23,Bhutan,BTN
+24,Bolivia,BOL
+25,Bosnia and Herzegovina,BIH
+26,Botswana,BWA
+27,Brazil,BRA
+28,British Virgin Islands,VGB
+29,Brunei,BRN
+30,Bulgaria,BGR
+31,Burkina Faso,BFA
+32,Burma,MMR
+33,Burundi,BDI
+34,Cabo Verde,CPV
+35,Cambodia,KHM
+36,Cameroon,CMR
+37,Canada,CAN
+38,Cayman Islands,CYM
+39,Central African Republic,CAF
+40,Chad,TCD
+41,Chile,CHL
+42,China,CHN
+43,Colombia,COL
+44,Comoros,COM
+45,"Congo, Democratic Republic of the",COD
+46,"Congo, Republic of the",COG
+47,Cook Islands,COK
+48,Costa Rica,CRI
+49,Cote d'Ivoire,CIV
+50,Croatia,HRV
+51,Cuba,CUB
+52,Curacao,CUW
+53,Cyprus,CYP
+54,Czech Republic,CZE
+55,Denmark,DNK
+56,Djibouti,DJI
+57,Dominica,DMA
+58,Dominican Republic,DOM
+59,Ecuador,ECU
+60,Egypt,EGY
+61,El Salvador,SLV
+62,Equatorial Guinea,GNQ
+63,Eritrea,ERI
+64,Estonia,EST
+65,Ethiopia,ETH
+66,Falkland Islands (Islas Malvinas),FLK
+67,Faroe Islands,FRO
+68,Fiji,FJI
+69,Finland,FIN
+70,France,FRA
+71,French Polynesia,PYF
+72,Gabon,GAB
+73,"Gambia, The",GMB
+74,Georgia,GEO
+75,Germany,DEU
+76,Ghana,GHA
+77,Gibraltar,GIB
+78,Greece,GRC
+79,Greenland,GRL
+80,Grenada,GRD
+81,Guam,GUM
+82,Guatemala,GTM
+83,Guernsey,GGY
+84,Guinea-Bissau,GNB
+85,Guinea,GIN
+86,Guyana,GUY
+87,Haiti,HTI
+88,Honduras,HND
+89,Hong Kong,HKG
+90,Hungary,HUN
+91,Iceland,ISL
+92,India,IND
+93,Indonesia,IDN
+94,Iran,IRN
+95,Iraq,IRQ
+96,Ireland,IRL
+97,Isle of Man,IMN
+98,Israel,ISR
+99,Italy,ITA
+100,Jamaica,JAM
+101,Japan,JPN
+102,Jersey,JEY
+103,Jordan,JOR
+104,Kazakhstan,KAZ
+105,Kenya,KEN
+106,Kiribati,KIR
+107,"Korea, North",KOR
+108,"Korea, South",PRK
+109,Kosovo,KSV
+110,Kuwait,KWT
+111,Kyrgyzstan,KGZ
+112,Laos,LAO
+113,Latvia,LVA
+114,Lebanon,LBN
+115,Lesotho,LSO
+116,Liberia,LBR
+117,Libya,LBY
+118,Liechtenstein,LIE
+119,Lithuania,LTU
+120,Luxembourg,LUX
+121,Macau,MAC
+122,Macedonia,MKD
+123,Madagascar,MDG
+124,Malawi,MWI
+125,Malaysia,MYS
+126,Maldives,MDV
+127,Mali,MLI
+128,Malta,MLT
+129,Marshall Islands,MHL
+130,Mauritania,MRT
+131,Mauritius,MUS
+132,Mexico,MEX
+133,"Micronesia, Federated States of",FSM
+134,Moldova,MDA
+135,Monaco,MCO
+136,Mongolia,MNG
+137,Montenegro,MNE
+138,Morocco,MAR
+139,Mozambique,MOZ
+140,Namibia,NAM
+141,Nepal,NPL
+142,Netherlands,NLD
+143,New Caledonia,NCL
+144,New Zealand,NZL
+145,Nicaragua,NIC
+146,Nigeria,NGA
+147,Niger,NER
+148,Niue,NIU
+149,Northern Mariana Islands,MNP
+150,Norway,NOR
+151,Oman,OMN
+152,Pakistan,PAK
+153,Palau,PLW
+154,Panama,PAN
+155,Papua New Guinea,PNG
+156,Paraguay,PRY
+157,Peru,PER
+158,Philippines,PHL
+159,Poland,POL
+160,Portugal,PRT
+161,Puerto Rico,PRI
+162,Qatar,QAT
+163,Romania,ROU
+164,Russia,RUS
+165,Rwanda,RWA
+166,Saint Kitts and Nevis,KNA
+167,Saint Lucia,LCA
+168,Saint Martin,MAF
+169,Saint Pierre and Miquelon,SPM
+170,Saint Vincent and the Grenadines,VCT
+171,Samoa,WSM
+172,San Marino,SMR
+173,Sao Tome and Principe,STP
+174,Saudi Arabia,SAU
+175,Senegal,SEN
+176,Serbia,SRB
+177,Seychelles,SYC
+178,Sierra Leone,SLE
+179,Singapore,SGP
+180,Sint Maarten,SXM
+181,Slovakia,SVK
+182,Slovenia,SVN
+183,Solomon Islands,SLB
+184,Somalia,SOM
+185,South Africa,ZAF
+186,South Sudan,SSD
+187,Spain,ESP
+188,Sri Lanka,LKA
+189,Sudan,SDN
+190,Suriname,SUR
+191,Swaziland,SWZ
+192,Sweden,SWE
+193,Switzerland,CHE
+194,Syria,SYR
+195,Taiwan,TWN
+196,Tajikistan,TJK
+197,Tanzania,TZA
+198,Thailand,THA
+199,Timor-Leste,TLS
+200,Togo,TGO
+201,Tonga,TON
+202,Trinidad and Tobago,TTO
+203,Tunisia,TUN
+204,Turkey,TUR
+205,Turkmenistan,TKM
+206,Tuvalu,TUV
+207,Uganda,UGA
+208,Ukraine,UKR
+209,United Arab Emirates,ARE
+210,United Kingdom,GBR
+211,United States,USA
+212,Uruguay,URY
+213,Uzbekistan,UZB
+214,Vanuatu,VUT
+215,Venezuela,VEN
+216,Vietnam,VNM
+217,Virgin Islands,VGB
+218,West Bank,WBG
+219,Yemen,YEM
+220,Zambia,ZMB
+221,Zimbabwe,ZWE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/data/scattergeo.csv
new/cufflinks-0.15/data/scattergeo.csv
--- old/cufflinks-0.14.6/data/scattergeo.csv 1970-01-01 01:00:00.000000000
+0100
+++ new/cufflinks-0.15/data/scattergeo.csv 2016-05-13 15:28:33.000000000
+0200
@@ -0,0 +1,222 @@
+,iata,airport,city,state,country,lat,long,cnt,text
+0,ORD,Chicago O'Hare
International,Chicago,IL,USA,41.979595,-87.90446417,25129,"Chicago O'Hare
International Chicago, IL Arrivals: 25129"
+1,ATL,William B Hartsfield-Atlanta
Intl,Atlanta,GA,USA,33.64044444,-84.42694444,21925,"William B
Hartsfield-Atlanta Intl Atlanta, GA Arrivals: 21925"
+2,DFW,Dallas-Fort Worth International,Dallas-Fort
Worth,TX,USA,32.89595056,-97.0372,20662,"Dallas-Fort Worth International
Dallas-Fort Worth, TX Arrivals: 20662"
+3,PHX,Phoenix Sky Harbor
International,Phoenix,AZ,USA,33.43416667,-112.0080556,17290,"Phoenix Sky Harbor
International Phoenix, AZ Arrivals: 17290"
+4,DEN,Denver Intl,Denver,CO,USA,39.85840806,-104.6670019,13781,"Denver Intl
Denver, CO Arrivals: 13781"
+5,IAH,George Bush
Intercontinental,Houston,TX,USA,29.98047222,-95.33972222,13223,"George Bush
Intercontinental Houston, TX Arrivals: 13223"
+6,SFO,San Francisco International,San
Francisco,CA,USA,37.61900194,-122.3748433,12016,"San Francisco International
San Francisco, CA Arrivals: 12016"
+7,LAX,Los Angeles International,Los
Angeles,CA,USA,33.94253611,-118.4080744,11797,"Los Angeles International Los
Angeles, CA Arrivals: 11797"
+8,MCO,Orlando
International,Orlando,FL,USA,28.42888889,-81.31602778,10536,"Orlando
International Orlando, FL Arrivals: 10536"
+9,CLT,Charlotte/Douglas
International,Charlotte,NC,USA,35.21401111,-80.94312583,10490,"Charlotte/Douglas
International Charlotte, NC Arrivals: 10490"
+10,SLC,Salt Lake City Intl,Salt Lake
City,UT,USA,40.78838778,-111.9777731,9898,"Salt Lake City Intl Salt Lake City,
UT Arrivals: 9898"
+11,TPA,Tampa International ,Tampa,FL,USA,27.97547222,-82.53325,9182,"Tampa
International Tampa, FL Arrivals: 9182"
+12,EWR,Newark Intl,Newark,NJ,USA,40.69249722,-74.16866056,8678,"Newark Intl
Newark, NJ Arrivals: 8678"
+13,LAS,McCarran International,Las
Vegas,NV,USA,36.08036111,-115.1523333,8523,"McCarran International Las Vegas,
NV Arrivals: 8523"
+14,PHL,Philadelphia
Intl,Philadelphia,PA,USA,39.87195278,-75.24114083,7965,"Philadelphia Intl
Philadelphia, PA Arrivals: 7965"
+15,MSP,Minneapolis-St Paul
Intl,Minneapolis,MN,USA,44.88054694,-93.2169225,7690,"Minneapolis-St Paul Intl
Minneapolis, MN Arrivals: 7690"
+16,SEA,Seattle-Tacoma
Intl,Seattle,WA,USA,47.44898194,-122.3093131,7541,"Seattle-Tacoma Intl Seattle,
WA Arrivals: 7541"
+17,LGA,LaGuardia,New York,NY,USA,40.77724306,-73.87260917,7392,"LaGuardia New
York, NY Arrivals: 7392"
+18,MDW,Chicago Midway,Chicago,IL,USA,41.7859825,-87.75242444,6979,"Chicago
Midway Chicago, IL Arrivals: 6979"
+19,IAD,Washington Dulles
International,Chantilly,VA,USA,38.94453194,-77.45580972,6779,"Washington Dulles
International Chantilly, VA Arrivals: 6779"
+20,SAN,San Diego International-Lindbergh ,San
Diego,CA,USA,32.73355611,-117.1896567,6233,"San Diego International-Lindbergh
San Diego, CA Arrivals: 6233"
+21,STL,Lambert-St Louis International,St
Louis,MO,USA,38.74768694,-90.35998972,6204,"Lambert-St Louis International St
Louis, MO Arrivals: 6204"
+22,DTW,Detroit Metropolitan-Wayne
County,Detroit,MI,USA,42.21205889,-83.34883583,6044,"Detroit Metropolitan-Wayne
County Detroit, MI Arrivals: 6044"
+23,JFK,John F Kennedy Intl,New York,NY,USA,40.63975111,-73.77892556,5945,"John
F Kennedy Intl New York, NY Arrivals: 5945"
+24,MIA,Miami International,Miami,FL,USA,25.79325,-80.29055556,5907,"Miami
International Miami, FL Arrivals: 5907"
+25,BOS,Gen Edw L Logan Intl,Boston,MA,USA,42.3643475,-71.00517917,5627,"Gen
Edw L Logan Intl Boston, MA Arrivals: 5627"
+26,SMF,Sacramento
International,Sacramento,CA,USA,38.69542167,-121.5907669,4943,"Sacramento
International Sacramento, CA Arrivals: 4943"
+27,BWI,Baltimore-Washington
International,Baltimore,MD,USA,39.17540167,-76.66819833,4749,"Baltimore-Washington
International Baltimore, MD Arrivals: 4749"
+28,SNA,John Wayne /Orange Co,Santa
Ana,CA,USA,33.67565861,-117.8682225,4616,"John Wayne /Orange Co Santa Ana, CA
Arrivals: 4616"
+29,MSY,New Orleans International ,New
Orleans,LA,USA,29.99338889,-90.25802778,4432,"New Orleans International New
Orleans, LA Arrivals: 4432"
+30,SJC,San Jose International,San
Jose,CA,USA,37.36186194,-121.9290089,4367,"San Jose International San Jose, CA
Arrivals: 4367"
+31,DCA,Ronald Reagan Washington
National,Arlington,VA,USA,38.85208333,-77.03772222,4332,"Ronald Reagan
Washington National Arlington, VA Arrivals: 4332"
+32,PDX,Portland Intl,Portland,OR,USA,45.58872222,-122.5975,4071,"Portland Intl
Portland, OR Arrivals: 4071"
+33,RSW,Southwest Florida International,Ft.
Myers,FL,USA,26.53616667,-81.75516667,4057,"Southwest Florida International Ft.
Myers, FL Arrivals: 4057"
+34,PBI,Palm Beach International,West Palm
Beach,FL,USA,26.68316194,-80.09559417,3972,"Palm Beach International West Palm
Beach, FL Arrivals: 3972"
+35,RDU,Raleigh-Durham
International,Raleigh,NC,USA,35.87763889,-78.78747222,3896,"Raleigh-Durham
International Raleigh, NC Arrivals: 3896"
+36,HOU,William P Hobby,Houston,TX,USA,29.64541861,-95.27888889,3824,"William P
Hobby Houston, TX Arrivals: 3824"
+37,SAT,San Antonio International,San
Antonio,TX,USA,29.53369444,-98.46977778,3654,"San Antonio International San
Antonio, TX Arrivals: 3654"
+38,FLL,Fort Lauderdale-Hollywood Int'l,Ft.
Lauderdale,FL,USA,26.07258333,-80.15275,3616,"Fort Lauderdale-Hollywood Int'l
Ft. Lauderdale, FL Arrivals: 3616"
+39,MCI,Kansas City International,Kansas
City,MO,USA,39.29760528,-94.71390556,3403,"Kansas City International Kansas
City, MO Arrivals: 3403"
+40,OAK,Metropolitan Oakland
International,Oakland,CA,USA,37.72129083,-122.2207167,3386,"Metropolitan
Oakland International Oakland, CA Arrivals: 3386"
+41,PIT,Pittsburgh
International,Pittsburgh,PA,USA,40.49146583,-80.23287083,3180,"Pittsburgh
International Pittsburgh, PA Arrivals: 3180"
+42,MEM,Memphis
International,Memphis,TN,USA,35.04241667,-89.97666667,3058,"Memphis
International Memphis, TN Arrivals: 3058"
+43,MKE,General Mitchell
International,Milwaukee,WI,USA,42.94722222,-87.89658333,3030,"General Mitchell
International Milwaukee, WI Arrivals: 3030"
+44,CLE,Cleveland-Hopkins
Intl,Cleveland,OH,USA,41.41089417,-81.84939667,3015,"Cleveland-Hopkins Intl
Cleveland, OH Arrivals: 3015"
+45,JAX,Jacksonville
International,Jacksonville,FL,USA,30.49405556,-81.68786111,3005,"Jacksonville
International Jacksonville, FL Arrivals: 3005"
+46,TUS,Tucson
International,Tucson,AZ,USA,32.11608333,-110.9410278,2786,"Tucson International
Tucson, AZ Arrivals: 2786"
+47,IND,Indianapolis
International,Indianapolis,IN,USA,39.71732917,-86.29438417,2136,"Indianapolis
International Indianapolis, IN Arrivals: 2136"
+48,RNO,Reno/Tahoe
International,Reno,NV,USA,39.49857611,-119.7680647,2104,"Reno/Tahoe
International Reno, NV Arrivals: 2104"
+49,OKC,Will Rogers World,Oklahoma
City,OK,USA,35.39308833,-97.60073389,2104,"Will Rogers World Oklahoma City, OK
Arrivals: 2104"
+50,PVD,Theodore F Green
State,Providence,RI,USA,41.72399917,-71.42822111,2044,"Theodore F Green State
Providence, RI Arrivals: 2044"
+51,TUL,Tulsa International,Tulsa,OK,USA,36.19837222,-95.88824167,2003,"Tulsa
International Tulsa, OK Arrivals: 2003"
+52,CVG,Cincinnati Northern Kentucky
Intl,Covington,KY,USA,39.04614278,-84.6621725,1986,"Cincinnati Northern
Kentucky Intl Covington, KY Arrivals: 1986"
+53,CMH,Port Columbus Intl,Columbus,OH,USA,39.99798528,-82.89188278,1752,"Port
Columbus Intl Columbus, OH Arrivals: 1752"
+54,SDF,Louisville International-Standiford
,Louisville,KY,USA,38.17438889,-85.736,1716,"Louisville
International-Standiford Louisville, KY Arrivals: 1716"
+55,ONT,Ontario International,Ontario,CA,USA,34.056,-117.6011944,1622,"Ontario
International Ontario, CA Arrivals: 1622"
+56,LIT,Adams ,Little Rock,AR,USA,34.72939611,-92.22424556,1620,"Adams Little
Rock, AR Arrivals: 1620"
+57,DAL,Dallas Love ,Dallas,TX,USA,32.84711389,-96.85177222,1502,"Dallas Love
Dallas, TX Arrivals: 1502"
+58,OMA,Eppley Airfield,Omaha,NE,USA,41.30251861,-95.89417306,1474,"Eppley
Airfield Omaha, NE Arrivals: 1474"
+59,ORF,Norfolk
International,Norfolk,VA,USA,36.89461111,-76.20122222,1439,"Norfolk
International Norfolk, VA Arrivals: 1439"
+60,DAY,James M Cox Dayton
Intl,Dayton,OH,USA,39.90237583,-84.219375,1337,"James M Cox Dayton Intl Dayton,
OH Arrivals: 1337"
+61,ROC,Greater Rochester
Int'l,Rochester,NY,USA,43.11886611,-77.67238389,1327,"Greater Rochester Int'l
Rochester, NY Arrivals: 1327"
+62,XNA,Northwest Arkansas
Regional,Fayetteville/Springdale/Rogers,AR,USA,36.28186944,-94.30681111,1310,"Northwest
Arkansas Regional Fayetteville/Springdale/Rogers, AR Arrivals: 1310"
+63,BNA,Nashville
International,Nashville,TN,USA,36.12447667,-86.67818222,1299,"Nashville
International Nashville, TN Arrivals: 1299"
+64,ABQ,Albuquerque
International,Albuquerque,NM,USA,35.04022222,-106.6091944,1258,"Albuquerque
International Albuquerque, NM Arrivals: 1258"
+65,JAN,Jackson
International,Jackson,MS,USA,32.31116667,-90.07588889,1224,"Jackson
International Jackson, MS Arrivals: 1224"
+66,ELP,El Paso International,El Paso,TX,USA,31.80666667,-106.3778056,1206,"El
Paso International El Paso, TX Arrivals: 1206"
+67,RIC,Richmond
International,Richmond,VA,USA,37.50516667,-77.31966667,1199,"Richmond
International Richmond, VA Arrivals: 1199"
+68,BDL,Bradley International,Windsor
Locks,CT,USA,41.93887417,-72.68322833,1162,"Bradley International Windsor
Locks, CT Arrivals: 1162"
+69,MAF,Midland
International,Midland,TX,USA,31.94252778,-102.2019139,1103,"Midland
International Midland, TX Arrivals: 1103"
+70,BTR,"Baton Rouge Metropolitan, Ryan ",Baton
Rouge,LA,USA,30.53316083,-91.14963444,1095,"Baton Rouge Metropolitan, Ryan
Baton Rouge, LA Arrivals: 1095"
+71,TYS,McGhee-Tyson,Knoxville,TN,USA,35.81248722,-83.99285583,1052,"McGhee-Tyson
Knoxville, TN Arrivals: 1052"
+72,COS,City of Colorado Springs Muni,Colorado
Springs,CO,USA,38.80580556,-104.70025,1040,"City of Colorado Springs Muni
Colorado Springs, CO Arrivals: 1040"
+73,PNS,Pensacola
Regional,Pensacola,FL,USA,30.47330556,-87.18744444,1035,"Pensacola Regional
Pensacola, FL Arrivals: 1035"
+74,SYR,Syracuse-Hancock
Intl,Syracuse,NY,USA,43.11118694,-76.10631056,1006,"Syracuse-Hancock Intl
Syracuse, NY Arrivals: 1006"
+75,BHM,Birmingham
International,Birmingham,AL,USA,33.56294306,-86.75354972,956,"Birmingham
International Birmingham, AL Arrivals: 956"
+76,MHT,Manchester,Manchester,NH,USA,42.93451639,-71.43705583,953,"Manchester
Manchester, NH Arrivals: 953"
+77,PSP,Palm Springs International,Palm
Springs,CA,USA,33.82921556,-116.5062531,949,"Palm Springs International Palm
Springs, CA Arrivals: 949"
+78,SRQ,Sarasota Bradenton
International,Sarasota,FL,USA,27.39533333,-82.55411111,932,"Sarasota Bradenton
International Sarasota, FL Arrivals: 932"
+79,CRP,Corpus Christi International,Corpus
Christi,TX,USA,27.77036083,-97.50121528,926,"Corpus Christi International
Corpus Christi, TX Arrivals: 926"
+80,HSV,Huntsville International
,Huntsville,AL,USA,34.6404475,-86.77310944,880,"Huntsville International
Huntsville, AL Arrivals: 880"
+81,CAE,Columbia
Metropolitan,Columbia,SC,USA,33.93884,-81.11953944,840,"Columbia Metropolitan
Columbia, SC Arrivals: 840"
+82,LFT,Lafayette
Regional,Lafayette,LA,USA,30.20527972,-91.987655,818,"Lafayette Regional
Lafayette, LA Arrivals: 818"
+83,SBA,Santa Barbara Municipal,Santa
Barbara,CA,USA,34.42621194,-119.8403733,800,"Santa Barbara Municipal Santa
Barbara, CA Arrivals: 800"
+84,GEG,Spokane Intl,Spokane,WA,USA,47.61985556,-117.5338425,785,"Spokane Intl
Spokane, WA Arrivals: 785"
+85,MOB,Mobile Regional,Mobile,AL,USA,30.69141667,-88.24283333,768,"Mobile
Regional Mobile, AL Arrivals: 768"
+86,ICT,Wichita
Mid-Continent,Wichita,KS,USA,37.64995889,-97.43304583,747,"Wichita
Mid-Continent Wichita, KS Arrivals: 747"
+87,BUF,Buffalo Niagara
Intl,Buffalo,NY,USA,42.94052472,-78.73216667,711,"Buffalo Niagara Intl Buffalo,
NY Arrivals: 711"
+88,DSM,Des Moines International,Des
Moines,IA,USA,41.53493306,-93.66068222,708,"Des Moines International Des
Moines, IA Arrivals: 708"
+89,MDT,Harrisburg
Intl,Harrisburg,PA,USA,40.19349528,-76.76340361,702,"Harrisburg Intl
Harrisburg, PA Arrivals: 702"
+90,PWM,Portland International
Jetport,Portland,ME,USA,43.64616667,-70.30875,686,"Portland International
Jetport Portland, ME Arrivals: 686"
+91,MGM,Montgomery Regional
Apt,Montgomery,AL,USA,32.30064417,-86.39397611,686,"Montgomery Regional Apt
Montgomery, AL Arrivals: 686"
+92,PHF,Newport News/Williamsburg International,Newport
News,VA,USA,37.13189556,-76.4929875,675,"Newport News/Williamsburg
International Newport News, VA Arrivals: 675"
+93,HPN,Westchester Cty,White
Plains,NY,USA,41.06695778,-73.70757444,664,"Westchester Cty White Plains, NY
Arrivals: 664"
+94,MRY,Monterey
Peninsula,Monterey,CA,USA,36.5869825,-121.8429478,658,"Monterey Peninsula
Monterey, CA Arrivals: 658"
+95,GRR,Kent County International,Grand
Rapids,MI,USA,42.88081972,-85.52276778,656,"Kent County International Grand
Rapids, MI Arrivals: 656"
+96,ECP,Florida Beach,Beaches,FL,USA,30.448674,-84.550781,653,"Florida Beach
Beaches, FL Arrivals: 653"
+97,YUM,Yuma MCAS-Yuma
International,Yuma,AZ,USA,32.65658333,-114.6059722,627,"Yuma MCAS-Yuma
International Yuma, AZ Arrivals: 627"
+98,ASE,Aspen-Pitkin Co/Sardy
,Aspen,CO,USA,39.22316,-106.868845,611,"Aspen-Pitkin Co/Sardy Aspen, CO
Arrivals: 611"
+99,TLH,Tallahassee
Regional,Tallahassee,FL,USA,30.39652778,-84.35033333,608,"Tallahassee Regional
Tallahassee, FL Arrivals: 608"
+100,GPT,Gulfport-Biloxi
Regional,Gulfport-Biloxi,MS,USA,30.40728028,-89.07009278,582,"Gulfport-Biloxi
Regional Gulfport-Biloxi, MS Arrivals: 582"
+101,RAP,Rapid City Regional,Rapid
City,SD,USA,44.04532139,-103.0573708,572,"Rapid City Regional Rapid City, SD
Arrivals: 572"
+102,LGB,Long Beach (Daugherty ),Long
Beach,CA,USA,33.81772222,-118.1516111,562,"Long Beach (Daugherty ) Long Beach,
CA Arrivals: 562"
+103,ILM,Wilmington
International,Wilmington,NC,USA,34.27061111,-77.90255556,553,"Wilmington
International Wilmington, NC Arrivals: 553"
+104,LEX,Blue Grass ,Lexington,KY,USA,38.03697222,-84.60538889,540,"Blue Grass
Lexington, KY Arrivals: 540"
+105,MSN,Dane County Regional,Madison,WI,USA,43.13985778,-89.33751361,538,"Dane
County Regional Madison, WI Arrivals: 538"
+106,EUG,Mahlon Sweet ,Eugene,OR,USA,44.12326,-123.2186856,529,"Mahlon Sweet
Eugene, OR Arrivals: 529"
+107,SAV,Savannah
International,Savannah,GA,USA,32.12758333,-81.20213889,524,"Savannah
International Savannah, GA Arrivals: 524"
+108,LBB,Lubbock
International,Lubbock,TX,USA,33.66363889,-101.8227778,518,"Lubbock
International Lubbock, TX Arrivals: 518"
+109,CID,Eastern Iowa ,Cedar
Rapids,IA,USA,41.88458833,-91.71087222,516,"Eastern Iowa Cedar Rapids, IA
Arrivals: 516"
+110,GSP,Greenville-Spartanburg,Greer,SC,USA,34.89566722,-82.21885833,479,"Greenville-Spartanburg
Greer, SC Arrivals: 479"
+111,GSO,Piedmont Triad
International,Greensboro,NC,USA,36.09774694,-79.9372975,472,"Piedmont Triad
International Greensboro, NC Arrivals: 472"
+112,ISP,Long Island - MacArthur,Islip,NY,USA,40.7952425,-73.10021194,460,"Long
Island - MacArthur Islip, NY Arrivals: 460"
+113,MLI,Quad City,Moline,IL,USA,41.44852639,-90.50753917,451,"Quad City
Moline, IL Arrivals: 451"
+114,AVL,Asheville
Regional,Asheville,NC,USA,35.43619444,-82.54180556,448,"Asheville Regional
Asheville, NC Arrivals: 448"
+115,CAK,Akron-Canton
Regional,Akron,OH,USA,40.91631194,-81.44246556,445,"Akron-Canton Regional
Akron, OH Arrivals: 445"
+116,BMI,Central Illinois
Regional,Bloomington,IL,USA,40.47798556,-88.91595278,426,"Central Illinois
Regional Bloomington, IL Arrivals: 426"
+117,HRL,Valley
International,Harlingen,TX,USA,26.22850611,-97.65439389,414,"Valley
International Harlingen, TX Arrivals: 414"
+118,VPS,Eglin Air Force Base,Valparaiso,FL,USA,30.48325,-86.5254,410,"Eglin
Air Force Base Valparaiso, FL Arrivals: 410"
+119,SHV,Shreveport
Regional,Shreveport,LA,USA,32.4466275,-93.82559833,410,"Shreveport Regional
Shreveport, LA Arrivals: 410"
+120,FAR,Hector International,Fargo,ND,USA,46.91934889,-96.81498889,409,"Hector
International Fargo, ND Arrivals: 409"
+121,HDN,Yampa Valley,Hayden,CO,USA,40.48118028,-107.2176597,408,"Yampa Valley
Hayden, CO Arrivals: 408"
+122,MFR,Rogue Valley
International,Medford,OR,USA,42.37422778,-122.8734978,404,"Rogue Valley
International Medford, OR Arrivals: 404"
+123,PIA,Greater Peoria
Regional,Peoria,IL,USA,40.66424333,-89.69330556,404,"Greater Peoria Regional
Peoria, IL Arrivals: 404"
+124,LRD,Laredo
International,Laredo,TX,USA,27.54373861,-99.46154361,396,"Laredo International
Laredo, TX Arrivals: 396"
+125,AUS,Austin-Bergstrom
International,Austin,TX,USA,30.19453278,-97.66987194,393,"Austin-Bergstrom
International Austin, TX Arrivals: 393"
+126,ABI,Abilene Regional,Abilene,TX,USA,32.41132,-99.68189722,382,"Abilene
Regional Abilene, TX Arrivals: 382"
+127,SGF,Springfield-Branson
Regional,Springfield,MO,USA,37.24432611,-93.38685806,381,"Springfield-Branson
Regional Springfield, MO Arrivals: 381"
+128,FNT,Bishop,Flint,MI,USA,42.96550333,-83.74345639,379,"Bishop Flint, MI
Arrivals: 379"
+129,TRI,Tri-Cities
Regional,Bristol,TN,USA,36.47521417,-82.40742056,347,"Tri-Cities Regional
Bristol, TN Arrivals: 347"
+130,GRK,Robert Gray AAF,Killeen,TX,USA,31.06489778,-97.82779778,346,"Robert
Gray AAF Killeen, TX Arrivals: 346"
+131,CHS,Charleston
AFB/International,Charleston,SC,USA,32.89864639,-80.04050583,338,"Charleston
AFB/International Charleston, SC Arrivals: 338"
+132,GRB,Austin Straubel International,Green
Bay,WI,USA,44.48507333,-88.12959,333,"Austin Straubel International Green Bay,
WI Arrivals: 333"
+133,RDM,Roberts ,Redmond,OR,USA,44.25406722,-121.1499633,328,"Roberts
Redmond, OR Arrivals: 328"
+134,CSG,Columbus
Metropolitan,Columbus,GA,USA,32.51633333,-84.93886111,324,"Columbus
Metropolitan Columbus, GA Arrivals: 324"
+135,SBN,South Bend Regional,South
Bend,IN,USA,41.70895361,-86.31847417,324,"South Bend Regional South Bend, IN
Arrivals: 324"
+136,BOI,Boise Air Terminal,Boise,ID,USA,43.56444444,-116.2227778,319,"Boise
Air Terminal Boise, ID Arrivals: 319"
+137,MYR,Myrtle Beach International,Myrtle
Beach,SC,USA,33.67975,-78.92833333,314,"Myrtle Beach International Myrtle
Beach, SC Arrivals: 314"
+138,MOT,Minot International,Minot,ND,USA,48.25937778,-101.2803339,310,"Minot
International Minot, ND Arrivals: 310"
+139,CMI,University of
Illinois-Willard,Champaign/Urbana,IL,USA,40.03925,-88.27805556,306,"University
of Illinois-Willard Champaign/Urbana, IL Arrivals: 306"
+140,ROA,Roanoke Regional/ Woodrum
,Roanoke,VA,USA,37.32546833,-79.97542833,301,"Roanoke Regional/ Woodrum
Roanoke, VA Arrivals: 301"
+141,EGE,Eagle County Regional,Eagle,CO,USA,39.64256778,-106.9176953,296,"Eagle
County Regional Eagle, CO Arrivals: 296"
+142,JAC,Jackson Hole,Jackson,WY,USA,43.60732417,-110.7377389,295,"Jackson Hole
Jackson, WY Arrivals: 295"
+143,BZN,Gallatin ,Bozeman,MT,USA,45.77690139,-111.1530072,288,"Gallatin
Bozeman, MT Arrivals: 288"
+144,GJT,Walker ,Grand Junction,CO,USA,39.1224125,-108.5267347,285,"Walker
Grand Junction, CO Arrivals: 285"
+145,BUR,Burbank-Glendale-Pasadena,Burbank,CA,USA,34.20061917,-118.3584969,280,"Burbank-Glendale-Pasadena
Burbank, CA Arrivals: 280"
+146,EVV,Evansville
Regional,Evansville,IN,USA,38.03799139,-87.53062667,270,"Evansville Regional
Evansville, IN Arrivals: 270"
+147,GUC,Gunnison County,Gunnison,CO,USA,38.53396333,-106.9331817,270,"Gunnison
County Gunnison, CO Arrivals: 270"
+148,IDA,Idaho Falls Regional,Idaho
Falls,ID,USA,43.51455556,-112.0701667,264,"Idaho Falls Regional Idaho Falls, ID
Arrivals: 264"
+149,FAT,Fresno Yosemite
International,Fresno,CA,USA,36.77619444,-119.7181389,264,"Fresno Yosemite
International Fresno, CA Arrivals: 264"
+150,SPI,Capital,Springfield,IL,USA,39.84395194,-89.67761861,258,"Capital
Springfield, IL Arrivals: 258"
+151,MFE,McAllen Miller
International,McAllen,TX,USA,26.17583333,-98.23861111,248,"McAllen Miller
International McAllen, TX Arrivals: 248"
+152,RDD,Redding Municipal,Redding,CA,USA,40.50898361,-122.2934019,248,"Redding
Municipal Redding, CA Arrivals: 248"
+153,GFK,Grand Forks International,Grand
Forks,ND,USA,47.949255,-97.17611111,246,"Grand Forks International Grand Forks,
ND Arrivals: 246"
+154,FSD,Joe Foss ,Sioux Falls,SD,USA,43.58135111,-96.74170028,245,"Joe Foss
Sioux Falls, SD Arrivals: 245"
+155,TWF,Joslin Field - Magic Valley,Twin
Falls,ID,USA,42.48180389,-114.4877356,225,"Joslin Field - Magic Valley Twin
Falls, ID Arrivals: 225"
+156,SMX,Santa Maria Pub/Capt G Allan Hancock ,Santa
Maria,CA,USA,34.89924833,-120.4575825,216,"Santa Maria Pub/Capt G Allan Hancock
Santa Maria, CA Arrivals: 216"
+157,PIH,Pocatello
Regional,Pocatello,ID,USA,42.91130556,-112.5958611,216,"Pocatello Regional
Pocatello, ID Arrivals: 216"
+158,DHN,Dothan ,Dothan,AL,USA,31.32133917,-85.44962889,214,"Dothan Dothan, AL
Arrivals: 214"
+159,OAJ,Albert J
Ellis,Jacksonville,NC,USA,34.82916444,-77.61213778,212,"Albert J Ellis
Jacksonville, NC Arrivals: 212"
+160,MTJ,Montrose
Regional,Montrose,CO,USA,38.50886722,-107.8938333,210,"Montrose Regional
Montrose, CO Arrivals: 210"
+161,BIS,Bismarck
Municipal,Bismarck,ND,USA,46.77411111,-100.7467222,208,"Bismarck Municipal
Bismarck, ND Arrivals: 208"
+162,CPR,Natrona County
Intl,Casper,WY,USA,42.90835556,-106.4644661,208,"Natrona County Intl Casper, WY
Arrivals: 208"
+163,TVC,Cherry Capital,Traverse City,MI,USA,44.74144472,-85.582235,201,"Cherry
Capital Traverse City, MI Arrivals: 201"
+164,MLU,Monroe Regional,Monroe,LA,USA,32.51086556,-92.03768778,199,"Monroe
Regional Monroe, LA Arrivals: 199"
+165,PSC,Tri-Cities,Pasco,WA,USA,46.26468028,-119.1190292,168,"Tri-Cities
Pasco, WA Arrivals: 168"
+166,MHK,Manhattan
Regional,Manhattan,KS,USA,39.14096722,-96.67083278,168,"Manhattan Regional
Manhattan, KS Arrivals: 168"
+167,AEX,Alexandria
International,Alexandria,LA,USA,31.32737167,-92.54855611,168,"Alexandria
International Alexandria, LA Arrivals: 168"
+168,OTH,North Bend Muni,North Bend,OR,USA,43.41713889,-124.2460278,168,"North
Bend Muni North Bend, OR Arrivals: 168"
+169,SAF,Santa Fe Municipal,Santa Fe,NM,USA,35.61677778,-106.0881389,168,"Santa
Fe Municipal Santa Fe, NM Arrivals: 168"
+170,LMT,Klamath Falls International,Klamath
Falls,OR,USA,42.15614361,-121.7332081,168,"Klamath Falls International Klamath
Falls, OR Arrivals: 168"
+171,SWF,Stewart,Newburgh,NY,USA,41.50409361,-74.10483833,159,"Stewart
Newburgh, NY Arrivals: 159"
+172,CHO,Charlottesville-Albermarle,Charlottesville,VA,USA,38.13863889,-78.45286111,158,"Charlottesville-Albermarle
Charlottesville, VA Arrivals: 158"
+173,VLD,Valdosta Regional,Valdosta,GA,USA,30.7825,-83.27672222,158,"Valdosta
Regional Valdosta, GA Arrivals: 158"
+174,CWA,Central Wisconsin,Mosinee,WI,USA,44.77761917,-89.66677944,156,"Central
Wisconsin Mosinee, WI Arrivals: 156"
+175,IYK,Inyokern,Inyokern,CA,USA,35.65884306,-117.8295122,146,"Inyokern
Inyokern, CA Arrivals: 146"
+176,ACV,Arcata,Arcata/Eureka,CA,USA,40.97811528,-124.1086189,144,"Arcata
Arcata/Eureka, CA Arrivals: 144"
+177,BQK,Glynco Jetport,Brunswick,GA,USA,31.25902778,-81.46630556,140,"Glynco
Jetport Brunswick, GA Arrivals: 140"
+178,LNK,Lincoln Municipal,Lincoln,NE,USA,40.85097222,-96.75925,127,"Lincoln
Municipal Lincoln, NE Arrivals: 127"
+179,FWA,Fort Wayne International,Fort
Wayne,IN,USA,40.97846583,-85.19514639,114,"Fort Wayne International Fort Wayne,
IN Arrivals: 114"
+180,COD,Yellowstone
Regional,Cody,WY,USA,44.52019417,-109.0237961,112,"Yellowstone Regional Cody,
WY Arrivals: 112"
+181,PAH,Barkley Regional,Paducah,KY,USA,37.06083333,-88.77375,112,"Barkley
Regional Paducah, KY Arrivals: 112"
+182,SBP,San Luis Obispo Co-McChesney ,San Luis
Obispo,CA,USA,35.23705806,-120.6423931,112,"San Luis Obispo Co-McChesney San
Luis Obispo, CA Arrivals: 112"
+183,AVP,Wilkes-Barre/Scranton
Intl,Wilkes-Barre/Scranton,PA,USA,41.33814944,-75.7242675,112,"Wilkes-Barre/Scranton
Intl Wilkes-Barre/Scranton, PA Arrivals: 112"
+184,GTR,Golden Triangle Regional,Columbus-Starkville-West
Point,MS,USA,33.45033444,-88.59136861,112,"Golden Triangle Regional
Columbus-Starkville-West Point, MS Arrivals: 112"
+185,GCC,Gillette-Campbell
County,Gillette,WY,USA,44.34889806,-105.5393614,112,"Gillette-Campbell County
Gillette, WY Arrivals: 112"
+186,EWN,Craven County Regional,New
Bern,NC,USA,35.07297222,-77.04294444,112,"Craven County Regional New Bern, NC
Arrivals: 112"
+187,AGS,Bush ,Augusta,GA,USA,33.369955,-81.96449611,112,"Bush Augusta, GA
Arrivals: 112"
+188,FSM,Fort Smith Regional,Fort
Smith,AR,USA,35.33659028,-94.36744111,112,"Fort Smith Regional Fort Smith, AR
Arrivals: 112"
+189,TYR,Tyler Pounds ,Tyler,TX,USA,32.35413889,-95.40238611,110,"Tyler Pounds
Tyler, TX Arrivals: 110"
+190,HLN,Helena Regional,Helena,MT,USA,46.60681806,-111.9827503,108,"Helena
Regional Helena, MT Arrivals: 108"
+191,GTF,Great Falls Intl,Great
Falls,MT,USA,47.48200194,-111.3706853,108,"Great Falls Intl Great Falls, MT
Arrivals: 108"
+192,MEI,Key ,Meridian,MS,USA,32.33313333,-88.75120556,104,"Key Meridian, MS
Arrivals: 104"
+193,MQT,Marquette County Airport,,,USA,46.353639,-87.395361,104,
+194,TEX,Telluride
Regional,Telluride,CO,USA,37.95375861,-107.90848,104,"Telluride Regional
Telluride, CO Arrivals: 104"
+195,CHA,Lovell ,Chattanooga,TN,USA,35.03526833,-85.20378778,104,"Lovell
Chattanooga, TN Arrivals: 104"
+196,LWS,Lewiston-Nez Perce
County,Lewiston,ID,USA,46.37449806,-117.0153944,102,"Lewiston-Nez Perce County
Lewiston, ID Arrivals: 102"
+197,CDC,Cedar City Muni,Cedar City,UT,USA,37.70097028,-113.098575,96,"Cedar
City Muni Cedar City, UT Arrivals: 96"
+198,ALB,Albany Cty,Albany,NY,USA,42.74811944,-73.80297861,93,"Albany Cty
Albany, NY Arrivals: 93"
+199,BTV,Burlington
International,Burlington,VT,USA,44.47300361,-73.1503125,91,"Burlington
International Burlington, VT Arrivals: 91"
+200,FCA,Glacier Park
Intl,Kalispell,MT,USA,48.31140472,-114.2550694,90,"Glacier Park Intl Kalispell,
MT Arrivals: 90"
+201,MLB,Melbourne International
,Melbourne,FL,USA,28.10275,-80.64580556,74,"Melbourne International Melbourne,
FL Arrivals: 74"
+202,DAB,Daytona Beach International,Daytona
Beach,FL,USA,29.17991667,-81.05805556,72,"Daytona Beach International Daytona
Beach, FL Arrivals: 72"
+203,ABE,Lehigh Valley
International,Allentown,PA,USA,40.65236278,-75.44040167,60,"Lehigh Valley
International Allentown, PA Arrivals: 60"
+204,DLH,Duluth International,Duluth,MN,USA,46.84209028,-92.19364861,58,"Duluth
International Duluth, MN Arrivals: 58"
+205,CYS,Cheyenne,Cheyenne,WY,USA,41.1557225,-104.8118381,56,"Cheyenne
Cheyenne, WY Arrivals: 56"
+206,RKS,Rock Springs-Sweetwater County,Rock
Springs,WY,USA,41.5942175,-109.0651928,56,"Rock Springs-Sweetwater County Rock
Springs, WY Arrivals: 56"
+207,LWB,Greenbrier
Valley,Lewisburg,WV,USA,37.85830556,-80.39947222,56,"Greenbrier Valley
Lewisburg, WV Arrivals: 56"
+208,CRW,Yeager,Charleston,WV,USA,38.37315083,-81.59318972,56,"Yeager
Charleston, WV Arrivals: 56"
+209,BLI,Bellingham Intl,Bellingham,WA,USA,48.79275,-122.5375278,56,"Bellingham
Intl Bellingham, WA Arrivals: 56"
+210,MMH,Mammoth Yosemite,Mammoth
Lakes,CA,USA,37.62404861,-118.8377722,56,"Mammoth Yosemite Mammoth Lakes, CA
Arrivals: 56"
+211,ATW,Outagamie County
Regional,Appleton,WI,USA,44.25740806,-88.51947556,56,"Outagamie County Regional
Appleton, WI Arrivals: 56"
+212,BKG,Branson Airport,Hollister,MO,USA,36.385913,-92.548828,56,"Branson
Airport Hollister, MO Arrivals: 56"
+213,PIE,St. Petersburg-Clearwater International,St.
Petersburg,FL,USA,27.91076333,-82.68743944,52,"St. Petersburg-Clearwater
International St. Petersburg, FL Arrivals: 52"
+214,SPS,Sheppard AFB/Wichita Falls Municipal,Wichita
Falls,TX,USA,33.98879611,-98.49189333,50,"Sheppard AFB/Wichita Falls Municipal
Wichita Falls, TX Arrivals: 50"
+215,FAY,Fayetteville
Municipal,Fayetteville,NC,USA,34.99147222,-78.88,50,"Fayetteville Municipal
Fayetteville, NC Arrivals: 50"
+216,EAU,Chippewa Valley Regional,Eau
Claire,WI,USA,44.86525722,-91.48507194,48,"Chippewa Valley Regional Eau Claire,
WI Arrivals: 48"
+217,DBQ,Dubuque Municipal,Dubuque,IA,USA,42.40295944,-90.70916722,48,"Dubuque
Municipal Dubuque, IA Arrivals: 48"
+218,RST,Rochester
International,Rochester,MN,USA,43.90882639,-92.49798722,37,"Rochester
International Rochester, MN Arrivals: 37"
+219,UTM,Tunica Municipal Airport,Tunica,MS,USA,34.681499,-90.348816,32,"Tunica
Municipal Airport Tunica, MS Arrivals: 32"
+220,BIL,Billings Logan
Intl,Billings,MT,USA,45.8076625,-108.5428611,23,"Billings Logan Intl Billings,
MT Arrivals: 23"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/requirements.txt
new/cufflinks-0.15/requirements.txt
--- old/cufflinks-0.14.6/requirements.txt 2018-09-13 21:01:01.000000000
+0200
+++ new/cufflinks-0.15/requirements.txt 2019-04-02 20:37:19.000000000 +0200
@@ -5,5 +5,4 @@
colorlover>=0.2.1
setuptools>=34.4.1
ipython>=5.3.0
-nose==1.3.7
ipywidgets>=7.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/setup.py new/cufflinks-0.15/setup.py
--- old/cufflinks-0.14.6/setup.py 2018-11-08 20:55:58.000000000 +0100
+++ new/cufflinks-0.15/setup.py 2019-04-02 20:37:19.000000000 +0200
@@ -6,16 +6,23 @@
with io.open(path.join(here, 'requirements.txt'), encoding='utf-8') as f:
requires = f.read().split()
-setup(name='cufflinks',
- version='0.14.6',
- description='Productivity Tools for Plotly + Pandas',
- author='Jorge Santos',
- author_email='[email protected]',
- license='MIT',
- keywords = ['pandas', 'plotly', 'plotting'],
- url = 'https://github.com/santosjorge/cufflinks',
- packages=['cufflinks'],
- package_data={'cufflinks': ['../helper/*.json']},
- include_package_data=True,
- install_requires=requires,
- zip_safe=False)
+setup(
+ name='cufflinks',
+ version='0.15',
+ description='Productivity Tools for Plotly + Pandas',
+ author='Jorge Santos',
+ author_email='[email protected]',
+ license='MIT',
+ keywords=['pandas', 'plotly', 'plotting'],
+ url='https://github.com/santosjorge/cufflinks',
+ packages=['cufflinks'],
+ package_data={'cufflinks': ['../helper/*.json']},
+ include_package_data=True,
+ install_requires=requires,
+ classifiers=[
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 3',
+ ],
+ zip_safe=False
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cufflinks-0.14.6/tests.py new/cufflinks-0.15/tests.py
--- old/cufflinks-0.14.6/tests.py 1970-01-01 01:00:00.000000000 +0100
+++ new/cufflinks-0.15/tests.py 2019-04-02 20:37:19.000000000 +0200
@@ -0,0 +1,275 @@
+###
+# Tests require nose 1.3.x
+###
+
+
+import cufflinks as cf
+import pandas as pd
+import unittest
+from nose.tools import assert_equals
+
+##
+## nosetests -xv tests.py --with-coverage --cover-package=cufflinks
+##
+
+
+
+
+class TestIPlot(unittest.TestCase):
+ def setUp(self):
+ self.df = pd.DataFrame(dict(x=[1, 2, 3], y=[4, 2, 1], c=[3, 1,
5]))
+
+ def _iplot(self, df, **kwargs):
+ return df.iplot(asFigure=True, **kwargs)
+
+ def _ta(self, df, study, **kwargs):
+ # print(study,kwargs)
+ return df.ta_figure(study,**kwargs)
+
+ def test_scatter_matrix(self):
+ self.df.scatter_matrix(asFigure=True)
+
+def test_irregular_subplots():
+ df = cf.datagen.bubble(10, 50, mode='stocks')
+ figs = cf.figures(df, [
+ dict(kind='histogram', keys='x', color='blue'),
+ dict(kind='scatter', mode='markers', x='x', y='y', size=5),
+ dict(kind='scatter', mode='markers', x='x', y='y',
+ size=5, color='teal')],asList=True)
+ figs.append(cf.datagen.lines(1).figure(bestfit=False, colors=['blue'],
+
bestfit_colors=['pink']))
+ base_layout = cf.tools.get_base_layout(figs)
+ sp = cf.subplots(figs, shape=(3, 2), base_layout=base_layout,
+ vertical_spacing=.15,
horizontal_spacing=.03,
+ specs=[[{'rowspan': 2}, {}], [None,
{}],
+ [{'colspan': 2}, None]],
+ subplot_titles=['Histogram', 'Scatter
1',
+
'Scatter 2', 'Bestfit Line'])
+ sp['layout'].update(showlegend=False)
+ return sp
+
+
+def bar_input_argument_tests():
+ options = {
+ 'kind': ['bar', 'barh'],
+ 'barmode': ['stack', 'overlay', 'group'],
+ 'bargap': [0.1],
+ 'subplots': [True]
+ }
+
+ def bar_test(self, **kwargs):
+ self._iplot(self.df, **kwargs)
+
+ _generate_tests(TestIPlot, bar_test, 'bar', options)
+
+
+def bar_row_input_argument_tests():
+ options = {
+ 'kind': ['bar', 'barh'],
+ 'barmode': ['stack', 'overlay', 'group'],
+ 'bargap': [0.1],
+ 'subplots': [True]
+ }
+
+ def bar_row_test(self, **kwargs):
+ self._iplot(self.df.ix[1], **kwargs)
+
+ _generate_tests(TestIPlot, bar_row_test, 'bar_row', options)
+
+
+def histogram_input_argument_tests():
+ options = {
+ 'barmode': ['stack'],
+ 'bins': [20],
+ 'orientation': ['h', 'v'],
+ 'histnorm': ['probability','percent','density'],
+ 'subplots': [True],
+ 'line_color':['blue','#fa0']
+ }
+
+ def histogram_test(self, **kwargs):
+ self._iplot(self.df, kind='histogram', **kwargs)
+
+ _generate_tests(TestIPlot, histogram_test, 'histogram', options)
+
+
+def heatmap_input_argument_tests():
+ options = {}
+
+ def heatmap_test(self, **kwargs):
+ self._iplot(self.df, kind='heatmap', **kwargs)
+ df=cf.datagen.heatmap()
+ df.index=cf.pd.period_range('1/1/2016',periods=5)
+ self._iplot(df,kind='heatmap', **kwargs)
+ # df.iplot(kind='heatmap')
+
+ _generate_tests(TestIPlot, heatmap_test, 'heatmap', options)
+
+def box_input_argument_tests():
+ options = {}
+
+ def box_test(self, **kwargs):
+ self._iplot(self.df, kind='box', **kwargs)
+
+ _generate_tests(TestIPlot, box_test, 'box', options)
+
+
+def area_plot_input_argument_tests():
+ options = {
+ 'fill': [True],
+ 'opacity': [1],
+ 'kind': ['area']
+ }
+
+ def area_test(self, **kwargs):
+ self._iplot(self.df, **kwargs)
+
+ _generate_tests(TestIPlot, area_test, 'area', options)
+
+
+def scatter_plot_input_argument_tests():
+ options = {
+ 'x': ['x'],
+ 'y': ['y'],
+ 'mode': ['markers'],
+ 'symbol': ['circle-dot'],
+ 'colors': [['orange', 'teal']],
+ 'size': [10]
+ }
+
+ def scatter_test(self, **kwargs):
+ self._iplot(self.df, **kwargs)
+
+ _generate_tests(TestIPlot, scatter_test, 'scatter', options)
+
+
+def bubble_chart_argument_tests():
+ options = {
+ 'x': ['x'], 'y': ['y'], 'size': ['c']
+ }
+
+ def bubble_test(self, **kwargs):
+ self._iplot(self.df, **kwargs)
+
+ _generate_tests(TestIPlot, bubble_test, 'bubble', options)
+
+
+def subplot_input_argument_tests():
+ options = {
+ 'shape': [(3, 1)],
+ 'shared_xaxes': [True],
+ 'vertical_spacing': [0.02],
+ 'fill': [True],
+ 'subplot_titles': [True],
+ 'legend': [False]
+ }
+
+ def subplot_test(self, **kwargs):
+ self._iplot(self.df, subplots=True, **kwargs)
+
+ _generate_tests(TestIPlot, subplot_test, 'subplots', options)
+
+
+def shape_input_argument_tests():
+ df = cf.datagen.lines(3, columns=['a', 'b', 'c'])
+ options = {
+ 'hline': [
+ [2, 4],
+ [dict(y=-1, color='blue', width=3),
+ dict(y=1, color='pink', dash='dash')]],
+ 'vline': [['2015-02-10']],
+ 'hspan': [[(-1, 1), (2, 5)]],
+ 'vspan': [{
+ 'x0': '2015-02-15', 'x1': '2015-03-15',
+ 'color': 'teal', 'fill': True, 'opacity': .4}]
+ }
+
+ def shape_tests(self, **kwargs):
+ self._iplot(df, **kwargs)
+
+ _generate_tests(TestIPlot, shape_tests, 'shape', options)
+
+# colors
+
+def color_normalize_tests():
+ c=dict([(k.lower(),v.upper()) for k,v in list(cf.cnames.items())])
+ d={}
+ for k,v in list(c.items()):
+ assert_equals(v,cf.normalize(k).upper())
+ return 2
+
+# technical analysis
+
+def ta_tests():
+ df=cf.datagen.lines(1,500)
+ studies=['sma']
+ options = {
+ 'periods' : [14]
+ }
+
+ def ta_tests(self, studies, **kwargs):
+ for study in studies:
+ self._ta(df, study, **kwargs)
+
+ _generate_tests(TestIPlot, ta_tests, 'ta', options)
+
+def quant_figure_tests():
+ df=cf.datagen.ohlc()
+ qf=cf.QuantFig(df)
+ qf.add_sma()
+ qf.add_atr()
+ qf.add_bollinger_bands()
+ return qf.figure()
+
+# test generators
+
+
+def _generate_tests(test_class, test_func, test_name, options):
+ from itertools import chain, combinations, product
+
+ def powerset(iterable):
+ "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3)
(1,2,3)"
+ s = list(iterable)
+ return chain.from_iterable(combinations(s, r)
+ for r in
range(len(s) + 1))
+ key_value_tuple = {}
+ for option, values in list(options.items()):
+ key_value_tuple[option] = [(option, i) for i in values]
+
+ for option_groups in powerset(key_value_tuple.values()):
+ for input_kwargs in product(*option_groups):
+ kwargs = {i[0]: i[1] for i in input_kwargs}
+ setattr(
+ test_class,
+ 'test_{}_{}'.format(test_name, '__'.join([
+ '_'.join([str(s) for s in i])
+ for i in kwargs.items()])),
+ _generate_test(test_func, **kwargs))
+
+
+def _generate_test(test_func, **kwargs):
+ def test(self):
+ test_func(self, **kwargs)
+
+ return test
+
+
+
+bar_input_argument_tests()
+bar_row_input_argument_tests()
+histogram_input_argument_tests()
+box_input_argument_tests()
+heatmap_input_argument_tests()
+area_plot_input_argument_tests()
+scatter_plot_input_argument_tests()
+bubble_chart_argument_tests()
+subplot_input_argument_tests()
+shape_input_argument_tests()
+test_irregular_subplots()
+color_normalize_tests()
+quant_figure_tests()
+# ta_tests()
+
+
+if __name__ == '__main__':
+ unittest.main()