parse args

This commit is contained in:
Daniel Tsvetkov 2020-02-12 16:59:24 +01:00
parent aaca101d1f
commit ba1090a91d
2 changed files with 25 additions and 42 deletions

View File

@ -1,6 +1,7 @@
import argparse
import json
import locale
import logging
import re
from datetime import datetime
@ -241,7 +242,7 @@ def resolve_query_type(query):
solutions = tokenize(query)
if not solutions:
dt = get_local_now()
return [["now", dt, QUERY_TYPE_DT, h_default]]
return [["now", dt, QUERY_TYPE_DT, h_default_dt]]
return solutions
@ -304,14 +305,25 @@ def test():
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('query', nargs='*', default="now", help="freeform")
parser.add_argument('query', nargs='*', default="", help="freeform")
parser.add_argument('--locale', dest='locale')
parser.add_argument('--handlers', dest='handlers', action='store_true')
parser.add_argument('--full', dest='full', action='store_true')
parser.add_argument('--debug', dest='debug', action='store_true')
args = parser.parse_args()
return args
logging.basicConfig()
logger = logging.getLogger()
def setup_logging_level(debug=False):
log_level = logging.DEBUG if debug else logging.ERROR
logger.setLevel(log_level)
logger.debug("Debugging enabled")
def main(args):
global custom_locale
custom_locale = resolve_locale(args.locale)
@ -325,4 +337,5 @@ def main(args):
if __name__ == "__main__":
args = parse_args()
setup_logging_level(args.debug)
main(args)

View File

@ -3,26 +3,31 @@
Find time now, in the past or future in any timezone or location.
"""
import argparse
import csv
import datetime
import logging
import os
import pathlib
import random
import re
import string
from collections import defaultdict
from datetime import datetime, timedelta
from heapq import heappush, heappop
import dateparser
from datetime import datetime, timedelta
import pytz
from dateparser import parse as parse_dt
from dateparser.timezone_parser import StaticTzInfo
from datetimerange import DateTimeRange
from dateutil.parser import parse as dutil_parse
from dateparser.timezone_parser import StaticTzInfo
from dateutil.tz import gettz, tzlocal
from fuzzywuzzy import fuzz
from geopy import Nominatim
from geopy.exc import GeocoderTimedOut
from pytz import timezone
from pytz.exceptions import UnknownTimeZoneError
from timezonefinder import TimezoneFinder
from word2number import w2n
FUZZ_THRESHOLD = 70
ISO_FORMAT = '%Y-%m-%dT%H:%M:%S%z'
@ -30,25 +35,6 @@ DEFAULT_FORMAT = '%Y-%m-%d %H:%M:%S%z'
basepath = os.path.dirname(os.path.abspath(__file__))
logging.basicConfig()
logger = logging.getLogger()
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('query', nargs='*', default="now", help="<datetime-like> to <timezone-like or location string>")
parser.add_argument('--format', dest='format', default=DEFAULT_FORMAT)
parser.add_argument('--iso', dest='iso', action='store_true')
parser.add_argument('--debug', dest='debug', action='store_true')
args = parser.parse_args()
return args
def setup_logging_level(debug=False):
log_level = logging.DEBUG if debug else logging.ERROR
logger.setLevel(log_level)
logger.debug("Debugging enabled")
class Location:
"""
@ -72,7 +58,6 @@ def normalize_words_to_number(query):
Converts queries like "in one hour" -> "in 1 hour"
Assumes one-word numbers used
"""
from word2number import w2n
normal_list = []
@ -128,7 +113,6 @@ def create_if_not_exists(fname):
try:
fh = open(fname, 'r')
except FileNotFoundError:
import pathlib
path = pathlib.Path(fname)
path.parent.mkdir(parents=True, exist_ok=True)
@ -157,8 +141,6 @@ def resolve_location_local(query):
"""
Find a location by searching in local db of countries and cities
"""
from heapq import heappush, heappop
query = query.lower()
create_if_not_exists(os.path.join(basepath, "data", ".cache.csv"))
@ -192,12 +174,6 @@ def resolve_location_local(query):
def resolve_location_remote(query):
import random
import string
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut
user_agent = ''.join(random.choices(string.ascii_uppercase + string.digits, k=20))
geolocator = Nominatim(user_agent=user_agent)
try:
@ -294,7 +270,6 @@ def resolve_timezone(query):
try:
pytz_result = timezone(normal_tz)
except UnknownTimeZoneError:
from timezonefinder import TimezoneFinder
logger.debug("No timezone: {}".format(normal_tz))
# if the human_tz_loc contains /, assume it's a timezone
# the timezone could still be guessed badly, attempt to get the city
@ -455,11 +430,6 @@ def time_ago(date=None, diff=None):
hours, minutes, seconds))
def query_to_dt(query):
human_dt, human_tz_loc = parse_query(query)
return solve_query(human_dt, human_tz_loc)
def tzinfo_from_offset(offset: str) -> pytz.timezone:
if ':' in offset:
offset = ''.join(offset.split(':'))