diff paint/info.py @ 54:a8236b97abd3

separate methods for gathering package information
author Jeff Hammel <jhammel@mozilla.com>
date Wed, 23 Jan 2013 15:12:37 -0800
parents
children 042a1b2a3e8a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paint/info.py	Wed Jan 23 15:12:37 2013 -0800
@@ -0,0 +1,37 @@
+"""
+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:
+            
+        return self.__dict__.pop('_info')
+
+    def _setup(self, **kwargs):
+        self._info = kwargs