[SciPy-user] weave and numpy.array(dtype=object)

C. Ball ceball at users.sourceforge.net
Wed Jan 9 04:09:22 EST 2008


Hi,

I wonder if someone could help me to use numpy arrays of type object_
(dtype="O") with weave?

I have the following class:

import weave
class TestClass(object):
    def __call__(self, some_array): 
        code = """
            printf("%f\\n",1.0);
        """
        weave.inline(code, ['some_array'], local_dict=locals(),verbose=1)


If I create an instance of this class and then call it with an array
of floats (or ints, etc), it compiles fine. 

But, if I try to call the class with an array of python objects,
I get the following error:

<weave: compiling>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test_weave.py", line 74, in __call__
    inline(code, ['some_array'], local_dict=locals())
  File "test_weave.py", line 16, in inline
    weave.inline(*params,**named_params)
  File "[weave location]/weave/inline_tools.py", line 333, in inline
    **kw)
  File "[weave location]/weave/inline_tools.py", line 459, in compile_function
    verbose=verbose, **kw)
  File "[weave location]/weave/ext_tools.py", line 353, in compile
    kw,file = self.build_kw_and_file(location,kw)
  File "[weave location]/weave/ext_tools.py", line 334, in build_kw_and_file
    file = self.generate_file(location=location)
  File "[weave location]/weave/ext_tools.py", line 295, in generate_file
    code = self.module_code()
  File "[weave location]/weave/ext_tools.py", line 203, in module_code
    self.function_code(),
  File "[weave location]/weave/ext_tools.py", line 269, in function_code
    all_function_code += func.function_code()
  File "[weave location]/weave/inline_tools.py", line 77, in function_code
    decl_code = indent(self.arg_declaration_code(),4)
  File "[weave location]/weave/inline_tools.py", line 62, in arg_declaration_code
    for arg in self.arg_specs]
  File "[weave location]/weave/standard_array_spec.py", line 158, in
declaration_code
    res = self.template_vars(inline=inline)
  File "[weave location]/weave/standard_array_spec.py", line 151, in template_vars
    res['num_type'] = num_to_c_types[self.var_type]
KeyError: 'O'


I'm using a copy of weave that I just checked out from SVN:

URL: http://svn.scipy.org/svn/scipy/trunk/scipy/weave
Revision: 3809
Last Changed Rev: 3736
Last Changed Date: 2007-12-28 06:53:35 +0800 (Fri, 28 Dec 2007)
Properties Last Updated: 2008-01-09 15:16:42 +0800 (Wed, 09 Jan 2008)

(and Python 2.5.1 with numpy 1.0.2).


I couldn't find anything in the weave tutorial
(http://projects.scipy.org/scipy/scipy/browser/trunk/scipy/weave/doc/tutorial.txt),
the numpy book, or the Numeric documentation, so please tell me if I have missed
something obvious.

Thanks,
Chris




More information about the SciPy-User mailing list