[Zope-Checkins] SVN: Zope/branches/2.12/ Made the version information show up again, based on pkg_resources distribution information instead of the no longer existing version.txt.

Hanno Schlichting hannosch at hannosch.eu
Sat Aug 8 09:25:33 EDT 2009


Log message for revision 102575:
  Made the version information show up again, based on pkg_resources distribution information instead of the no longer existing version.txt.
  

Changed:
  U   Zope/branches/2.12/doc/CHANGES.rst
  D   Zope/branches/2.12/src/App/tests/test_version_txt.py
  U   Zope/branches/2.12/src/App/version_txt.py

-=-
Modified: Zope/branches/2.12/doc/CHANGES.rst
===================================================================
--- Zope/branches/2.12/doc/CHANGES.rst	2009-08-08 12:24:26 UTC (rev 102574)
+++ Zope/branches/2.12/doc/CHANGES.rst	2009-08-08 13:25:33 UTC (rev 102575)
@@ -8,7 +8,13 @@
 after Zope 2.12.0 b4 (unreleased)
 ---------------------------------
 
+Bugs Fixed
+++++++++++
 
+- Made the version information show up again, based on pkg_resources
+  distribution information instead of the no longer existing version.txt.
+
+
 Zope 2.12.0 b4 (2008/08/06)
 ---------------------------------
 

Deleted: Zope/branches/2.12/src/App/tests/test_version_txt.py
===================================================================
--- Zope/branches/2.12/src/App/tests/test_version_txt.py	2009-08-08 12:24:26 UTC (rev 102574)
+++ Zope/branches/2.12/src/App/tests/test_version_txt.py	2009-08-08 13:25:33 UTC (rev 102575)
@@ -1,70 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2003 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Tests of the version number extraction.
-
-$Id$
-"""
-import unittest
-
-class VersionTextTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self._resetModuleGlobals()
-
-    def tearDown(self):
-        import os
-        from App.version_txt import _version_file
-        if _version_file is not None:
-            os.unlink(_version_file)
-        self._resetModuleGlobals()
-
-    def _resetModuleGlobals(self):
-        from App import version_txt
-        version_txt._filename = 'version.txt'
-        version_txt._version_file = None
-        version_txt._version_string = None
-        version_txt._zope_version = None
-
-    def _writeVersion(self, s):
-        import os
-        import tempfile
-        from App import version_txt 
-        assert version_txt._version_file is None
-        f, version_txt._version_file = tempfile.mkstemp()
-        os.write(f, s)
-        os.close(f)
-
-    def test_without_version_txt(self):
-        import os
-        from App import version_txt
-        version_txt._filename = 'NONESUCHFILESHOULDEXIST'
-        self.failIf(os.path.exists(version_txt._get_filename()))
-        self.assertEqual(version_txt.getZopeVersion(), (-1, -1, -1, '', -1))
-
-    def test_with_version_txt_final(self):
-        from App.version_txt import getZopeVersion
-        self._writeVersion("Zope 2.6.1 (source release, python 2.1, linux2)")
-        self.assertEqual(getZopeVersion(), (2, 6, 1, '', -1))
-
-    def test_with_version_txt_beta(self):
-        from App.version_txt import getZopeVersion
-        self._writeVersion("Zope 2.6.1b2 (source release, python 2.1, linux2)")
-        self.assertEqual(getZopeVersion(), (2, 6, 1, 'b', 2))
-
-
-def test_suite():
-    return unittest.makeSuite(VersionTextTestCase)
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="test_suite")

Modified: Zope/branches/2.12/src/App/version_txt.py
===================================================================
--- Zope/branches/2.12/src/App/version_txt.py	2009-08-08 12:24:26 UTC (rev 102574)
+++ Zope/branches/2.12/src/App/version_txt.py	2009-08-08 13:25:33 UTC (rev 102575)
@@ -14,58 +14,41 @@
 
 $id$
 """
-import os
 import re
 import sys
 
-_location = None
-_filename = 'version.txt'
+import pkg_resources
 
-_version_file = None
 _version_string = None
 _zope_version = None
 
-def _get_filename():
-    global _location
-    if _version_file is not None:
-        return _version_file
-    if _location is None:
-        import Zope2
-        _location = os.path.dirname(Zope2.__file__)
-    return os.path.join(_location, _filename)
-
 def _prep_version_data():
     global _version_string, _zope_version
     if _version_string is None:
         v = sys.version_info
         pyver = "python %d.%d.%d, %s" % (v[0], v[1], v[2], sys.platform)
-        fn = _get_filename()
+        dist = pkg_resources.get_distribution('Zope2')
+
         expr = re.compile(
-            r'(?P<product>[A-Za-z0-9]+) +(?P<major>[0-9]+)'
-            '\.(?P<minor>[0-9]+)\.(?P<micro>[0-9]+)'
+            r'(?P<major>[0-9]+)\.(?P<minor>[0-9]+)\.(?P<micro>[0-9]+)'
             '(?P<status>[A-Za-z]+)?(?P<release>[0-9]+)?')
-        try:
-            s = open(fn).read().strip()
-        except IOError:
-            ss = 'unreleased version'
-            _zope_version = (-1, -1, -1, '', -1)
-        else:
-            ss = re.sub("\(.*?\)\?","",s)
-            dict = expr.match(s).groupdict()
-            _zope_version = (
-                int(dict.get('major') or -1),
-                int(dict.get('minor') or -1),
-                int(dict.get('micro') or -1),
-                dict.get('status') or '',
-                int(dict.get('release') or -1),
-                )
-        _version_string = "%s, %s" % (ss, pyver)
 
+        dict = expr.match(dist.version).groupdict()
+        _zope_version = (
+            int(dict.get('major') or -1),
+            int(dict.get('minor') or -1),
+            int(dict.get('micro') or -1),
+            dict.get('status') or '',
+            int(dict.get('release') or -1),
+            )
+        _version_string = "%s, %s" % (dist.version, pyver)
 
+
 def version_txt():
     _prep_version_data()
     return '(%s)' % _version_string
 
+
 def getZopeVersion():
     """
     Format of zope_version tuple:



More information about the Zope-Checkins mailing list