Re: [IronPython] Bug of big integer manipulation

2006-08-10 Thread HEMMI, Shigeru

Thanks for the answer.

I was able to take a log with  -X:ExceptionDetail, but since Japanese,
log file includes Japanse characters; I removed them by hand. I was
not able to which numbers were involved. The log file is attached.

Please note that there are two problems; one is ValueError: value too
big problem which we do not encounter with CPython. The other is an
infinite loop bug.

Please also note that NZMATH is pure python, having simple module
structure and we will be able to duplicate the problem if you download
it.

Best regards,

2006/8/10, Martin Maly [EMAIL PROTECTED]:

By any chance, were you able to determine which operation caused the exception 
and which numbers were involved? What would help me find out what the problem 
is faster would be get a call stack (for that, could you please run your repro 
with -X:ExceptionDetail switch? Then ideally if you could find out what the big 
integer numbers were with which the operation failed, that would be ideal.

Thanks!
Martin

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of HEMMI, Shigeru
Sent: Tuesday, August 08, 2006 4:31 PM
To: Discussion of IronPython
Subject: [IronPython] Bug of big integer manipulation

Hello,

NZMATH is a Python based number theory oriented calculation system developed by 
Tokyo Metropolitan University. The URL is http://tnt.math.metro-u.ac.jp/nzmath/.

Using NZMATH, I encounterd a bug of big integer manipulation.

IronPython

C:\IronPython-2604ipy
IronPython 1.0.2411 on .NET 2.0.50727.42 Copyright (c) Microsoft Corporation. 
All rights reserved.
 import sys
 sys.path.append(r'C:\Python24\Lib')
 sys.path.append(r'C:\Python24\Lib\site-packages')
 from nzmath import prime
 prime.nextPrime(256)
257
 nx = sys.maxint
 prime.nextPrime(nx*nx)
Traceback (most recent call last):
  File , line 0, in stdin##115
  File C:\Python24\Lib\site-packages\nzmath\prime.py, line 158, in nextPrime
  File C:\Python24\Lib\site-packages\nzmath\prime.py, line 206, in primeq
  File C:\Python24\Lib\site-packages\nzmath\prime.py, line 188, in smallSpsp
  File C:\Python24\Lib\site-packages\nzmath\prime.py, line 41, in spsp
ValueError: value too big
 prime.nextPrime(nx)  ## Seems going into infinite loop.

CPython

C:\IronPython-2604python
Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on win32 Type help, 
copyright, credits or license for more information.
 import sys
 from nzmath import prime
 nx = sys.maxint
 prime.nextPrime(nx*nx)
4611686014132420667L
 prime.nextPrime(nx)
2147483659L


Regards,
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



IpyBugOfBigIntegerManipulation.log
Description: Binary data
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Bug of big integer manipulation

2006-08-10 Thread HEMMI, Shigeru

I wrote:

The log file is attached.

Sorry, A non-text attachment was scrubbed... occured.
I resend the attachment file again with .txt extension.
C:\NZMATH-0.5.1dir
2006/08/10  17:28DIR  .
2006/08/10  17:28DIR  ..
2006/08/08  20:42 4,214 CHANGES.txt
2006/08/08  20:42   835 HISTORY.txt
2006/08/10  17:1661,440 ipy.exe
2006/08/10  17:1645,056 IronMath.dll
2006/08/10  17:16 1,527,808 IronPython.dll
2006/08/08  20:42 1,563 LICENSE.txt
2006/08/08  20:42DIR  manual
2006/08/08  20:42DIR  nzmath
2006/08/08  20:42   288 PKG-INFO
2006/08/08  20:42 1,916 README.txt
2006/08/08  20:42 5,466 setup.py
2006/08/08  20:42 5,428 tutorial.txt




C:\NZMATH-0.5.1ipy -X:ExceptionDetail
IronPython 1.0.2413 on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
 import sys
 sys.path.append(r'C:\Python24\Lib')
 from nzmath import prime
 nx = sys.maxint
 mx = nx*nx
 mx
4611686014132420609L
 prime.nextPrime(mx)
value too big
IronPython.Runtime.Operations.LongOps.PowerMod(BigInteger x, Object y, 
Object z)
IronPython.Runtime.Operations.IntOps.PowerMod(Int32 x, Object y, Objectz)
IronPython.Runtime.Operations.Ops.PowerMod(Object x, Object y, Object z)

IronPython.Modules.Builtin.Pow(Object x, Object y, Object z)
IronPython.Runtime.Calls.FastCallableAny.Call(ICallerContext context, 
Object arg0, Object arg1, Object arg2)
IronPython.Runtime.Calls.BuiltinFunction.Call(ICallerContext context, 
Object arg0, Object arg1, Object arg2)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0, Object arg1, Object arg2)
nzmath.prime.spsp$f1(Object n, Object base, Object s, Object t)  
C:\NZMATH-0.5.1\nzmath\prime.py:line 43
IronPython.Runtime.Calls.Function4.Call(ICallerContext context, Object 
arg0, Object arg1)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0, Object arg1)
nzmath.prime.smallSpsp$f17(Object n)  C:\NZMATH-0.5.1\nzmath\prime.py:line 
278
IronPython.Runtime.Calls.Function1.Call(ICallerContext context, Object arg0)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0)
nzmath.prime.primeq$f18(Object n)  C:\NZMATH-0.5.1\nzmath\prime.py:line 297
IronPython.Runtime.Calls.Function1.Call(ICallerContext context, Object arg0)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0)
nzmath.prime.nextPrime$f15(Object n)  C:\NZMATH-0.5.1\nzmath\prime.py:line 
246
IronPython.Runtime.Calls.Function1.Call(ICallerContext context, Object arg0)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0)
stdin##114(ModuleScope )
IronPython.Hosting.CompiledCodeDelegate.Invoke(ModuleScope moduleScope)
IronPython.Hosting.CompiledCode.Run(ModuleScope moduleScope)
IronPython.Hosting.PythonEngine.ExecuteToConsole(String text, EngineModule 
engineModule, IDictionary`2 locals)
IronPython.Hosting.PythonEngine.ExecuteToConsole(String text)
IronPythonConsole.PythonCommandLine.DoOneInteractive()
IronPythonConsole.PythonCommandLine.RunInteractiveLoopb__6(Boolean 
continueInteractionArgument)
IronPythonConsole.PythonCommandLine.TryInteractiveAction(InteractiveAction 
interactiveAction, Boolean continueInteraction)
ValueError: value too big





 prime.nextPrime(nx)
** Going into an infinite loop; Interrupt with Ctrl+C ***
IronMath.BigInteger.op_Multiply(BigInteger x, BigInteger y)
IronMath.BigInteger.Square()
IronMath.BigInteger.ModPow(Int32 power, BigInteger mod)
IronPython.Runtime.Operations.LongOps.PowerMod(BigInteger x, Int32 y, 
BigInteger z)
IronPython.Runtime.Operations.LongOps.PowerMod(BigInteger x, Int32 y, 
Object z)
IronPython.Runtime.Operations.LongOps.PowerMod(BigInteger x, Object y, 
Object z)
IronPython.Runtime.Operations.IntOps.PowerMod(Int32 x, Object y, Objectz)
IronPython.Runtime.Operations.Ops.PowerMod(Object x, Object y, Object z)

IronPython.Modules.Builtin.Pow(Object x, Object y, Object z)
IronPython.Runtime.Calls.FastCallableAny.Call(ICallerContext context, 
Object arg0, Object arg1, Object arg2)
IronPython.Runtime.Calls.BuiltinFunction.Call(ICallerContext context, 
Object arg0, Object arg1, Object arg2)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0, Object arg1, Object arg2)
nzmath.prime.spsp$f1(Object n, Object base, Object s, Object t)  
C:\NZMATH-0.5.1\nzmath\prime.py:line 43
IronPython.Runtime.Calls.Function4.Call(ICallerContext context, Object 
arg0, Object arg1)
IronPython.Runtime.Operations.Ops.CallWithContext(ICallerContext context, 
Object func, Object arg0, Object arg1)

Re: [IronPython] Bug of big integer manipulation

2006-08-10 Thread Martin Maly
As for the infinite loop ... it is a bug in our PowMod code. It is not an 
actual infinite loop, but we just do the calculation very inefficiently. Filing 
as a bug also.

Martin

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martin Maly
Sent: Thursday, August 10, 2006 8:26 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Bug of big integer manipulation

This is a current limitation of IronPython implementation. I am filing it as a 
bug for us to seriously investigate.

Thanks for your help with the repro!

Martin

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of HEMMI, Shigeru
Sent: Thursday, August 10, 2006 1:38 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Bug of big integer manipulation

Thanks for the answer.

I was able to take a log with  -X:ExceptionDetail, but since Japanese, log file 
includes Japanse characters; I removed them by hand. I was not able to which 
numbers were involved. The log file is attached.

Please note that there are two problems; one is ValueError: value too big 
problem which we do not encounter with CPython. The other is an infinite loop 
bug.

Please also note that NZMATH is pure python, having simple module structure and 
we will be able to duplicate the problem if you download it.

Best regards,

2006/8/10, Martin Maly [EMAIL PROTECTED]:
 By any chance, were you able to determine which operation caused the 
 exception and which numbers were involved? What would help me find out what 
 the problem is faster would be get a call stack (for that, could you please 
 run your repro with -X:ExceptionDetail switch? Then ideally if you could find 
 out what the big integer numbers were with which the operation failed, that 
 would be ideal.

 Thanks!
 Martin

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of HEMMI,
 Shigeru
 Sent: Tuesday, August 08, 2006 4:31 PM
 To: Discussion of IronPython
 Subject: [IronPython] Bug of big integer manipulation

 Hello,

 NZMATH is a Python based number theory oriented calculation system developed 
 by Tokyo Metropolitan University. The URL is 
 http://tnt.math.metro-u.ac.jp/nzmath/.

 Using NZMATH, I encounterd a bug of big integer manipulation.

 IronPython
 
 C:\IronPython-2604ipy
 IronPython 1.0.2411 on .NET 2.0.50727.42 Copyright (c) Microsoft Corporation. 
 All rights reserved.
  import sys
  sys.path.append(r'C:\Python24\Lib')
  sys.path.append(r'C:\Python24\Lib\site-packages')
  from nzmath import prime
  prime.nextPrime(256)
 257
  nx = sys.maxint
  prime.nextPrime(nx*nx)
 Traceback (most recent call last):
   File , line 0, in stdin##115
   File C:\Python24\Lib\site-packages\nzmath\prime.py, line 158, in nextPrime
   File C:\Python24\Lib\site-packages\nzmath\prime.py, line 206, in primeq
   File C:\Python24\Lib\site-packages\nzmath\prime.py, line 188, in smallSpsp
   File C:\Python24\Lib\site-packages\nzmath\prime.py, line 41, in spsp
 ValueError: value too big
  prime.nextPrime(nx)  ## Seems going into infinite loop.

 CPython
 
 C:\IronPython-2604python
 Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] on 
 win32 Type help, copyright, credits or license for more information.
  import sys
  from nzmath import prime
  nx = sys.maxint
  prime.nextPrime(nx*nx)
 4611686014132420667L
  prime.nextPrime(nx)
 2147483659L
 

 Regards,
 ___
 users mailing list
 users@lists.ironpython.com
 http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
 ___
 users mailing list
 users@lists.ironpython.com
 http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


[IronPython] Embedding Question

2006-08-10 Thread Tim Riley
If I have an embedded project can I automatically make .NET assemblies referenced in the project available to my python scripts? For example I have two assemblies(not in the GAC) that I have referenced in my project. I would like them always available to all python files run from this program without having to do the import clr, 
clr.AddReferenceToFileAndPath('blah') stuff in the beginning of each file. Is this possible?Regards,Tim Riley
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Tim Riley
What I'm trying to do is sort of weird so let me see if I can elaborate further. I am embedding IronPython in a .NET assembly that will later be loaded into AutoCAD. AutoCAD has their own two .NET assemblies that must be referenced, 
acmgd.dll and acdbmgd.dll. These two assemblies are always loaded while AutoCAD is running so their location isn't really a concern when creating a C# .dll. However when I want to modify AutoCAD entities from within my IP scripts I must first load the assemblies from file and path which is a problem because the file and path are different with each different version of AutoCAD. 
For example their path in my AutoCAD Mechanical 2005 is 'C:\Program Files\Autodesk\Acadm 2005' but with regular AutoCAD it would be 'C:\Program Files\Autodesk\Acad 2005'. There are so many different variations that this path could be that it would be a big deal to try/except load them all from some sort of init script.
So basically I'm looking to pass a non-GAC assembly reference from my C# project to my IP project.Note: I'm fine with the import statements.On 8/10/06, 
Dino Viehland [EMAIL PROTECTED] wrote:













Adding references updates the entire engine, it's not local to
just the current module. So once you have added a reference you just need to
import the namespace into any given module. 



Were you also trying to avoid the import statements?





From:
[EMAIL PROTECTED] [mailto:
[EMAIL PROTECTED]] On
Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:02 AM
To: Discussion of IronPython
Subject: [IronPython] Embedding Question





If I have an embedded project can I automatically make .NET
assemblies referenced in the project available to my python scripts? For
example I have two assemblies(not in the GAC) that I have referenced in my
project. I would like them always available to all python files run from this
program without having to do the import clr,
clr.AddReferenceToFileAndPath('blah') stuff in the beginning of each file. Is
this possible?


Regards,
Tim Riley







___users mailing listusers@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Dino Viehland








You can get the assembly object from an AutoCAD type:
typeof(Foo).Assembly. From there you just need to have one helper which
will register this in the engine, so you could do:



delegate void AddReference(object assembly);

AddReference adr = engine.CreateMethodAddReference(clr.AddReference(assembly));

adr.AddReference(typeof(SomeAutoCadType).Assembly);



and then from there you should be able to import any of the AutoCAD
namespaces from any of your modules. 





From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:40 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question





What I'm trying to do is sort
of weird so let me see if I can elaborate further. I am embedding IronPython in
a .NET assembly that will later be loaded into AutoCAD. AutoCAD has their own
two .NET assemblies that must be referenced,  acmgd.dll and
acdbmgd.dll. These two assemblies are always loaded while AutoCAD
is running so their location isn't really a concern when creating a C# .dll.
However when I want to modify AutoCAD entities from within my IP scripts I must
first load the assemblies from file and path which is a problem because the
file and path are different with each different version of AutoCAD. 

For example their path in my AutoCAD Mechanical 2005 is 'C:\Program
Files\Autodesk\Acadm 2005' but with regular AutoCAD it would be 'C:\Program
Files\Autodesk\Acad 2005'. There are so many different variations that this
path could be that it would be a big deal to try/except load them all from some
sort of init script. 

So basically I'm looking to pass a non-GAC assembly reference from my C#
project to my IP project.


Note: I'm fine with the import statements.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
wrote:







Adding references updates the
entire engine, it's not local to just the current module. So once you
have added a reference you just need to import the namespace into any given
module. 



Were you also trying to avoid
the import statements?





From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:02 AM
To: Discussion of IronPython
Subject: [IronPython] Embedding Question









If I have an embedded project can I automatically make .NET assemblies
referenced in the project available to my python scripts? For example I have
two assemblies(not in the GAC) that I have referenced in my project. I would
like them always available to all python files run from this program without
having to do the import clr, clr.AddReferenceToFileAndPath('blah') stuff in the
beginning of each file. Is this possible?


Regards,
Tim Riley








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com












___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Tim Riley
That's exactly what I needed. Thank you Dino.On 8/10/06, Dino Viehland [EMAIL PROTECTED]
 wrote:












You can get the assembly object from an AutoCAD type:
typeof(Foo).Assembly. From there you just need to have one helper which
will register this in the engine, so you could do:



delegate void AddReference(object assembly);

AddReference adr = engine.CreateMethodAddReference("clr.AddReference(assembly)");

adr.AddReference(typeof(SomeAutoCadType).Assembly);



and then from there you should be able to import any of the AutoCAD
namespaces from any of your modules. 





From: [EMAIL PROTECTED]

[mailto:[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:40 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question





What I'm trying to do is sort
of weird so let me see if I can elaborate further. I am embedding IronPython in
a .NET assembly that will later be loaded into AutoCAD. AutoCAD has their own
two .NET assemblies that must be referenced,  acmgd.dll and
acdbmgd.dll. These two assemblies are always loaded while AutoCAD
is running so their location isn't really a concern when creating a C# .dll.
However when I want to modify AutoCAD entities from within my IP scripts I must
first load the assemblies from file and path which is a problem because the
file and path are different with each different version of AutoCAD. 

For example their path in my AutoCAD Mechanical 2005 is 'C:\Program
Files\Autodesk\Acadm 2005' but with regular AutoCAD it would be 'C:\Program
Files\Autodesk\Acad 2005'. There are so many different variations that this
path could be that it would be a big deal to try/except load them all from some
sort of init script. 

So basically I'm looking to pass a non-GAC assembly reference from my C#
project to my IP project.


Note: I'm fine with the import statements.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
wrote:







Adding references updates the
entire engine, it's not local to just the current module. So once you
have added a reference you just need to import the namespace into any given
module. 



Were you also trying to avoid
the import statements?





From: [EMAIL PROTECTED]

[mailto:
[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:02 AM
To: Discussion of IronPython
Subject: [IronPython] Embedding Question









If I have an embedded project can I automatically make .NET assemblies
referenced in the project available to my python scripts? For example I have
two assemblies(not in the GAC) that I have referenced in my project. I would
like them always available to all python files run from this program without
having to do the import clr, clr.AddReferenceToFileAndPath('blah') stuff in the
beginning of each file. Is this possible?


Regards,
Tim Riley








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com













___users mailing listusers@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Dino Viehland








Cool, looks like I was only close though J You
may have already imported clr into the default module, but just for the record
for those who havent youll need an import clr there. I just realized I
forgot it the 1st time, and I had a redundant AddReference in the
delegate call. Im assuming you just fixed all that up, but just in case
anyone else needs to do something like this, heres the correct code:



delegate void
AddReference(object assembly);

AddReference adr =
engine.CreateMethodAddReference(import clr\nclr.AddReference(assembly));

adr(typeof(SomeAutoCadType).Assembly);







From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 12:10 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question





That's exactly what I needed.
Thank you Dino.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
 wrote:







You can get the assembly object
from an AutoCAD type: typeof(Foo).Assembly. From there you just need to
have one helper which will register this in the engine, so you could do:



delegate void
AddReference(object assembly);

AddReference adr =
engine.CreateMethodAddReference(clr.AddReference(assembly));

adr.AddReference(typeof(SomeAutoCadType).Assembly);



and then from there you should
be able to import any of the AutoCAD namespaces from any of your modules.






From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]
On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:40 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question









What I'm trying to do is sort of weird so let
me see if I can elaborate further. I am embedding IronPython in a .NET assembly
that will later be loaded into AutoCAD. AutoCAD has their own two .NET
assemblies that must be referenced,  acmgd.dll and
acdbmgd.dll. These two assemblies are always loaded while AutoCAD
is running so their location isn't really a concern when creating a C# .dll.
However when I want to modify AutoCAD entities from within my IP scripts I must
first load the assemblies from file and path which is a problem because the
file and path are different with each different version of AutoCAD. 

For example their path in my AutoCAD Mechanical 2005 is 'C:\Program
Files\Autodesk\Acadm 2005' but with regular AutoCAD it would be 'C:\Program
Files\Autodesk\Acad 2005'. There are so many different variations that this
path could be that it would be a big deal to try/except load them all from some
sort of init script. 

So basically I'm looking to pass a non-GAC assembly reference from my C#
project to my IP project.


Note: I'm fine with the import statements.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
wrote:







Adding references updates the
entire engine, it's not local to just the current module. So once you
have added a reference you just need to import the namespace into any given
module. 



Were you also trying to avoid
the import statements?





From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:02 AM
To: Discussion of IronPython
Subject: [IronPython] Embedding Question









If I have an embedded project can I automatically make .NET assemblies
referenced in the project available to my python scripts? For example I have
two assemblies(not in the GAC) that I have referenced in my project. I would like
them always available to all python files run from this program without having
to do the import clr, clr.AddReferenceToFileAndPath('blah') stuff in the
beginning of each file. Is this possible?


Regards,
Tim Riley








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com












___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com












___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


[IronPython] PythonEngine.RunFile

2006-08-10 Thread Tim Riley
In IP version 0.9 there was a PythonEngine.RunFile() method, this seems to be gone in 1.0.6. Is there a replacement? 
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Tim Riley
Thanks Dino. I had figured that out.On 8/10/06, Dino Viehland [EMAIL PROTECTED] wrote:













Cool, looks like I was only close though J
 You
may have already imported clr into the default module, but just for the record
for those who haven't you'll need an import clr there. I just realized I
forgot it the 1st time, and I had a redundant "AddReference" in the
delegate call. I'm assuming you just fixed all that up, but just in case
anyone else needs to do something like this, here's the correct code:



delegate void
AddReference(object assembly);

AddReference adr =
engine.CreateMethodAddReference(import clr\nclr.AddReference(assembly));

adr(typeof(SomeAutoCadType).Assembly);







From:
[EMAIL PROTECTED] [mailto:
[EMAIL PROTECTED]] On
Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 12:10 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question





That's exactly what I needed.
Thank you Dino.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
 wrote:







You can get the assembly object
from an AutoCAD type: typeof(Foo).Assembly. From there you just need to
have one helper which will register this in the engine, so you could do:



delegate void
AddReference(object assembly);

AddReference adr =
engine.CreateMethodAddReference(clr.AddReference(assembly));

adr.AddReference(typeof(SomeAutoCadType).Assembly);



and then from there you should
be able to import any of the AutoCAD namespaces from any of your modules.






From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]
On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:40 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question









What I'm trying to do is sort of weird so let
me see if I can elaborate further. I am embedding IronPython in a .NET assembly
that will later be loaded into AutoCAD. AutoCAD has their own two .NET
assemblies that must be referenced,  acmgd.dll and
acdbmgd.dll. These two assemblies are always loaded while AutoCAD
is running so their location isn't really a concern when creating a C# .dll.
However when I want to modify AutoCAD entities from within my IP scripts I must
first load the assemblies from file and path which is a problem because the
file and path are different with each different version of AutoCAD. 

For example their path in my AutoCAD Mechanical 2005 is 'C:\Program
Files\Autodesk\Acadm 2005' but with regular AutoCAD it would be 'C:\Program
Files\Autodesk\Acad 2005'. There are so many different variations that this
path could be that it would be a big deal to try/except load them all from some
sort of init script. 

So basically I'm looking to pass a non-GAC assembly reference from my C#
project to my IP project.


Note: I'm fine with the import statements.



On 8/10/06, Dino Viehland [EMAIL PROTECTED]
wrote:







Adding references updates the
entire engine, it's not local to just the current module. So once you
have added a reference you just need to import the namespace into any given
module. 



Were you also trying to avoid
the import statements?





From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 11:02 AM
To: Discussion of IronPython
Subject: [IronPython] Embedding Question









If I have an embedded project can I automatically make .NET assemblies
referenced in the project available to my python scripts? For example I have
two assemblies(not in the GAC) that I have referenced in my project. I would like
them always available to all python files run from this program without having
to do the import clr, clr.AddReferenceToFileAndPath('blah') stuff in the
beginning of each file. Is this possible?


Regards,
Tim Riley








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com












___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com













___users mailing listusers@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] PythonEngine.RunFile

2006-08-10 Thread Martin Maly








Think PythonEngine.ExecuteFile may work for you.





From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 1:01 PM
To: Discussion of IronPython
Subject: [IronPython] PythonEngine.RunFile





In IP version 0.9 there was a PythonEngine.RunFile() method,
this seems to be gone in 1.0.6. Is there a replacement? 






___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


[IronPython] Debugging support PythonEngine

2006-08-10 Thread Kristof Wagemans








I have been experimenting with the debugging support for the
PythonEngine. When I use the following code I have several problems.



PythonEngine _pe;

EngineOptions options = new EngineOptions();

options.ClrDebuggingEnabled = true;

_pe = new PythonEngine(options);

_pe.ExecuteFile(@ script );



Test script:



x = 1

y = 2



def Add(a, b):

 return a + b



z = Add(x, y)

print z





I opened the script file in Visual Studio and placed a
breakpoint at the beginning of the file. The application runs and breaks at the
correct location. Stepping through the lines works, but I cannot see any values
of the global variables.

When I try to step into the function I get a notification that
there is no source code available and I must show the disassembly. After I step
several times through the assembly instructions I can return to the original source
code. Inside the function I can see the values of the function variables.

I have tried debugging ipy.exe with the script and there I
can see the global variables, but I still have the problem with stepping into a
function. In ipy.exe the script file is executed in a different way. Using the same
method I can also see the global variables with my PythonEngine instance. I apparently
dont need to set ClrDebuggingEnabled in this case.



PythonEngine _pe;

_pe = new PythonEngine();

OptimizedEngineModule engineModule =
_pe.CreateOptimizedModule(@ script ,
__main__, true);

engineModule.Execute();



Are you required to use an OptimizedEngineModule to be able
to debug completely? Am I forgetting some settings for debugging? Can I step
directly into a function without getting into the assembly instructions?








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Kristof Wagemans








Isnt engine.LoadAssembly(typeof(SomeAutoCadType).Assembly)
easier or is this different in some way?











From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dino Viehland
Sent: Thursday 10 August 2006
21:17
To: Discussion
 of IronPython
Subject: Re: [IronPython]
Embedding Question





Cool, looks like I
was only close though J You may have already imported clr into the default
module, but just for the record for those who havent youll need
an import clr there. I just realized I forgot it the 1st time,
and I had a redundant AddReference in the delegate call.
Im assuming you just fixed all that up, but just in case anyone
else needs to do something like this, heres the correct code:



delegate void AddReference(object assembly);

AddReference adr =
engine.CreateMethodAddReference(import
clr\nclr.AddReference(assembly));

adr(typeof(SomeAutoCadType).Assembly);








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Slide
There is also an Import method on the PythonEngine object that allows
you to import stuff programatically as well.

On 8/10/06, Kristof Wagemans [EMAIL PROTECTED] wrote:




 Isn't engine.LoadAssembly(typeof(SomeAutoCadType).Assembly)
 easier or is this different in some way?



  


 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of
 Dino Viehland
  Sent: Thursday 10 August 2006 21:17

  To: Discussion of IronPython
  Subject: Re: [IronPython] Embedding Question







 Cool, looks like I was only close though J You may have already imported clr
 into the default module, but just for the record for those who haven't
 you'll need an import clr there.  I just realized I forgot it the 1st time,
 and I had a redundant AddReference in the delegate call.   I'm assuming
 you just fixed all that up, but just in case anyone else needs to do
 something like this, here's the correct code:



 delegate void AddReference(object assembly);

 AddReference adr = engine.CreateMethodAddReference(import
 clr\nclr.AddReference(assembly));

 adr(typeof(SomeAutoCadType).Assembly);



 ___
 users mailing list
 users@lists.ironpython.com
 http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] PythonEngine.RunFile

2006-08-10 Thread Martin Maly








You can try the PythonEngine.CreateOptimizedModule which you can
also pass a name your module should get. Let us know if that doesnt meet your
needs.



Martin





From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 2:17 PM
To: Discussion of IronPython
Subject: Re: [IronPython] PythonEngine.RunFile





I've tested that and I don't
think it works with:

if __name___ == __main__:

in the python script.

Regards,
Tim Riley



On 8/10/06, Martin Maly [EMAIL PROTECTED]
wrote:







Think
PythonEngine.ExecuteFile may work for you.





From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Tim Riley
Sent: Thursday, August 10, 2006 1:01 PM
To: Discussion of IronPython
Subject: [IronPython] PythonEngine.RunFile









In IP version 0.9 there was a PythonEngine.RunFile() method, this seems to
be gone in 1.0.6. Is there a replacement? 








___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com












___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] Embedding Question

2006-08-10 Thread Shri Borde
Another alternative is:

ClrModule clr = (ClrModule)engine.Import(clr);
clr.AddReference(typeof(SomeAutoCadType).Assembly);

This is similar to doing 
engine.LoadAssembly(typeof(SomeAutoCadType).Assembly), but is more robust 
since it also updates clr.References. PythonEngine.LoadAssembly should be 
deprecated in favor of ClrModule.AddReference.

Shri

Do you want to help develop Dynamic languages on CLR? 
(http://members.microsoft.com/careers/search/details.aspx?JobID=6D4754DE-11F0-45DF-8B78-DC1B43134038)
-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Slide
Sent: Thursday, August 10, 2006 3:02 PM
To: Discussion of IronPython
Subject: Re: [IronPython] Embedding Question

There is also an Import method on the PythonEngine object that allows you to 
import stuff programatically as well.

On 8/10/06, Kristof Wagemans [EMAIL PROTECTED] wrote:




 Isn't engine.LoadAssembly(typeof(SomeAutoCadType).Assembly)
 easier or is this different in some way?



  


 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of Dino Viehland
  Sent: Thursday 10 August 2006 21:17

  To: Discussion of IronPython
  Subject: Re: [IronPython] Embedding Question







 Cool, looks like I was only close though J You may have already
 imported clr into the default module, but just for the record for
 those who haven't you'll need an import clr there.  I just realized I forgot 
 it the 1st time,
 and I had a redundant AddReference in the delegate call.   I'm assuming
 you just fixed all that up, but just in case anyone else needs to do
 something like this, here's the correct code:



 delegate void AddReference(object assembly);

 AddReference adr = engine.CreateMethodAddReference(import
 clr\nclr.AddReference(assembly));

 adr(typeof(SomeAutoCadType).Assembly);



 ___
 users mailing list
 users@lists.ironpython.com
 http://lists.ironpython.com/listinfo.cgi/users-ironpython.com



___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
___
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com