diff options
author | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-04-01 20:00:33 +0000 |
---|---|---|
committer | Gustavo J. A. M. Carneiro <gjc@src.gnome.org> | 2006-04-01 20:00:33 +0000 |
commit | bdd7fe0d910a0bba8c44bda9c6ef699ffd4296e0 (patch) | |
tree | ddd8e284207bc832e2366ebfc8127fb9a61790fa /pygtk.py | |
parent | 14e876743dbe8e6b97bd6a02293eaaf7b7f9b444 (diff) | |
download | pygobject-bdd7fe0d910a0bba8c44bda9c6ef699ffd4296e0.tar.gz |
make pygtk.require faster and more robust
Diffstat (limited to 'pygtk.py')
-rw-r--r-- | pygtk.py | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/pygtk.py b/pygtk.py deleted file mode 100644 index 4ef6eec0..00000000 --- a/pygtk.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- Mode: Python; py-indent-offset: 4 -*- -# pygtk - Python bindings for the GTK+ widget set. -# Copyright (C) 1998-2002 James Henstridge -# -# pygtk.py: pygtk version selection code. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA - -import fnmatch -import glob -import os -import sys - -__all__ = ['require'] - -_pygtk_dir_pat = 'gtk-[0-9].[0-9]' - -_pygtk_required_version = None - -def _get_available_versions(): - versions = {} - for dir in sys.path: - if not dir: - dir = os.getcwd() - - if not os.path.isdir(dir): - continue - - # if the dir is a pygtk dir, skip it - if fnmatch.fnmatchcase(os.path.basename(dir), _pygtk_dir_pat): - continue - - for filename in glob.glob(os.path.join(dir, _pygtk_dir_pat)): - pathname = os.path.join(dir, filename) - - # skip non directories - if not os.path.isdir(pathname): - continue - - # skip empty directories - if not os.listdir(pathname): - continue - - if not versions.has_key(filename[-3:]): - versions[filename[-3:]] = pathname - return versions - -def require(version): - global _pygtk_required_version - - if _pygtk_required_version != None: - assert _pygtk_required_version == version, \ - "a different version of gtk was already required" - return - - assert not sys.modules.has_key('gtk'), \ - "pygtk.require() must be called before importing gtk" - - versions = _get_available_versions() - assert versions.has_key(version), \ - "required version '%s' not found on system" % version - - # remove any pygtk dirs first ... - for dir in sys.path: - if fnmatch.fnmatchcase(os.path.basename(dir), _pygtk_dir_pat): - sys.path.remove(dir) - - # prepend the pygtk path ... - sys.path.insert(0, versions[version]) - - _pygtk_required_version = version |