[Ironpython-users] IronPython, Daily Digest 9/13/2012
no_reply at codeplex.com
no_reply at codeplex.com
Fri Sep 14 12:52:09 CEST 2012
Hi ironpython,
Here's your Daily Digest of new issues for project "IronPython".
In today's digest:ISSUES
1. [New issue] rrule.rulestr()
----------------------------------------------
ISSUES
1. [New issue] rrule.rulestr()
http://ironpython.codeplex.com/workitem/33114
User gharig has proposed the issue:
"I receive an 'write to closed file' exception when executing a sample console vb.net application. I'm trying to use a dateutil rrule.rulestr() function. Works fine until I add the keyword 'UNTIL' to the string. I set the path for pyEngine.GetSearchPaths() to "C:\Python27\Lib" and "C:\Python27\Lib\site-packages\dateutil"
The error seems to be thrown in a call to Pythons parser.py class _timelex(object):
Thank You
George
Below is my code,
Imports System
Imports IronPython.Hosting
Imports Microsoft.Scripting.Hosting
' we get access to Action and Func on .Net 2.0
Imports Microsoft.Scripting.Utils
Module Module1
Sub Main()
Dim x As TestCallIronPython.Program = New TestCallIronPython.Program()
x.main2()
End Sub
End Module
Namespace TestCallIronPython
Public Class Program
Delegate Function ConvertMethod(ByVal inString As String) As String
Public Sub main2()
Console.WriteLine("Hello World!")
Dim options = New Dictionary(Of String, Object)()
options("Frames") = True
options("FullFrames") = True
options("Debug") = True
Dim pyEngine As ScriptEngine = Python.CreateEngine(options)
Dim pyScope As ScriptScope = pyEngine.CreateScope()
pyScope.SetVariable("test", "test me")
Dim dir As String = System.IO.Path.GetDirectoryName("C:\Python27\Lib\site-packages\dateutil")
Dim paths As System.Collections.Generic.ICollection(Of String) = pyEngine.GetSearchPaths()
If Not String.IsNullOrEmpty(dir) Then
paths.Add(dir)
paths.Add("C:\Python27\Lib")
paths.Add("C:\Python27\Lib\site-packages\dateutil")
paths.Add("C:\Python27\Lib\site-packages\dateutil\zoneinfo")
Else
paths.Add(System.Environment.CurrentDirectory)
End If
pyEngine.SetSearchPaths(paths)
Dim code As String = "" + vbCrLf
code = code + "import sys" + vbCrLf
code = code + "import calendar" + vbCrLf
code = code + "import datetime" + vbCrLf
code = code + "from dateutil import rrule" + vbCrLf
code = code + "from dateutil import parser" + vbCrLf
code = code + "" + vbCrLf
code = code + "print 'test = ' + test" + vbCrLf
code = code + "class MyClass:" + vbCrLf
code = code + " def __init__(self):" + vbCrLf
code = code + " pass" + vbCrLf
code = code + "" + vbCrLf
code = code + " def somemethod(self):" + vbCrLf
code = code + " print 'in some method'" + vbCrLf
code = code + "" + vbCrLf
code = code + " def isodd(self, n):" + vbCrLf
code = code + " return 1 == n % 2" + vbCrLf
code = code + "" + vbCrLf
code = code + " def getRule(self, data, y, m, d):" + vbCrLf
code = code + " print 'This is data: ',data" + vbCrLf
code = code + " start_date = datetime.datetime(y, m, d)" + vbCrLf
code = code + " return rrule.rrulestr(data, dtstart=start_date)" + vbCrLf
code = code + "" + vbCrLf
Dim source As ScriptSource = pyEngine.CreateScriptSourceFromString(code)
Dim compiled As CompiledCode = source.Compile()
compiled.Execute(pyScope)
' Get the Python Class
Dim [MyClass] As Object = pyEngine.Operations.Invoke(pyScope.GetVariable("MyClass"))
' Invoke a method of the class
pyEngine.Operations.InvokeMember([MyClass], "somemethod", New Object(-1) {})
' create a callable function to 'somemethod'
Dim SomeMethod2 As Action = pyEngine.Operations.GetMember(Of Action)([MyClass], "somemethod")
SomeMethod2()
' create a callable function to 'isodd'
Dim IsOdd As Func(Of Integer, Boolean) = pyEngine.Operations.GetMember(Of Func(Of Integer, Boolean))([MyClass], "isodd")
Console.WriteLine(IsOdd(1).ToString())
Console.WriteLine(IsOdd(2).ToString())
Dim GetRule As Func(Of String, Int32, Int32, Int32, Object) = pyEngine.Operations.GetMember(Of Func(Of String, Int32, Int32, Int32, Object))([MyClass], "getRule")
Dim obj1 As Object
obj1 = GetRule("RRULE:FREQ=DAILY;INTERVAL=10;COUNT=42", 2012, 9, 12)
Dim obj2 As Object
obj2 = GetRule("RRULE:FREQ=DAILY;INTERVAL=10", 2012, 9, 12)
Dim obj3 As Object
'FAILURE
obj3 = GetRule("RRULE:FREQ=MONTHLY;BYDAY=+2WE;UNTIL=20130101T000000Z", 2012, 9, 12) 'UNTIL=20150921T000000
'FAILURE: Does not like "UNTIL"
Console.Write("Press any key to continue . . . ")
Console.ReadKey(True)
End Sub
End Class
End Namespace"
----------------------------------------------
----------------------------------------------
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/20120914/d6b72b86/attachment.html>
More information about the Ironpython-users
mailing list