Explanation
Passing a variable of type dict[str, str] into the PdfWriter.update_page_form_field_values currently gives a pretty big error message when using Pylance regarding invariance, this message is left below. Since - from what I can tell - update_page_form_field_values does not write to the fields argument, its type annotation can be safely changed into collections.Mapping as the error suggests. Since I'm not entirely confident what the message means or what else the change might bring with it, I'm opening this as an issue rather than as a PR so I can get other people's input as well.
Pylance message:
Argument of type "dict[str, str]" cannot be assigned to parameter "fields" of type "dict[str, str | list[str] | tuple[str, str, float]]" in function "update_page_form_field_values"
"dict[str, str]" is not assignable to "dict[str, str | list[str] | tuple[str, str, float]]"
Type parameter "_VT@dict" is invariant, but "str" is not the same as "str | list[str] | tuple[str, str, float]"
Consider switching from "dict" to "Mapping" which is covariant in the value typePylance(reportArgumentType)
Code Example
in https://github.com/py-pdf/pypdf/blob/main/pypdf/_writer.py#L1066 change
def update_page_form_field_values(
self,
page: Union[PageObject, list[PageObject], None],
fields: dict[str, Union[str, list[str], tuple[str, str, float]]],
flags: FA.FfBits = FFBITS_NUL,
auto_regenerate: Optional[bool] = True,
flatten: bool = False,
) -> None:
....
to
def update_page_form_field_values(
self,
page: Union[PageObject, list[PageObject], None],
fields: Mapping[str, Union[str, list[str], tuple[str, str, float]]],
flags: FA.FfBits = FFBITS_NUL,
auto_regenerate: Optional[bool] = True,
flatten: bool = False,
) -> None:
....
Explanation
Passing a variable of type
dict[str, str]into thePdfWriter.update_page_form_field_valuescurrently gives a pretty big error message when using Pylance regarding invariance, this message is left below. Since - from what I can tell -update_page_form_field_valuesdoes not write to thefieldsargument, its type annotation can be safely changed intocollections.Mappingas the error suggests. Since I'm not entirely confident what the message means or what else the change might bring with it, I'm opening this as an issue rather than as a PR so I can get other people's input as well.Pylance message:
Code Example
in https://github.com/py-pdf/pypdf/blob/main/pypdf/_writer.py#L1066 change
to