[Ironpython-users] IronPython, Daily Digest 2/6/2012

no_reply at codeplex.com no_reply at codeplex.com
Tue Feb 7 16:10:27 CET 2012

Hi ironpython,

Here's your Daily Digest of new issues for project "IronPython".

In today's digest:ISSUES

1. [New issue] IronPython should skip leading NLToken's in interactive code
2. [New issue] Unable to pass None to a function that accepts another type



1. [New issue] IronPython should skip leading NLToken's in interactive code
User dinov has proposed the issue:

">>> import tokenize, cStringIO
>>> tokenize.tokenize(cStringIO.StringIO('#foo\n1+2').readline)
1,0-1,4:        COMMENT '#foo'
1,4-1,5:        NL      '\n'
2,0-2,1:        NUMBER  '1'
2,1-2,2:        OP      '+'
2,2-2,3:        NUMBER  '2'
3,0-3,0:        ENDMARKER       ''

This shows that a line of input which first contains a comment line and then contains an expression statement gets tokenized to include a NL token followed by the rest of the expression.  IronPython's tokenizer will actually return newline token's here, which is wrong.  Instead it should also start off in a "last new line" state so that the initial newlines get reported as NL tokens.  Then the parser needs to be updated to ignore them at the beginning:  Whenever IronPython's starts parsing it should eat any leading new lines.  

See also http://pytools.codeplex.com/workitem/649"-----------------

2. [New issue] Unable to pass None to a function that accepts another type
User HarryTuttle has proposed the issue:

"Having a problem passing 'None' to a COM Interop method that can
accept 'Nothing' (in VBA)

My code (with considerable snippage):

t = System.Type.GetTypeFromProgID("MicroStationDGN.Application")
self.ms = System.Activator.CreateInstance(t)

elem = self.ms.CreateLineElement2(None, point3d1, point3d2)

Now, I know that the point3d objects are working fine, and self.ms is
working fine as it is part of a library I am putting together and they
are working fine with other methods. The problem is with the 'None' argument. How ever, I run it and get this

E:\py>ipy titleblocknew.py
Traceback (most recent call last):
  File "titleblocknew.py", line 26, in <module>
  File "E:\py\ustation.py", line 162, in create_line
ValueError: Could not convert argument 2 for call to CreateLineElement2.

ILSpy says this about the method:

// Bentley.Interop.MicroStationDGN.Application
[return: MarshalAs(28)]
LineElement CreateLineElement2([MarshalAs(28)] [In] Element Template,
[In] [Out] ref Point3d StartPoint, [In] [Out] ref Point3d EndPoint);


MicroStation documentation says this:

Set LineElement = object.CreateLineElement2 (Template, StartPoint, EndPoint)

The CreateLineElement2 method syntax has these parts:

Part - Description
object - A valid object. (Application object)
Template - An Element expression. An existing element whose settings are
used to initialize the new element. If Nothing, the new element's
settings are initialized from MicroStation's active settings.
StartPoint A Point3d expression.
EndPoint A Point3d expression.


My basic understanding is that it is trying to convert None into an
'Element' object, but is unable to do so. Is there a way around this?"

You are receiving this email because you subscribed to notifications on CodePlex.

To report a bug, request a feature, or add a comment, visit IronPython Issue Tracker. You can unsubscribe or change your issue notification settings on CodePlex.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20120207/7db2ac67/attachment.html>

More information about the Ironpython-users mailing list