mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-22 18:39:31 +01:00
Remove fallbacks for old Python versions.
This commit is contained in:
parent
181e34baf9
commit
74f86654b1
@ -60,10 +60,7 @@ __url__ = ""
|
||||
from . import config
|
||||
from . import plugin
|
||||
|
||||
if sys.version_info >= (3, 4):
|
||||
from importlib import reload
|
||||
else:
|
||||
from imp import reload
|
||||
from importlib import reload
|
||||
# In case we're being reloaded.
|
||||
reload(config)
|
||||
reload(plugin)
|
||||
|
@ -52,10 +52,7 @@ __url__ = ""
|
||||
from . import config
|
||||
from . import plugin
|
||||
|
||||
if sys.version_info >= (3, 4):
|
||||
from importlib import reload
|
||||
else:
|
||||
from imp import reload
|
||||
from importlib import reload
|
||||
# In case we're being reloaded.
|
||||
reload(config)
|
||||
reload(plugin)
|
||||
|
@ -30,13 +30,8 @@
|
||||
###
|
||||
|
||||
import sys
|
||||
from unittest import skip
|
||||
|
||||
if sys.version_info >= (2, 7, 0):
|
||||
from unittest import skip
|
||||
else:
|
||||
# Workaround
|
||||
def skip(string):
|
||||
return lambda x:None
|
||||
from supybot.test import *
|
||||
|
||||
import supybot.conf as conf
|
||||
|
@ -52,10 +52,7 @@ __url__ = ""
|
||||
from . import config
|
||||
from . import plugin
|
||||
|
||||
if sys.version_info >= (3, 4):
|
||||
from importlib import reload
|
||||
else:
|
||||
from imp import reload
|
||||
from importlib import reload
|
||||
# In case we're being reloaded.
|
||||
reload(config)
|
||||
reload(plugin)
|
||||
|
@ -48,11 +48,6 @@ try:
|
||||
except ImportError:
|
||||
_ = lambda x: x
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise ImportError('This plugin requires Python 3. For a legacy version of this plugin that still '
|
||||
'supports Python 2, consult the python2-legacy branch at '
|
||||
'https://github.com/jlu5/SupyPlugins/tree/python2-legacy')
|
||||
|
||||
from .constants import SED_REGEX, TAG_SEEN, TAG_IS_REGEX
|
||||
|
||||
# Replace newlines and friends with things like literal "\n" (backslash and "n")
|
||||
|
@ -44,11 +44,6 @@ import atexit
|
||||
import shutil
|
||||
import signal
|
||||
|
||||
if sys.version_info < (3, 4, 0):
|
||||
sys.stderr.write('This program requires Python 3.4 or later.')
|
||||
sys.stderr.write(os.linesep)
|
||||
sys.exit(-1)
|
||||
|
||||
from io import StringIO # Import this after version check since this will fail on Python 2
|
||||
|
||||
def _termHandler(signalNumber, stackFrame):
|
||||
|
@ -46,9 +46,6 @@ def error(s):
|
||||
sys.stderr.write(os.linesep)
|
||||
sys.exit(-1)
|
||||
|
||||
if sys.version_info < (3, 4, 0):
|
||||
error('This script requires Python 3.4 or newer.')
|
||||
|
||||
import supybot.conf as conf
|
||||
from supybot.questions import *
|
||||
|
||||
@ -173,10 +170,7 @@ __url__ = ''
|
||||
|
||||
from . import config
|
||||
from . import plugin
|
||||
if sys.version_info >= (3, 4):
|
||||
from importlib import reload
|
||||
else:
|
||||
from imp import reload
|
||||
from importlib import reload
|
||||
# In case we're being reloaded.
|
||||
reload(config)
|
||||
reload(plugin)
|
||||
|
@ -223,12 +223,8 @@ if __name__ == '__main__':
|
||||
|
||||
suite = unittest.TestSuite(test.suites)
|
||||
if options.fail_fast:
|
||||
if sys.version_info < (2, 7, 0):
|
||||
print('--fail-fast is not supported on Python 2.6.')
|
||||
sys.exit(1)
|
||||
else:
|
||||
runner = unittest.TextTestRunner(verbosity=2,
|
||||
failfast=True)
|
||||
runner = unittest.TextTestRunner(verbosity=2,
|
||||
failfast=True)
|
||||
else:
|
||||
runner = unittest.TextTestRunner(verbosity=2)
|
||||
print('Testing began at %s (pid %s)' % (time.ctime(), os.getpid()))
|
||||
|
@ -42,9 +42,6 @@ def error(s):
|
||||
sys.stderr.write(os.linesep)
|
||||
sys.exit(-1)
|
||||
|
||||
if sys.version_info < (3, 4, 0):
|
||||
error('This program requires Python 3.4 or later.')
|
||||
|
||||
import supybot
|
||||
|
||||
import re
|
||||
|
3
setup.py
3
setup.py
@ -77,8 +77,7 @@ try:
|
||||
proc = subprocess.Popen('git show HEAD --format=%ct', shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
date = proc.stdout.readline()
|
||||
if sys.version_info[0] >= 3:
|
||||
date = date.decode()
|
||||
date = date.decode()
|
||||
date = int(date.strip())
|
||||
version = ".".join(str(i).zfill(2) for i in
|
||||
time.strptime(time.asctime(time.gmtime(date)))[:3])
|
||||
|
@ -325,10 +325,7 @@ class SocketDriver(drivers.IrcDriver, drivers.ServersMixin):
|
||||
self.starttls()
|
||||
|
||||
# Suppress this warning for loopback IPs.
|
||||
if sys.version_info[0] < 3:
|
||||
# Backported Python 2 ipaddress demands unicode instead of str
|
||||
address = address.decode('utf-8')
|
||||
elif (not network_config.requireStarttls()) and \
|
||||
if (not network_config.requireStarttls()) and \
|
||||
(not network_config.ssl()) and \
|
||||
(not self.currentServer.force_tls_verification):
|
||||
|
||||
|
28
src/test.py
28
src/test.py
@ -160,34 +160,6 @@ class SupyTestCase(unittest.TestCase):
|
||||
irc._reallyDie()
|
||||
teardownMockTime()
|
||||
|
||||
if sys.version_info < (2, 7, 0):
|
||||
def assertIn(self, member, container, msg=None):
|
||||
"""Just like self.assertTrue(a in b), but with a nicer default message."""
|
||||
if member not in container:
|
||||
standardMsg = '%s not found in %s' % (repr(member),
|
||||
repr(container))
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
def assertNotIn(self, member, container, msg=None):
|
||||
"""Just like self.assertTrue(a not in b), but with a nicer default message."""
|
||||
if member in container:
|
||||
standardMsg = '%s unexpectedly found in %s' % (repr(member),
|
||||
repr(container))
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
def assertIs(self, expr1, expr2, msg=None):
|
||||
"""Just like self.assertTrue(a is b), but with a nicer default message."""
|
||||
if expr1 is not expr2:
|
||||
standardMsg = '%s is not %s' % (repr(expr1),
|
||||
repr(expr2))
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
def assertIsNot(self, expr1, expr2, msg=None):
|
||||
"""Just like self.assertTrue(a is not b), but with a nicer default message."""
|
||||
if expr1 is expr2:
|
||||
standardMsg = 'unexpectedly identical: %s' % (repr(expr1),)
|
||||
self.fail(self._formatMessage(msg, standardMsg))
|
||||
|
||||
|
||||
class PluginTestCase(SupyTestCase):
|
||||
"""Subclass this to write a test case for a plugin. See
|
||||
|
@ -194,8 +194,7 @@ def safeEval(s, namespace=None):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
elif sys.version_info[0:2] >= (3, 4) and \
|
||||
node.__class__ is ast.NameConstant:
|
||||
elif node.__class__ is ast.NameConstant:
|
||||
return True
|
||||
elif sys.version_info[0:2] >= (3, 8) and \
|
||||
node.__class__ is ast.Constant:
|
||||
|
@ -310,10 +310,7 @@ def splitBytes(word, size):
|
||||
# I'm going to hell for this function
|
||||
for i in range(4): # a character takes at most 4 bytes in UTF-8
|
||||
try:
|
||||
if sys.version_info[0] >= 3:
|
||||
word[size-i:].decode()
|
||||
else:
|
||||
word[size-i:].encode('utf8')
|
||||
word[size-i:].decode()
|
||||
except UnicodeDecodeError:
|
||||
continue
|
||||
else:
|
||||
|
23
src/world.py
23
src/world.py
@ -72,29 +72,6 @@ class SupyProcess(multiprocessing.Process):
|
||||
super(SupyProcess, self).__init__(*args, **kwargs)
|
||||
log.debug('Spawning process %q.', self.name)
|
||||
|
||||
if sys.version_info[0:3] == (3, 3, 1) and hasattr(select, 'poll'):
|
||||
# http://bugs.python.org/issue17707
|
||||
import multiprocessing.connection
|
||||
def _poll(fds, timeout):
|
||||
if timeout is not None:
|
||||
timeout = int(timeout * 1000) # timeout is in milliseconds
|
||||
fd_map = {}
|
||||
pollster = select.poll()
|
||||
for fd in fds:
|
||||
pollster.register(fd, select.POLLIN)
|
||||
if hasattr(fd, 'fileno'):
|
||||
fd_map[fd.fileno()] = fd
|
||||
else:
|
||||
fd_map[fd] = fd
|
||||
ls = []
|
||||
for fd, event in pollster.poll(timeout):
|
||||
if event & select.POLLNVAL:
|
||||
raise ValueError('invalid file descriptor %i' % fd)
|
||||
ls.append(fd_map[fd])
|
||||
return ls
|
||||
multiprocessing.connection._poll = _poll
|
||||
|
||||
|
||||
commandsProcessed = 0
|
||||
|
||||
ircs = [] # A list of all the IRCs.
|
||||
|
@ -231,10 +231,7 @@ class FunctionsTestCase(SupyTestCase):
|
||||
self.assertEqual(ircutils.stripFormatting(s), '[09:21')
|
||||
|
||||
def testWrap(self):
|
||||
if sys.version_info[0] < 3:
|
||||
pred = len
|
||||
else:
|
||||
pred = lambda s:len(s.encode())
|
||||
pred = lambda s:len(s.encode())
|
||||
|
||||
s = ('foo bar baz qux ' * 100)[0:-1]
|
||||
|
||||
@ -246,13 +243,7 @@ class FunctionsTestCase(SupyTestCase):
|
||||
self.assertTrue(max(map(pred, r)) <= 100)
|
||||
self.assertEqual(''.join(r), s)
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
uchr = unichr
|
||||
u = lambda s: s.decode('utf8')
|
||||
else:
|
||||
uchr = chr
|
||||
u = lambda x: x
|
||||
s = (u('').join([uchr(0x1f527), uchr(0x1f527), uchr(0x1f527), u(' ')]) * 100)\
|
||||
s = (''.join([chr(0x1f527), chr(0x1f527), chr(0x1f527), ' ']) * 100)\
|
||||
[0:-1]
|
||||
|
||||
r = ircutils.wrap(s, 20)
|
||||
@ -283,7 +274,7 @@ class FunctionsTestCase(SupyTestCase):
|
||||
self.assertTrue(max(map(pred, r)) <= 100)
|
||||
self.assertEqual(''.join(r), s)
|
||||
|
||||
s = uchr(233)*500
|
||||
s = chr(233)*500
|
||||
r = ircutils.wrap(s, 500)
|
||||
self.assertTrue(max(map(pred, r)) <= 500)
|
||||
r = ircutils.wrap(s, 139)
|
||||
|
@ -39,9 +39,6 @@ import supybot.utils as utils
|
||||
from supybot.utils.structures import *
|
||||
import supybot.utils.minisix as minisix
|
||||
|
||||
if sys.version_info[0] >= 0:
|
||||
xrange = range
|
||||
|
||||
class UtilsTest(SupyTestCase):
|
||||
def testReversed(self):
|
||||
L = list(range(10))
|
||||
@ -54,7 +51,7 @@ class UtilsTest(SupyTestCase):
|
||||
|
||||
class SeqTest(SupyTestCase):
|
||||
def testRenumerate(self):
|
||||
for i in xrange(5):
|
||||
for i in range(5):
|
||||
L = list(enumerate(range(i)))
|
||||
LL = list(utils.seq.renumerate(range(i)))
|
||||
self.assertEqual(L, LL[::-1])
|
||||
@ -423,7 +420,7 @@ class IterTest(SupyTestCase):
|
||||
L = [1, 2]
|
||||
seenList = set()
|
||||
seenIterable = set()
|
||||
for n in xrange(300):
|
||||
for n in range(300):
|
||||
# 2**266 > 10**80, the number of atoms in the known universe.
|
||||
# (ignoring dark matter, but that likely doesn't exist in atoms
|
||||
# anyway, so it shouldn't have a significant impact on that #)
|
||||
@ -748,13 +745,13 @@ class QueueTest(SupyTestCase):
|
||||
q = queue()
|
||||
n = 10
|
||||
self.assertRaises(IndexError, q.__getitem__, 0)
|
||||
for i in xrange(n):
|
||||
for i in range(n):
|
||||
q.enqueue(i)
|
||||
for i in xrange(n):
|
||||
for i in range(n):
|
||||
self.assertEqual(q[i], i)
|
||||
for i in xrange(n, 0, -1):
|
||||
for i in range(n, 0, -1):
|
||||
self.assertEqual(q[-i], n-i)
|
||||
for i in xrange(len(q)):
|
||||
for i in range(len(q)):
|
||||
self.assertEqual(list(q), list(q[:i]) + list(q[i:]))
|
||||
self.assertRaises(IndexError, q.__getitem__, -(n+1))
|
||||
self.assertRaises(IndexError, q.__getitem__, n)
|
||||
@ -763,7 +760,7 @@ class QueueTest(SupyTestCase):
|
||||
def testSetitem(self):
|
||||
q1 = queue()
|
||||
self.assertRaises(IndexError, q1.__setitem__, 0, 0)
|
||||
for i in xrange(10):
|
||||
for i in range(10):
|
||||
q1.enqueue(i)
|
||||
q2 = eval(repr(q1))
|
||||
for (i, elt) in enumerate(q2):
|
||||
@ -913,13 +910,13 @@ class SmallQueueTest(SupyTestCase):
|
||||
q = queue()
|
||||
n = 10
|
||||
self.assertRaises(IndexError, q.__getitem__, 0)
|
||||
for i in xrange(n):
|
||||
for i in range(n):
|
||||
q.enqueue(i)
|
||||
for i in xrange(n):
|
||||
for i in range(n):
|
||||
self.assertEqual(q[i], i)
|
||||
for i in xrange(n, 0, -1):
|
||||
for i in range(n, 0, -1):
|
||||
self.assertEqual(q[-i], n-i)
|
||||
for i in xrange(len(q)):
|
||||
for i in range(len(q)):
|
||||
self.assertEqual(list(q), list(q[:i]) + list(q[i:]))
|
||||
self.assertRaises(IndexError, q.__getitem__, -(n+1))
|
||||
self.assertRaises(IndexError, q.__getitem__, n)
|
||||
@ -928,7 +925,7 @@ class SmallQueueTest(SupyTestCase):
|
||||
def testSetitem(self):
|
||||
q1 = queue()
|
||||
self.assertRaises(IndexError, q1.__setitem__, 0, 0)
|
||||
for i in xrange(10):
|
||||
for i in range(10):
|
||||
q1.enqueue(i)
|
||||
q2 = eval(repr(q1))
|
||||
for (i, elt) in enumerate(q2):
|
||||
@ -1161,7 +1158,7 @@ class TestCacheDict(SupyTestCase):
|
||||
def testMaxNeverExceeded(self):
|
||||
max = 10
|
||||
d = CacheDict(10)
|
||||
for i in xrange(max**2):
|
||||
for i in range(max**2):
|
||||
d[i] = i
|
||||
self.assertTrue(len(d) <= max)
|
||||
self.assertTrue(i in d)
|
||||
|
@ -33,11 +33,6 @@ import unittest
|
||||
from supybot import questions
|
||||
from supybot.test import SupyTestCase
|
||||
|
||||
if sys.version_info >= (2, 7, 0):
|
||||
skipif = unittest.skipIf
|
||||
else:
|
||||
skipif = lambda x, y: lambda z:None
|
||||
|
||||
try:
|
||||
from unittest import mock # Python 3.3+
|
||||
except ImportError:
|
||||
@ -53,7 +48,7 @@ except ImportError:
|
||||
# better solution is usage of '==' operator ;)
|
||||
_yes_answer = ''.join(['', 'y'])
|
||||
|
||||
@skipif(mock is None, 'python-mock is not installed.')
|
||||
@unittest.skipIf(mock is None, 'python-mock is not installed.')
|
||||
class TestYn(SupyTestCase):
|
||||
def test_default_yes_selected(self):
|
||||
questions.expect = mock.Mock(return_value=_yes_answer)
|
||||
|
Loading…
Reference in New Issue
Block a user