Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit