diff --git a/platformio/commands/account.py b/platformio/commands/account.py index 0282767e..48b26717 100644 --- a/platformio/commands/account.py +++ b/platformio/commands/account.py @@ -14,13 +14,13 @@ # pylint: disable=unused-argument -import datetime import json import re import click from tabulate import tabulate +from platformio import util from platformio.clients.account import AccountClient, AccountNotAuthorized @@ -244,12 +244,9 @@ def print_packages(packages): data = [] expire = "-" if "subscription" in package: - expire = datetime.datetime.strptime( - ( - package["subscription"].get("end_at") - or package["subscription"].get("next_bill_at") - ), - "%Y-%m-%dT%H:%M:%SZ", + expire = util.parse_datetime( + package["subscription"].get("end_at") + or package["subscription"].get("next_bill_at") ).strftime("%Y-%m-%d") data.append(("Expire:", expire)) services = [] @@ -274,21 +271,17 @@ def print_subscriptions(subscriptions): click.secho(subscription.get("product_name"), bold=True) click.echo("-" * len(subscription.get("product_name"))) data = [("State:", subscription.get("status"))] - begin_at = datetime.datetime.strptime( - subscription.get("begin_at"), "%Y-%m-%dT%H:%M:%SZ" - ).strftime("%Y-%m-%d %H:%M:%S") + begin_at = util.parse_datetime(subscription.get("begin_at")).strftime("%c") data.append(("Start date:", begin_at or "-")) end_at = subscription.get("end_at") if end_at: - end_at = datetime.datetime.strptime( - subscription.get("end_at"), "%Y-%m-%dT%H:%M:%SZ" - ).strftime("%Y-%m-%d %H:%M:%S") + end_at = util.parse_datetime(subscription.get("end_at")).strftime("%c") data.append(("End date:", end_at or "-")) next_bill_at = subscription.get("next_bill_at") if next_bill_at: - next_bill_at = datetime.datetime.strptime( - subscription.get("next_bill_at"), "%Y-%m-%dT%H:%M:%SZ" - ).strftime("%Y-%m-%d %H:%M:%S") + next_bill_at = util.parse_datetime( + subscription.get("next_bill_at") + ).strftime("%c") data.append(("Next payment:", next_bill_at or "-")) data.append( ("Edit:", click.style(subscription.get("update_url"), fg="blue") or "-") diff --git a/platformio/commands/lib/command.py b/platformio/commands/lib/command.py index 008da408..be4fbcf6 100644 --- a/platformio/commands/lib/command.py +++ b/platformio/commands/lib/command.py @@ -462,7 +462,7 @@ def lib_show(library, json_output): "Version: %s, released %s" % ( lib["version"]["name"], - time.strftime("%c", util.parse_date(lib["version"]["released"])), + util.parse_datetime(lib["version"]["released"]).strftime("%c"), ) ) click.echo("Manifest: %s" % lib["confurl"]) @@ -504,7 +504,7 @@ def lib_show(library, json_output): "Versions", [ "%s, released %s" - % (v["name"], time.strftime("%c", util.parse_date(v["released"]))) + % (v["name"], util.parse_datetime(v["released"]).strftime("%c")) for v in lib["versions"] ], ) @@ -551,7 +551,7 @@ def lib_stats(json_output): tabular_data = [ ( click.style(item["name"], fg="cyan"), - time.strftime("%c", util.parse_date(item["date"])), + util.parse_datetime(item["date"]).strftime("%c"), "https://platformio.org/lib/show/%s/%s" % (item["id"], quote(item["name"])), ) diff --git a/platformio/util.py b/platformio/util.py index 90bce628..48b89229 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -14,6 +14,7 @@ from __future__ import absolute_import +import functools import json import math import os @@ -21,7 +22,7 @@ import platform import re import shutil import time -from functools import wraps +from datetime import datetime from glob import glob import click @@ -44,7 +45,7 @@ class memoized(object): self.cache = {} def __call__(self, func): - @wraps(func) + @functools.wraps(func) def wrapper(*args, **kwargs): key = str(args) + str(kwargs) if key not in self.cache or ( @@ -66,7 +67,7 @@ class throttle(object): self.last = 0 def __call__(self, func): - @wraps(func) + @functools.wraps(func) def wrapper(*args, **kwargs): diff = int(round((time.time() - self.last) * 1000)) if diff < self.threshhold: @@ -252,10 +253,10 @@ def items_in_list(needle, haystack): return set(needle) & set(haystack) -def parse_date(datestr): +def parse_datetime(datestr): if "T" in datestr and "Z" in datestr: - return time.strptime(datestr, "%Y-%m-%dT%H:%M:%SZ") - return time.strptime(datestr) + return datetime.strptime(datestr, "%Y-%m-%dT%H:%M:%SZ") + return datetime.strptime(datestr) def merge_dicts(d1, d2, path=None):