Skip to content

Conversation

@tsibley
Copy link
Contributor

@tsibley tsibley commented Sep 5, 2024

This started failing recently with newer typeshed stubs for tarfile.open() (and/or newer stubs for requests.Response?).

mypy fails with:

nextstrain/cli/runner/conda.py:220: error: Argument "fileobj" to "open" has incompatible type "Union[HTTPResponse, Any]"; expected "Optional[IO[bytes]]"

and pyright with:

nextstrain/cli/runner/conda.py:220:14 - error: No overloads for "open" match the provided arguments (reportCallIssue)
nextstrain/cli/runner/conda.py:220:58 - error: Argument of type "Literal['r|*']" cannot be assigned to parameter "mode" of type "_FileCreationModes" in function "open"
  Type "Literal['r|*']" is not assignable to type "_FileCreationModes"
    "Literal['r|*']" is not assignable to type "Literal['a']"
    "Literal['r|*']" is not assignable to type "Literal['w']"
    "Literal['r|*']" is not assignable to type "Literal['x']" (reportArgumentType)

I'm guessing the difference is because they match the different overloads of tarfile.open().

I dug into it a little¹, but the stubs here seem a bit scattershot at the moment so I stopped and went with an ignore. An alternative fix is casting response.raw to BinaryIO, but that seemed uglier and worse than an ignore.

¹ See python/typeshed#12117 (implicated) and python/typeshed#12181 (open, may fix?) and python/typeshed#12182 (open, may fix?)

Checklist

  • Checks pass

This started failing recently with newer typeshed stubs for
tarfile.open() (and/or newer stubs for requests.Response?).

mypy fails with:

    nextstrain/cli/runner/conda.py:220: error: Argument "fileobj" to "open" has incompatible type "Union[HTTPResponse, Any]"; expected "Optional[IO[bytes]]"

and pyright with:

    nextstrain/cli/runner/conda.py:220:14 - error: No overloads for "open" match the provided arguments (reportCallIssue)
    nextstrain/cli/runner/conda.py:220:58 - error: Argument of type "Literal['r|*']" cannot be assigned to parameter "mode" of type "_FileCreationModes" in function "open"
      Type "Literal['r|*']" is not assignable to type "_FileCreationModes"
        "Literal['r|*']" is not assignable to type "Literal['a']"
        "Literal['r|*']" is not assignable to type "Literal['w']"
        "Literal['r|*']" is not assignable to type "Literal['x']" (reportArgumentType)

I'm guessing the difference is because they match the different
overloads of tarfile.open().

I dug into it a little¹, but the stubs here seem a bit scattershot at
the moment so I stopped and went with an ignore.  An alternative fix is
casting response.raw to BinaryIO, but that seemed uglier and worse than
an ignore.

¹ See <python/typeshed#12117> (implicated)
  and <python/typeshed#12181> (open, may fix?)
  and <python/typeshed#12182> (open, may fix?)
@tsibley tsibley changed the title Fix type checking runner.conda: Ignore newly failing type check for tarfile.open() Sep 5, 2024
@tsibley tsibley force-pushed the trs/devel/type-checking branch from c79a8f3 to 73ed6cb Compare September 5, 2024 20:54
@tsibley tsibley merged commit e03aa2d into master Sep 5, 2024
@tsibley tsibley deleted the trs/devel/type-checking branch September 5, 2024 22:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants