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 <[email protected]>
+
+- 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='[email protected]',
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__':