1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
""" The default resource manager. """
# Enthought library imports.
from enthought.traits.api import Dict, HasTraits, Str, implements
# Local imports.
from i_resource_manager import IResourceManager
from i_resource_protocol import IResourceProtocol
class ResourceManager(HasTraits):
""" The default resource manager. """
implements(IResourceManager)
#### 'IResourceManager' interface #########################################
# The protocols used by the manager to resolve resource URLs.
resource_protocols = Dict(Str, IResourceProtocol)
###########################################################################
# 'IResourceManager' interface.
###########################################################################
#### Trait initializers ###################################################
def _resource_protocols_default(self):
""" Trait initializer. """
# We do the import(s) here in case somebody wants a resource manager
# that doesn't use the default protocol(s).
from file_resource_protocol import FileResourceProtocol
from http_resource_protocol import HTTPResourceProtocol
from package_resource_protocol import PackageResourceProtocol
resource_protocols = {
'file' : FileResourceProtocol(),
'http' : HTTPResourceProtocol(),
'pkgfile' : PackageResourceProtocol()
}
return resource_protocols
#### Methods ##############################################################
def file(self, url):
""" Return a readable file-like object for the specified url. """
protocol_name, address = url.split('://')
protocol = self.resource_protocols.get(protocol_name)
if protocol is None:
raise ValueError('unknown protocol in URL %s' % url)
return protocol.file(address)
#### EOF ######################################################################
|