Fix pylint(1) issue
[infoex-autowx.git] / infoex-autowx.py
index 79e0fd3064a41d477811a4c5311b9977d9aefca9..d6e199a87954a1a261346d97085a5727f31400ec 100755 (executable)
@@ -39,7 +39,7 @@ import zeep
 import zeep.cache
 import zeep.transports
 
-__version__ = '2.0.1'
+__version__ = '2.2.0'
 
 LOG = logging.getLogger(__name__)
 LOG.setLevel(logging.NOTSET)
@@ -114,7 +114,7 @@ def setup_config(config):
 
     except KeyError as err:
         LOG.critical("%s not defined in configuration file", err)
-        exit(1)
+        sys.exit(1)
 
     # all sections/values present in config file, final sanity check
     try:
@@ -124,7 +124,7 @@ def setup_config(config):
                     raise ValueError
     except ValueError:
         LOG.critical("Config value '%s.%s' is empty", key, subkey)
-        exit(1)
+        sys.exit(1)
 
     return (infoex, station)
 
@@ -218,6 +218,20 @@ def main():
             LOG.warning("BAD KEY wx_data['%s']", element_cd)
             continue
 
+        # Massage precision of certain values to fit InfoEx's
+        # expectations
+        #
+        # 0 decimal places: wind speed, wind direction, wind gust, snow depth
+        # 1 decimal place:  air temp, baro
+        # Avoid transforming None values
+        if infoex['wx_data'][element_cd] is None:
+            continue
+        elif element_cd in ['wind_speed', 'WSPD', 'wind_direction',
+                            'WDIR', 'wind_gust', 'SNWD', 'snow_depth']:
+            infoex['wx_data'][element_cd] = round(infoex['wx_data'][element_cd])
+        elif element_cd in ['TOBS', 'air_temp', 'PRES', 'pressure']:
+            infoex['wx_data'][element_cd] = round(infoex['wx_data'][element_cd], 1)
+
         # CONSIDER: Casting every value to Float() -- need to investigate if
         #           any possible elementCds we may want are any other data
         #           type than float.
@@ -302,6 +316,8 @@ def setup_infoex_counterparts_mapping(provider):
     if provider == 'nrcs':
         iemap['PREC'] = 'precipitationGauge'
         iemap['TOBS'] = 'tempPres'
+        iemap['TMAX'] = 'tempMaxHour'
+        iemap['TMIN'] = 'tempMinHour'
         iemap['SNWD'] = 'hS'
         iemap['PRES'] = 'baro'
         iemap['RHUM'] = 'rH'
@@ -312,6 +328,8 @@ def setup_infoex_counterparts_mapping(provider):
     elif provider == 'mesowest':
         iemap['precip_accum'] = 'precipitationGauge'
         iemap['air_temp'] = 'tempPres'
+        iemap['air_temp_high_24_hour'] = 'tempMaxHour'
+        iemap['air_temp_low_24_hour'] = 'tempMinHour'
         iemap['snow_depth'] = 'hS'
         iemap['pressure'] = 'baro'
         iemap['relative_humidity'] = 'rH'