"""
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2014 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design"
__license__ = "GNU GPL"
__all__ = ['robot_urllib']
# Error 401 -- authentication required
def http_error_401(self, url, fp, errcode, errmsg, headers, data=None):
- raise IOError, ('http error', errcode, "Authentication required ", headers)
+ raise IOError(('http error', errcode, "Authentication required ", headers))
def http_error_default(self, url, fp, errcode, errmsg, headers):
if fp:
void = fp.read()
fp.close()
- raise IOError, ('http error', errcode, errmsg, headers)
+ raise IOError(('http error', errcode, errmsg, headers))
urllib._urlopener = MyURLopener()
"""
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2012 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design"
__license__ = "GNU GPL"
__all__ = ['storage_flad']
pass
elif level == save_level + 1:
if not got_folder:
- raise ValueError, "indent without folder"
+ raise ValueError("indent without folder")
elif level <= save_level - 1:
self.unindent(save_level, level)
else:
- raise ValueError, "new level (%d) too big; must be %d - %d" % (level, save_level-1, save_level+1)
+ raise ValueError("new level (%d) too big; must be %d - %d" % (level, save_level-1, save_level+1))
save_level = level
got_folder = record.has_key("Folder") # Test here to save got_folder for next loop
self.current_folder.append(Ruler())
else:
- raise KeyError, "neither \"URL\" nor \"Folder\" nor \"Ruler\" in record " + str(record)
+ raise KeyError("neither \"URL\" nor \"Folder\" nor \"Ruler\" in record " + str(record))
if save_level >= 0:
self.unindent(save_level, 0)
else:
- raise ValueError, "new level (%d) too little - must be >= 0" % save_level
+ raise ValueError("new level (%d) too little - must be >= 0" % save_level)
return root_folder
pid, err = os.waitpid(self.pid, os.WNOHANG)
except os.error, (errno, msg):
if errno == 10:
- raise SubprocessError, \
- "Subprocess '%s' failed." % self.cmd
- raise SubprocessError, \
- "Subprocess failed[%d]: %s" % (errno, msg)
+ raise SubprocessError("Subprocess '%s' failed." % self.cmd)
+ raise SubprocessError("Subprocess failed[%d]: %s" % (errno, msg))
if pid == self.pid:
# child exited already
self.pid == None
sig = err & 0xff
rc = (err & 0xff00) >> 8
if sig:
- raise SubprocessError, (
+ raise SubprocessError(
"child killed by signal %d with a return code of %d"
% (sig, rc))
if rc:
- raise SubprocessError, \
- "child exited with return code %d" % rc
+ raise SubprocessError(
+ "child exited with return code %d" % rc)
# Child may have exited, but not in error, so we won't say
# anything more at this point.
"""Write a STRING to the subprocess."""
if not self.pid:
- raise SubprocessError, "no child" # ===>
+ raise SubprocessError("no child") # ===>
if select.select([],self.toChild_fdlist,[],0)[1]:
self.toChild.write(str)
self.toChild.flush()
else:
# XXX Can write-buffer full be handled better??
- raise IOError, "write to %s blocked" % self # ===>
+ raise IOError("write to %s blocked" % self) # ===>
def writeline(self, line=''):
"""Write STRING, with added newline termination, to subprocess."""
if self.control_stderr:
return self.errbuf.readPendingChars()
else:
- raise SubprocessError, "Haven't grabbed subprocess error stream."
+ raise SubprocessError("Haven't grabbed subprocess error stream.")
def readPendingLine(self):
"""Read currently pending subprocess output, up to a complete line
if self.control_stderr:
return self.errbuf.readPendingLine()
else:
- raise SubprocessError, "Haven't grabbed subprocess error stream."
+ raise SubprocessError("Haven't grabbed subprocess error stream.")
def readline(self):
"""Return next complete line of subprocess output, blocking until
if self.control_stderr:
return self.errbuf.readline()
else:
- raise SubprocessError, "Haven't grabbed subprocess error stream."
+ raise SubprocessError("Haven't grabbed subprocess error stream.")
### Subprocess Control ###
SubprocessError is raised if process is not successfully killed."""
if not self.pid:
- raise SubprocessError, "No process" # ===>
+ raise SubprocessError("No process") # ===>
elif not self.cont():
- raise SubprocessError, "Can't signal subproc %s" % self # ===>
+ raise SubprocessError("Can't signal subproc %s" % self) # ===>
# Try sending first a TERM and then a KILL signal.
keep_trying = 1
return None # ===>
time.sleep(.1)
# Only got here if subprocess is not gone:
- raise (SubprocessError,
- ("Failed kill of subproc %d, '%s', with signals %s" %
- (self.pid, self.cmd, map(lambda(x): x[0], sigs))))
+ raise SubprocessError(
+ "Failed kill of subproc %d, '%s', with signals %s" %
+ (self.pid, self.cmd, map(lambda(x): x[0], sigs)))
def __del__(self):
"""Terminate the subprocess"""
try:
l = string.atoi(line)
except ValueError:
- raise IOError, ("corrupt %s file structure"
- % self.__class__.__name__)
+ raise IOError(("corrupt %s file structure"
+ % self.__class__.__name__))
return f.read(l)
else:
# EOF.
if hasattr(f, attr):
return getattr(f, attr)
else:
- raise AttributeError, attr
+ raise AttributeError(attr)
def __repr__(self):
return "<%s of %s at %s>" % (self.__class__.__name__,
r = c.read()
show = " start:\t %s\n end:\t %s\n" % (`s`, `r`)
if r != s:
- raise IOError, "String distorted:\n%s" % show
+ raise IOError("String distorted:\n%s" % show)
#############################################################################
##### An example subprocess interfaces #####
try:
self.proc = Subprocess('ph', 1)
except:
- raise SubprocessError, ('failure starting ph: %s' % # ===>
+ raise SubprocessError('failure starting ph: %s' % # ===>
str(sys.exc_value))
def query(self, q):
if not response:
return got # ===>
elif type(response) == types.StringType:
- raise ValueError, "ph failed match: '%s'" % response # ===>
+ raise ValueError("ph failed match: '%s'" % response) # ===>
for line in response:
# convert to a dict:
line = string.splitfields(line, ':')
nextChar = self.proc.waitForPendingChar(60)
if not nextChar:
- raise SubprocessError, 'ph subprocess not responding' # ===>
+ raise SubprocessError('ph subprocess not responding') # ===>
elif nextChar == '-':
# dashed line - discard it, and continue reading:
self.proc.readline()
got = string.splitfields(got, '\n')[-1]
if got == 'ph> ': return # Ok. ===>
time.sleep(pause)
- raise SubprocessError, ('ph not responding within %s secs' %
+ raise SubprocessError('ph not responding within %s secs' %
pause * maxIter)
#############################################################################