expose py.code._reinterpret functions so that pypy and internal
uses don't need to go through internal implementation imports --HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									78d67c007b
								
							
						
					
					
						commit
						030548bc73
					
				|  | @ -98,6 +98,8 @@ py.apipkg.initpkg(__name__, dict( | ||||||
|         'patch_builtins'    : '._code.code:patch_builtins', |         'patch_builtins'    : '._code.code:patch_builtins', | ||||||
|         'unpatch_builtins'  : '._code.code:unpatch_builtins', |         'unpatch_builtins'  : '._code.code:unpatch_builtins', | ||||||
|         '_AssertionError'   : '._code.assertion:AssertionError', |         '_AssertionError'   : '._code.assertion:AssertionError', | ||||||
|  |         '_reinterpret_old'  : '._code.assertion:reinterpret_old', | ||||||
|  |         '_reinterpret'      : '._code.assertion:reinterpret', | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     # backports and additions of builtins |     # backports and additions of builtins | ||||||
|  |  | ||||||
|  | @ -37,12 +37,6 @@ def _format_explanation(explanation): | ||||||
|     return '\n'.join(result) |     return '\n'.join(result) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if sys.version_info >= (2, 6) or (sys.platform.startswith("java")): |  | ||||||
|     from py._code._assertionnew import interpret |  | ||||||
| else: |  | ||||||
|     from py._code._assertionold import interpret |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class AssertionError(BuiltinAssertionError): | class AssertionError(BuiltinAssertionError): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, *args): |     def __init__(self, *args): | ||||||
|  | @ -65,7 +59,7 @@ class AssertionError(BuiltinAssertionError): | ||||||
|                 # this can also occur during reinterpretation, when the |                 # this can also occur during reinterpretation, when the | ||||||
|                 # co_filename is set to "<run>". |                 # co_filename is set to "<run>". | ||||||
|             if source: |             if source: | ||||||
|                 self.msg = interpret(source, f, should_fail=True) |                 self.msg = reinterpret(source, f, should_fail=True) | ||||||
|                 if not self.args: |                 if not self.args: | ||||||
|                     self.args = (self.msg,) |                     self.args = (self.msg,) | ||||||
|             else: |             else: | ||||||
|  | @ -73,3 +67,11 @@ class AssertionError(BuiltinAssertionError): | ||||||
| 
 | 
 | ||||||
| if sys.version_info > (3, 0): | if sys.version_info > (3, 0): | ||||||
|     AssertionError.__module__ = "builtins" |     AssertionError.__module__ = "builtins" | ||||||
|  |     reinterpret_old = "old reinterpretation not available for py3" | ||||||
|  | else: | ||||||
|  |     from py._code._assertionold import interpret as reinterpret_old | ||||||
|  | if sys.version_info >= (2, 6) or (sys.platform.startswith("java")): | ||||||
|  |     from py._code._assertionnew import interpret as reinterpret | ||||||
|  | else: | ||||||
|  |     reinterpret = reinterpret_old | ||||||
|  |      | ||||||
|  |  | ||||||
|  | @ -199,9 +199,8 @@ class TracebackEntry(object): | ||||||
|         """Reinterpret the failing statement and returns a detailed information |         """Reinterpret the failing statement and returns a detailed information | ||||||
|            about what operations are performed.""" |            about what operations are performed.""" | ||||||
|         if self.exprinfo is None: |         if self.exprinfo is None: | ||||||
|             from py._code import assertion  |  | ||||||
|             source = str(self.statement).strip() |             source = str(self.statement).strip() | ||||||
|             x = assertion.interpret(source, self.frame, should_fail=True) |             x = py.code._reinterpret(source, self.frame, should_fail=True) | ||||||
|             if not isinstance(x, str): |             if not isinstance(x, str): | ||||||
|                 raise TypeError("interpret returned non-string %r" % (x,)) |                 raise TypeError("interpret returned non-string %r" % (x,)) | ||||||
|             self.exprinfo = x  |             self.exprinfo = x  | ||||||
|  |  | ||||||
|  | @ -8,9 +8,6 @@ def pytest_addoption(parser): | ||||||
|         help="disable python assert expression reinterpretation."), |         help="disable python assert expression reinterpretation."), | ||||||
| 
 | 
 | ||||||
| def pytest_configure(config): | def pytest_configure(config): | ||||||
|     #if sys.platform.startswith("java"): |  | ||||||
|     #    return # XXX assertions don't work yet with jython 2.5.1 |  | ||||||
| 
 |  | ||||||
|     if not config.getvalue("noassert") and not config.getvalue("nomagic"): |     if not config.getvalue("noassert") and not config.getvalue("nomagic"): | ||||||
|         warn_about_missing_assertion() |         warn_about_missing_assertion() | ||||||
|         config._oldassertion = py.builtin.builtins.AssertionError |         config._oldassertion = py.builtin.builtins.AssertionError | ||||||
|  |  | ||||||
|  | @ -1,7 +1,5 @@ | ||||||
| import py | import py | ||||||
| 
 | 
 | ||||||
| #pytestmark = py.test.mark.skipif("sys.platform.startswith('java')") |  | ||||||
| 
 |  | ||||||
| def exvalue(): | def exvalue(): | ||||||
|     return py.std.sys.exc_info()[1] |     return py.std.sys.exc_info()[1] | ||||||
| 
 | 
 | ||||||
|  | @ -201,3 +199,7 @@ class TestView: | ||||||
|         assert codelines == ["4 + 5", "getitem('', 'join')",  |         assert codelines == ["4 + 5", "getitem('', 'join')",  | ||||||
|             "setattr('x', 'y', 3)", "12 - 1"] |             "setattr('x', 'y', 3)", "12 - 1"] | ||||||
| 
 | 
 | ||||||
|  | def test_underscore_api(): | ||||||
|  |     py.code._AssertionError | ||||||
|  |     py.code._reinterpret_old # used by pypy | ||||||
|  |     py.code._reinterpret | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue