hgext/fsmonitor/pywatchman/compat.py
branchstable
changeset 43385 6469c23a40a2
parent 30656 16f4b341288d
child 48875 6000f5b25c9b
equal deleted inserted replaced
43384:1edf620a37a3 43385:6469c23a40a2
    24 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    24 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    25 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    25 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    26 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    26 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    28 
    28 
    29 from __future__ import absolute_import
       
    30 from __future__ import division
       
    31 from __future__ import print_function
       
    32 # no unicode literals
    29 # no unicode literals
    33 
    30 from __future__ import absolute_import, division, print_function
    34 '''Compatibility module across Python 2 and 3.'''
       
    35 
    31 
    36 import sys
    32 import sys
    37 
    33 
       
    34 
       
    35 """Compatibility module across Python 2 and 3."""
       
    36 
       
    37 
       
    38 PYTHON2 = sys.version_info < (3, 0)
    38 PYTHON3 = sys.version_info >= (3, 0)
    39 PYTHON3 = sys.version_info >= (3, 0)
    39 
    40 
    40 # This is adapted from https://bitbucket.org/gutworth/six, and used under the
    41 # This is adapted from https://bitbucket.org/gutworth/six, and used under the
    41 # MIT license. See LICENSE for a full copyright notice.
    42 # MIT license. See LICENSE for a full copyright notice.
    42 if PYTHON3:
    43 if PYTHON3:
       
    44 
    43     def reraise(tp, value, tb=None):
    45     def reraise(tp, value, tb=None):
    44         try:
    46         try:
    45             if value is None:
    47             if value is None:
    46                 value = tp()
    48                 value = tp()
    47             if value.__traceback__ is not tb:
    49             if value.__traceback__ is not tb:
    48                 raise value.with_traceback(tb)
    50                 raise value.with_traceback(tb)
    49             raise value
    51             raise value
    50         finally:
    52         finally:
    51             value = None
    53             value = None
    52             tb = None
    54             tb = None
       
    55 
       
    56 
    53 else:
    57 else:
    54     exec('''
    58     exec(
       
    59         """
    55 def reraise(tp, value, tb=None):
    60 def reraise(tp, value, tb=None):
    56     try:
    61     try:
    57         raise tp, value, tb
    62         raise tp, value, tb
    58     finally:
    63     finally:
    59         tb = None
    64         tb = None
    60 '''.strip())
    65 """.strip()
       
    66     )
    61 
    67 
    62 if PYTHON3:
    68 if PYTHON3:
    63     UNICODE = str
    69     UNICODE = str
    64 else:
    70 else:
    65     UNICODE = unicode
    71     UNICODE = unicode  # noqa: F821 We handled versioning above