Fri, 20 Nov 2020 10:22:58 -0800 tests: use new ParseError.format() in test-trusted.py
Martin von Zweigbergk <martinvonz@google.com> [Fri, 20 Nov 2020 10:22:58 -0800] rev 45888
tests: use new ParseError.format() in test-trusted.py Differential Revision: https://phab.mercurial-scm.org/D9351
Thu, 19 Nov 2020 15:13:39 -0800 errors: make ParseError a subtype of Abort
Martin von Zweigbergk <martinvonz@google.com> [Thu, 19 Nov 2020 15:13:39 -0800] rev 45887
errors: make ParseError a subtype of Abort I didn't plan this before, but the previous two changes made it really easy to make `ParseError` a subtype of `Abort`. It seems obvious with hindsight that I *should* have planned it :) Differential Revision: https://phab.mercurial-scm.org/D9350
Fri, 20 Nov 2020 13:24:45 -0800 tests: make doctests not depend on str(ParseError()) format
Martin von Zweigbergk <martinvonz@google.com> [Fri, 20 Nov 2020 13:24:45 -0800] rev 45886
tests: make doctests not depend on str(ParseError()) format `ParseError` implements `__bytes__`, but it doesn't implement `__str__`, so it gets the default `__str__` implementation. The next patch will make it so `ParseError` gets a `__str__` implementation, which changes the format slightly. This prepares by making us not depend on the format. Differential Revision: https://phab.mercurial-scm.org/D9349
Fri, 20 Nov 2020 09:17:38 -0800 errors: format "abort: " text in a new Abort.format() method
Martin von Zweigbergk <martinvonz@google.com> [Fri, 20 Nov 2020 09:17:38 -0800] rev 45885
errors: format "abort: " text in a new Abort.format() method This remove some duplication we had. Differential Revision: https://phab.mercurial-scm.org/D9348
Fri, 20 Nov 2020 08:51:45 -0800 errors: make formatparse() an instance method on ParseError
Martin von Zweigbergk <martinvonz@google.com> [Fri, 20 Nov 2020 08:51:45 -0800] rev 45884
errors: make formatparse() an instance method on ParseError It's just a little simpler this way. Don't ask me what the "hg: " prefix signifies to the user, I just left it as it was. I think we should consider changing the prefixes later (maybe always use "abort: ", or maybe use more specific prefixes in general). Differential Revision: https://phab.mercurial-scm.org/D9347
Thu, 19 Nov 2020 11:23:59 -0800 errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
Martin von Zweigbergk <martinvonz@google.com> [Thu, 19 Nov 2020 11:23:59 -0800] rev 45883
errors: create "similarity hint" for UnknownIdentifier eagerly in constructor No code wanted to do anything but to produce a hint from it anyway, so we might as well just store the hint in the exception (which already extended `Hint`). That way we can easily convert it to a `ConfigException` when it's parsing of configuration that fails. I was wondering if the purpose of lazily creating the string was so we don't create it in cases where it won't get printed anyway. However, I couldn't find any places where that could happen. If we do find such places, we could instead revert to making it lazy but add a function on `UnknownIdentifier` for creating the hint string. I dropped the comment saying "make sure to check fileset first, as revset can invoke fileset", which was added in 4e240d6ab898 (dispatch: offer near-edit-distance suggestions for {file,rev}set functions, 2015-01-26). I couldn't figure out what it meant. The author of that patch also did not remember the reason for it. Perhaps changes that have happened since then made it so it no longer matters. Differential Revision: https://phab.mercurial-scm.org/D9346
Thu, 19 Nov 2020 12:20:26 -0800 errors: move similarity_hint() to error module
Martin von Zweigbergk <martinvonz@google.com> [Thu, 19 Nov 2020 12:20:26 -0800] rev 45882
errors: move similarity_hint() to error module I want to be able to reuse it from `UnknownIdentifier`'s constructor. Moving it results in a new import of `difflib` in the `error` module. There was a comment at the top of `error.py` saying "Do not import anything but pycompat here, please", which was added (except for the "pycompat" bit) in 08cabecfa8a8 (errors: move revlog errors, 2009-01-11). I don't know the reason for the comment. I'm guessing the point was to not make the module depend on other Mercurial modules. If that was it, then importing `difflib` should be fine. Sorry about the churn (I moved this code from the `dispatch` module to the `scmutil` module very recently). Differential Revision: https://phab.mercurial-scm.org/D9345
Thu, 19 Nov 2020 09:19:44 -0800 errors: morph reportsimilar() into similarity_hint()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 19 Nov 2020 09:19:44 -0800] rev 45881
errors: morph reportsimilar() into similarity_hint() The next step is to eagerly create the hint in `UnknownIdentifier`'s constructor. Differential Revision: https://phab.mercurial-scm.org/D9344
Thu, 19 Nov 2020 10:29:06 -0800 errors: restructure formatparse() to clarify conditions a bit
Martin von Zweigbergk <martinvonz@google.com> [Thu, 19 Nov 2020 10:29:06 -0800] rev 45880
errors: restructure formatparse() to clarify conditions a bit The `similar` list will be calculated only for `error.UnknownIdentifier`. It was then printed only if `inst.location is None`, which is true for that exception type, but it's an indirect condition to rely on. Also, it looked from the code like it could both report similarities and print a hint. That would be a little awkward because the similarity report looks similar to the hint (both are printed within parentheses). I also added a `elif` to clarify that. I plan to refactor this more coming patches so the similarity report actually is a hint. Differential Revision: https://phab.mercurial-scm.org/D9343
Thu, 19 Nov 2020 14:55:55 -0500 pyoxidizer: run buildifier
Augie Fackler <augie@google.com> [Thu, 19 Nov 2020 14:55:55 -0500] rev 45879
pyoxidizer: run buildifier Differential Revision: https://phab.mercurial-scm.org/D9342
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 tip