On Thu, Mar 26, 2009 at 1:54 PM, Guido van Rossum firstname.lastname@example.org wrote:
2009/3/26 Toshio Kuratomi email@example.com:
Guido van Rossum wrote:
On Wed, Mar 25, 2009 at 9:40 PM, Tarek Ziadé firstname.lastname@example.org wrote:
I think Distutils (and therefore Setuptools) should provide some APIs to play with special files (like resources) and to mark them as being special, no matter where they end up in the target system.
Yes, this should be done. PEP 302 has some hooks but they are optional and not available for the default case. A simple wrapper to access a resource file relative to a given module or package would be easy to add. It should probably support four APIs:
- Open as a binary stream
- Open as a text stream
- Get contents as a binary string
- Get contents as a text string
Depending on the definition of a "resource" there's additional information that could be needed. For instance, if resource includes message catalogs, then being able to get the base directory that the catalogs reside in is needed for passing to gettext.
Well the whole point is that for certain loaders (e.g. zip files) there *is* no base directory. If you do need directories you won't be able to use PEP-302 loaders, and you can just use os.path.dirname(<some_module>.__file__).
Oops didnt see this msg ... AFAICR ... this is the kind of reasons ResourceManager is there for in pkg_resources ... CMIIW anyway ...
However GvR was talking about PEP 302 loaders ... well ... the only thing I can say is that bundling message catalogs in egg files (they 'r zip files anyway ;) and using them with Babel (... similar to gettext ... I think ...) works fine for me using the aforementioned functions in pkg_resources ... About whether PEP 302 loaders should (look like | implement functions in) pkg_resources.ResourceManager or not ... I'm not very sure ...
... and I'm talking about ...
[x for x in dir(pkg_resources) if 'resource_' in x]
['resource_exists', 'resource_filename', 'resource_isdir', 'resource_listdir', 'resource_stream', 'resource_string']
Featured article: Comandos : Pipe Viewer ... ¿Qué está pasando por esta tubería?