commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r9829 - trunk/gnue-common/src/setup


From: johannes
Subject: [gnue] r9829 - trunk/gnue-common/src/setup
Date: Thu, 22 Nov 2007 07:51:03 -0600 (CST)

Author: johannes
Date: 2007-11-22 07:51:03 -0600 (Thu, 22 Nov 2007)
New Revision: 9829

Modified:
   trunk/gnue-common/src/setup/GSetup.py
Log:
More work on PEP8


Modified: trunk/gnue-common/src/setup/GSetup.py
===================================================================
--- trunk/gnue-common/src/setup/GSetup.py       2007-11-22 10:16:02 UTC (rev 
9828)
+++ trunk/gnue-common/src/setup/GSetup.py       2007-11-22 13:51:03 UTC (rev 
9829)
@@ -21,6 +21,7 @@
 #
 # $Id: GSetup.py,v 1.4 2003/10/06 18:33:16 reinhard Exp $
 """
+Base classes for package setup based on distutils
 """
 
 import sys
@@ -40,6 +41,8 @@
 from gnue.common.utils import version
 from gnue.common.setup import ChangeLog
 
+__all__ = ['GSetup']
+
 # -----------------------------------------------------------------------------
 # Check Python version
 # -----------------------------------------------------------------------------
@@ -47,18 +50,19 @@
 try:
     if sys.hexversion < 0x02030000:
         raise AttributeError
+
 except AttributeError:
     print "-" * 70
     print """
-    You are running Python %s.
+You are running Python %s.
 
-    GNU Enterprise requires at least Python 2.3.
-    If you have a later version installed, you should run setup.py
-    against that version. For example, if you have Python 2.3
-    installed, you may need to run:
+GNU Enterprise requires at least Python 2.3.
+If you have a later version installed, you should run setup.py
+against that version. For example, if you have Python 2.3
+installed, you may need to run:
 
-         python2.3 setup.py
-  """ % sys.version.split()[0]
+python2.3 setup.py
+""" % sys.version.split()[0]
     print "-" * 70
     sys.exit(1)
 
@@ -69,28 +73,81 @@
 _setup = None
 
 # =============================================================================
-# sdist: build files to be distributed first
+# SDist: build files to be distributed first
 # =============================================================================
 
-class sdist(distutils.command.sdist.sdist):
+class SDist(distutils.command.sdist.sdist):
+    """
+    Build files to be distributed
+    """
 
+    # -------------------------------------------------------------------------
+    # Run the sdist command
+    # -------------------------------------------------------------------------
+
     def run(self):
+        """
+        Run the sdist command
+        """
         global _setup
 
         _setup.do_build_files('sdist')
         distutils.command.sdist.sdist.run(self)
 
+
+    # -------------------------------------------------------------------------
+    # Remove files not used
+    # -------------------------------------------------------------------------
+
     def prune_file_list(self):
+        """
+        Prune the list of files included
+        """
         distutils.command.sdist.sdist.prune_file_list(self)
         self.filelist.exclude_pattern('*.dist_template', anchor=0)
 
+
+    # -------------------------------------------------------------------------
+    # Create the directory tree that will become the source distribution arch.
+    # -------------------------------------------------------------------------
+
     def make_release_tree(self, base_dir, files):
+        """
+        Create the directory tree that will become the source distribution
+        archive.
+        """
         distutils.command.sdist.sdist.make_release_tree(self, base_dir, files)
         self.process_templates(base_dir)
+
         _setup.do_build_svnrev(os.path.join(base_dir, 'src', 'svnrev.py'))
 
+
+    # -------------------------------------------------------------------------
+    # Process all template files 
+    # -------------------------------------------------------------------------
+
     def process_templates(self, target):
+        """
+        Process all distribution template files.  Such a template file is
+        called "<filename>.dist_template" and will be stored as "<filename>"
+        after processing.  This method replaces the following strings by their
+        corresponding values:
 
