"""Contains various object definitions needed by the weather utility."""
weather_copyright = """\
-# Copyright (c) 2006-2023 Jeremy Stanley <fungi@yuggoth.org>. Permission to
+# Copyright (c) 2006-2024 Jeremy Stanley <fungi@yuggoth.org>. Permission to
# use, copy, modify, and distribute this software is granted under terms
# provided in the LICENSE file distributed with this software.
#"""
-weather_version = "2.4.3"
+weather_version = "2.4.4"
radian_to_km = 6372.795484
radian_to_mi = 3959.871528
# filter lines with both pressures in the form of "X inches (Y hPa)" or
# "X in. Hg (Y hPa)"
dual_p = re.match(
- "(.* )(\d*(\.\d+)? (inches|in\. Hg)) \((\d*(\.\d+)? hPa)\)(.*)",
+ r"(.* )(\d*(\.\d+)? (inches|in\. Hg)) \((\d*(\.\d+)? hPa)\)(.*)",
line
)
if dual_p:
elif units == "metric": line = preamble + hpa + trailer
# filter lines with both temperatures in the form of "X F (Y C)"
dual_t = re.match(
- "(.* )(-?\d*(\.\d+)? F) \((-?\d*(\.\d+)? C)\)(.*)",
+ r"(.* )(-?\d*(\.\d+)? F) \((-?\d*(\.\d+)? C)\)(.*)",
line
)
if dual_t:
# "Y kilometer(s)"
if units == "metric":
imperial_d = re.match(
- "(.* )(\d+)( mile\(s\))(.*)",
+ r"(.* )(\d+)( mile\(s\))(.*)",
line
)
if imperial_d:
# filter speeds in the form of "X MPH (Y KT)" to just "X MPH"; if metric is
# desired, convert to "Z KPH"
imperial_s = re.match(
- "(.* )(\d+)( MPH)( \(\d+ KT\))(.*)",
+ r"(.* )(\d+)( MPH)( \(\d+ KT\))(.*)",
line
)
if imperial_s:
line = preamble + str(int(round(int(mph)*1.609344))) + " KPH" + \
trailer
imperial_s = re.match(
- "(.* )(\d+)( MPH)( \(\d+ KT\))(.*)",
+ r"(.* )(\d+)( MPH)( \(\d+ KT\))(.*)",
line
)
if imperial_s:
# if imperial is desired, qualify given forcast temperatures like "X F"; if
# metric is desired, convert to "Y C"
imperial_t = re.match(
- "(.* )(High |high |Low |low )(\d+)(\.|,)(.*)",
+ r"(.* )(High |high |Low |low )(\d+)(\.|,)(.*)",
line
)
if imperial_t:
if pyversion("3"):
stations.read_string(
gzip.open(datafile).read().decode("utf-8") )
- else: stations.readfp( gzip.open(datafile) )
+ else: stations.read_file( gzip.open(datafile) )
else:
if pyversion("3"):
stations.read(datafile, encoding="utf-8")
import gzip
if pyversion("3"):
zones.read_string( gzip.open(datafile).read().decode("utf-8") )
- else: zones.readfp( gzip.open(datafile) )
+ else: zones.read_file( gzip.open(datafile) )
else:
if pyversion("3"):
zones.read(datafile, encoding="utf-8")
if pyversion("3"):
airports.read_string(
gzip.open(datafile).read().decode("utf-8") )
- else: airports.readfp( gzip.open(datafile) )
+ else: airports.read_file( gzip.open(datafile) )
else:
if pyversion("3"):
airports.read(datafile, encoding="utf-8")
if pyversion("3"):
zctas.read_string(
gzip.open(datafile).read().decode("utf-8") )
- else: zctas.readfp( gzip.open(datafile) )
+ else: zctas.read_file( gzip.open(datafile) )
else:
if pyversion("3"):
zctas.read(datafile, encoding="utf-8")
if pyversion("3"):
places.read_string(
gzip.open(datafile).read().decode("utf-8") )
- else: places.readfp( gzip.open(datafile) )
+ else: places.read_file( gzip.open(datafile) )
else:
if pyversion("3"):
places.read(datafile, encoding="utf-8")
removed = 0
changed = 0
overrides = configparser.ConfigParser()
- overrides.readfp( codecs.open(overrides_fn, "r", "utf8") )
+ overrides.read_file( codecs.open(overrides_fn, "r", "utf8") )
overrideslog = []
for section in overrides.sections():
addopt = 0