| """Data file path abstraction. |
| |
| Functions in this module use sysconfig to find the paths to the resource |
| files registered in project's setup.cfg file. See the documentation for |
| more information. |
| """ |
| # TODO write that documentation |
| |
| from packaging.database import get_distribution |
| |
| __all__ = ['get_file_path', 'get_file'] |
| |
| |
| def get_file_path(distribution_name, relative_path): |
| """Return the path to a resource file.""" |
| dist = get_distribution(distribution_name) |
| if dist != None: |
| return dist.get_resource_path(relative_path) |
| raise LookupError('no distribution named %r found' % distribution_name) |
| |
| |
| def get_file(distribution_name, relative_path, *args, **kwargs): |
| """Open and return a resource file.""" |
| return open(get_file_path(distribution_name, relative_path), |
| *args, **kwargs) |