Mercurial > hg > PaInt
view paint/info.py @ 56:042a1b2a3e8a
start flushing out tests
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 23 Jan 2013 16:01:29 -0800 |
parents | a8236b97abd3 |
children | d5e5c7496784 |
line wrap: on
line source
""" interfaces to get information from a package """ import os import sys class PackageInfo(object): """abstract base class of package info""" def __init__(self, path): """ - path : path to setup.py or its directory """ if os.path.isdir(path): path = os.path.join(path, 'setup.py') assert os.path.exists(path), "'%s' not found" % path self.setup_py = os.path.abspath(path) def __call__(self): """returns dictionary of package info""" raise NotImplementedError("abstract base class") class SetupOverridePackageInfo(PackageInfo): """ gather setup.py information by overriding the function """ def __call__(self): setuptools = sys.modules.get('setuptools') sys.modules['setuptools'] = sys.modules[__name__] globals()['setup'] = self._setup try: module = imp.load_source('setup', setup_py) finally: sys.modules.pop('setuptools') if setuptools: sys.modules['setuptools'] = setuptools globals().pop('setup') return self.__dict__.pop('_info') def _setup(self, **kwargs): self._info = kwargs