Skip to content
  • Matt Harbison's avatar
    typing: add type hints to pycompat.bytestr · 55d45d0de4e7
    Matt Harbison authored
    The problem with leaving pytype to its own devices here was that for functions
    that returned a bytestr, pytype inferred `Union[bytes, int]`.  It now accepts
    that it can be treated as plain bytes.
    
    I wasn't able to figure out the arg type for `__getitem__`- `SupportsIndex`
    (which PyCharm indicated is how the superclass function is typed) got flagged:
    
        File "/mnt/c/Users/Matt/hg/mercurial/pycompat.py", line 236, in __getitem__:
            unsupported operand type(s) for item retrieval: bytestr and SupportsIndex [unsupported-operands]
          Function __getitem__ on bytestr expects int
    
    But some caller got flagged when I marked it as `int`.
    
    There's some minor spillover problems elsewhere- pytype doesn't seem to
    recognize that `bytes.startswith()` can optionally take a 3rd and 4th arg, so
    those few places have the warning disabled.  It also flags where the tar API is
    being abused, but that would be a tricky refactor (and would require typing
    extensions until py3.7 is...
    55d45d0de4e7