diff --git a/comtypes/_comobject.py b/comtypes/_comobject.py index 0ce4512b6..e1122fb4c 100644 --- a/comtypes/_comobject.py +++ b/comtypes/_comobject.py @@ -76,8 +76,7 @@ def winerror(exc): # cases we return a generic error code. return E_FAIL raise TypeError( - "Expected comtypes.COMERROR or WindowsError instance, got %s" - % type(exc).__name__ + f"Expected comtypes.COMERROR or WindowsError instance, got {type(exc).__name__}" ) @@ -178,7 +177,7 @@ def call_without_this(this, *args): args[args_out_idx[0]][0] = result elif args_out != 0: if len(result) != args_out: - msg = "Method should have returned a %s-tuple" % args_out + msg = f"Method should have returned a {args_out}-tuple" raise ValueError(msg) for i, value in enumerate(result): args[args_out_idx[i]][0] = value @@ -198,7 +197,7 @@ def call_without_this(this, *args): except (ValueError, TypeError): msg = str(details) else: - msg = "%s: %s" % (source, descr) + msg = f"{source}: {descr}" hr = HRESULT_FROM_WIN32(hr) return ReportError(msg, iid=interface._iid_, clsid=clsid, hresult=hr) except WindowsError as details: @@ -251,7 +250,7 @@ def find_method(self, fq_name, mthname): return getattr(self.inst, mthname) def find_impl(self, interface, mthname, paramflags, idlflags): - fq_name = "%s_%s" % (interface.__name__, mthname) + fq_name = f"{interface.__name__}_{mthname}" if interface._case_insensitive_: # simple name, like 'QueryInterface' mthname = self.names.get(mthname.lower(), mthname) @@ -306,7 +305,7 @@ def _create_vtbl_type(fields, itf): class Vtbl(Structure): _fields_ = fields - Vtbl.__name__ = "Vtbl_%s" % itf.__name__ + Vtbl.__name__ = f"Vtbl_{itf.__name__}" _vtbl_types[fields] = Vtbl return Vtbl diff --git a/comtypes/_memberspec.py b/comtypes/_memberspec.py index 1797c3f2b..fad70987a 100644 --- a/comtypes/_memberspec.py +++ b/comtypes/_memberspec.py @@ -64,7 +64,7 @@ def _resolve_argspec( elif typ is ctypes.POINTER(VARIANT): defval = ctypes.pointer(VARIANT.missing) else: - # msg = ("'optional' only allowed for VARIANT and VARIANT*, not for %s" % typ.__name__) + # msg = f"'optional' only allowed for VARIANT and VARIANT*, not for {typ.__name__}" # warnings.warn(msg, IDLWarning, stacklevel=2) defval = typ() if defval is _NOTHING: @@ -176,11 +176,11 @@ def COMMETHOD(idlflags, restype, methodname, *argspec) -> _ComMemberSpec: helptext = "".join(t for t in idlflags if isinstance(t, helpstring)) or None paramflags, argtypes = _resolve_argspec(argspec) if "propget" in idlflags: - name = "_get_%s" % methodname + name = f"_get_{methodname}" elif "propput" in idlflags: - name = "_set_%s" % methodname + name = f"_set_{methodname}" elif "propputref" in idlflags: - name = "_setref_%s" % methodname + name = f"_setref_{methodname}" else: name = methodname return _ComMemberSpec( @@ -382,7 +382,7 @@ def __iter__(self) -> Iterator[Tuple[str, _UnionT[property, "named_property"]]]: # Hm, must be a descriptor where the __get__ method # returns a bound object having __getitem__ and # __setitem__ methods. - prop = named_property("%s.%s" % (self._cls_name, name), fget, fset, doc) + prop = named_property(f"{self._cls_name}.{name}", fget, fset, doc) yield (name, prop) def to_propget_keys(self, m: _MemberSpec) -> Tuple[str, _DocType, int]: @@ -605,11 +605,11 @@ def __setitem__(self, index, value): self.fset(self.instance, index, value) def __repr__(self): - return "" % (self.name, id(self)) + return f"" def __iter__(self): """Explicitly disallow iteration.""" - msg = "%r is not iterable" % self.name + msg = f"{self.name!r} is not iterable" raise TypeError(msg) @@ -630,4 +630,4 @@ def __set__(self, instance): raise AttributeError("Unsettable attribute") def __repr__(self): - return "" % (self.name, id(self)) + return f"" diff --git a/comtypes/_post_coinit/_cominterface_meta_patcher.py b/comtypes/_post_coinit/_cominterface_meta_patcher.py index 78e064e66..21da07a3e 100644 --- a/comtypes/_post_coinit/_cominterface_meta_patcher.py +++ b/comtypes/_post_coinit/_cominterface_meta_patcher.py @@ -122,8 +122,8 @@ def __setitem__(self, index, value): else: raise except TypeError: - msg = "%r object does not support item assignment" - raise TypeError(msg % type(self)) + msg = f"{type(self)!r} object does not support item assignment" + raise TypeError(msg) def iterator(itf: Type) -> None: diff --git a/comtypes/automation.py b/comtypes/automation.py index fa7b68c86..61797dd8e 100644 --- a/comtypes/automation.py +++ b/comtypes/automation.py @@ -209,14 +209,14 @@ def __del__(self): def __repr__(self): if self.vt & VT_BYREF: - return "VARIANT(vt=0x%x, byref(%r))" % (self.vt, self[0]) + return f"VARIANT(vt=0x{self.vt:x}, byref({self[0]!r}))" elif self is type(self).null: return "VARIANT.null" elif self is type(self).empty: return "VARIANT.empty" elif self is type(self).missing: return "VARIANT.missing" - return "VARIANT(vt=0x%x, %r)" % (self.vt, self.value) + return f"VARIANT(vt=0x{self.vt:x}, {self.value!r})" @classmethod def from_param(cls, value): @@ -425,7 +425,7 @@ def _set_value(self, value): else: self.vt = _ctype_to_vartype[type(ref)] | VT_BYREF else: - raise TypeError("Cannot put %r in VARIANT" % value) + raise TypeError(f"Cannot put {value!r} in VARIANT") # buffer -> SAFEARRAY of VT_UI1 ? # c:/sf/pywin32/com/win32com/src/oleargs.cpp 197 @@ -521,7 +521,7 @@ def _get_value(self, dynamic=False): typ = _vartype_to_ctype[self.vt & ~VT_ARRAY] return cast(self._.pparray, _midlSAFEARRAY(typ)).unpack() else: - raise NotImplementedError("typecode %d = 0x%x)" % (vt, vt)) + raise NotImplementedError(f"typecode {vt} = 0x{vt:x})") def __getitem__(self, index): if index != 0: @@ -711,17 +711,16 @@ class tagEXCEPINFO(Structure): scode: int def __repr__(self): - return "" % ( - ( - self.wCode, - self.bstrSource, - self.bstrDescription, - self.bstrHelpFile, - self.dwHelpContext, - self.pfnDeferredFillIn, - self.scode, - ), + info = ( + self.wCode, + self.bstrSource, + self.bstrDescription, + self.bstrHelpFile, + self.dwHelpContext, + self.pfnDeferredFillIn, + self.scode, ) + return f"" tagEXCEPINFO._fields_ = [ @@ -917,7 +916,7 @@ def Invoke(self, dispid: int, *args: Any, **kw: Any) -> Any: raise COMError( hresult, text, - ("TypeError: Parameter %s" % (argerr.value + 1), args), + (f"TypeError: Parameter {argerr.value + 1}", args), ) raise return result._get_value(dynamic=True)