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()


Reply via email to