# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2012 The Python Software Foundation.
|
|
# See LICENSE.txt and CONTRIBUTORS.txt.
|
|
#
|
|
"""Backports for individual classes and functions."""
|
|
|
|
import os
|
|
import sys
|
|
|
|
__all__ = ['cache_from_source', 'callable', 'fsencode']
|
|
|
|
|
|
try:
|
|
from imp import cache_from_source
|
|
except ImportError:
|
|
def cache_from_source(py_file, debug=__debug__):
|
|
ext = debug and 'c' or 'o'
|
|
return py_file + ext
|
|
|
|
|
|
try:
|
|
callable = callable
|
|
except NameError:
|
|
from collections import Callable
|
|
|
|
def callable(obj):
|
|
return isinstance(obj, Callable)
|
|
|
|
|
|
try:
|
|
fsencode = os.fsencode
|
|
except AttributeError:
|
|
def fsencode(filename):
|
|
if isinstance(filename, bytes):
|
|
return filename
|
|
elif isinstance(filename, str):
|
|
return filename.encode(sys.getfilesystemencoding())
|
|
else:
|
|
raise TypeError("expect bytes or str, not %s" %
|
|
type(filename).__name__)
|