"""The module contains miscellaneous helpers. It's not considered part of the public ufoLib API. """ from __future__ import absolute_import, unicode_literals import sys import warnings import functools from datetime import datetime from fontTools.misc.py23 import tounicode if hasattr(datetime, "timestamp"): # python >= 3.3 def datetimeAsTimestamp(dt): return dt.timestamp() else: from datetime import tzinfo, timedelta ZERO = timedelta(0) class UTC(tzinfo): def utcoffset(self, dt): return ZERO def tzname(self, dt): return "UTC" def dst(self, dt): return ZERO utc = UTC() EPOCH = datetime.fromtimestamp(0, tz=utc) def datetimeAsTimestamp(dt): return (dt - EPOCH).total_seconds() # TODO: should import from fontTools.misc.py23 try: long = long except NameError: long = int integerTypes = (int, long) numberTypes = (int, float, long) def deprecated(msg=""): """Decorator factory to mark functions as deprecated with given message. >>> @deprecated("Enough!") ... def some_function(): ... "I just print 'hello world'." ... print("hello world") >>> some_function() hello world >>> some_function.__doc__ == "I just print 'hello world'." True """ def deprecated_decorator(func): @functools.wraps(func) def wrapper(*args, **kwargs): warnings.warn( "{} function is a deprecated. {}".format(func.__name__, msg), category=DeprecationWarning, stacklevel=2, ) return func(*args, **kwargs) return wrapper return deprecated_decorator def fsdecode(path, encoding=sys.getfilesystemencoding()): return tounicode(path, encoding=encoding) if __name__ == "__main__": import doctest doctest.testmod()