Optimize imports, indent with 4 spaces (PEP8)

This commit is contained in:
Thomas Lauf 2018-01-07 22:08:09 +01:00
parent fdd40c484a
commit 6272f1ad5d

View file

@ -25,91 +25,99 @@
# #
############################################################################### ###############################################################################
import os, sys, re, time, datetime, json, argparse import argparse
import json
import os
import re
import sys
import time
if sys.version_info >= (3,0): import datetime
if sys.version_info >= (3, 0):
from urllib.request import urlopen from urllib.request import urlopen
from urllib.error import HTTPError from urllib.error import HTTPError
else: else:
from urllib2 import urlopen, HTTPError from urllib2 import urlopen, HTTPError
def enumerate(path):
if not os.path.exists(path):
raise Exception("Directory '%s' does not exist" % path)
found = [] def enumerate(path):
for path, dirs, files in os.walk(path, topdown=True, onerror=None, followlinks=False): if not os.path.exists(path):
found.extend(map(lambda x: os.path.join(path, x), files)) raise Exception("Directory '%s' does not exist" % path)
return found
found = []
for path, dirs, files in os.walk(path, topdown=True, onerror=None, followlinks=False):
found.extend(map(lambda x: os.path.join(path, x), files))
return found
def holidata(locale, year): def holidata(locale, year):
return "http://holidata.net/%s/%d.json" % (locale, year) return "http://holidata.net/%s/%d.json" % (locale, year)
def update_locales(locales, regions, years): def update_locales(locales, regions, years):
if years == []: if not years:
years = [datetime.datetime.now().year, datetime.datetime.now().year + 1] years = [datetime.datetime.now().year, datetime.datetime.now().year + 1]
for locale in locales: for locale in locales:
with open("holidays.%s" % locale, "w") as fh: with open("holidays.%s" % locale, "w") as fh:
fh.write('# Holiday data provided by holidata.net\n') fh.write('# Holiday data provided by holidata.net\n')
fh.write('# Generated ' + time.strftime('%Y-%m-%dT%H:%M:%S') + '\n\n') fh.write('# Generated ' + time.strftime('%Y-%m-%dT%H:%M:%S') + '\n\n')
fh.write('define holidays:\n') fh.write('define holidays:\n')
fh.write(' ' + locale + ':\n') fh.write(' ' + locale + ':\n')
for year in years: for year in years:
url = holidata(locale, year) url = holidata(locale, year)
print(url) print(url)
try: try:
lines = urlopen(url).read().decode('utf-8') lines = urlopen(url).read().decode('utf-8')
for line in lines.split('\n'): for line in lines.split('\n'):
if line: if line:
j = json.loads(line) j = json.loads(line)
if j['region'] == '' or regions is None or len(regions) == 0 or j['region'] in regions: if j['region'] == '' or regions is None or len(regions) == 0 or j['region'] in regions:
day = j['date'].replace("-", "_") day = j['date'].replace("-", "_")
desc = j['description'] desc = j['description']
data = ' %s = %s\n' % (day, desc) data = ' %s = %s\n' % (day, desc)
if sys.version_info >= (3,0): if sys.version_info >= (3, 0):
fh.write(data) fh.write(data)
else: else:
fh.write(data.encode('utf-8')) fh.write(data.encode('utf-8'))
fh.write('\n') fh.write('\n')
except HTTPError as e: except HTTPError as e:
if e.code == 404: if e.code == 404:
print("holidata.net does not have data for %s, for %d." % (locale, year)) print("holidata.net does not have data for %s, for %d." % (locale, year))
else: else:
print(e.code, e.read()) print(e.code, e.read())
def main(args): def main(args):
if args.locale: if args.locale:
update_locales(args.locale, args.region, args.year) update_locales(args.locale, args.region, args.year)
else: else:
# Enumerate all holiday files in the current directory. # Enumerate all holiday files in the current directory.
locales = [] locales = []
re_holiday_file = re.compile("\/holidays.([a-z]{2}-[A-Z]{2}$)") re_holiday_file = re.compile("\/holidays.([a-z]{2}-[A-Z]{2}$)")
for file in enumerate('.'): for file in enumerate('.'):
result = re_holiday_file.search(file) result = re_holiday_file.search(file)
if result: if result:
# Extract the locale name. # Extract the locale name.
locales.append(result.group(1)) locales.append(result.group(1))
update_locales(locales, args.region, args.year) update_locales(locales, args.region, args.year)
if __name__ == "__main__": if __name__ == "__main__":
usage = """See http://holidata.net for details of supported locales and regions.""" usage = """See http://holidata.net for details of supported locales and regions."""
parser = argparse.ArgumentParser(description="Update holiday data files. Simply run 'refresh' to update all of them.") parser = argparse.ArgumentParser(
parser.add_argument('--locale', nargs='+', help='Specific locale to update.') description="Update holiday data files. Simply run 'refresh' to update all of them.")
parser.add_argument('--region', nargs='+', help='Specific locale region to update.') parser.add_argument('--locale', nargs='+', help='Specific locale to update.')
parser.add_argument('--year', nargs='+', help='Specific year to fetch.', type=int, default=[]) parser.add_argument('--region', nargs='+', help='Specific locale region to update.')
args = parser.parse_args() parser.add_argument('--year', nargs='+', help='Specific year to fetch.', type=int, default=[])
args = parser.parse_args()
try:
main(args)
except Exception as msg:
print('Error:', msg)
try:
main(args)
except Exception as msg:
print('Error:', msg)