Beispiel #1
0
 def _wrapped(function, *args, **kwargs):
     """Call a Windows API with parameters, and handle any
     exception raised either by mapping it to a module-specific
     one or by passing it back up the chain.
     """
     try:
         return function(*args, **kwargs)
     except pywintypes.com_error as exception_info:
         (hresult_code, hresult_name, additional_info,
          parameter_in_error) = exception_info.args
         exception_string = [
             "%08X - %s" % (utils.signed_to_unsigned(hresult_code),
                            hresult_name.decode("mbcs"))
         ]
         if additional_info:
             wcode, source_of_error, error_description, whlp_file, whlp_context, scode = additional_info
             exception_string.append("    Error in: %s" %
                                     source_of_error.decode("mbcs"))
             exception_string.append(
                 "    %08X - %s" %
                 (utils.signed_to_unsigned(scode),
                  (error_description or "").decode("mbcs").strip()))
         exception = winerror_map.get(hresult_code, default_exception)
         raise exception(hresult_code, hresult_name,
                         "\n".join(exception_string))
     except pywintypes.error as exception_info:
         (errno, errctx, errmsg) = exception_info.args
         exception = winerror_map.get(errno, default_exception)
         raise exception(errno, errctx, errmsg)
     except (WindowsError, IOError) as exception_info:
         exception = winerror_map.get(exception_info.errno,
                                      default_exception)
         if exception:
             raise exception(exception_info.errno, "",
                             exception_info.strerror)
Beispiel #2
0
 def _wrapped(function, *args, **kwargs):
     """Call a Windows API with parameters, and handle any
     exception raised either by mapping it to a module-specific
     one or by passing it back up the chain.
     """
     try:
         return function(*args, **kwargs)
     except pywintypes.com_error as exception_info:
         (hresult_code, hresult_name, additional_info, parameter_in_error) = exception_info.args
         exception_string = ["%08X - %s" % (utils.signed_to_unsigned(hresult_code), hresult_name.decode("mbcs"))]
         if additional_info:
             wcode, source_of_error, error_description, whlp_file, whlp_context, scode = additional_info
             exception_string.append("    Error in: %s" % source_of_error.decode("mbcs"))
             exception_string.append(
                 "    %08X - %s"
                 % (utils.signed_to_unsigned(scode), (error_description or "").decode("mbcs").strip())
             )
         exception = winerror_map.get(hresult_code, default_exception)
         raise exception(hresult_code, hresult_name, "\n".join(exception_string))
     except pywintypes.error as exception_info:
         (errno, errctx, errmsg) = exception_info.args
         exception = winerror_map.get(errno, default_exception)
         raise exception(errno, errctx, errmsg)
     except (WindowsError, IOError) as exception_info:
         exception = winerror_map.get(exception_info.errno, default_exception)
         if exception:
             raise exception(exception_info.errno, "", exception_info.strerror)
Beispiel #3
0
    def reset_doc(self):
        if not self._dict:
            self.__doc__ = ""
            return

        headers = "Name", "Val", "Win32"
        namelen, valuelen, aliaslen = (len(h) for h in headers)

        namelen = max(namelen, len(max(self._dict, key=len)))
        aliaslen = max(aliaslen, len(max(self._key_dict.values(), key=len)))

        values = self._dict.values()
        try:
            int(values[0])
        except (ValueError, TypeError):
            valuelen = max(valuelen,
                           len(max((unicode(v) for v in values), key=len)))
            prefix = ""
            row_format = "|%%-%ds|%%-%ds|%%-%ds|" % (namelen, valuelen,
                                                     aliaslen)
            converter = unicode
        else:
            valuelen = max(
                valuelen, 2 *
                ((1 +
                  max(len("%x" % utils.signed_to_unsigned(v))
                      for v in values)) // 2))
            prefix = "0x"
            row_format = "|%%-%ds|%s%%0%dX|%%-%ds|" % (namelen, prefix,
                                                       valuelen, aliaslen)
            converter = utils.signed_to_unsigned
        header_format = "|%%-%ds|%%-%ds|%%-%ds|" % (namelen, len(prefix) +
                                                    valuelen, aliaslen)

        separator = "+" + namelen * "-" + "+" + (
            len(prefix) + valuelen) * "-" + "+" + aliaslen * "-" + "+"
        header = "+" + namelen * "=" + "+" + (
            len(prefix) + valuelen) * "=" + "+" + aliaslen * "=" + "+"
        row = row_format + "\n" + separator
        rows = ((name, converter(value), self._key_dict[value])
                for (name, value) in self._dict.items())
        table = "\n".join([
            separator,
            header_format % headers,
            header,
            "\n".join(row % r
                      for r in sorted(rows, key=operator.itemgetter(1))),
        ])
        self.__doc__ = self.preamble + "\n\n" + table
Beispiel #4
0
    def reset_doc(self):
        if not self._dict:
            self.__doc__ = ""
            return

        headers = "Name", "Val", "Win32"
        namelen, valuelen, aliaslen = (len (h) for h in headers)

        namelen = max(namelen, len(max(self._dict, key=len)))
        aliaslen = max(aliaslen, len(max(self._key_dict.values(), key=len)))

        values = self._dict.values()
        try:
            int(values[0])
        except (ValueError, TypeError):
            valuelen = max(valuelen, len(max((unicode(v) for v in values), key=len)))
            prefix = ""
            row_format = "|%%-%ds|%%-%ds|%%-%ds|" % (namelen, valuelen, aliaslen)
            converter = unicode
        else:
            valuelen = max(valuelen, 2 *((1 + max(len("%x" % utils.signed_to_unsigned(v)) for v in values)) // 2))
            prefix = "0x"
            row_format = "|%%-%ds|%s%%0%dX|%%-%ds|" % (namelen, prefix, valuelen, aliaslen)
            converter = utils.signed_to_unsigned
        header_format = "|%%-%ds|%%-%ds|%%-%ds|" % (namelen, len(prefix) + valuelen, aliaslen)

        separator = "+" + namelen * "-" + "+" + (len(prefix) + valuelen) * "-" + "+" + aliaslen * "-" + "+"
        header = "+" + namelen * "=" + "+" + (len(prefix) + valuelen) * "=" + "+" + aliaslen * "=" + "+"
        row = row_format + "\n" + separator
        rows = ((name, converter(value), self._key_dict[value]) for (name, value) in self._dict.items())
        table = "\n".join([
            separator,
            header_format % headers,
            header,
            "\n".join(row % r for r in sorted(rows, key=operator.itemgetter(1))),
        ])
        self.__doc__ = self.preamble + "\n\n" + table