import time
from ftplib import FTP
-from optparse import OptionParser
+from argparse import ArgumentParser
import requests
import zeep.cache
import zeep.transports
-__version__ = '2.0.1'
+__version__ = '2.2.0'
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.NOTSET)
def get_parser():
"""Return OptionParser for this program"""
- parser = OptionParser(version=__version__)
+ parser = ArgumentParser()
- parser.add_option("--config",
- dest="config",
- metavar="FILE",
- help="location of config file")
+ parser.add_argument("--version",
+ action="version",
+ version=__version__)
- parser.add_option("--log-level",
- dest="log_level",
- default=None,
- help="set the log level (debug, info, warning)")
+ parser.add_argument("--config",
+ dest="config",
+ metavar="FILE",
+ help="location of config file")
- parser.add_option("--dry-run",
- action="store_true",
- dest="dry_run",
- default=False,
- help="fetch data but don't upload to InfoEx")
+ parser.add_argument("--log-level",
+ dest="log_level",
+ default=None,
+ help="set the log level (debug, info, warning)")
+
+ parser.add_argument("--dry-run",
+ action="store_true",
+ dest="dry_run",
+ default=False,
+ help="fetch data but don't upload to InfoEx")
return parser
def main():
"""Main routine: sort through args, decide what to do, then do it"""
parser = get_parser()
- (options, args) = parser.parse_args()
+ options = parser.parse_args()
config = configparser.ConfigParser(allow_no_value=False)
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.
if provider == 'nrcs':
iemap['PREC'] = 'precipitationGauge'
iemap['TOBS'] = 'tempPres'
+ iemap['TMAX'] = 'tempMaxHour'
+ iemap['TMIN'] = 'tempMinHour'
iemap['SNWD'] = 'hS'
iemap['PRES'] = 'baro'
iemap['RHUM'] = 'rH'
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'