From 42d984099b1defe5c1bbf1f97b70755f7eca9413 Mon Sep 17 00:00:00 2001 From: lsetiawan Date: Wed, 10 Jan 2018 08:46:28 -0800 Subject: [PATCH 1/3] Make lowercase columns default, add option to make them same as model --- odm2api/ODM2/services/readService.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/odm2api/ODM2/services/readService.py b/odm2api/ODM2/services/readService.py index ec183d1..61edb0e 100644 --- a/odm2api/ODM2/services/readService.py +++ b/odm2api/ODM2/services/readService.py @@ -923,7 +923,7 @@ def getDataSetsResults(self, ids=None, codes=None, uuids=None, dstype=None): print('Error running Query {}'.format(e)) return None - def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None): + def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None, lowercols=True): """ Retrieve a list of datavalues associated with the given dataset info @@ -934,6 +934,8 @@ def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None): uuids (list, optional): List of Dataset UUIDs string. dstype (str, optional): Type of Dataset from `controlled vocabulary name `_. + lowercols (bool, optional): Make column names to be lowercase. + Default to True. Returns: @@ -945,7 +947,7 @@ def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None): >>> READ.getDataSetsValues(codes=['HOME', 'FIELD']) >>> READ.getDataSetsValues(uuids=['a6f114f1-5416-4606-ae10-23be32dbc202', ... '5396fdf3-ceb3-46b6-aaf9-454a37278bb4']) - >>> READ.getDataSetsValues(dstype='singleTimeSeries') + >>> READ.getDataSetsValues(dstype='singleTimeSeries', lowercols=False) """ @@ -956,7 +958,7 @@ def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None): resids.append(ds.ResultID) try: - return self.getResultValues(resultids = resids) + return self.getResultValues(resultids=resids, lowercols=lowercols) except Exception as e: print('Error running Query {}'.format(e)) return None @@ -1336,7 +1338,7 @@ def getResultDerivationEquations(self): """ return self._session.query(ResultDerivationEquations).all() - def getResultValues(self, resultids, starttime=None, endtime=None): + def getResultValues(self, resultids, starttime=None, endtime=None, lowercols=True): """ Retrieve result values associated with the given result. @@ -1345,6 +1347,8 @@ def getResultValues(self, resultids, starttime=None, endtime=None): resultids (list): List of SamplingFeatureIDs. starttime (object, optional): Start time to filter by as datetime object. endtime (object, optional): End time to filter by as datetime object. + lowercols (bool, optional): Make column names to be lowercase. + Default to True. Returns: DataFrame: Pandas dataframe of result values. @@ -1355,7 +1359,7 @@ def getResultValues(self, resultids, starttime=None, endtime=None): >>> READ.getResultValues(resultids=[100, 20, 34], starttime=datetime.today()) >>> READ.getResultValues(resultids=[1, 2, 3, 4], >>> starttime=datetime(2000, 01, 01), - >>> endtime=datetime(2003, 02, 01)) + >>> endtime=datetime(2003, 02, 01), lowercols=False) """ restype = self._session.query(Results).filter_by(ResultID=resultids[0]).first().ResultTypeCV @@ -1393,7 +1397,8 @@ def getResultValues(self, resultids, starttime=None, endtime=None): con=self._session_factory.engine, params=query.params ) - df.columns = [self._get_columns(ResultValues)[c] for c in df.columns] + if not lowercols: + df.columns = [self._get_columns(ResultValues)[c] for c in df.columns] return df except Exception as e: print('Error running Query: {}'.format(e)) From badb49843479730bb9a8e6bbe2b5b811f05cd7c3 Mon Sep 17 00:00:00 2001 From: lsetiawan Date: Tue, 16 Jan 2018 13:02:15 -0800 Subject: [PATCH 2/3] Add warning message for lowercols parameter --- odm2api/ODM2/services/readService.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/odm2api/ODM2/services/readService.py b/odm2api/ODM2/services/readService.py index 61edb0e..88a5b85 100644 --- a/odm2api/ODM2/services/readService.py +++ b/odm2api/ODM2/services/readService.py @@ -1349,6 +1349,10 @@ def getResultValues(self, resultids, starttime=None, endtime=None, lowercols=Tru endtime (object, optional): End time to filter by as datetime object. lowercols (bool, optional): Make column names to be lowercase. Default to True. + **Please start upgrading your code to rely on CamelCase column names, + In a near-future release, + the default will be changed to False, + and later the parameter may be removed**. Returns: DataFrame: Pandas dataframe of result values. @@ -1399,6 +1403,12 @@ def getResultValues(self, resultids, starttime=None, endtime=None, lowercols=Tru ) if not lowercols: df.columns = [self._get_columns(ResultValues)[c] for c in df.columns] + else: + warnings.warn( + 'In a near-future release, ' + 'the parameter \'lowercols\' default will be changed to False, ' + 'and later the parameter may be removed.', + DeprecationWarning, stacklevel=2) return df except Exception as e: print('Error running Query: {}'.format(e)) From 58a3616ea70033119791c2cade29e0adb94549d6 Mon Sep 17 00:00:00 2001 From: lsetiawan Date: Tue, 16 Jan 2018 13:12:44 -0800 Subject: [PATCH 3/3] Add warning doc in getDataSetsValues --- odm2api/ODM2/services/readService.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/odm2api/ODM2/services/readService.py b/odm2api/ODM2/services/readService.py index 6d887df..cbe8cc4 100644 --- a/odm2api/ODM2/services/readService.py +++ b/odm2api/ODM2/services/readService.py @@ -935,6 +935,10 @@ def getDataSetsValues(self, ids=None, codes=None, uuids=None, dstype=None, lower `controlled vocabulary name `_. lowercols (bool, optional): Make column names to be lowercase. Default to True. + **Please start upgrading your code to rely on CamelCase column names, + In a near-future release, + the default will be changed to False, + and later the parameter may be removed**. Returns: