Summary:
Begin adding type hints to many of the vfs methods.
These type hints indicate that the vfs objects are always opened in binary
mode. While it is possible to open a vfs in text mode if you explicitly
specify the argument `text=True`, this is very rare. If we run into cases
in the future that do need type hints to indicate TextIO mode I think it would
be better to split those out into completely separate functions, rather than
having functions that sometimes return bytes and sometimes return str based on
the arguments used.
Reviewed By: markbt
Differential Revision: D19673538
fbshipit-source-id: 8683223f28964d4b43fe131d4f16f8877dcbe777
Summary:
Make `atomictempfile` derive from `typing.BinaryIO` so that the type checker
understands it can be used like a file.
This required defining all `BinaryIO` methods on this class. This does result
in a fair amount of additional boilerplate code, but seems like the easiest
approach for now.
Reviewed By: markbt
Differential Revision: D19673539
fbshipit-source-id: b5775ca79b3af456b45e4ef5480711d7095e7949
Summary: The share command was reaching into the filesystem directly - use the right utility functions instead
Reviewed By: quark-zju
Differential Revision: D19672980
fbshipit-source-id: a14323fd5419c3ea00d9c009b9a77f63862a7b2a
Summary:
Python 3 is more strict about bad escape characters. As far as I can tell,
this was always wrong, and when corrected, works both in Python 2 and Python 3.
Reviewed By: quark-zju
Differential Revision: D19673184
fbshipit-source-id: b8b358327db8ce2e51761f8f98784bdd4b396423
Summary:
This moves `checkwinfilename()` from util.py to a new winutil.py module.
This allows the windows.py module to import winutil.py and re-expose
`checkwinfilename()` as `checkosfliename()`. This makes pyre happier, since
all platform modules now contain a `checkosfilename` method.
This also adds type hints to `checkwinfilename()`, and updates several parts
of the code that were still incorrectly assuming the input was bytes in
Python 3. However, note that I haven't done much testing of this on Windows.
Reviewed By: quark-zju
Differential Revision: D19672077
fbshipit-source-id: d78ed5b344a2e24c2a361b56465dedc516171d28
Summary:
While the payload of wire commands are bytes, we should treat the
command and args as utf8.
Reviewed By: quark-zju
Differential Revision: D19675217
fbshipit-source-id: df64c842e0c099d77dec1313aa0639e46e539194
Summary: hg serve works strictly with bytes, so let's expose it for stdin.
Reviewed By: quark-zju
Differential Revision: D19672836
fbshipit-source-id: 6abc5385daea81c584a89f19a568e42e4afad48a
Summary: This moves streaming clones a bit further along.
Reviewed By: quark-zju
Differential Revision: D19672546
fbshipit-source-id: 054dd639a8067dce34a5bf667996cc5d30301190
Summary:
We should generally be returning bytes on the wire. This fixes up a
number of places to do so, helping move streaming clone closer.
It also turns out that unescapearg is used in multiple situations. Usually it's
used for strings, but for batches the actual payloads are also delimited by this
and they are bytes. So let's have a function for each case.
Reviewed By: quark-zju
Differential Revision: D19672545
fbshipit-source-id: 6386ae2f39660b042af1382a1d696903fa1de9ad
Summary: A couple random stops that need correct encoding.
Reviewed By: quark-zju
Differential Revision: D19672547
fbshipit-source-id: edb0490f70cbf89885fe5fb0a1a8a2472d33e18d
Summary: Translate between bytes and unicode in sshserver to make test-sshserver pass.
Reviewed By: farnz
Differential Revision: D19672378
fbshipit-source-id: 7e1c0bc2d6fc03fac6ebcf54764862e3ed743f7e
Summary:
The changelog __contains__ expects rev numbers, not nodes, the nodemap should
be used instead.
Reviewed By: quark-zju
Differential Revision: D19674451
fbshipit-source-id: 8f0ddf3b9cebeea10f2fd639999f8c6c67a0e35d
Summary: These four tests pass on master. Let's enable them so that CI keeps us honest
Reviewed By: markbt
Differential Revision: D19672282
fbshipit-source-id: 2d45c3f9840c7323b7bfae8bbd89c4b7ec95f49d
Summary:
This file contains text data, let's decode it before doing anything else with
it.
Reviewed By: quark-zju
Differential Revision: D19675385
fbshipit-source-id: 8aae08c2400dd7d76c8678d5312bab060563e0ba
Summary: This is the right method to write plain strings data to files.
Reviewed By: quark-zju
Differential Revision: D19675386
fbshipit-source-id: 1f939f79294cbc45f56944058649c384b674b880
Summary: There are no-ops. This makes type checkers' life slightly easier.
Reviewed By: farnz
Differential Revision: D19673051
fbshipit-source-id: 363eb8a4e799113b16529825d45645807cafe2fc
Summary: This is broken after D19672686.
Reviewed By: quark-zju
Differential Revision: D19674321
fbshipit-source-id: 7f225b7090ce9168e10e02b25ee17ae2b98cd86a
Summary:
We generally use 'utf-8' but are using 'utf8' at some places. This
diff changes to using 'utf-8' consistently everywhere.
Reviewed By: farnz
Differential Revision: D19674111
fbshipit-source-id: 3be42859a180ded1c234b805259f086f9531ba18
Summary:
A set gives us constant time test, while list requires a linear search. This
may speedup the importer slightly.
Reviewed By: quark-zju
Differential Revision: D19674449
fbshipit-source-id: 994a5303114d54b9cd40469b7cfe4b35e2515729
Summary:
The headers are bytes, therefore startswith needs to be called with a bytes
argument.
Reviewed By: quark-zju
Differential Revision: D19673675
fbshipit-source-id: 9a978ad42bf94a55c984f2ae35c566a59bfd6180
Summary:
Assigning to `__metaclass__` only works in Python 2. In Python 3 this
attribute is ignored, and you instead need to specify `metaclass=` in your
class signature.
This adds a new `pycompat.ABC` base class to make it easier to define abstract
classes that are compatible with both Python 2 and 3.
Reviewed By: sfilipco
Differential Revision: D19672078
fbshipit-source-id: c56eb6c7266f962ef9c13c742e6ac0651b9c19c9
Summary:
Add type annotations to `ui.write()` and the helper functions it calls.
I also removed unused `**opts` arguments on a few of the helper functions that
it calls.
Reviewed By: markbt
Differential Revision: D19657806
fbshipit-source-id: d020396a51d9fc3b07542c65541fca6067addb23
Summary: This fixes the Windows build failure we are seeing. Apparently Python 2 on Windows does not like unicode type in `os.environ`
Reviewed By: markbt
Differential Revision: D19672308
fbshipit-source-id: b45c1ccf47bdd46dc31d6c980d0e70dd2e084c8f
Summary: There are no-ops. This makes type checkers' life slightly easier.
Reviewed By: markbt
Differential Revision: D19673053
fbshipit-source-id: 04f26cd3ca0dbfe579ef939fc39be00035e70cee
Summary:
There are basically no-op (see D19613693).
This makes type checkers' life slightly easier.
Reviewed By: farnz
Differential Revision: D19672686
fbshipit-source-id: 27ca44dd53ec9788fdbb8f31235eae88d1853415
Summary: This makes type checkers' life easier.
Reviewed By: markbt
Differential Revision: D19672687
fbshipit-source-id: 335c560289e29ac7c08e36501e9841ddc51232be
Summary:
The issues were found by pyre with some type stubs generated via pytype:
python36 -m pytype edenscm --no-report-errors -j 30
I didn't include the pytype generated stubs because most of them are `Any`.
I'm trying to see if we can get something cleaner.
Reviewed By: markbt
Differential Revision: D19672435
fbshipit-source-id: c57f2ad3a981ddd4a3a267ff1c00e7bdb71e65ca
Summary:
Simple tools, based on D19664298, that use the JSON report to enable py2 only tests for py3 testing, and revert the changes to those tests that fail.
update-successes.py is just xavierd's original code
Use as needed to enable tests on py3 after debugging, A recommended workflow is in the test plan
Reviewed By: singhsrb
Differential Revision: D19670838
fbshipit-source-id: fc525941cb010c9038c1f73d89913420e0c79981
Summary: Created a new `async fn gitimport` outside of `main`, replaced all `block_on_std` in the new `gitimport` with `await`.
Reviewed By: farnz
Differential Revision: D19649025
fbshipit-source-id: 95493a36878d25de962cd6156c765b5343365cf9
Summary: This was missed while converting pyrevisionstore to PyPathBuf.
Reviewed By: markbt
Differential Revision: D19672441
fbshipit-source-id: 466a66f2e00c7f73c11a8989c22508560f423e0e
Summary: This diff enables more test while hopefully not breaking anything
Reviewed By: markbt
Differential Revision: D19671316
fbshipit-source-id: 76ecd22a094c0a40b9724a3070a01e5d294888f3
Summary: Writing to a file opened in "b" mode needs byte strings.
Reviewed By: sfilipco
Differential Revision: D19668666
fbshipit-source-id: 9e8670fa080cc2a7fc611083a4ee2305d8262a3a
Summary: The test itself needs to ensure it decodes the visibleheads file.
Reviewed By: quark-zju
Differential Revision: D19666640
fbshipit-source-id: 999ab3396b0afc7bd86db9ae1ba126730ee3f02d
Summary:
The commit message should already be a utf8 string. Make sure that when it is
read from a file, we decode it properly.
Reviewed By: sfilipco
Differential Revision: D19666371
fbshipit-source-id: ee24fe33b5aaf1ede54286979c9523cedd901b3a
Summary:
We are going to enable megarepo setup soon, and we'd like to verify that
bookmarks are the same.
We do it by comparing the bookmarks between small and large repo, and if they are different then we check the history of this bookmark in the large repo. If it recently pointed to the equivalent commit from the small repo then we assume that validation was successful.
Reviewed By: krallin
Differential Revision: D19623843
fbshipit-source-id: 99e399e43341fe4bca563560b2523994dc19fc53