You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.1 KiB
67 lines
2.1 KiB
#!/usr/bin/env python |
|
# Copyright 2010 Google Inc. All Rights Reserved. |
|
# |
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
# you may not use this file except in compliance with the License. |
|
# You may obtain a copy of the License at |
|
# |
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
# |
|
# Unless required by applicable law or agreed to in writing, software |
|
# distributed under the License is distributed on an "AS-IS" BASIS, |
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
# See the License for the specific language governing permissions and |
|
# limitations under the License. |
|
|
|
"""Wrapper around setuptools' pkg_resources with more Google-like names. |
|
|
|
This module is not very useful on its own, but many Google open-source projects |
|
are used to a different naming scheme, and this module makes the transition |
|
easier. |
|
""" |
|
|
|
__author__ = 'dborowitz@google.com (Dave Borowitz)' |
|
|
|
import atexit |
|
|
|
import pkg_resources |
|
|
|
|
|
def _Call(func, name): |
|
"""Call a pkg_resources function. |
|
|
|
Args: |
|
func: A function from pkg_resources that takes the arguments |
|
(package_or_requirement, resource_name); for more info, |
|
see http://peak.telecommunity.com/DevCenter/PkgResources |
|
name: A name of the form 'module.name:path/to/resource'; this should |
|
generally be built from __name__ in the calling module. |
|
|
|
Returns: |
|
The result of calling the function on the split resource name. |
|
""" |
|
pkg_name, resource_name = name.split(':', 1) |
|
return func(pkg_name, resource_name) |
|
|
|
|
|
def GetResource(name): |
|
"""Get a resource as a string; see _Call.""" |
|
return _Call(pkg_resources.resource_string, name) |
|
|
|
|
|
def GetResourceAsFile(name): |
|
"""Get a resource as a file-like object; see _Call.""" |
|
return _Call(pkg_resources.resource_stream, name) |
|
|
|
|
|
_extracted_files = False |
|
|
|
|
|
def GetResourceFilename(name): |
|
"""Get a filename for a resource; see _Call.""" |
|
global _extracted_files # pylint: disable=global-statement |
|
if not _extracted_files: |
|
atexit.register(pkg_resources.cleanup_resources) |
|
_extracted_files = True |
|
|
|
return _Call(pkg_resources.resource_filename, name)
|
|
|