[ http://issues.apache.org/jira/browse/MODPYTHON-54?page=all ]
Nicolas Lehuen updated MODPYTHON-54:
------------------------------------
Fix Version: 3.3.0
(was: 3.2.0)
Description:
Before mod_python 3.2, standard Python modules and published modules could be
imported the same way, using apache.import_module. This had a number of
disadvantages, leading to MODPYTHON-8, MODPYTHON-9, MODPYTHON-10, MODPYTHON-11
and MODPYTHON-12.
All these bugs were fixed by separating the published modules from the standard
Python module. apache.import_module can still be used to import standard
modules, but published modules are now fully managed by mod_python.publisher,
and are not inserted into sys.modules.
The problem is that there is a use case of importing a published module from
another published module :
/index.py----------------
def index(req):
return "Hello, world !"
def utility_function(foobar):
return foobar+1
/other.py----------------
import os
directory = os.path.split(__file__)[0]
other_index = apache.import_module("index",path=[directory])
def index(req):
return "%s %i"%(other_index.index(req),other_index.utility_function(2004))
This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work
the expected way since the imported module (other_index in the example) is not
the same module as the one the publisher would use to publish /index.py. This
could be troublesome if the developer wanted to share some data between the
modules, e.g. a cache or a connection pool, but not if he only wanted to share
some code.
Therefore, we need to provide a clean API in mod_python.publisher to allow
developers to reference another published module.
was:
Before mod_python 3.2, standard Python modules and published modules could be
imported the same way, using apache.import_module. This had a number of
disadvantages, leading to MODPYTHON-8, MODPYTHON-9, MODPYTHON-10, MODPYTHON-11
and MODPYTHON-12.
All these bugs were fixed by separating the published modules from the standard
Python module. apache.import_module can still be used to import standard
modules, but published modules are now fully managed by mod_python.publisher,
and are not inserted into sys.modules.
The problem is that there is a use case of importing a published module from
another published module :
/index.py----------------
def index(req):
return "Hello, world !"
def utility_function(foobar):
return foobar+1
/other.py----------------
import os
directory = os.path.split(__file__)[0]
other_index = apache.import_module("index",path=[directory])
def index(req):
return "%s %i"%(other_index.index(req),other_index.utility_function(2004))
This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work
the expected way since the imported module (other_index in the example) is not
the same module as the one the publisher would use to publish /index.py. This
could be troublesome if the developer wanted to share some data between the
modules, e.g. a cache or a connection pool, but not if he only wanted to share
some code.
Therefore, we need to provide a clean API in mod_python.publisher to allow
developers to reference another published module.
Environment:
> Add a way to import a published page into another published page
> ----------------------------------------------------------------
>
> Key: MODPYTHON-54
> URL: http://issues.apache.org/jira/browse/MODPYTHON-54
> Project: mod_python
> Type: Improvement
> Versions: 3.2.0
> Reporter: Nicolas Lehuen
> Assignee: Nicolas Lehuen
> Fix For: 3.3.0
>
> Before mod_python 3.2, standard Python modules and published modules could be
> imported the same way, using apache.import_module. This had a number of
> disadvantages, leading to MODPYTHON-8, MODPYTHON-9, MODPYTHON-10,
> MODPYTHON-11 and MODPYTHON-12.
> All these bugs were fixed by separating the published modules from the
> standard Python module. apache.import_module can still be used to import
> standard modules, but published modules are now fully managed by
> mod_python.publisher, and are not inserted into sys.modules.
> The problem is that there is a use case of importing a published module from
> another published module :
> /index.py----------------
> def index(req):
> return "Hello, world !"
> def utility_function(foobar):
> return foobar+1
> /other.py----------------
> import os
> directory = os.path.split(__file__)[0]
> other_index = apache.import_module("index",path=[directory])
> def index(req):
> return "%s %i"%(other_index.index(req),other_index.utility_function(2004))
> This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work
> the expected way since the imported module (other_index in the example) is
> not the same module as the one the publisher would use to publish /index.py.
> This could be troublesome if the developer wanted to share some data between
> the modules, e.g. a cache or a connection pool, but not if he only wanted to
> share some code.
> Therefore, we need to provide a clean API in mod_python.publisher to allow
> developers to reference another published module.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira