* Cython 3.x support needed for Python 3.13
* Move CI to a dynamic matrix
* Use GHA-hosted Apple Silicon runners
* Move Windows builds to cibuildwheel
* Implement rudimentary PEP517 config-settings passthru to setuptools with
custom in-tree setuptools build backend shim (blocked Windows build
being moved to cibuildwheel).
* Use build_config.toml to smuggle JSON to cibuildwheel, since it
trashes JSON via CLI when doing containerized builds.
* custom pytest collector and item to surface pyyaml data-driven tests as individual pytest unit tests
* moved some true unit tests to pytest-native tests
* deprecated `setup.py test` custom command
* updated Makefile to use pytest
* align test matrix with planned 7.x Python support
* keeps libyaml extension build functional once Cython 3.0 releases; stopgap measure until we can rewrite the extension build to eliminate all the ancient deprecated distutils magic
(cherry picked from commit ae08bdc82b)
* Add python 3.11 support
* ci: use `windows-2019` runners
`windows-2016` runners have been removed
* ci: use CPython 3.11.0-rc.2 for Windows builds
Co-authored-by: Matt Davis <mrd@redhat.com>
* Adds support for private GHA runner to build for MacOS/arm64
* Split CI/artifact build workflows (hopefully temporarily) since GHA can't do dynamic/conditional matrix
* Moves Windows builds to GHA
* enable use of setuptools-embedded distutils
* list 3.10 support
* remove setup.cfg (and deprecated metadata in it)
* run tests on ephemeral copy of intermediate build bits
It's time to stop pretending this is anymore compatible to version 2
by using macros to hide the fact that on 3 objects are bytes and not
string.
Removing the support for version 2 makes things clearer.
Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Make the build work without any warnings.
The cython and C yaml types were differing in definition and that's
no good.
Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
This patch was taken from
https://github.com/yaml/pyyaml/issues/369#issuecomment-571596545,
authored by Pekka Klärck <peke@iki.fi>.
In short, Jython doesn't support lone surrogates, so importing yaml (and
in particular, loading `reader.py`) caused a UnicodeDecodeError. This
patch works around this through a clever use of `eval` to defer
evaluation of the string containing the lone surrogates, only doing it
on non-Jython platforms.
This is only done in `lib/yaml/reader.py` and not `lib3/yaml/reader.py`
because Jython does not support Python 3.
With this patch, Jython's behavior with respect to Unicode code points
over 0xFFFF becomes as it was before
0716ae21a1. It still does not pass all the
unit tests on Jython (passes 1275, fails 3, errors on 1); all the
failing tests are related to unicode. Still, this is better than simply
crashing upon `import yaml`.
With this patch, all tests continue to pass on Python 2 / Python 3.
Repeated calls to `resolve` can experience performance degredation, if
`add_implicit_resolver` has been called with `first=None` (to add an
implicit resolver with an unspecified first character).
For example, every time `foo` is encountered, the "wildcard implicit
resolvers" (with `first=None`) will be appended to the list of implicit
resolvers for strings starting with `f`, which will normally be the
resolver for booleans. The list `yaml_implicit_resolvers['f']` will keep
getting longer. The same behavior applies for any first-letter matches
with existing implicit resolvers.
This change avoids unintentionally mutating the lists in the class-level
dict `yaml_implicit_resolvers` by looping through a temporary copy.
Fixes: #439