diff --git a/rply/lexergenerator.py b/rply/lexergenerator.py index 62d0bb9..d806a37 100644 --- a/rply/lexergenerator.py +++ b/rply/lexergenerator.py @@ -1,7 +1,17 @@ import re +from rply.lexer import Lexer + try: import rpython + from rpython.rlib.objectmodel import we_are_translated +except ImportError: + rpython = None + + def we_are_translated(): + return False + +if we_are_translated(): from rpython.annotator import model from rpython.annotator.bookkeeper import getbookkeeper from rpython.rlib.objectmodel import instantiate, hlinvoke @@ -14,10 +24,6 @@ from rpython.rtyper.lltypesystem.rstr import STR, string_repr from rpython.rtyper.rmodel import Repr from rpython.tool.pairtype import pairtype -except ImportError: - rpython = None - -from rply.lexer import Lexer class Rule(object): @@ -104,7 +110,8 @@ def build(self): """ return Lexer(self.rules, self.ignore_rules) -if rpython: + +if we_are_translated(): class RuleEntry(ExtRegistryEntry): _type_ = Rule diff --git a/tests/test_ztranslation.py b/tests/test_ztranslation.py index d51452c..a1b90a4 100644 --- a/tests/test_ztranslation.py +++ b/tests/test_ztranslation.py @@ -2,8 +2,14 @@ try: from rpython.rtyper.test.test_llinterp import interpret + import rpython.rlib.objectmodel + old = rpython.rlib.objectmodel.we_are_translated + rpython.rlib.objectmodel.we_are_translated = lambda: True + import rply + reload(rply.lexergenerator) + rpython.rlib.objectmodel.we_are_translated = old except ImportError: - py.test.skip("Needs RPython to be on the PYTHONPATH") + pytestmark = py.test.mark.skip("Needs RPython to be on the PYTHONPATH") from rply import LexerGenerator, ParserGenerator, Token from rply.errors import ParserGeneratorWarning diff --git a/tox.ini b/tox.ini index 539c54b..e689698 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,8 @@ envlist = py26, py27, py33, py34, py35, pypy, docs deps = pytest # just running tox with PYTHONPATH=pypy tox fails, see # https://bitbucket.org/hpk42/tox/issue/146/setting-pythonpath-causes-tox-to-crash -setenv = PYTHONPATH={env:PYPY_LOCATION} +setenv = + py27,pypy: PYTHONPATH={env:PYPY_LOCATION} commands = py.test [testenv:docs]