import os
import sys
import time
+import urllib3
+import importlib.util
from ftplib import FTP
from argparse import ArgumentParser
import zeep.cache
import zeep.transports
-__version__ = '3.1.0'
+__version__ = '3.1.1'
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.NOTSET)
+urllib3.disable_warnings()
+
def get_parser():
"""Return OptionParser for this program"""
parser = ArgumentParser()
station)
elif station['provider'] == 'python':
try:
- import importlib.util
-
spec = importlib.util.spec_from_file_location('custom_wx',
station['path'])
mod = importlib.util.module_from_spec(spec)
# 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, relative humidity, baro
+ # 0 decimal places: relative humidity, 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']:
+ 'RHUM', 'relative_humidity', 'WDIR',
+ 'wind_gust', 'SNWD', 'snow_depth']:
infoex['wx_data'][element_cd] = round(infoex['wx_data'][element_cd])
- elif element_cd in ['TOBS', 'air_temp', 'RHUM',
- 'relative_humidity', 'PRES', 'pressure']:
+ 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
def get_nrcs_data(begin, end, station):
"""get the data we're after from the NRCS WSDL"""
transport = zeep.transports.Transport(cache=zeep.cache.SqliteCache())
+ transport.session.verify = False
client = zeep.Client(wsdl=station['source'], transport=transport)
remote_data = {}
try:
observations = json['STATION'][0]['OBSERVATIONS']
- except KeyError:
- LOG.error("Unexpected JSON in MesoWest response")
+ except KeyError as exc:
+ LOG.error("Unexpected JSON in MesoWest response: '%s'", exc)
sys.exit(1)
- except ValueError:
- LOG.error("Bad JSON in MesoWest response")
+ except IndexError as exc:
+ LOG.error("Unexpected JSON in MesoWest response: '%s'", exc)
+ try:
+ LOG.error("Detailed MesoWest response: '%s'",
+ json['SUMMARY']['RESPONSE_MESSAGE'])
+ except KeyError:
+ pass
+ sys.exit(1)
+ except ValueError as exc:
+ LOG.error("Bad JSON in MesoWest response: '%s'", exc)
sys.exit(1)
pos = len(observations['date_time']) - 1