Hello community, here is the log from the commit of package python-cufflinks for openSUSE:Factory checked in at 2019-11-20 10:29:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-cufflinks (Old) and /work/SRC/openSUSE:Factory/.python-cufflinks.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cufflinks" Wed Nov 20 10:29:20 2019 rev:4 rq:749775 version:0.17.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-cufflinks/python-cufflinks.changes 2019-07-23 22:37:29.278970013 +0200 +++ /work/SRC/openSUSE:Factory/.python-cufflinks.new.26869/python-cufflinks.changes 2019-11-20 10:29:31.318589601 +0100 @@ -1,0 +2,17 @@ +Tue Nov 19 21:21:37 UTC 2019 - Todd R <toddrme2...@gmail.com> + +- Update to version 0.17 + * Add support for hovertext in annotations + * Add support for opacity in annotations + * Compatiblity with Plotly 4.x + * Fix misc. issues for plotly v4. + * Removed bestfit test + * Update requirements.txt + * Update tests.py + * fix bestfit case when index is datetimeindex + * fix imports and warnings with plotly v4 + * plotly 4.0.0 had a bad bug + * re-enable bestfit test + * remove statsmodels from reqs + +------------------------------------------------------------------- Old: ---- cufflinks-0.16.tar.gz New: ---- cufflinks-0.17.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-cufflinks.spec ++++++ --- /var/tmp/diff_new_pack.3giE1T/_old 2019-11-20 10:29:31.962589729 +0100 +++ /var/tmp/diff_new_pack.3giE1T/_new 2019-11-20 10:29:31.962589729 +0100 @@ -18,11 +18,10 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-cufflinks -Version: 0.16 +Version: 0.17.0 Release: 0 Summary: Productivity Tools for Plotly + Pandas License: MIT -Group: Development/Languages/Python URL: https://github.com/santosjorge/cufflinks Source: https://files.pythonhosted.org/packages/source/c/cufflinks/cufflinks-%{version}.tar.gz BuildRequires: %{python_module setuptools} ++++++ cufflinks-0.16.tar.gz -> cufflinks-0.17.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/PKG-INFO new/cufflinks-0.17.0/PKG-INFO --- old/cufflinks-0.16/PKG-INFO 2019-06-28 18:24:25.000000000 +0200 +++ new/cufflinks-0.17.0/PKG-INFO 2019-10-24 00:20:56.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: cufflinks -Version: 0.16 +Version: 0.17.0 Summary: Productivity Tools for Plotly + Pandas Home-page: https://github.com/santosjorge/cufflinks Author: Jorge Santos diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/README.md new/cufflinks-0.17.0/README.md --- old/cufflinks-0.16/README.md 2018-09-09 23:33:15.000000000 +0200 +++ new/cufflinks-0.17.0/README.md 2019-10-24 00:19:37.000000000 +0200 @@ -19,6 +19,10 @@ ### Release Notes +### v0.17.0 +Support for Plotly 4.x +Cufflinks is no longer compatible with Plotly 3.x + ### v0.14.0 Support for Plotly 3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/__init__.py new/cufflinks-0.17.0/cufflinks/__init__.py --- old/cufflinks-0.16/cufflinks/__init__.py 2019-04-02 20:27:11.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks/__init__.py 2019-10-23 23:54:50.000000000 +0200 @@ -20,7 +20,7 @@ from .helper import _printer as help from .plotlytools import * from plotly.graph_objs import * -from plotly.plotly import plot +from chart_studio.plotly import plot from .colors import cnames, get_colorscale from .utils import pp from .tools import subplots,scatter_matrix,figures,getLayout,getThemes,getTheme diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/pandastools.py new/cufflinks-0.17.0/cufflinks/pandastools.py --- old/cufflinks-0.16/cufflinks/pandastools.py 2017-06-01 10:07:41.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks/pandastools.py 2019-10-23 23:54:50.000000000 +0200 @@ -63,7 +63,11 @@ "please run " \ "pip install statsmodels" ) - x=pd.Series(list(range(1,len(self)+1)),index=self.index) + if isinstance(self.index, pd.DatetimeIndex): + x=pd.Series(list(range(1,len(self)+1)),index=self.index) + else: + x=self.index.values + x=sm.add_constant(x) model=sm.OLS(self,x) fit=model.fit() @@ -72,7 +76,7 @@ # the below methods have been deprecated in Pandas # model=pd.ols(x=x,y=self,intercept=True) # best_fit=model.y_fitted - best_fit.formula='%.2f*x+%.2f' % (vals[0],vals[1]) + best_fit.formula='%.2f*x+%.2f' % (vals[1],vals[0]) return best_fit def normalize(self,asOf=None,multiplier=100): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/plotlytools.py new/cufflinks-0.17.0/cufflinks/plotlytools.py --- old/cufflinks-0.16/cufflinks/plotlytools.py 2019-06-15 15:00:08.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks/plotlytools.py 2019-10-23 23:54:50.000000000 +0200 @@ -1,5 +1,5 @@ import pandas as pd -import plotly.plotly as py +import chart_studio.plotly as py import time import copy # from plotly.graph_objs import * @@ -165,6 +165,9 @@ trace.update(name=str(trace['name'])) if bestfit: + if isinstance(df.index,pd.MultiIndex): + raise TypeError('x cannot be empty for MultiIndex dataframes') + if type(bestfit)==list: keys=bestfit d={} @@ -1401,10 +1404,9 @@ # if not figure.get('layout', None): # figure['layout'] = {} try: - filename=figure['layout']['title'] + filename=figure.layout['title']['text'] except: filename='Plotly Playground {0}'.format(time.strftime("%Y-%m-%d %H:%M:%S")) - ## Dimensions if not dimensions: dimensions=(800,500) if not auth.get_config_file()['dimensions'] else auth.get_config_file()['dimensions'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/quant_figure.py new/cufflinks-0.17.0/cufflinks/quant_figure.py --- old/cufflinks-0.16/cufflinks/quant_figure.py 2019-03-20 23:54:59.000000000 +0100 +++ new/cufflinks-0.17.0/cufflinks/quant_figure.py 2019-10-23 23:54:50.000000000 +0200 @@ -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','java') # java + self.theme['up_color']=kwargs.pop('up_color','#17BECF') # java self.theme['down_color']=kwargs.pop('down_color','grey') # self.panels initial values diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/tools.py new/cufflinks-0.17.0/cufflinks/tools.py --- old/cufflinks-0.16/cufflinks/tools.py 2019-04-29 20:21:29.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks/tools.py 2019-10-23 23:54:50.000000000 +0200 @@ -3,9 +3,9 @@ import numpy as np import pandas as pd import plotly.offline as py_offline -import plotly.plotly as py +import plotly.figure_factory as ff from plotly.graph_objs import Figure, Scatter, Line -from plotly.tools import make_subplots +from plotly.subplots import make_subplots # from plotly.graph_objs.layout import XAxis, YAxis from . import auth, ta @@ -61,6 +61,7 @@ if not theme: theme = auth.get_config_file()['theme'] + theme = theme.lower() if theme in THEMES: return updateColors(copy.deepcopy(THEMES[theme])) else: @@ -500,7 +501,7 @@ ) ) - del annotation['title'] + del annotation['title'] local_list.append(ann) elif 'x' in annotation: @@ -516,6 +517,8 @@ ax=annotation.get('ax',0), ay=annotation.get('ay',-100), textangle=annotation.get('textangle',-90), + hovertext=annotation.get('hovertext',''), + opacity=annotation.get('opacity',1), font = dict( color = annotation.get('fontcolor',annotation.get('color',kwargs.get('fontcolor'))), size = annotation.get('fontsize',annotation.get('size',kwargs.get('fontsize'))) @@ -544,6 +547,8 @@ ax=kwargs.get('ax',0), ay=kwargs.get('ay',-100), textangle=kwargs.get('textangle',-90), + hovertext=kwargs.get('hovertext', ''), + opacity=kwargs.get('opacity',1), font = dict( color = kwargs['fontcolor'], size=kwargs['fontsize'] @@ -645,7 +650,7 @@ **kwargs): """ Generates a subplot view for a set of figures - This is a wrapper for plotly.tools.make_subplots + This is a wrapper for plotly.subplots.make_subplots Parameters: ----------- @@ -772,7 +777,7 @@ break for _ in figures[i]['data']: for axe in lr: - _.update({'{0}axis'.format(axe[0]):axe}) + _.update(axe.trace_kwargs) sp['data'].append(_) # Remove extra plots for k in list(sp['layout'].keys()): @@ -946,7 +951,7 @@ c_dir=ta._ohlc_dict(df) args=[df[c_dir[_]] for _ in ohlc] args.append(df.index) - fig=py.plotly.tools.FigureFactory.create_ohlc(*args,**kwargs) + fig=ff.create_ohlc(*args,**kwargs) ohlc_bars={} ohlc_bars['data']=fig['data'] ohlc_bars['layout']=fig['layout'] @@ -967,7 +972,7 @@ c_dir=ta._ohlc_dict(df) args=[df[c_dir[_]] for _ in ohlc] args.append(df.index) - fig=py.plotly.tools.FigureFactory.create_candlestick(*args,**kwargs) + fig=ff.create_candlestick(*args,**kwargs) candle={} candle['data']=fig['data'] candle['layout']=layout diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks/version.py new/cufflinks-0.17.0/cufflinks/version.py --- old/cufflinks-0.16/cufflinks/version.py 2019-06-28 18:20:06.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks/version.py 2019-10-24 00:18:22.000000000 +0200 @@ -1 +1 @@ -__version__ = "0.16" +__version__ = "0.17.0" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks.egg-info/PKG-INFO new/cufflinks-0.17.0/cufflinks.egg-info/PKG-INFO --- old/cufflinks-0.16/cufflinks.egg-info/PKG-INFO 2019-06-28 18:24:25.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks.egg-info/PKG-INFO 2019-10-24 00:20:56.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: cufflinks -Version: 0.16 +Version: 0.17.0 Summary: Productivity Tools for Plotly + Pandas Home-page: https://github.com/santosjorge/cufflinks Author: Jorge Santos diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/cufflinks.egg-info/requires.txt new/cufflinks-0.17.0/cufflinks.egg-info/requires.txt --- old/cufflinks-0.16/cufflinks.egg-info/requires.txt 2019-06-28 18:24:25.000000000 +0200 +++ new/cufflinks-0.17.0/cufflinks.egg-info/requires.txt 2019-10-24 00:20:56.000000000 +0200 @@ -1,6 +1,7 @@ numpy>=1.9.2 pandas>=0.19.2 -plotly<4.0.0a0,>=3.0.0 +plotly>=4.1.1 +chart-studio>=1.0.0 six>=1.9.0 colorlover>=0.2.1 setuptools>=34.4.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/requirements.txt new/cufflinks-0.17.0/requirements.txt --- old/cufflinks-0.16/requirements.txt 2019-04-29 20:21:29.000000000 +0200 +++ new/cufflinks-0.17.0/requirements.txt 2019-10-23 23:54:50.000000000 +0200 @@ -1,6 +1,7 @@ numpy>=1.9.2 pandas>=0.19.2 -plotly>=3.0.0,<4.0.0a0 +plotly>=4.1.1 +chart-studio>=1.0.0 six>=1.9.0 colorlover>=0.2.1 setuptools>=34.4.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/setup.py new/cufflinks-0.17.0/setup.py --- old/cufflinks-0.16/setup.py 2019-06-28 18:21:30.000000000 +0200 +++ new/cufflinks-0.17.0/setup.py 2019-10-24 00:18:16.000000000 +0200 @@ -8,7 +8,7 @@ setup( name='cufflinks', - version='0.16', + version='0.17.0', description='Productivity Tools for Plotly + Pandas', author='Jorge Santos', author_email='santos.jo...@gmail.com', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cufflinks-0.16/tests.py new/cufflinks-0.17.0/tests.py --- old/cufflinks-0.16/tests.py 2019-04-02 20:37:19.000000000 +0200 +++ new/cufflinks-0.17.0/tests.py 2019-10-23 10:44:42.000000000 +0200 @@ -5,6 +5,7 @@ import cufflinks as cf import pandas as pd +import numpy as np import unittest from nose.tools import assert_equals @@ -221,6 +222,24 @@ qf.add_bollinger_bands() return qf.figure() +def bestfit(): + + df = cf.datagen.scatter() + df['x'] = np.random.randint(1, 20, df.shape[0]) + df['y'] = df['x'] + df = df[['x', 'y']] + + options = { + 'kind': ['scatter'], + 'bestfit': [True], + } + + def bestfit(self, **kwargs): + self._iplot(df, **kwargs) + + _generate_tests(TestIPlot, bestfit, 'bestfit', options) + + # test generators @@ -269,6 +288,7 @@ color_normalize_tests() quant_figure_tests() # ta_tests() +# bestfit() if __name__ == '__main__':