| Index: third_party/twisted_8_1/twisted/python/compat.py
|
| diff --git a/third_party/twisted_8_1/twisted/python/compat.py b/third_party/twisted_8_1/twisted/python/compat.py
|
| deleted file mode 100644
|
| index f8eb5eda0e04361244058098388820d39ca871a7..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/python/compat.py
|
| +++ /dev/null
|
| @@ -1,168 +0,0 @@
|
| -# -*- test-case-name: twisted.test.test_compat -*-
|
| -#
|
| -# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -"""
|
| -Compatibility module to provide backwards compatibility for useful Python
|
| -features.
|
| -
|
| -This is mainly for use of internal Twisted code. We encourage you to use
|
| -the latest version of Python directly from your code, if possible.
|
| -"""
|
| -
|
| -import sys, string, socket, struct
|
| -
|
| -def inet_pton(af, addr):
|
| - if af == socket.AF_INET:
|
| - return socket.inet_aton(addr)
|
| - elif af == getattr(socket, 'AF_INET6', 'AF_INET6'):
|
| - if [x for x in addr if x not in string.hexdigits + ':.']:
|
| - raise ValueError("Illegal characters: %r" % (''.join(x),))
|
| -
|
| - parts = addr.split(':')
|
| - elided = parts.count('')
|
| - ipv4Component = '.' in parts[-1]
|
| -
|
| - if len(parts) > (8 - ipv4Component) or elided > 3:
|
| - raise ValueError("Syntactically invalid address")
|
| -
|
| - if elided == 3:
|
| - return '\x00' * 16
|
| -
|
| - if elided:
|
| - zeros = ['0'] * (8 - len(parts) - ipv4Component + elided)
|
| -
|
| - if addr.startswith('::'):
|
| - parts[:2] = zeros
|
| - elif addr.endswith('::'):
|
| - parts[-2:] = zeros
|
| - else:
|
| - idx = parts.index('')
|
| - parts[idx:idx+1] = zeros
|
| -
|
| - if len(parts) != 8 - ipv4Component:
|
| - raise ValueError("Syntactically invalid address")
|
| - else:
|
| - if len(parts) != (8 - ipv4Component):
|
| - raise ValueError("Syntactically invalid address")
|
| -
|
| - if ipv4Component:
|
| - if parts[-1].count('.') != 3:
|
| - raise ValueError("Syntactically invalid address")
|
| - rawipv4 = socket.inet_aton(parts[-1])
|
| - unpackedipv4 = struct.unpack('!HH', rawipv4)
|
| - parts[-1:] = [hex(x)[2:] for x in unpackedipv4]
|
| -
|
| - parts = [int(x, 16) for x in parts]
|
| - return struct.pack('!8H', *parts)
|
| - else:
|
| - raise socket.error(97, 'Address family not supported by protocol')
|
| -
|
| -def inet_ntop(af, addr):
|
| - if af == socket.AF_INET:
|
| - return socket.inet_ntoa(addr)
|
| - elif af == socket.AF_INET6:
|
| - if len(addr) != 16:
|
| - raise ValueError("address length incorrect")
|
| - parts = struct.unpack('!8H', addr)
|
| - curBase = bestBase = None
|
| - for i in range(8):
|
| - if not parts[i]:
|
| - if curBase is None:
|
| - curBase = i
|
| - curLen = 0
|
| - curLen += 1
|
| - else:
|
| - if curBase is not None:
|
| - if bestBase is None or curLen > bestLen:
|
| - bestBase = curBase
|
| - bestLen = curLen
|
| - curBase = None
|
| - if curBase is not None and (bestBase is None or curLen > bestLen):
|
| - bestBase = curBase
|
| - bestLen = curLen
|
| - parts = [hex(x)[2:] for x in parts]
|
| - if bestBase is not None:
|
| - parts[bestBase:bestBase + bestLen] = ['']
|
| - if parts[0] == '':
|
| - parts.insert(0, '')
|
| - if parts[-1] == '':
|
| - parts.insert(len(parts) - 1, '')
|
| - return ':'.join(parts)
|
| - else:
|
| - raise socket.error(97, 'Address family not supported by protocol')
|
| -
|
| -try:
|
| - socket.inet_pton(socket.AF_INET6, "::")
|
| -except (AttributeError, NameError, socket.error):
|
| - socket.inet_pton = inet_pton
|
| - socket.inet_ntop = inet_ntop
|
| - socket.AF_INET6 = 'AF_INET6'
|
| -
|
| -adict = dict
|
| -
|
| -# OpenSSL/__init__.py imports OpenSSL.tsafe. OpenSSL/tsafe.py imports
|
| -# threading. threading imports thread. All to make this stupid threadsafe
|
| -# version of its Connection class. We don't even care about threadsafe
|
| -# Connections. In the interest of not screwing over some crazy person
|
| -# calling into OpenSSL from another thread and trying to use Twisted's SSL
|
| -# support, we don't totally destroy OpenSSL.tsafe, but we will replace it
|
| -# with our own version which imports threading as late as possible.
|
| -
|
| -class tsafe(object):
|
| - class Connection:
|
| - """
|
| - OpenSSL.tsafe.Connection, defined in such a way as to not blow.
|
| - """
|
| - __module__ = 'OpenSSL.tsafe'
|
| -
|
| - def __init__(self, *args):
|
| - from OpenSSL import SSL as _ssl
|
| - self._ssl_conn = apply(_ssl.Connection, args)
|
| - from threading import _RLock
|
| - self._lock = _RLock()
|
| -
|
| - for f in ('get_context', 'pending', 'send', 'write', 'recv',
|
| - 'read', 'renegotiate', 'bind', 'listen', 'connect',
|
| - 'accept', 'setblocking', 'fileno', 'shutdown',
|
| - 'close', 'get_cipher_list', 'getpeername',
|
| - 'getsockname', 'getsockopt', 'setsockopt',
|
| - 'makefile', 'get_app_data', 'set_app_data',
|
| - 'state_string', 'sock_shutdown',
|
| - 'get_peer_certificate', 'want_read', 'want_write',
|
| - 'set_connect_state', 'set_accept_state',
|
| - 'connect_ex', 'sendall'):
|
| -
|
| - exec """def %s(self, *args):
|
| - self._lock.acquire()
|
| - try:
|
| - return apply(self._ssl_conn.%s, args)
|
| - finally:
|
| - self._lock.release()\n""" % (f, f)
|
| -sys.modules['OpenSSL.tsafe'] = tsafe
|
| -
|
| -import operator
|
| -try:
|
| - operator.attrgetter
|
| -except AttributeError:
|
| - class attrgetter(object):
|
| - def __init__(self, name):
|
| - self.name = name
|
| - def __call__(self, obj):
|
| - return getattr(obj, self.name)
|
| - operator.attrgetter = attrgetter
|
| -
|
| -
|
| -try:
|
| - set = set
|
| -except NameError:
|
| - from sets import Set as set
|
| -
|
| -
|
| -try:
|
| - frozenset = frozenset
|
| -except NameError:
|
| - from sets import ImmutableSet as frozenset
|
| -
|
|
|