Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 17:25:43 -0500] rev 43538
changegroup: suppress pytype error that's wrong
Differential Revision: https://phab.mercurial-scm.org/D7293
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 17:23:47 -0500] rev 43537
changegroup: avoid shadowing a set with an int
This confuses the heck out of pytype, and I basically agree with it
that this shadowing is confusing. There's a chance this causes some
memory to be freed later, but I think it's probably not worth worrying
about for now.
Differential Revision: https://phab.mercurial-scm.org/D7292
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 17:19:33 -0500] rev 43536
bundle2: more pytype suppressions around bytestring
We clearly need to work around this somehow.
Differential Revision: https://phab.mercurial-scm.org/D7291
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 16:26:53 -0500] rev 43535
archival: suppress some incorrect pytype failures
Again, I suspect some missing coverage in type stubs for the
stdlib. I'll revisit these later.
Differential Revision: https://phab.mercurial-scm.org/D7288
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:42:30 -0500] rev 43534
simplemerge: disable a pytype error where it's just confused
Differential Revision: https://phab.mercurial-scm.org/D7287
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:42:12 -0500] rev 43533
match: suppress error about subscripting an exception
I get the sense I should file a bug about subscripting Exception subclasses.
Differential Revision: https://phab.mercurial-scm.org/D7286
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:35:44 -0500] rev 43532
vfs: more attribute suppressions
Differential Revision: https://phab.mercurial-scm.org/D7285
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:35:21 -0500] rev 43531
mdiff: mark diffopts as having dynamic attributes
This class looks like we could move it to being an attrs and life
would be better, but let's do that later.
Differential Revision: https://phab.mercurial-scm.org/D7284
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:29:08 -0500] rev 43530
vfs: suppress some pytype errors around us using a private attribute
Looking at threading._MainThread seems like we're probably a little
unsupported, but since this code appears to work on both Python 2 and
3 I'm not going to sweat this for now.
Differential Revision: https://phab.mercurial-scm.org/D7282
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:24:44 -0500] rev 43529
wireprototypes: disable pytype where it's just confused
By inspection validnames is always a Set[bytes] here, but for some
reason pytype is convinced it's a bytes. Let's disable the error for now.
Differential Revision: https://phab.mercurial-scm.org/D7281
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:16:04 -0500] rev 43528
scmposix: another suppression on IOError subscripting
As before, this will clear up when we move to Python 3-only.
Differential Revision: https://phab.mercurial-scm.org/D7280
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:15:42 -0500] rev 43527
pvec: add an explicit type hint to help pytype
Differential Revision: https://phab.mercurial-scm.org/D7279
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:12:46 -0500] rev 43526
procutil: suppress pytype warnings around windows-only attributes
Differential Revision: https://phab.mercurial-scm.org/D7278
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:03:02 -0500] rev 43525
posix: add a pytype suppression
This one seems a little sketchier than the others, but this will clean
up when we're Python 3-only.
Differential Revision: https://phab.mercurial-scm.org/D7276
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:48:22 -0500] rev 43524
color: suppress pytype warning on a windows-only module
Differential Revision: https://phab.mercurial-scm.org/D7274
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:20:27 -0500] rev 43523
compression: tell pytype to not sweat a missing `zstd` module
Differential Revision: https://phab.mercurial-scm.org/D7273
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 17:46:26 -0500] rev 43522
pytype: don't warn us about ignored-on-py3 metaclasses
We can remove this when we're Python 3-only, but for now it's just too
awkward to deal with and it's harmless.
Differential Revision: https://phab.mercurial-scm.org/D7272
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:12:53 -0500] rev 43521
linelog: be more careful about types before looking for _target attribute
Without this, pytype (correctly) complains that fakejge might not have
a _cmprev attribute. We're operating on some constraints not
expressible in the type system, so we detect the invalid case and
raise a nicer exception now.
Sadly, we also need an `assert` to give PyType a clue that we know
what we're doing, but I can absolutely live with that.
Differential Revision: https://phab.mercurial-scm.org/D7271
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:11:29 -0500] rev 43520
linelog: suppress annoying pytype warning about an ignored metaclass
This isn't actively hurting us right now, and it's not trivial to set
up this metaclass correctly on both Python 2 and Python 3 without
dragging in all of `six`, but we still get lots of typechecking
goodness with this error suppressed.
Differential Revision: https://phab.mercurial-scm.org/D7270
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:10:09 -0500] rev 43519
hgignore: ignore generated pytype stubs
Differential Revision: https://phab.mercurial-scm.org/D7269
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:09:36 -0500] rev 43518
hghave: add a check for pytype, Google's Python type checker
I'm not unbiased, but I strongly prefer pytype to mypy: it does more
inference, so we don't need as many annontations. In theory we can use
both, but since I'm doing some tinkering with pytype I figured I'd
just try setting it up.
Differential Revision: https://phab.mercurial-scm.org/D7268
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:13:23 -0500] rev 43517
encoding: define local identify functions with explicit type comments
This removes some obfuscation as far as pytype is concerned and
corrects many bogus type errors.
Differential Revision: https://phab.mercurial-scm.org/D7267
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:19:23 -0500] rev 43516
vfs: add NotImplementedError version of join
Again, this helps out pytype.
Differential Revision: https://phab.mercurial-scm.org/D7266
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:11:30 -0500] rev 43515
vfs: add a NotImplementedError implementation of __call__
This helps pytype considerably on this file.
Differential Revision: https://phab.mercurial-scm.org/D7265
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:19:56 -0500] rev 43514
vfs: fix erroneous bytes constants
Detected with pytype.
Differential Revision: https://phab.mercurial-scm.org/D7264
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:17:38 -0500] rev 43513
pvec: migrate to modern integer division
Detected with pytype.
Differential Revision: https://phab.mercurial-scm.org/D7263
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 17:46:12 -0500] rev 43512
templateutil: fix a missing ABCMeta assignment
Caught by pytype.
Differential Revision: https://phab.mercurial-scm.org/D7262
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:15:00 -0500] rev 43511
pvec: fix overlooked chr() call
Caught by pytype.
Differential Revision: https://phab.mercurial-scm.org/D7261
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 15:29:28 -0500] rev 43510
vfs: another bytes-str confusion on thread name
Differential Revision: https://phab.mercurial-scm.org/D7260
Augie Fackler <augie@google.com> [Wed, 06 Nov 2019 14:19:05 -0500] rev 43509
statprof: correctly always pass a str as the thread name
Caught by pytype.
Differential Revision: https://phab.mercurial-scm.org/D7259
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Nov 2019 13:46:16 +0100] rev 43508
rust-status: remove dead code
The `walk_explicit` function is only called when using a prefix matcher, which
the Rust code does not yet support. This function will return in a future
patch, probably with a different signature for performance reasons.
With it, the `files` argument and its interface code can be removed for now.
Differential Revision: https://phab.mercurial-scm.org/D7253
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Nov 2019 18:32:00 -0500] rev 43507
hghave: disallow symlinks on Windows
Symlinks on Windows require either a special priviledge, or enabling Developer
Mode. It's probably the latter that is enabled on the new CI machine. But
since Mercurial itself is saying no to symlinks on Windows, the tests for
symlinks shouldn't be attempted. This should fix a lot of the noise in the py3
tests.
Differential Revision: https://phab.mercurial-scm.org/D7233
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 15:00:44 -0800] rev 43506
repoview: avoid wrapping changelog if there's nothing to filter
This simplifies the code a bit by moving the optimizaton for no
filtered revisions to one place. I assume it also makes working with
repos without obsmarkers a little faster, but it doesn't seem
significant.
Differential Revision: https://phab.mercurial-scm.org/D7248
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:33:02 -0800] rev 43505
repoview: move changelog.flags() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7247
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:31:50 -0800] rev 43504
repoview: move changelog.parentrevs() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7246
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:23:32 -0800] rev 43503
repoview: move changelog.linkrev() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7245
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:22:25 -0800] rev 43502
repoview: move changelog.node() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7244
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:21:47 -0800] rev 43501
repoview: move changelog.rev() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7243
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:17:58 -0800] rev 43500
repoview: move changelog.strip() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7242
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:16:46 -0800] rev 43499
repoview: move changelog.headrevs() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7241
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:14:45 -0800] rev 43498
repoview: move changelog.revs() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7240
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:12:10 -0800] rev 43497
repoview: move changelog.__iter__() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7239
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:11:30 -0800] rev 43496
repoview: move changelog.__contains__() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7238
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:07:08 -0800] rev 43495
repoview: move changelog.tiprev() override to filteredchangelog
Differential Revision: https://phab.mercurial-scm.org/D7237
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:06:11 -0800] rev 43494
repoview: wrap changelog class when filtering
The class doesn't yet do anything. I'll move the filter-aware
overrides from the changelog class over one by one to this class in
coming patches. That will leave the changelog class simpler and will
centralize more of the filtering logic to repoview. I could not
measure any performance difference.
Differential Revision: https://phab.mercurial-scm.org/D7236
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:00:46 -0800] rev 43493
repoview: extract a function for wrapping changelog
I would like to clean up the changelog class by moving out knowledge
of filtering. The filtering will instead be done in a class that wraps
the changelog. This patch prepares for that.
Differential Revision: https://phab.mercurial-scm.org/D7235
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 14:42:08 -0800] rev 43492
revlog: move tiprev() from changelog up to revlog
This makes the changelog override simpler and it seems more
consistent.
Differential Revision: https://phab.mercurial-scm.org/D7250
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Nov 2019 18:25:13 -0500] rev 43491
tests: fix a few `(no-windows !)` conditionals that are really `(symlink !)`
The CI for py3 is assuming that symlinks are possible (they are when running as
Administrator or when Developer Mode is enabled), and these popped up.
Differential Revision: https://phab.mercurial-scm.org/D7232
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Oct 2019 17:16:28 +0100] rev 43490
rust-matchers: add `Matcher` trait and implement `AlwaysMatcher`
In our quest of a faster Mercurial, we have arrived at the point where we need
to implement the matchers in Rust.
This RFC mainly for the `Matcher` trait to see if the changes proposed feel
fine to people with more experience on the matter. While the `AlwaysMatcher`
implementation is here as a trivial example, it should be the first step
towards matchers use in Rust as it is currently the only supported one.
Notable changes:
- `exact` is renamed to `exact_match`
- enums for `visit*` methods with `Recursive` instead of `'all'`, etc.
- a new `roots`, separate from `file_set`
- no `bad`, `explicitdir` or `traversedir` functions as they can be passed
to the high functions instead of the matchers
Thanks to Martin for suggesting the last two (most important) changes and for
reaching out to help a few weeks ago.
Differential Revision: https://phab.mercurial-scm.org/D7178
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Nov 2019 13:19:24 -0800] rev 43489
merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Nov 2019 00:16:44 +0100] rev 43488
perf: add a way to benchmark `dirstate.status`
Getting more details about time spend in this specific internal bit is
meaningful.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Oct 2019 11:12:17 -0700] rev 43487
largefiles: delete obsolete and unused repo.push()
The function was removed from localrepo in 4d52e6eb98ea (locarepo:
remove the `push` method (API), 2014-09-25).
Differential Revision: https://phab.mercurial-scm.org/D7174
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 22 Oct 2019 10:01:48 -0400] rev 43486
censor: document that some commands simply ignore censored data
I can't see a benefit for hg grep to ever error out early when it
encounters censored data.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 22 Oct 2019 09:56:40 -0400] rev 43485
grep: warn on censored revisions instead of erroring out
We need most of the grep logic to go through in case we encounter a
censored revision, so we just return a None body for a censored node,
and we stop just short of trying to record matches with the contents
of that censored body. The other parts such as recording that the
censored file has been considered at this revision needs to go into
the proper dicts.
I have also gotten weary of all the abbreviations, so while I did a
small refactor to move the file-data-getting operation into a common
function, I also expanded the abbreviations of the relevant variables
within this little function. Hopefully some day this helps someone
figure out what all the abbreviations mean.
Although the censoring docs currently state that some commands error
out or are ignored depending on the `censor.policy` config, I cannot
see a benefit for grep to ever stop dead in its tracks when a censored
revision is encountered. I will also amend the docs to indicate that
some commands, such as grep, unconditionally ignore censored
revisions.
Yuya Nishihara <yuya@tcha.org> [Tue, 15 Oct 2019 22:44:55 +0900] rev 43484
py3: enable legacy fs encoding to fix filename compatibility on Windows
This patch is untested. I just followed the instruction:
https://docs.python.org/3/whatsnew/3.6.html#pep-529-change-windows-filesystem-encoding-to-utf-8
Yuya Nishihara <yuya@tcha.org> [Sat, 19 Oct 2019 14:30:19 +0900] rev 43483
rust-cpython: run cargo fmt
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Oct 2019 09:33:01 -0400] rev 43482
rust-cpython: remove useless PyResult<> from leak_immutable()
The caller should know if the shared data is mutably borrowed or not.
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Oct 2019 09:01:25 -0400] rev 43481
rust-cpython: remove useless PyRefMut wrapper
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Oct 2019 08:59:09 -0400] rev 43480
rust-cpython: drop manual management of mutably_borrowed
RefCell::borrow() should guarantee there's no mutable borrow.
As a follow up, maybe PySharedState can be a pure data structure + function.
Most ref-sharing business has already been moved to PySharedRef* and PyLeaked*.
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Oct 2019 08:56:15 -0400] rev 43479
rust-cpython: leverage RefCell::borrow() to guarantee there's no mutable ref
Since the underlying value can't be mutably borrowed by PyLeaked, we don't
have to manage yet another mutably-borrowed state. We can just rely on the
RefCell implementation.
Maybe we can add try_leak_immutable(), but this patch doesn't in order to
keep the patch series not too long.