2007/10/24, Michael Foord <[EMAIL PROTECTED]>:
> I've just posted the experimental code for accessing CPython extensions
> from IronPython.
>
> Article: http://www.voidspace.org.uk/ironpython/cpython_extensions.shtml
>
> Comments, bugfixes and improvements welcomed!

* Strings from .NET come in as unicode on the CPython type

An evil workaround is to define PyStringConvert as:
def PyStringConvert(obj):
    # evil
    return PyString(obj).GetAttr('encode').Invoke()

This could be improved on Python.NET side. Any idea?

* Can't yet pass in keyword args to function calls.

This is related to the previous item, because:
>>> def f(a): pass
>>> f(**{u'a': 1})
TypeError: f() keywords must be strings

With the previous workaround in place, replace PythonObject.__call__ with:
def __call__(self, *args, **kw):
    args = ConvertToPy(args)
    kw = ConvertToPy(kw)
    return ConvertToIpy(self.real.Invoke(args, kw))

This is more straightforward than creating PyObject[].

-- 
Seo Sanghyeon
_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
http://mail.python.org/mailman/listinfo/pythondotnet

Reply via email to