annotate pyntnclick/resources.py @ 561:e207dfad0d9e pyntnclick

Start of resource manager.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 11 Feb 2012 15:05:34 +0200
parents
children 20e296d4a3a5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
561
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 # -*- test-case-name: pyntnclick.tests.test_resources -*-
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 import os
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4 from pkg_resources import resource_filename
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 class ResourceNotFound(Exception):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8 pass
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11 class Resources(object):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12 DEFAULT_RESOURCE_MODULE = "pyntnclick.data"
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14 def __init__(self, resource_module, language=None):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 self.resource_module = resource_module
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 self.language = language
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18 def get_resource_path(self, resource_name):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19 for path in self.get_paths(resource_name):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20 if os.path.exists(path):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 return path
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22 raise ResourceNotFound(resource_name)
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
23
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
24 def get_paths(self, resource_path):
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 paths = []
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26 for module in [self.resource_module, self.DEFAULT_RESOURCE_MODULE]:
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 if self.language:
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 fn = os.path.join(self.language, resource_path)
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 paths.append(resource_filename(module, fn))
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30 paths.append(resource_filename(module, resource_path))
e207dfad0d9e Start of resource manager.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31 return paths