Skip to content

Instantly share code, notes, and snippets.

@Wilfred
Created February 9, 2014 23:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Wilfred/8907578 to your computer and use it in GitHub Desktop.
Save Wilfred/8907578 to your computer and use it in GitHub Desktop.
RPython error on iterating over a bytestring.
from __future__ import unicode_literals
import sys
def entry_point(argv):
bytes_seq = b"abcdef1234!"
for byte in bytes_seq:
print byte.decode('utf-8')
return 0
def target(*args):
return entry_point, None
if __name__ == '__main__':
entry_point(sys.argv)
[translation:info] Error:
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/translator/goal/translate.py", line 318, in main
[translation:info] drv.proceed(goals)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/translator/driver.py", line 534, in proceed
[translation:info] return self._execute(goals, task_skip = self._maybe_skip())
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/translator/tool/taskengine.py", line 114, in _execute
[translation:info] res = self._do(goal, taskcallable, *args, **kwds)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/translator/driver.py", line 283, in _do
[translation:info] res = func()
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/translator/driver.py", line 320, in task_annotate
[translation:info] s = annotator.build_types(self.entry_point, self.inputtypes)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 91, in build_types
[translation:info] return self.build_graph_types(flowgraph, inputcells, complete_now=complete_now)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 145, in build_graph_types
[translation:info] self.complete()
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 199, in complete
[translation:info] self.complete_pending_blocks()
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 194, in complete_pending_blocks
[translation:info] self.processblock(graph, block)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 344, in processblock
[translation:info] self.flowin(graph, block)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 408, in flowin
[translation:info] self.consider_op(block, i)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py", line 602, in consider_op
[translation:info] resultcell = consider_meth(*argcells)
[translation:info] File "<48-codegen /home/wilfred/projects/trifle/src/pypy/rpython/annotator/annrpython.py:641>", line 3, in consider_op_simple_call
[translation:info] return arg.simple_call(*args)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/unaryop.py", line 151, in simple_call
[translation:info] return obj.call(getbookkeeper().build_args("simple_call", args_s))
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/unaryop.py", line 739, in call
[translation:info] return bookkeeper.pbc_call(pbc, args)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/bookkeeper.py", line 660, in pbc_call
[translation:info] results.append(desc.pycall(schedule, args, s_previous_result, op))
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/description.py", line 299, in pycall
[translation:info] result = self.specialize(inputcells, op)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/description.py", line 289, in specialize
[translation:info] enforceargs(self, inputcells) # can modify inputcells in-place
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/signature.py", line 125, in __call__
[translation:info] s_input = unionof(s_input, s_arg)
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/model.py", line 744, in unionof
[translation:info] s1 = pair(s1, s2).union()
[translation:info] File "/home/wilfred/projects/trifle/src/pypy/rpython/annotator/binaryop.py", line 56, in union
[translation:info] raise UnionError(obj1, obj2)
[translation:ERROR] UnionError:
[translation:ERROR]
[translation:ERROR] Offending annotations:
[translation:ERROR] SomeUnicodeString()
[translation:ERROR] SomeString()
[translation:ERROR]
[translation:ERROR]
[translation:ERROR] Occurred processing the following simple_call:
[translation:ERROR] (KeyError getting at the binding!)
[translation:ERROR] v1 = simple_call((function str2charp), v0)
[translation:ERROR]
[translation:ERROR] In <FunctionGraph of (rpython.rlib.rfile:52)create_file at 0x2e791d0>:
[translation:ERROR] Happened at file /home/wilfred/projects/trifle/src/pypy/rpython/rlib/rfile.py line 56
[translation:ERROR]
[translation:ERROR] ==> ll_name = rffi.str2charp(filename)
[translation:ERROR] try:
[translation:ERROR] ll_mode = rffi.str2charp(mode)
[translation:ERROR]
[translation:ERROR] Known variable annotations:
[translation:ERROR] v0 = SomeUnicodeString()
[translation:ERROR]
[translation:ERROR] Processing block:
[translation:ERROR] block@63 is a <class 'rpython.flowspace.flowcontext.SpamBlock'>
[translation:ERROR] in (rpython.rlib.rfile:52)create_file
[translation:ERROR] containing the following operations:
[translation:ERROR] v1 = simple_call((function str2charp), v0)
[translation:ERROR] v2 = simple_call((function str2charp), mode_0)
[translation:ERROR] --end--
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment