Re: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

2008-11-21 Thread William Reade
Thanks again Dino: it's all working and checked in, and it was all much 
easier than I expected. No problems with SourceUnits, but I don't try to 
do anything remotely complex with them, so others' mileage may vary.


Dino Viehland wrote:

Oh, and instead of ScriptSource you can use SourceUnit.  You might find there's 
too much stuff marked internal w/ SourceUnit so any issues you run into here 
would be interesting to hear.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 9:50 AM
To: Discussion of IronPython
Subject: Re: [IronPython] (ironclad) is it possible to get the current 
ScriptEngine?

It seems I don't actually use the engine for very much, so this sounds
pretty plausible -- context.SystemState can replace Python.GetSysModule,
and HostingHelpers.GetLanguageContext goes away entirely :).

However, I can't see any obvious way to create a ScriptScope
(engine.CreateScope) or a ScriptSource
(engine.CreateScriptSourceFromString) -- even if I just dupe IronPython
code, it seems I'll still need an actual PythonEngine to construct them.
Am I missing something obvious?

William Reade wrote:
  

Thanks Dino -- I'll see what I can do with that :)

Dino Viehland wrote:


It's not really possible to get back to the ScriptEngine - but you
also probably don't need to.  You probably want to get back to the
LanguageContext(PythonContext)/ScriptDomainManager and work with
those directly.  ScriptEngine/ScriptRuntime are wrappers around those
which expose the friendly API and provide the easy remoting features.

You can get to the LanguageContext via a CodeContext.  You can get a
CodeContext by just defining it as the 1st parameter on a .NET method
which we'll be calling at some point.

For example our ModuleLoader class for pre-compiled code has a
load_module method which receives a CodeContext.  It then uses it to
call back into the current PythonContext and create a new module.

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 5:36 AM
To: Discussion of IronPython
Subject: [IronPython] (ironclad) is it possible to get the current
ScriptEngine?

Hi all

At the moment, when a user types 'import ironclad', I create a new
ScriptEngine and set that up to allow .pyd imports; I then abuse
path_hooks to use the new engine to do the imports, and copy them into
the original engine's sys.modules. Clearly, this is evil and wrong on
any number of levels, but so far it's been (just barely) good enough.

However, if I can find out which ScriptEngine is executing the code (so
I can pass that into the Python25Mapper), I can greatly simplify
ironclad.py and, hopefully, solve another user's problem (which, I
believe, is related to sys.path not being shared between the two engines
(quite rightly so, ofc ;))).

So: is there any way I can get a reference to the executing engine from
within IronPython code? It feels as if it should be possible, but
whenever I look into it I end up chasing my tail...

William
___
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
___
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] (ironclad) is it possible to get the current ScriptEngine?

2008-11-20 Thread Dino Viehland
It's not really possible to get back to the ScriptEngine - but you also 
probably don't need to.  You probably want to get back to the 
LanguageContext(PythonContext)/ScriptDomainManager and work with those 
directly.  ScriptEngine/ScriptRuntime are wrappers around those which expose 
the friendly API and provide the easy remoting features.

You can get to the LanguageContext via a CodeContext.  You can get a 
CodeContext by just defining it as the 1st parameter on a .NET method which 
we'll be calling at some point.

For example our ModuleLoader class for pre-compiled code has a load_module 
method which receives a CodeContext.  It then uses it to call back into the 
current PythonContext and create a new module.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 5:36 AM
To: Discussion of IronPython
Subject: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

Hi all

At the moment, when a user types 'import ironclad', I create a new
ScriptEngine and set that up to allow .pyd imports; I then abuse
path_hooks to use the new engine to do the imports, and copy them into
the original engine's sys.modules. Clearly, this is evil and wrong on
any number of levels, but so far it's been (just barely) good enough.

However, if I can find out which ScriptEngine is executing the code (so
I can pass that into the Python25Mapper), I can greatly simplify
ironclad.py and, hopefully, solve another user's problem (which, I
believe, is related to sys.path not being shared between the two engines
(quite rightly so, ofc ;))).

So: is there any way I can get a reference to the executing engine from
within IronPython code? It feels as if it should be possible, but
whenever I look into it I end up chasing my tail...

William
___
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] (ironclad) is it possible to get the current ScriptEngine?

2008-11-20 Thread William Reade

Thanks Dino -- I'll see what I can do with that :)

Dino Viehland wrote:

It's not really possible to get back to the ScriptEngine - but you also 
probably don't need to.  You probably want to get back to the 
LanguageContext(PythonContext)/ScriptDomainManager and work with those 
directly.  ScriptEngine/ScriptRuntime are wrappers around those which expose 
the friendly API and provide the easy remoting features.

You can get to the LanguageContext via a CodeContext.  You can get a 
CodeContext by just defining it as the 1st parameter on a .NET method which 
we'll be calling at some point.

For example our ModuleLoader class for pre-compiled code has a load_module 
method which receives a CodeContext.  It then uses it to call back into the 
current PythonContext and create a new module.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 5:36 AM
To: Discussion of IronPython
Subject: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

Hi all

At the moment, when a user types 'import ironclad', I create a new
ScriptEngine and set that up to allow .pyd imports; I then abuse
path_hooks to use the new engine to do the imports, and copy them into
the original engine's sys.modules. Clearly, this is evil and wrong on
any number of levels, but so far it's been (just barely) good enough.

However, if I can find out which ScriptEngine is executing the code (so
I can pass that into the Python25Mapper), I can greatly simplify
ironclad.py and, hopefully, solve another user's problem (which, I
believe, is related to sys.path not being shared between the two engines
(quite rightly so, ofc ;))).

So: is there any way I can get a reference to the executing engine from
within IronPython code? It feels as if it should be possible, but
whenever I look into it I end up chasing my tail...

William
___
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


Re: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

2008-11-20 Thread William Reade
It seems I don't actually use the engine for very much, so this sounds 
pretty plausible -- context.SystemState can replace Python.GetSysModule, 
and HostingHelpers.GetLanguageContext goes away entirely :).


However, I can't see any obvious way to create a ScriptScope 
(engine.CreateScope) or a ScriptSource 
(engine.CreateScriptSourceFromString) -- even if I just dupe IronPython 
code, it seems I'll still need an actual PythonEngine to construct them. 
Am I missing something obvious?


William Reade wrote:

Thanks Dino -- I'll see what I can do with that :)

Dino Viehland wrote:
It's not really possible to get back to the ScriptEngine - but you 
also probably don't need to.  You probably want to get back to the 
LanguageContext(PythonContext)/ScriptDomainManager and work with 
those directly.  ScriptEngine/ScriptRuntime are wrappers around those 
which expose the friendly API and provide the easy remoting features.


You can get to the LanguageContext via a CodeContext.  You can get a 
CodeContext by just defining it as the 1st parameter on a .NET method 
which we'll be calling at some point.


For example our ModuleLoader class for pre-compiled code has a 
load_module method which receives a CodeContext.  It then uses it to 
call back into the current PythonContext and create a new module.


-Original Message-
From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED] On Behalf Of William Reade

Sent: Thursday, November 20, 2008 5:36 AM
To: Discussion of IronPython
Subject: [IronPython] (ironclad) is it possible to get the current 
ScriptEngine?


Hi all

At the moment, when a user types 'import ironclad', I create a new
ScriptEngine and set that up to allow .pyd imports; I then abuse
path_hooks to use the new engine to do the imports, and copy them into
the original engine's sys.modules. Clearly, this is evil and wrong on
any number of levels, but so far it's been (just barely) good enough.

However, if I can find out which ScriptEngine is executing the code (so
I can pass that into the Python25Mapper), I can greatly simplify
ironclad.py and, hopefully, solve another user's problem (which, I
believe, is related to sys.path not being shared between the two engines
(quite rightly so, ofc ;))).

So: is there any way I can get a reference to the executing engine from
within IronPython code? It feels as if it should be possible, but
whenever I look into it I end up chasing my tail...

William
___
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


Re: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

2008-11-20 Thread Dino Viehland
Just create Scope objects instead of ScriptScope's.  Scope's are what we 
actually expose as modules directly to Python programs.  Generally only hosting 
APIs see the ScriptScope's.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 9:50 AM
To: Discussion of IronPython
Subject: Re: [IronPython] (ironclad) is it possible to get the current 
ScriptEngine?

It seems I don't actually use the engine for very much, so this sounds
pretty plausible -- context.SystemState can replace Python.GetSysModule,
and HostingHelpers.GetLanguageContext goes away entirely :).

However, I can't see any obvious way to create a ScriptScope
(engine.CreateScope) or a ScriptSource
(engine.CreateScriptSourceFromString) -- even if I just dupe IronPython
code, it seems I'll still need an actual PythonEngine to construct them.
Am I missing something obvious?

William Reade wrote:
 Thanks Dino -- I'll see what I can do with that :)

 Dino Viehland wrote:
 It's not really possible to get back to the ScriptEngine - but you
 also probably don't need to.  You probably want to get back to the
 LanguageContext(PythonContext)/ScriptDomainManager and work with
 those directly.  ScriptEngine/ScriptRuntime are wrappers around those
 which expose the friendly API and provide the easy remoting features.

 You can get to the LanguageContext via a CodeContext.  You can get a
 CodeContext by just defining it as the 1st parameter on a .NET method
 which we'll be calling at some point.

 For example our ModuleLoader class for pre-compiled code has a
 load_module method which receives a CodeContext.  It then uses it to
 call back into the current PythonContext and create a new module.

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
 Sent: Thursday, November 20, 2008 5:36 AM
 To: Discussion of IronPython
 Subject: [IronPython] (ironclad) is it possible to get the current
 ScriptEngine?

 Hi all

 At the moment, when a user types 'import ironclad', I create a new
 ScriptEngine and set that up to allow .pyd imports; I then abuse
 path_hooks to use the new engine to do the imports, and copy them into
 the original engine's sys.modules. Clearly, this is evil and wrong on
 any number of levels, but so far it's been (just barely) good enough.

 However, if I can find out which ScriptEngine is executing the code (so
 I can pass that into the Python25Mapper), I can greatly simplify
 ironclad.py and, hopefully, solve another user's problem (which, I
 believe, is related to sys.path not being shared between the two engines
 (quite rightly so, ofc ;))).

 So: is there any way I can get a reference to the executing engine from
 within IronPython code? It feels as if it should be possible, but
 whenever I look into it I end up chasing my tail...

 William
 ___
 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
___
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


Re: [IronPython] (ironclad) is it possible to get the current ScriptEngine?

2008-11-20 Thread Dino Viehland
Oh, and instead of ScriptSource you can use SourceUnit.  You might find there's 
too much stuff marked internal w/ SourceUnit so any issues you run into here 
would be interesting to hear.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 9:50 AM
To: Discussion of IronPython
Subject: Re: [IronPython] (ironclad) is it possible to get the current 
ScriptEngine?

It seems I don't actually use the engine for very much, so this sounds
pretty plausible -- context.SystemState can replace Python.GetSysModule,
and HostingHelpers.GetLanguageContext goes away entirely :).

However, I can't see any obvious way to create a ScriptScope
(engine.CreateScope) or a ScriptSource
(engine.CreateScriptSourceFromString) -- even if I just dupe IronPython
code, it seems I'll still need an actual PythonEngine to construct them.
Am I missing something obvious?

William Reade wrote:
 Thanks Dino -- I'll see what I can do with that :)

 Dino Viehland wrote:
 It's not really possible to get back to the ScriptEngine - but you
 also probably don't need to.  You probably want to get back to the
 LanguageContext(PythonContext)/ScriptDomainManager and work with
 those directly.  ScriptEngine/ScriptRuntime are wrappers around those
 which expose the friendly API and provide the easy remoting features.

 You can get to the LanguageContext via a CodeContext.  You can get a
 CodeContext by just defining it as the 1st parameter on a .NET method
 which we'll be calling at some point.

 For example our ModuleLoader class for pre-compiled code has a
 load_module method which receives a CodeContext.  It then uses it to
 call back into the current PythonContext and create a new module.

 -Original Message-
 From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED] On Behalf Of William Reade
 Sent: Thursday, November 20, 2008 5:36 AM
 To: Discussion of IronPython
 Subject: [IronPython] (ironclad) is it possible to get the current
 ScriptEngine?

 Hi all

 At the moment, when a user types 'import ironclad', I create a new
 ScriptEngine and set that up to allow .pyd imports; I then abuse
 path_hooks to use the new engine to do the imports, and copy them into
 the original engine's sys.modules. Clearly, this is evil and wrong on
 any number of levels, but so far it's been (just barely) good enough.

 However, if I can find out which ScriptEngine is executing the code (so
 I can pass that into the Python25Mapper), I can greatly simplify
 ironclad.py and, hopefully, solve another user's problem (which, I
 believe, is related to sys.path not being shared between the two engines
 (quite rightly so, ofc ;))).

 So: is there any way I can get a reference to the executing engine from
 within IronPython code? It feels as if it should be possible, but
 whenever I look into it I end up chasing my tail...

 William
 ___
 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
___
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com