Matt Harbison <matt_harbison@yahoo.com> [Thu, 25 Mar 2021 19:06:28 -0400] rev 46423
typing: disable processing of mercurial/upgrade_utils/actions.py
There was a recent regression in pytype that causes processing to stall and
consume memory, and it doesn't sound like it will be fixed any time soon.
Differential Revision: https://phab.mercurial-scm.org/D10273
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 Mar 2021 18:37:25 +0100] rev 46422
re2: feed unicode string to re2 module when necessary
My previous test were using the `pyre2` Python project, that wrap the Google RE2 library
in python as a `re2` module and accept bytes as input. However the `fb-re2`
Python project is also offering a wrapping of the Google RE2 library in python
as a `re2` module ans accept only unicode on python3. So we detect this
situation and convert thing to unicode when necessary.
Hooray…
We should consider using a rust wrapping for regexp handling. We needs regexps
in Rust anyway and this give use more control with less variants and more
sanity.
Differential Revision: https://phab.mercurial-scm.org/D10284
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 02:09:23 -0500] rev 46421
typing: rewrite a conditional assignment to unconfuse pytype
Otherwise, pytype and PyCharm flags it:
File "/mnt/c/Users/Matt/hg/mercurial/localrepo.py", line 2903, in wlock: No attribute 'held' on _weakref.ReferenceType[nothing] [attribute-error]
In Optional[Union[Any, _weakref.ReferenceType[nothing]]]
File "/mnt/c/Users/Matt/hg/mercurial/localrepo.py", line 2904, in wlock: No attribute 'lock' on _weakref.ReferenceType[nothing] [attribute-error]
In Optional[Union[Any, _weakref.ReferenceType[nothing]]]
Differential Revision: https://phab.mercurial-scm.org/D10215
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 02:07:34 -0500] rev 46420
typing: add assertions to localrepo.py to appease pytype
Differential Revision: https://phab.mercurial-scm.org/D10214
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 21:19:17 -0500] rev 46419
obsutil: maintain a homogenous list when computing successors
In practice, this wasn't a problem because of an internal check for an empty
list, but it avoids the following pytype error:
File "/mnt/c/Users/Matt/hg/mercurial/obsutil.py", line 823, in successorsandmarkers: No attribute 'markers' on List[nothing] [attribute-error]
In Union[Any, List[nothing], _succs]
Differential Revision: https://phab.mercurial-scm.org/D10213
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 23:28:56 -0500] rev 46418
typing: add an assertion to verify.py to appease pytype
Differential Revision: https://phab.mercurial-scm.org/D10212
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 20:25:12 -0500] rev 46417
typing: add an assertion to mercurial/hgweb/webcommands.py to help pytype
I have no idea why this is needed, given the check immediately above. But
without it, I'm getting this:
File "/mnt/c/Users/Matt/hg/mercurial/hgweb/webcommands.py", line 1164, in filelog: Missing parameter 'toline' in call to function mercurial.dagop.blockdescendants [missing-parameter]
Expected: (fctx, fromline, toline)
Actually passed: (fctx, fromline)
File "/mnt/c/Users/Matt/hg/mercurial/hgweb/webcommands.py", line 1166, in filelog: Missing parameter 'toline' in call to function mercurial.dagop.blockancestors [missing-parameter]
Expected: (fctx, fromline, toline, followfirst)
Actually passed: (fctx, fromline)
Differential Revision: https://phab.mercurial-scm.org/D10211
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 19:02:07 -0500] rev 46416
crecord: null out the curses attribute with `None` on failure to import
Pytype got really confused that this could be `Union[module, bool]`, and spewed
about tons of attributes that are not available on `bool`.
Differential Revision: https://phab.mercurial-scm.org/D10210
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 00:41:37 -0500] rev 46415
typing: fix directives mangled by black
Differential Revision: https://phab.mercurial-scm.org/D10209
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 00:40:46 -0500] rev 46414
typing: disable module attribute warnings for properly conditionalized code
Differential Revision: https://phab.mercurial-scm.org/D10208
Matt Harbison <matt_harbison@yahoo.com> [Sat, 13 Mar 2021 00:38:59 -0500] rev 46413
typing: disable import error warnings that are already handled
I'm assuming that the cffi ones are handled somewhere, but the others definitely
are.
Differential Revision: https://phab.mercurial-scm.org/D10207
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 17:22:35 -0500] rev 46412
typing: disable a few errors when accessing Windows specific attributes
This is already guarded with conditionals. The entire win32 module is
conditionally loaded.
File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 162, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr]
File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 163, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr]
File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 174, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr]
File "/mnt/c/Users/Matt/hg/mercurial/utils/procutil.py", line 175, in <module>: No attribute 'winstdout' on module 'mercurial.posix' [module-attr]
Differential Revision: https://phab.mercurial-scm.org/D10206
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 16:55:18 -0500] rev 46411
typing: disable a few errors calling py3.7+ functions in resourceutil.py
There's a graceful fallback when these methods are unavailable.
Differential Revision: https://phab.mercurial-scm.org/D10205
Raphaël Gomès <rgomes@octobus.net> [Wed, 17 Mar 2021 12:06:49 +0100] rev 46410
formatting: fix redundant parentheses
These were introduced by 0d055849d5f9d682ef931d2566b760d5c6bf7e52.
Differential Revision: https://phab.mercurial-scm.org/D10229
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 20:19:12 -0500] rev 46409
wsgicgi: switch the default PATH_INFO back to str
It looks like everything here is meant to be str, and regressed in 687b865b95ad.
Pytype didn't flag this, but is really confused about the range of possible
types for the dictionary values, and flagged missing `lower()` on various types
in this area.
Differential Revision: https://phab.mercurial-scm.org/D10204
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 18:55:06 -0500] rev 46408
crecord: convert an instance of bytes to str
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/crecord.py", line 1154, in printstring: Function _CursesWindow.addstr was called with the wrong arguments [wrong-arg-types]
Expected: (self, str: str, ...)
Actually passed: (self, str: bytes, ...)
Differential Revision: https://phab.mercurial-scm.org/D10203
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 18:51:22 -0500] rev 46407
crecord: change str literals to byte literals
Differential Revision: https://phab.mercurial-scm.org/D10202
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Mar 2021 17:59:02 -0500] rev 46406
bisect: replace a missing method on the list primitive
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 1095, in bisect: No attribute 'last' on list [attribute-error]
In list
Differential Revision: https://phab.mercurial-scm.org/D10201
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:09:55 -0500] rev 46405
typing: disable a module-attr warning in the worker module's py2 code
Differential Revision: https://phab.mercurial-scm.org/D10183
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:07:04 -0500] rev 46404
wireprotoserver: convert ErrorResponse to bytes
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 236, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
__iter__
File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 239, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
__iter__
File "/mnt/c/Users/Matt/hg/mercurial/wireprotov2server.py", line 91, in handlehttpv2request: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10182
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 21:02:03 -0500] rev 46403
verify: convert an exception to bytes before logging
I'm not entirely sure why this code appears to be trying to convert twice, but
it was flagged by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/verify.py", line 84, in _exc: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Exception)
The following methods aren't implemented on Exception:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10181
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 19:50:14 -0500] rev 46402
typing: add an assertion to the upgrade engine to help pytype
Differential Revision: https://phab.mercurial-scm.org/D10180
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 19:21:58 -0500] rev 46401
subrepo: handle unexpected file types from git gracefully
This was flagged by pytype because `tar.extractfile(...)` can return None if the
entry is not a file or symlink. I don't think that git supports other types,
but better safe than sorry.
Differential Revision: https://phab.mercurial-scm.org/D10179
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:45:18 -0500] rev 46400
patch: convert a UI message to bytes when editing a patch
Differential Revision: https://phab.mercurial-scm.org/D10178
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:33:39 -0500] rev 46399
merge: force an exception message to bytes before printing as a warning
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/merge.py", line 1346, in batchremove: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: str)
Differential Revision: https://phab.mercurial-scm.org/D10177
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 18:09:55 -0500] rev 46398
hg: convert an exception to bytes in the repo creation exception handler
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/hg.py", line 77, in _local: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: Union[TypeError, ValueError])
Differential Revision: https://phab.mercurial-scm.org/D10176
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:55:52 -0500] rev 46397
typing: add an assertion instead of blacklisting mercurial/extensions.py
Differential Revision: https://phab.mercurial-scm.org/D10175
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:27:31 -0500] rev 46396
debug: convert a few exceptions to bytes before wrapping in another error
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2118, in debugmanifestfulltextcache: Function Abort.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, message: Union[bytearray, bytes, memoryview], ...)
Actually passed: (self, message: mercurial.error.LookupError, ...)
File "/mnt/c/Users/Matt/hg/mercurial/debugcommands.py", line 2453, in debugobsolete: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: ValueError)
The following methods aren't implemented on ValueError:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10174
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:16:29 -0500] rev 46395
grep: convert an exception to bytes for a warning message
Caught by pytype:
File "/mnt/c/Users/Matt/hg/mercurial/commands.py", line 3457, in grep: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
Expected: (self, ints: Iterable[int])
Actually passed: (self, ints: re.error)
The following methods aren't implemented on re.error:
__iter__
Differential Revision: https://phab.mercurial-scm.org/D10173
Matt Harbison <matt_harbison@yahoo.com> [Thu, 11 Mar 2021 17:14:30 -0500] rev 46394
morestatus: convert a UI message about merge conflicts to bytes
Differential Revision: https://phab.mercurial-scm.org/D10172