# HG changeset patch # User Augie Fackler # Date 1311625067 18000 # Node ID 144e97421f6bfafbe641291a5deca38bf7997e28 # Parent a4435770cf57cc88ba2f31b64965c06c34cd31ca dispatch: use safehasattr instead of hasattr diff -r a4435770cf57 -r 144e97421f6b mercurial/dispatch.py --- a/mercurial/dispatch.py Mon Jul 25 16:36:56 2011 -0500 +++ b/mercurial/dispatch.py Mon Jul 25 15:17:47 2011 -0500 @@ -159,16 +159,16 @@ elif m in "zlib".split(): ui.warn(_("(is your Python install correct?)\n")) except IOError, inst: - if hasattr(inst, "code"): + if util.safehasattr(inst, "code"): ui.warn(_("abort: %s\n") % inst) - elif hasattr(inst, "reason"): + elif util.safehasattr(inst, "reason"): try: # usually it is in the form (errno, strerror) reason = inst.reason.args[1] except (AttributeError, IndexError): # it might be anything, for example a string reason = inst.reason ui.warn(_("abort: error: %s\n") % reason) - elif hasattr(inst, "args") and inst.args[0] == errno.EPIPE: + elif util.safehasattr(inst, "args") and inst.args[0] == errno.EPIPE: if ui.debugflag: ui.warn(_("broken pipe\n")) elif getattr(inst, "strerror", None): @@ -338,7 +338,7 @@ ui.debug("alias '%s' shadows command '%s'\n" % (self.name, self.cmdname)) - if hasattr(self, 'shell'): + if util.safehasattr(self, 'shell'): return self.fn(ui, *args, **opts) else: try: @@ -506,7 +506,7 @@ cmd = aliases[0] fn = entry[0] - if cmd and hasattr(fn, 'shell'): + if cmd and util.safehasattr(fn, 'shell'): d = lambda: fn(ui, *args[1:]) return lambda: runcommand(lui, None, cmd, args[:1], ui, options, d, [], {})