0
|
1
|
|
2 """
|
|
3 Private compatability module for running under python version 2.3.
|
|
4
|
|
5 Replacement for
|
|
6 o string.Template -- introduced in python 2.4
|
|
7 o subprocess -- introduced in python 2.4
|
|
8
|
|
9 o resource_string -- introduced in pkg_resource of setuptools
|
|
10 o resource_stream
|
|
11 o resource_filename
|
|
12
|
|
13 from string import Template -> from corebio._future import Template
|
|
14
|
|
15 """
|
|
16
|
|
17
|
|
18 try :
|
|
19 import pkg_resources
|
|
20 except ImportError :
|
|
21 pkg_resources = None
|
|
22
|
|
23
|
|
24 try :
|
|
25 from string import Template
|
|
26 except ImportError :
|
|
27 from _string import Template
|
|
28
|
|
29
|
|
30
|
|
31
|
|
32 def resource_string( modulename, resource, basefilename = None):
|
|
33 """Locate and return a resource as a string.
|
|
34 >>> f = resource_string( __name, 'somedatafile', __file__)
|
|
35 """
|
|
36 if pkg_resources :
|
|
37 return pkg_resources.resource_string(modulename, resource)
|
|
38
|
|
39 f = resource_stream( modulename, resource, basefilename)
|
|
40 return f.read()
|
|
41
|
|
42 def resource_stream( modulename, resource, basefilename = None):
|
|
43 """Locate and return a resource as a stream.
|
|
44 >>> f = resource_stream( __name__, 'somedatafile', __file__)
|
|
45 """
|
|
46 if pkg_resources :
|
|
47 return pkg_resources.resource_stream(modulename, resource)
|
|
48
|
|
49 return open( resource_filename( modulename, resource, basefilename) )
|
|
50
|
|
51 def resource_filename( modulename, resource, basefilename = None):
|
|
52 """Locate and return a resource filename.
|
|
53 >>> f = resource_stream( __name__, 'somedatafile', __file__)
|
|
54
|
|
55 A resource is a data file stored with the python code in a package.
|
|
56 All three resource methods (resource_string, resource_stream,
|
|
57 resource_filename) call the corresponding methods in the 'pkg_resources'
|
|
58 module, if installed. Otherwise, we resort to locating the resource
|
|
59 in the local filesystem. However, this does not work if the package
|
|
60 is located inside a zip file.
|
|
61 """
|
|
62 if pkg_resources :
|
|
63 return pkg_resources.resource_filename(modulename, resource)
|
|
64
|
|
65 if basefilename is None :
|
|
66 raise NotImplementedError(
|
|
67 "Require either basefilename or pkg_resources")
|
|
68
|
|
69 import os
|
|
70 return os.path.join(os.path.dirname(basefilename), resource)
|
|
71
|
|
72
|
|
73
|
|
74
|
|
75
|
|
76
|
|
77
|
|
78 |