+          * :PACKAGE:  Name of the package, i.e. 'gnue-forms'
+          * :TITLE:    Title of the package, i.e. 'GNU Enterprise Forms'
+          * :VERSION:  Full version of the package, i.e. '0.6.9+svn.9794'
+          * :MAJOR:    The major version, i.e. '0'
+          * :MINOR:    The minor version, i.e. '6'
+          * :PHASE:    The phase, i.e. 'final'
+          * :BUILD:    The build, i.e. '1'
+          * :SVN:      The current SubVersion revision
+          * :DATE_ISO: The date of the package formatted as YYYY-MM-DD
+          * :DATE_RFC: The date of the package formatted according to RFC 822
+          * :TIME:     The time of the package formattes as HH:MM:SS
+          * :FINAL:    If the build is final it contains the build number,
+                       otherwise '0'
+        """
+
         # Build list of files to be processed.
         filelist = FileList()
         if filelist.include_pattern('*.dist_template', anchor=0) == 0:
@@ -101,6 +158,7 @@
         # module. Change to unconditional import in gnue-common 0.8.
         try:
             from src import version
+
         except:
             return
 
@@ -117,6 +175,7 @@
                 ':DATE_ISO:': time.strftime('%Y-%m-%d', time.gmtime()),
                 ':DATE_RFC:': time.strftime('%a, %d %b %Y', time.gmtime()),
                 ':TIME:': time.strftime('%H:%M:%S', time.gmtime())}
+        
         # Hack for version numbering schemes that are limited to x.y.z.
         if version.phase == 'final':
             keywords[':FINAL:'] = str(version.build)
@@ -129,39 +188,65 @@
             self.execute(self.__process_template, args,
                     "generating %s from %s" % (dst, src))
 
+
+    # -------------------------------------------------------------------------
+    # Process a single template
+    # -------------------------------------------------------------------------
+
     def __process_template(self, src, dst, keywords):
+
         infile = open(src, 'r')
         content = infile.read()
         infile.close()
+
         for keyword, value in keywords.iteritems():
             content = content.replace(keyword, value)
+
         outfile = open(dst, 'w')
         outfile.write(content)
         outfile.close()
+
         # Let destination file have the same mode than the source file.
         os.chmod(dst, os.stat(src).st_mode)
 
+
 # =============================================================================
 # build: if done from SVN, build files to be installed first
 # =============================================================================
 
-class build(distutils.command.build.build):
+class Build(distutils.command.build.build):
+    """
+    Build files to be installed
+    """
 
+    # -------------------------------------------------------------------------
+    # Run the command
+    # -------------------------------------------------------------------------
+
     def run(self):
+        """
+        Run the build command
+        """
         global _setup
 
         if not os.path.isfile("PKG-INFO"):         # downloaded from SVN?
             _setup.do_build_files('build')
+
         distutils.command.build.build.run(self)
+
         if not os.path.isfile("PKG-INFO"):
             _setup.do_build_svnrev(os.path.join(self.build_lib, 'gnue',
                   _setup.package[5:].lower(), 'svnrev.py'))
 
+
 # =============================================================================
 # install: Some user_options are no longer allowed
 # =============================================================================
 
-class install(distutils.command.install.install):
+class Install(distutils.command.install.install):
+    """
+    Install the package
+    """
 
     # Commented out because sometimes, to create packages, we want to install
     # other tools in a different target directory than common is installed
@@ -172,6 +257,9 @@
 
     #user_options = [opt for opt in user_options if opt [0] in allowed_options]
 
+
+    # TODO: this code is executed as soon as this module get's importet.
+    # Need to check wether this is really what we want here.
     user_options = distutils.command.install.install.user_options
     i = 0
     for option in user_options:
@@ -181,19 +269,28 @@
                              "installation directory for configuration files"))
             break
 
+
     # -------------------------------------------------------------------------
     # Initalize options
     # -------------------------------------------------------------------------
 
     def initialize_options(self):
+        """
+        Initialize options
+        """
+
         distutils.command.install.install.initialize_options(self)
         self.install_config = None
 
+
     # -------------------------------------------------------------------------
     # Finalize options - set all install targets
     # -------------------------------------------------------------------------
 
     def finalize_options(self):
+        """
+        Finalize options and set all install targets
+        """
 
         if self.install_lib is None:
             self.install_lib = gnue.paths.lib
@@ -206,11 +303,16 @@
 
         distutils.command.install.install.finalize_options(self)
 
+
     # -------------------------------------------------------------------------
     # install.run: generate and install path dependent files afterwards
     # -------------------------------------------------------------------------
 
     def run(self):
+        """
+        Run the install command
+        """
+
         global _setup
 
         _setup.check_dependencies()
@@ -220,11 +322,11 @@
         # install translations
         if os.path.isdir('po'):
             # copy files
-            for f in os.listdir('po'):
-                if f[-4:] == '.gmo':
-                    src = os.path.join('po', f)
-                    dst = os.path.join(self.install_data, 'share', 'locale', f
-                            [:-4], 'LC_MESSAGES')
+            for fname in os.listdir('po'):
+                if fname[-4:] == '.gmo':
+                    src = os.path.join('po', fname)
+                    dst = os.path.join(self.install_data, 'share', 'locale',
+                            fname[:-4], 'LC_MESSAGES')
                     self.mkpath(dst)
                     dst = os.path.join(dst, _setup.package + '.mo')
                     self.copy_file(src, dst)
@@ -232,38 +334,70 @@
 
         distutils.command.install.install.run(self)
 
+
     # -------------------------------------------------------------------------
     # install.get_outputs: list all installed files
     # -------------------------------------------------------------------------
 
     def get_outputs(self):
+        """
+        List all installed files
+        """
+
         return distutils.command.install.install.get_outputs(self) \
                + self.__outputs
 
+
 # =============================================================================
 # GSetup: Basic class for setup scripts of GNUe packages
 # =============================================================================
 
 class GSetup:
+    """
+    Base class for setup scripts of GNU Enterprise packages
+    """
 
     # -------------------------------------------------------------------------
     # Abstract methods: setup.py scripts generally override these
     # -------------------------------------------------------------------------
 
     def set_params(self, params):
+        """
+        Define setup paramters
+        """
         pass
 
+
+    # -------------------------------------------------------------------------
+    # Build list of file
+    # -------------------------------------------------------------------------
+
     def build_files(self, action):
+        """
+        Build a list of files depending on a given action
+        """
         pass
 
+
+    # -------------------------------------------------------------------------
+    # Check if all dependencies are met
+    # -------------------------------------------------------------------------
+
     def check_dependencies(self):
+        """
+        Check all dependencies
+        """
         pass
 
+
     # -------------------------------------------------------------------------
     # Build files if called from SVN
     # -------------------------------------------------------------------------
 
     def do_build_files(self, action):
+        """
+        Build all files if called from SVN
+        """
 
         if os.name == 'posix':
 
@@ -310,14 +444,14 @@
                 argv0_path = os.path.dirname(os.path.abspath(sys.executable))
                 sys.path.append(argv0_path + "\\tools\\i18n")
 
-                msgfmtOK = 0
+                msgfmt_ok = 0
                 try:
                     import msgfmt
-                    msgfmtOK = 1
+                    msgfmt_ok = 1
                 except:
                     pass
 
-                if msgfmtOK == 1:
+                if msgfmt_ok == 1:
                     # pygettext.py exist in Python, but no msgmerge, so
                     # just create a placeholder...
                     potfile = open('po/'+ self.package +'.pot', 'w')
@@ -336,33 +470,46 @@
         # do package specific stuff
         self.build_files(action)
 
+
     # -------------------------------------------------------------------------
-    # Build files if called from SVN
+    # Create the svnrev.py file
     # -------------------------------------------------------------------------
 
     def do_build_svnrev(self, filename):
+        """
+        Create the file 'svnrev.py' which contains the current SubVersion
+        revision.
+        """
 
         log.info("building svnrev.py")
         output = open(filename, 'w')
         output.write('svnrev = %r' % version.get_svn_revision('src'))
         output.close()
 
+
     # -------------------------------------------------------------------------
     # Helper methods for descendants
     # -------------------------------------------------------------------------
 
     def allfiles(self, directory):
+        """
+        Get a list of files in a given directory, excluding some specials like
+        Makefile, .svn, CSV and so on
+        """
+
         directory = os.path.normpath(directory)
         exclude = [".svn", "CVS", "README.cvs", ".cvsignore", "Makefile"]
-        return [directory + "/" + file for file in os.listdir(directory) \
-                if not file in exclude and
-                   not os.path.isdir(os.path.join(directory, file))]
+        return [directory + "/" + fname for fname in os.listdir(directory) \
+                if not fname in exclude and
+                   not os.path.isdir(os.path.join(directory, fname))]
 
+
     # -------------------------------------------------------------------------
     # Get all packages in a directory
     # -------------------------------------------------------------------------
 
     def __get_packages(self, directory, package):
+
         content = os.listdir(directory)
         result = []
         if "__init__.py" in content:
@@ -374,44 +521,50 @@
                             "." + name)
         return result
 
+
     # -------------------------------------------------------------------------
     # Call the actual setup routine
     # -------------------------------------------------------------------------
 
     def run(self):
+        """
+        Run the setup routine
+        """
+
         global _setup
 
         # set global variable
         _setup = self
 
-        setup_params = {"cmdclass_sdist": sdist,
-                        "cmdclass_build": build,
-                        "cmdclass_install": install,
-                       }
+        setup_params = {"cmdclass_sdist": SDist,
+                        "cmdclass_build": Build,
+                        "cmdclass_install": Install
+                        }
 
         _setup.set_params(setup_params)
 
         # make package available
         self.package = setup_params["name"]
 
-
         # find out all packages
         if not setup_params.has_key("packages"):
             packages = []
+
             for module, directory in setup_params["package_dir"].items():
                 packages = packages + self.__get_packages(directory, module)
+
             setup_params["packages"] = packages
 
         # remove data files that are not available
         for target, files in setup_params["data_files"]:
             i = 0
             while i < len(files):
-                file = files[i]
-                if os.path.isfile(file):
+                fname = files[i]
+                if os.path.isfile(fname):
                     i += 1
                 else:
-                    log.warn("warning: did not find file %s" % file)
-                    files.remove(file)
+                    log.warn("warning: did not find file %s" % fname)
+                    files.remove(fname)
 
         # now call setup
         setup(name             = setup_params["name"],





reply via email to

[Prev in Thread] Current Thread [Next in Thread]