The get call is nicer (compact) and faster (try,except are slow).
+Exceptions
+----------
+
+Don't use the format raise Exception, "string"
+It will be removed in py3k.
+
+YES:
+ raise KeyError("No key")
+
+NO:
+ raise KeyError, "No key"
+
Imports
-------
if EmptyOnError:
return ""
else:
- raise KeyError, "Key not found in list; '%s'" % key
+ raise KeyError("Key not found in list; '%s'" % key)
def getcwd():
"this fixes situations where the current directory doesn't exist"
def modifying(self):
if self.locked:
- raise Exception, "Configuration is locked."
+ raise Exception("Configuration is locked.")
def backup_changes(self,key=None):
self.modifying()
if key and key in self.configdict["env"]:
self.backupenv[key] = copy.deepcopy(self.configdict["env"][key])
else:
- raise KeyError, "No such key defined in environment: %s" % key
+ raise KeyError("No such key defined in environment: %s" % key)
def reset(self,keeping_pkg=0,use_cache=1):
"""
myhash = perform_checksum(filename, x, calc_prelink=calc_prelink)[0]
if mydict[x] != myhash:
if strict:
- raise portage.exception.DigestException, "Failed to verify '$(file)s' on checksum type '%(type)s'" % {"file":filename, "type":x}
+ raise portage.exception.DigestException(
+ ("Failed to verify '$(file)s' on " + \
+ "checksum type '%(type)s'") % \
+ {"file" : filename, "type" : x})
else:
file_is_ok = False
reason = (("Failed on %s verification" % x), myhash,mydict[x])
elif self.manifestVerifier:
if not self.manifestVerifier.verify(myManifestPath):
# Verification failed the desired level.
- raise UntrustedSignature, "Untrusted Manifest: %(manifest)s" % {"manifest":myManifestPath}
+ raise UntrustedSignature(
+ "Untrusted Manifest: %(manifest)s" % \
+ {"manifest" : myManifestPath})
if ("severe" in self.mysettings.features) and \
(mys != portage.gpg.fileStats(myManifestPath)):
- raise SecurityViolation, "Manifest changed: %(manifest)s" % {"manifest":myManifestPath}
+ raise SecurityViolation(
+ "Manifest changed: %(manifest)s" % \
+ {"manifest":myManifestPath})
except InvalidSignature, e:
if ("strict" in self.mysettings.features) or \
except (OSError, FileNotFound), e:
if ("strict" in self.mysettings.features) or \
("severe" in self.mysettings.features):
- raise SecurityViolation, "Error in verification of signatures: %(errormsg)s" % {"errormsg":str(e)}
+ raise SecurityViolation(
+ "Error in verification of signatures: " + \
+ "%(errormsg)s" % {"errormsg" : str(e)})
writemsg("!!! Manifest is missing or inaccessable: %(manifest)s\n" % {"manifest":myManifestPath},
noiselevel=-1)
if mydeparray:
newdeparray.append(mydeparray.pop(0))
else:
- raise ValueError, "Conditional with no target."
+ raise ValueError("Conditional with no target.")
# Deprecation checks
warned = 0
parts = baseurl.split("://",1)
if len(parts) != 2:
- raise ValueError, "Provided URL does not contain protocol identifier. '%s'" % baseurl
+ raise ValueError("Provided URL does not " + \
+ "contain protocol identifier. '%s'" % baseurl)
protocol,url_parts = parts
del parts
del userpass_host
if len(userpass) > 2:
- raise ValueError, "Unable to interpret username/password provided."
+ raise ValueError("Unable to interpret username/password provided.")
elif len(userpass) == 2:
username = userpass[0]
password = userpass[1]
elif protocol == "sftp":
listing = conn.listdir(address)
else:
- raise TypeError, "Unknown protocol. '%s'" % protocol
+ raise TypeError("Unknown protocol. '%s'" % protocol)
if not keepconnection:
conn.close()
finally:
f.close()
else:
- raise TypeError, "Unknown protocol. '%s'" % protocol
+ raise TypeError("Unknown protocol. '%s'" % protocol)
if data:
xpaksize = portage.xpak.decodeint(data[-8:-4])
finally:
f.close()
else:
- raise TypeError, "Unknown protocol. '%s'" % protocol
+ raise TypeError("Unknown protocol. '%s'" % protocol)
if not keepconnection:
conn.close()
import commands
import portage.exception
import portage.checksum
+from portage.exception import CommandNotFound, \
+ DirectoryNotFound, FileNotFound, \
+ InvalidData, InvalidDataType, InvalidSignature, MissingParameter, \
+ MissingSignature, PortageException, SecurityViolation
GPG_BINARY = "/usr/bin/gpg"
GPG_OPTIONS = " --lock-never --no-random-seed-file --no-greeting --no-sig-cache "
if (keydir != None):
# Verify that the keydir is valid.
if type(keydir) != types.StringType:
- raise portage.exception.InvalidDataType, "keydir argument: %s" % keydir
+ raise InvalidDataType(
+ "keydir argument: %s" % keydir)
if not os.path.isdir(keydir):
- raise portage.exception.DirectoryNotFound, "keydir: %s" % keydir
+ raise DirectoryNotFound("keydir: %s" % keydir)
self.keydir = copy.deepcopy(keydir)
if (keyring != None):
# Verify that the keyring is a valid filename and exists.
if type(keyring) != types.StringType:
- raise portage.exception.InvalidDataType, "keyring argument: %s" % keyring
+ raise InvalidDataType("keyring argument: %s" % keyring)
if keyring.find("/") != -1:
- raise portage.exception.InvalidData, "keyring: %s" % keyring
+ raise InvalidData("keyring: %s" % keyring)
pathname = ""
if keydir:
pathname = keydir + "/" + keyring
if not os.path.isfile(pathname):
- raise portage.exception.FileNotFound, "keyring missing: %s (dev.gentoo.org/~carpaski/gpg/)" % pathname
+ raise FileNotFound(
+ "keyring missing: %s (dev.gentoo.org/~carpaski/gpg/)" % \
+ pathname)
keyringPath = keydir+"/"+keyring
if not keyring or not keyringPath and requireSignedRing:
- raise portage.exception.MissingParameter
+ raise MissingParameter((keyring, keyringPath))
self.keyringStats = fileStats(keyringPath)
self.minimumTrust = TRUSTED
if not self.verify(keyringPath, keyringPath+".asc"):
self.keyringIsTrusted = False
if requireSignedRing:
- raise portage.exception.InvalidSignature, "Required keyring verification: "+keyringPath
+ raise InvalidSignature(
+ "Required keyring verification: " + keyringPath)
else:
self.keyringIsTrusted = True
if self.keyringStats and self.keyringPath:
new_stats = fileStats(self.keyringPath)
if new_stats != self.keyringStats:
- raise portage.exception.SecurityViolation, "GPG keyring changed!"
+ raise SecurityViolation("GPG keyring changed!")
def verify(self, filename, sigfile=None):
"""Uses minimumTrust to determine if it is Valid/True or Invalid/False"""
self._verifyKeyring()
if not os.path.isfile(filename):
- raise portage.exception.FileNotFound, filename
+ raise FileNotFound, filename
if sigfile and not os.path.isfile(sigfile):
- raise portage.exception.FileNotFound, sigfile
+ raise FileNotFound, sigfile
if self.keydir and not os.path.isdir(self.keydir):
- raise portage.exception.DirectoryNotFound, filename
+ raise DirectoryNotFound, filename
if self.keyringPath:
if not os.path.isfile(self.keyringPath):
- raise portage.exception.FileNotFound, self.keyringPath
+ raise FileNotFound, self.keyringPath
if not os.path.isfile(filename):
- raise portage.exception.CommandNotFound, filename
+ raise CommandNotFound(filename)
command = GPG_BINARY + GPG_VERIFY_FLAGS + GPG_OPTIONS
if self.keydir:
result = (result >> 8)
if signal:
- raise SignalCaught, "Signal: %d" % (signal)
+ raise PortageException("Signal: %d" % (signal))
trustLevel = UNTRUSTED
if result == 0:
#if portage.output.find("WARNING") != -1:
# trustLevel = MARGINAL
if portage.output.find("BAD") != -1:
- raise portage.exception.InvalidSignature, filename
+ raise InvalidSignature(filename)
elif result == 1:
trustLevel = EXISTS
if portage.output.find("BAD") != -1:
- raise portage.exception.InvalidSignature, filename
+ raise InvalidSignature(filename)
elif result == 2:
trustLevel = UNTRUSTED
if portage.output.find("could not be verified") != -1:
- raise portage.exception.MissingSignature, filename
+ raise MissingSignature(filename)
if portage.output.find("public key not found") != -1:
if self.keyringIsTrusted: # We trust the ring, but not the key specifically.
trustLevel = MARGINAL
else:
- raise portage.exception.InvalidSignature, filename+" (Unknown Signature)"
+ raise InvalidSignature(filename+"(Unknown Signature)")
else:
- raise portage.exception.UnknownCondition, "GPG returned unknown result: %d" % (result)
+ raise PortageException("GPG returned unknown result: %d" % (result))
if trustLevel >= self.minimumTrust:
return True
import fcntl
if not mypath:
- raise InvalidData, "Empty path given"
+ raise InvalidData("Empty path given")
if type(mypath) == types.StringType and mypath[-1] == '/':
mypath = mypath[:-1]
if type(mypath) == types.StringType:
if not os.path.exists(os.path.dirname(mypath)):
- raise DirectoryNotFound, os.path.dirname(mypath)
+ raise DirectoryNotFound(os.path.dirname(mypath))
if not os.path.exists(lockfilename):
old_mask=os.umask(000)
myfd = os.open(lockfilename, os.O_CREAT|os.O_RDWR,0660)
myfd = mypath
else:
- raise ValueError, "Unknown type passed in '%s': '%s'" % (type(mypath),mypath)
+ raise ValueError("Unknown type passed in '%s': '%s'" % \
+ (type(mypath), mypath))
# try for a non-blocking lock, if it's held, throw a message
# we're waiting on lockfile and use a blocking attempt.
except OSError:
if type(lockfilename) == types.StringType:
os.close(myfd)
- raise IOError, "Failed to unlock file '%s'\n" % lockfilename
+ raise IOError("Failed to unlock file '%s'\n" % lockfilename)
try:
# This sleep call was added to allow other processes that are
os.close(myfd)
if not os.path.exists(myhardlock):
- raise FileNotFound, _("Created lockfile is missing: %(filename)s") % {"filename":myhardlock}
+ raise FileNotFound(
+ _("Created lockfile is missing: %(filename)s") % \
+ {"filename" : myhardlock})
try:
res = os.link(myhardlock, lockfilename)