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)
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)
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
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