diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index 06a213b6..71032545 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -604,15 +604,18 @@ def createc2workoutdata(w): try: averagehr = int(row.df[' HRCur (bpm)'].mean()) maxhr = int(row.df[' HRCur (bpm)'].max()) - except ValueError: # pragma: no cover + except (ValueError,KeyError): # pragma: no cover averagehr = 0 maxhr = 0 # Calculate intervalstats itime, idist, itype = row.intervalstats_values() - lapnames = row.df[' lapIdx'].unique() + try: + lapnames = row.df[' lapIdx'].unique() + except KeyError: + lapnames = range(len(itime)) nrintervals = len(itime) - if len(lapnames != nrintervals): + if len(lapnames) != nrintervals: newlapnames = [] for name in lapnames: newlapnames += [name,name] diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 220de7a6..790a83f1 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -265,7 +265,7 @@ def get_latlon(id): rowdata = rdata(w.csvfilename) if rowdata.df.empty: # pragma: no cover - return [pd.Series([]), pd.Series([])] + return [pd.Series([],dtype='float'), pd.Series([],dtype='float')] try: try: @@ -276,9 +276,9 @@ def get_latlon(id): longitude = 0 * rowdata.df.loc[:, 'TimeStamp (sec)'] return [latitude, longitude] except AttributeError: # pragma: no cover - return [pd.Series([]), pd.Series([])] + return [pd.Series([],dtype='float'), pd.Series([],dtype='float')] - return [pd.Series([]), pd.Series([])] # pragma: no cover + return [pd.Series([],dtype='float'), pd.Series([],dtype='float')] # pragma: no cover def get_latlon_time(id): try: @@ -290,7 +290,7 @@ def get_latlon_time(id): rowdata = rdata(w.csvfilename) if rowdata.df.empty: # pragma: no cover - return [pd.Series([]), pd.Series([])] + return [pd.Series([],dtype='float'), pd.Series([],dtype='float')] try: try: @@ -1152,8 +1152,8 @@ def calculate_goldmedalstandard(rower,workout,recurrance=True): job = myqueue(queuelow,handle_getagegrouprecords, jsondf,distances,durations,age,rower.sex,rower.weightcategory) - wcpower = pd.Series(wcpower) - wcdurations = pd.Series(wcdurations) + wcpower = pd.Series(wcpower,dtype='float') + wcdurations = pd.Series(wcdurations,dtype='float') fitfunc = lambda pars,x: pars[0]/(1+(x/pars[2])) + pars[1]/(1+(x/pars[3])) errfunc = lambda pars,x,y: fitfunc(pars,x)-y @@ -1203,14 +1203,14 @@ def fetchcp_new(rower,workouts): if len(data) == 0: - return pd.Series(),pd.Series(),0,pd.Series(),pd.Series() + return pd.Series(dtype='float'),pd.Series(dtype='float'),0,pd.Series(dtype='float'),pd.Series(dtype='float') if len(data)>1: df = pd.concat(data,axis=0) try: df = df[df['cp'] == df.groupby(['delta'])['cp'].transform('max')] except KeyError: # pragma: no cover - return pd.Series(),pd.Series(),0,pd.Series(),pd.Series() + return pd.Series(dtype='float'),pd.Series(dtype='float'),0,pd.Series(dtype='float'),pd.Series(dtype='float') df = df.sort_values(['delta']).reset_index() @@ -1224,13 +1224,13 @@ def setcp(workout,background=False,recurrance=True): try: if strokesdf['power'].std()==0: - return pd.DataFrame(),pd.Series(),pd.Series() + return pd.DataFrame(),pd.Series(dtype='float'),pd.Series(dtype='float') except KeyError: - return pd.DataFrame(),pd.Series(),pd.Series() + return pd.DataFrame(),pd.Series(dtype='float'),pd.Series(dtype='float') if background: # pragma: no cover job = myqueue(queuelow,handle_setcp,strokesdf,filename,workout.id) - return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(),pd.Series() + return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(dtype='float'),pd.Series(dtype='float') if not strokesdf.empty: totaltime = strokesdf['time'].max() @@ -1261,7 +1261,7 @@ def setcp(workout,background=False,recurrance=True): workout.save() return df,delta,cpvalues - return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(),pd.Series() + return pd.DataFrame({'delta':[],'cp':[]}),pd.Series(dtype='float'),pd.Series(dtype='float') def update_rolling_cp(r,types,mode='water'): firstdate = datetime.date.today()-datetime.timedelta(days=r.cprange) @@ -1315,20 +1315,20 @@ def fetchcp(rower,theworkouts,table='cpdata'): # pragma: no cover avgpower2 = {} for id in theids: avgpower2[id] = 0 - return pd.Series([]),pd.Series([]),avgpower2 + return pd.Series([],dtype='float'),pd.Series([],dtype='float'),avgpower2 try: dfgrouped = df.groupby(['workoutid']) except KeyError: avgpower2 = {} - return pd.Series([]),pd.Series([]),avgpower2 + return pd.Series([],dtype='float'),pd.Series([],dtype='float'),avgpower2 try: avgpower2 = dict(dfgrouped.mean()['power'].astype(int)) except KeyError: avgpower2 = {} for id in theids: avgpower2[id] = 0 - return pd.Series([]),pd.Series([]),avgpower2 + return pd.Series([],dtype='float'),pd.Series([],dtype='float'),avgpower2 cpdf = getcpdata_sql(rower.id,table=table) @@ -1341,10 +1341,10 @@ def fetchcp(rower,theworkouts,table='cpdata'): # pragma: no cover theids, table=table) - return pd.Series([]),pd.Series([]),avgpower2 + return pd.Series([],dtype='float'),pd.Series([],dtype='float'),avgpower2 - return pd.Series([]),pd.Series([]),avgpower2 + return pd.Series([],dtype='float'),pd.Series([],dtype='float'),avgpower2 # create a new workout from manually entered data @@ -1631,7 +1631,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', else: # pragma: no cover velo2 = velo - velo3 = pd.Series(velo2) + velo3 = pd.Series(velo2,dtype='float') velo3 = velo3.replace([-np.inf, np.inf], np.nan) velo3 = velo3.fillna(method='ffill') diff --git a/rowers/dataprepnodjango.py b/rowers/dataprepnodjango.py index b49b1349..45710bf5 100644 --- a/rowers/dataprepnodjango.py +++ b/rowers/dataprepnodjango.py @@ -676,7 +676,7 @@ def update_agegroup_db(age,sex,weightcategory,wcdurations,wcpower, engine.dispose() -def updatecpdata_sql(rower_id,delta,cp,table='cpdata',distance=pd.Series([]),debug=False): +def updatecpdata_sql(rower_id,delta,cp,table='cpdata',distance=pd.Series([],dtype='float'),debug=False): deletecpdata_sql(rower_id,table=table,debug=debug) df = pd.DataFrame( { diff --git a/rowers/datautils.py b/rowers/datautils.py index 33970668..8c7727c7 100644 --- a/rowers/datautils.py +++ b/rowers/datautils.py @@ -136,7 +136,7 @@ def getlogarr(maxt): v = 0 res.append(v) - logarr = pd.Series(res) + logarr = pd.Series(res,dtype='float') logarr.drop_duplicates(keep='first',inplace=True) logarr = logarr.values @@ -197,11 +197,11 @@ def getcp_new(dfgrouped,logarr): # pragma: no cover newt,method='linear', rescale=True) - tt = pd.Series(newt) - ww = pd.Series(ww) + tt = pd.Series(newt,dtype='float') + ww = pd.Series(ww,dtype='float') - G = pd.Series(ww.cumsum()) - G = pd.concat([pd.Series([0]),G]) + G = pd.Series(ww.cumsum(),dtype='float') + G = pd.concat([pd.Series([0],dtype='float'),G]) h = np.mgrid[0:len(tt)+1:1,0:len(tt)+1:1] @@ -321,8 +321,8 @@ def getcp(dfgrouped,logarr): cpw.append(wmax) - dt = pd.Series(dt) - cpw = pd.Series(cpw) + dt = pd.Series(dt,dtype='float') + cpw = pd.Series(cpw,dtype='float') if len(dt)>2: cpvalues = griddata(dt.values, cpw.values, @@ -336,8 +336,8 @@ def getcp(dfgrouped,logarr): - delta = pd.Series(delta,name='Delta') - cpvalue = pd.Series(cpvalue,name='CP') + delta = pd.Series(delta,name='Delta',dtype='float') + cpvalue = pd.Series(cpvalue,name='CP',dtype='float') cpdf = pd.DataFrame({ @@ -410,8 +410,8 @@ def getfastest(df,thevalue,mode='distance'): dd = griddata(tt.values, dd.values,newt,method='linear',rescale=True) - tt = pd.Series(newt) - dd = pd.Series(dd) + tt = pd.Series(newt,dtype='float') + dd = pd.Series(dd,dtype='float') G = pd.concat([pd.Series([0]),dd]) T = pd.concat([pd.Series([0]),dd]) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index aebb4825..3db9885f 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -836,7 +836,7 @@ def interactive_activitychart2(workouts,startdate,enddate,stack='type',toolbar_l - callback = CustomJS(args={'links':df.link}, code=""" + callback = CustomJS(args={'links':df['link']}, code=""" var index = cb_data.source.selected['1d'].indices[0]; console.log(links); console.log(index); @@ -3387,8 +3387,8 @@ def interactive_otwcpchart(powerdf,promember=0,rowername="",r=None,cpfit='data', urls = powerdf['url'] # add world class - wcpower = pd.Series(wcpower) - wcdurations = pd.Series(wcdurations) + wcpower = pd.Series(wcpower,dtype='float') + wcdurations = pd.Series(wcdurations,dtype='float') # fitting WC data to three parameter CP model @@ -3683,8 +3683,8 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower, errfunc = lambda pars,x,y: fitfunc(pars,x)-y # p0 = [500,350,10,8000] - wcpower = pd.Series(wcpower) - wcdurations = pd.Series(wcdurations) + wcpower = pd.Series(wcpower,dtype='float') + wcdurations = pd.Series(wcdurations,dtype='float') # fitting WC data to three parameter CP model if len(wcdurations)>=4: diff --git a/rowers/runkeeperstuff.py b/rowers/runkeeperstuff.py index 2b6a247e..0f588cb4 100644 --- a/rowers/runkeeperstuff.py +++ b/rowers/runkeeperstuff.py @@ -126,16 +126,23 @@ def createrunkeeperworkoutdata(w): except: # pragma: no cover return 0 - averagehr = int(row.df[' HRCur (bpm)'].mean()) - maxhr = int(row.df[' HRCur (bpm)'].max()) + try: + averagehr = int(row.df[' HRCur (bpm)'].mean()) + maxhr = int(row.df[' HRCur (bpm)'].max()) + except KeyError: + averagehr = 0 + maxhr = 0 + duration = w.duration.hour*3600 duration += w.duration.minute*60 duration += w.duration.second duration += +1.0e-6*w.duration.microsecond - # adding diff, trying to see if this is valid - #t = row.df.ix[:,'TimeStamp (sec)'].values-10*row.df.ix[0,'TimeStamp (sec)'] - t = row.df.loc[:,'TimeStamp (sec)'].values-row.df.loc[:,'TimeStamp (sec)'].iloc[0] + try: + t = row.df.loc[:,'TimeStamp (sec)'].values-row.df.loc[:,'TimeStamp (sec)'].iloc[0] + except KeyError: # pragma: no cover + return pd.DataFrame() + t[0] = t[1] d = row.df.loc[:,'cum_dist'].values diff --git a/rowers/tests/statements.py b/rowers/tests/statements.py index 55390e9b..dd866c83 100644 --- a/rowers/tests/statements.py +++ b/rowers/tests/statements.py @@ -16,7 +16,9 @@ except NameError: import pytest import warnings -#warnings.filterwarnings("error",category=UserWarning) +#warnings.filterwarnings("error", +# category=DeprecationWarning +# ) pytestmark = pytest.mark.django_db diff --git a/rowers/tests/test_analysis.py b/rowers/tests/test_analysis.py index b79abbd4..2d880509 100644 --- a/rowers/tests/test_analysis.py +++ b/rowers/tests/test_analysis.py @@ -176,7 +176,7 @@ class PlannedSessionTests(TestCase): d1 = startdate.strftime("%Y%m%d"), d2 = enddate.strftime("%Y%m%d"), ) - self.assertEquals( + self.assertEqual( response.get('Content-Disposition'), 'attachment; filename="{name}"'.format(name=filename) ) diff --git a/rowers/tests/test_api.py b/rowers/tests/test_api.py index 151f3c06..76c5bbc6 100644 --- a/rowers/tests/test_api.py +++ b/rowers/tests/test_api.py @@ -111,7 +111,7 @@ class OwnApi(TestCase): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) - w = self.user_workouts[0] + w = self.user_workouts[1] url = reverse('strokedataform_v2',kwargs={'id':encoder.encode_hex(w.id)}) response = self.c.get(url) diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 98406c59..5a531521 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -1101,7 +1101,7 @@ def performancemanager_view(request,userid=0,mode='rower', showtests = True, ) - ids = pd.Series(ids).dropna().values + ids = pd.Series(ids,dtype='int').dropna().values bestworkouts = Workout.objects.filter(id__in=ids).order_by('-date') @@ -1411,7 +1411,7 @@ def rankings_view2(request,userid=0, p1 = res[4] message = res[5] try: - testcalc = pd.Series(res[6])*3 + testcalc = pd.Series(res[6],dtype='float')*3 except TypeError: # pragma: no cover age = 0 diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 3fbc14f9..93e7c6d7 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -60,8 +60,8 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'suit', - 'suit_rq', +# 'suit', +# 'suit_rq', 'leaflet', 'django_rq', # 'django_rq_dashboard', @@ -98,7 +98,7 @@ MIDDLEWARE = [ 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.locale.LocaleMiddleware', +# 'django.middleware.locale.LocaleMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',