##// END OF EJS Templates
manifest: delay import of `typing.ByteString` for py 3.14 support (issue6940)...
manifest: delay import of `typing.ByteString` for py 3.14 support (issue6940) Since Python 2.7 and 3.5, `typing.ByteString` was defined as an alias for `bytes | bytearray | memoryview`, and `bytes` was also accepted as a shorthand for this, so we have `bytes` sprinkled all over the codebase. But then PEP-688 reversed all of that by deprecating `typing.ByteString` and its successor `collections.abc.ByteString` in Python 3.12 (as well as the `bytes` shorthand)[1], and removing it completely in Python 3.14. That leaves us with a couple of problems, namely defining something useful that spans py3.8-py3.13 and keeps pytype happy, and finding all of the instances where `bytes` doesn't really mean `bytes`. The current successor to all of this is `collections.abc.Buffer` in Python 3.12 (or `typing_extensions.Buffer` in previous versions). However, the current CI does type checking using Python 3.11 (so the former is not avaiable), and pytype has issues with importing `typing_extensions.Buffer`[2]. The good news is we don't need to deal with this mess immediately, since the type annotation evaluation is delayed to the type checking phase, and we're making no effort at supporting it in all supported versions of Python. So by delaying the import of this particular symbol, we can still use it for type checking purposes, but can start assessing Python 3.14 problems without doing a lot of extra work. Putting this on stable will allow people interested in 3.14 to work on it 4-5 extra months earlier (and apparently there's some interest). [1] https://peps.python.org/pep-0688/#no-special-meaning-for-bytes [2] https://github.com/google/pytype/issues/1772

File last commit:

r47270:c82d6363 default
r53224:0851d94b stable
Show More
control
43 lines | 1.2 KiB | text/plain | DebianControlLexer
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029 Source: mercurial
Section: vcs
Priority: optional
Maintainer: Mercurial Developers <mercurial-devel@mercurial-scm.org>
Build-Depends:
debhelper (>= 9),
dh-python,
less,
netbase,
Denis Laxalde
packaging: upgrade Debian packaging to build with Python 3...
r43615 python3-all,
python3-all-dev,
python3-docutils,
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029 unzip,
zip
Standards-Version: 3.9.4
Denis Laxalde
packaging: upgrade Debian packaging to build with Python 3...
r43615 X-Python3-Version: >= 3.5
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029
Package: mercurial
Depends:
Denis Laxalde
packaging: ship only a single binary Debian package...
r43627 sensible-utils,
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029 ${shlibs:Depends},
${misc:Depends},
Denis Laxalde
packaging: upgrade Debian packaging to build with Python 3...
r43615 ${python3:Depends},
Denis Laxalde
packaging: ship only a single binary Debian package...
r43627 Recommends: ca-certificates
Suggests: wish
Denis Laxalde
packaging: remove version info from Breaks+Replaces in Debian package...
r43640 Replaces: mercurial-common
Breaks: mercurial-common
Kyle Lippincott
packaging: add Provides: python3-mercurial and Homepage to debian package...
r47270 Provides: python3-mercurial
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029 Architecture: any
Kyle Lippincott
packaging: add Provides: python3-mercurial and Homepage to debian package...
r47270 Homepage: https://www.mercurial-scm.org/
Gregory Szorc
packaging: move contrib/debian to contrib/packaging/...
r38029 Description: fast, easy to use, distributed revision control tool.
Mercurial is a fast, lightweight Source Control Management system designed
for efficient handling of very large distributed projects.
.
Its features include:
* O(1) delta-compressed file storage and retrieval scheme
* Complete cross-indexing of files and changesets for efficient exploration
of project history
* Robust SHA1-based integrity checking and append-only storage model
* Decentralized development model with arbitrary merging between trees
* Easy-to-use command-line interface
* Integrated stand-alone web interface
* Small Python codebase