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.
68 lines
2.1 KiB
68 lines
2.1 KiB
4 years ago
|
#!/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)
|