Author: Armin Rigo <[email protected]>
Branch: release-2.2.x
Changeset: r67977:3e1a49627e13
Date: 2013-11-12 14:17 +0100
http://bitbucket.org/pypy/pypy/changeset/3e1a49627e13/
Log: Python 2.6 compatibility
diff --git a/rpython/annotator/bookkeeper.py b/rpython/annotator/bookkeeper.py
--- a/rpython/annotator/bookkeeper.py
+++ b/rpython/annotator/bookkeeper.py
@@ -5,7 +5,6 @@
from __future__ import absolute_import
import sys, types, inspect, weakref
-from collections import OrderedDict
from rpython.flowspace.model import Constant
from rpython.annotator.model import (SomeOrderedDict,
@@ -371,7 +370,7 @@
for e in x:
listdef.generalize(self.immutablevalue(e, False))
result = SomeList(listdef)
- elif tp is dict or tp is r_dict or tp is OrderedDict:
+ elif tp is dict or tp is r_dict or tp is SomeOrderedDict.knowntype:
if need_const:
key = Constant(x)
try:
@@ -413,7 +412,7 @@
dictdef.generalize_key(self.immutablevalue(ek, False))
dictdef.generalize_value(self.immutablevalue(ev, False))
dictdef.seen_prebuilt_key(ek)
- if tp is OrderedDict:
+ if tp is SomeOrderedDict.knowntype:
result = SomeOrderedDict(dictdef)
else:
result = SomeDict(dictdef)
diff --git a/rpython/annotator/builtin.py b/rpython/annotator/builtin.py
--- a/rpython/annotator/builtin.py
+++ b/rpython/annotator/builtin.py
@@ -2,7 +2,6 @@
Built-in functions.
"""
import sys
-from collections import OrderedDict
from rpython.annotator.model import (
SomeInteger, SomeObject, SomeChar, SomeBool, SomeString, SomeTuple, s_Bool,
@@ -364,7 +363,7 @@
BUILTIN_ANALYZERS[rpython.rlib.objectmodel.instantiate] = robjmodel_instantiate
BUILTIN_ANALYZERS[rpython.rlib.objectmodel.r_dict] = robjmodel_r_dict
BUILTIN_ANALYZERS[rpython.rlib.objectmodel.r_ordereddict] =
robjmodel_r_ordereddict
-BUILTIN_ANALYZERS[OrderedDict] = lambda :
SomeOrderedDict(getbookkeeper().getdictdef())
+BUILTIN_ANALYZERS[SomeOrderedDict.knowntype] = lambda :
SomeOrderedDict(getbookkeeper().getdictdef())
BUILTIN_ANALYZERS[rpython.rlib.objectmodel.hlinvoke] = robjmodel_hlinvoke
BUILTIN_ANALYZERS[rpython.rlib.objectmodel.keepalive_until_here] =
robjmodel_keepalive_until_here
BUILTIN_ANALYZERS[rpython.rtyper.lltypesystem.llmemory.cast_ptr_to_adr] =
llmemory_cast_ptr_to_adr
diff --git a/rpython/annotator/model.py b/rpython/annotator/model.py
--- a/rpython/annotator/model.py
+++ b/rpython/annotator/model.py
@@ -32,7 +32,6 @@
import inspect
import weakref
from types import BuiltinFunctionType, MethodType
-from collections import OrderedDict
import rpython
from rpython.tool import descriptor
@@ -357,7 +356,11 @@
return '{...%s...}' % (len(const),)
class SomeOrderedDict(SomeDict):
- knowntype = OrderedDict
+ try:
+ from collections import OrderedDict as knowntype
+ except ImportError: # Python 2.6
+ class PseudoOrderedDict(dict): pass
+ knowntype = PseudoOrderedDict
def method_copy(dct):
return SomeOrderedDict(dct.dictdef)
diff --git a/rpython/rtyper/rbuiltin.py b/rpython/rtyper/rbuiltin.py
--- a/rpython/rtyper/rbuiltin.py
+++ b/rpython/rtyper/rbuiltin.py
@@ -1,4 +1,3 @@
-from collections import OrderedDict
from rpython.annotator import model as annmodel
from rpython.flowspace.model import Constant
@@ -750,7 +749,7 @@
BUILTIN_TYPER[isinstance] = rtype_builtin_isinstance
BUILTIN_TYPER[hasattr] = rtype_builtin_hasattr
BUILTIN_TYPER[objectmodel.r_dict] = rtype_r_dict
-BUILTIN_TYPER[OrderedDict] = rtype_ordered_dict
+BUILTIN_TYPER[annmodel.SomeOrderedDict.knowntype] = rtype_ordered_dict
BUILTIN_TYPER[objectmodel.r_ordereddict] = rtype_ordered_dict
# _________________________________________________________________
diff --git a/rpython/rtyper/test/test_rordereddict.py
b/rpython/rtyper/test/test_rordereddict.py
--- a/rpython/rtyper/test/test_rordereddict.py
+++ b/rpython/rtyper/test/test_rordereddict.py
@@ -1,6 +1,9 @@
import py
-from collections import OrderedDict
+try:
+ from collections import OrderedDict
+except ImportError: # Python 2.6
+ py.test.skip("requires collections.OrderedDict")
from rpython.rtyper.lltypesystem import lltype, rffi
from rpython.rtyper.lltypesystem import rordereddict, rstr
from rpython.rlib.rarithmetic import intmask
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit