############################################################################## # # Copyright (c) 2002 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 # ############################################################################## """Extract Zope 2 version information $id$ """ import os, sys, re import Zope2 _version_string = None _zope_version = None def _test_reset(): # Needed for testing. global _version_string, _zope_version _version_string = None _zope_version = None 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 = os.path.join(os.path.dirname(Zope2.__file__), 'version.txt') expr = re.compile( r'(?P[A-Za-z0-9]+) +(?P[0-9]+)' '\.(?P[0-9]+)\.(?P[0-9]+)' '(?P[A-Za-z]+)?(?P[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) def version_txt(): _prep_version_data() return '(%s)' % _version_string def getZopeVersion(): """ Format of zope_version tuple: (major , minor , micro , status , release ) If unreleased, integers may be -1. """ _prep_version_data() return _zope_version