# -*- coding: utf-8 -*-
import random
from typing import Tuple
from datetime import datetime


def re_generator(low: int = 5, high: int = 20) -> str:
    return 'R{}'.format('E' * random.randint(low, high))


def date_from_iso(date: str) -> datetime:
    try:
        return datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%f%z')
    except ValueError:
        return datetime.strptime(date, '%Y-%m-%dT%H:%M:%S%z')


def is_int(val: str) -> bool:
    return val.isdigit() or (val.startswith('+') or val.startswith('-')) and val[1:].isdigit()


def parse_int(val: str, select: bool = True) -> Tuple[int, str]:
    try:
        val = int(val)
        if val != 0:
            if val < 1:
                order = 'DESC'
                val *= -1
            else:
                order = 'ASC'
            if select:
                val -= 1
            return val, order
    except ValueError:
        pass