##// 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:

r50313:ccccd506 default
r53224:0851d94b stable
Show More
packagelib.sh
43 lines | 1.3 KiB | application/x-sh | BashLexer
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025 # Extract version number into 4 parts, some of which may be empty:
#
# version: the numeric part of the most recent tag. Will always look like 1.3.
#
# type: if an rc build, "rc", otherwise empty
#
# distance: the distance from the nearest tag, or empty if built from a tag
#
# node: the node|short hg was built from, or empty if built from a tag
gethgversion() {
Mathias De Mare
packaging: don't use plain 'python' if another python has been specified...
r46597 if [ -z "${1+x}" ]; then
Mathias De Mare
packagelib: use python3 by default
r50313 python="python3"
Mathias De Mare
packaging: don't use plain 'python' if another python has been specified...
r46597 else
python="$1"
fi
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025 export HGRCPATH=
export HGPLAIN=
Mathias De Mare
packaging: don't use plain 'python' if another python has been specified...
r46597 make cleanbutpackages PYTHON=$python
make local PURE=--pure PYTHON=$python
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025 HG="$PWD/hg"
Mathias De Mare
packaging: don't use plain 'python' if another python has been specified...
r46597 $python "$HG" version > /dev/null || { echo 'abort: hg version failed!'; exit 1 ; }
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025
Mathias De Mare
packaging: don't use plain 'python' if another python has been specified...
r46597 hgversion=`LANGUAGE=C $python "$HG" version | sed -ne 's/.*(version \(.*\))$/\1/p'`
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025
if echo $hgversion | grep + > /dev/null 2>&1 ; then
tmp=`echo $hgversion | cut -d+ -f 2`
hgversion=`echo $hgversion | cut -d+ -f 1`
distance=`echo $tmp | cut -d- -f 1`
node=`echo $tmp | cut -d- -f 2`
else
distance=''
node=''
fi
Mathias De Mare
packaging: modify rc detection to work with X.Yrc instead of X.Y-rc...
r41759 if echo $hgversion | grep -E -- '[0-9]\.[0-9](\.[0-9])?rc' > /dev/null 2>&1; then
version=`echo $hgversion | cut -d'r' -f1`
type="rc`echo $hgversion | cut -d'c' -f2-`"
Gregory Szorc
packaging: move packagelib.sh into contrib/packaging/...
r38025 else
version=$hgversion
type=''
fi
}