flo-token-tracking/py3/lib/python3.6/site-packages/arrow/util.py

96 lines
2.5 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import
import sys
import warnings
def total_seconds(td): # pragma: no cover
return td.total_seconds()
def is_timestamp(value):
if type(value) == bool:
return False
try:
float(value)
return True
except Exception:
return False
# Python 2.7 / 3.0+ definitions for isstr function.
try: # pragma: no cover
basestring
def isstr(s):
return isinstance(s, basestring) # noqa: F821
except NameError: # pragma: no cover
def isstr(s):
return isinstance(s, str)
class list_to_iter_shim(list):
""" A temporary shim for functions that currently return a list but that will, after a
deprecation period, return an iteratator.
"""
def __init__(self, iterable=(), **kwargs):
""" Equivalent to list(iterable). warn_text will be emitted on all non-iterator operations.
"""
self._warn_text = (
kwargs.pop("warn_text", None)
or "this object will be converted to an iterator in a future release"
)
self._iter_count = 0
list.__init__(self, iterable, **kwargs)
def _warn(self):
warnings.warn(self._warn_text, DeprecationWarning)
def __iter__(self):
self._iter_count += 1
if self._iter_count > 1:
self._warn()
return list.__iter__(self)
def _wrap_method(name):
list_func = getattr(list, name)
def wrapper(self, *args, **kwargs):
self._warn()
return list_func(self, *args, **kwargs)
return wrapper
__contains__ = _wrap_method("__contains__")
__add__ = _wrap_method("__add__")
__mul__ = _wrap_method("__mul__")
__getitem__ = _wrap_method("__getitem__")
# Ideally, we would throw warnings from __len__, but list(x) calls len(x)
index = _wrap_method("index")
count = _wrap_method("count")
__setitem__ = _wrap_method("__setitem__")
__delitem__ = _wrap_method("__delitem__")
append = _wrap_method("append")
if sys.version_info.major >= 3: # pragma: no cover
clear = _wrap_method("clear")
copy = _wrap_method("copy")
extend = _wrap_method("extend")
__iadd__ = _wrap_method("__iadd__")
__imul__ = _wrap_method("__imul__")
insert = _wrap_method("insert")
pop = _wrap_method("pop")
remove = _wrap_method("remove")
reverse = _wrap_method("reverse")
sort = _wrap_method("sort")
del _wrap_method
__all__ = ["total_seconds", "is_timestamp", "isstr", "list_to_iter_shim"]