#!/usr/bin/env python
# Utility functions
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.71 2004-11-27 16:05:12 troup Exp $
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 James Troup <james@nocrew.org>
+# $Id: utils.py,v 1.73 2005-03-18 05:24:38 troup Exp $
################################################################################
################################################################################
-import commands, encodings.ascii, encodings.utf_8, encodings.latin_1, \
- email.Header, os, pwd, re, select, socket, shutil, string, sys, \
- tempfile, traceback;
+import codecs, commands, email.Header, os, pwd, re, select, socket, shutil, \
+ string, sys, tempfile, traceback;
import apt_pkg;
import db_access;
################################################################################
re_comments = re.compile(r"\#.*")
-re_no_epoch = re.compile(r"^\d*\:")
-re_no_revision = re.compile(r"\-[^-]*$")
+re_no_epoch = re.compile(r"^\d+\:")
+re_no_revision = re.compile(r"-[^-]+$")
re_arch_from_filename = re.compile(r"/binary-[^/]+/")
re_extract_src_version = re.compile (r"(\S+)\s*\((.*)\)")
re_isadeb = re.compile (r"(.+?)_(.+?)_(.+)\.u?deb$");
invalid_dsc_format_exc = "Invalid .dsc file";
nk_format_exc = "Unknown Format: in .changes file";
no_files_exc = "No Files: field in .dsc or .changes file.";
-cant_open_exc = "Can't read file.";
+cant_open_exc = "Can't open file";
unknown_hostname_exc = "Unknown hostname";
cant_overwrite_exc = "Permission denied; can't overwrite existent file."
file_exists_exc = "Destination file exists";
"""Encodes a (header) string per RFC2047 if necessary. If the
string is neither ASCII nor UTF-8, it's assumed to be ISO-8859-1."""
try:
- encodings.ascii.Codec().decode(s);
+ codecs.lookup('ascii')[1](s)
return s;
except UnicodeError:
pass;
try:
- encodings.utf_8.Codec().decode(s);
+ codecs.lookup('utf-8')[1](s)
h = email.Header.Header(s, 'utf-8', 998);
return str(h);
except UnicodeError:
return q;
# Sort by source version
- a_version = a_changes.get("version");
- b_version = b_changes.get("version");
+ a_version = a_changes.get("version", "0");
+ b_version = b_changes.get("version", "0");
q = apt_pkg.VersionCompare(a_version, b_version);
if q:
return q;
################################################################################
-def pp_dep (deps):
+def pp_deps (deps):
pp_deps = [];
for atom in deps:
(pkg, version, constraint) = atom;