PySnooper/pysnooper/pycompat.py

33 lines
835 B
Python
Raw Normal View History

2019-04-21 13:53:18 +00:00
# Copyright 2019 Ram Rachum.
# This program is distributed under the MIT license.
'''Python 2/3 compatibilty'''
import abc
import os
if hasattr(abc, 'ABC'):
ABC = abc.ABC
else:
class ABC(object):
"""Helper class that provides a standard way to create an ABC using
inheritance.
"""
__metaclass__ = abc.ABCMeta
__slots__ = ()
2019-04-21 18:39:32 +00:00
2019-04-21 13:53:18 +00:00
if hasattr(os, 'PathLike'):
PathLike = os.PathLike
else:
class PathLike(ABC):
"""Abstract base class for implementing the file system path protocol."""
2019-04-21 18:39:32 +00:00
2019-04-21 13:53:18 +00:00
@abc.abstractmethod
def __fspath__(self):
"""Return the file system path representation of the object."""
raise NotImplementedError
2019-04-21 18:39:32 +00:00
2019-04-21 13:53:18 +00:00
@classmethod
def __subclasshook__(cls, subclass):
return hasattr(subclass, '__fspath__')