From dd9f0e1236775dcce682c91823e009556ce2a271 Mon Sep 17 00:00:00 2001 From: Matt Davis <6775756+nitzmahone@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:26:55 -0700 Subject: [PATCH] 6.0.2rc1 (#809) * Conditional support for Cython3.x, CI updates (#808) * 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. (cherry picked from commit a2d19c0234866dc9d4d55abf3009699c258bb72f) * changes for 6.0.2rc1 * fix manifest test inclusion --- .github/actions/dynamatrix/action.yml | 22 + .../actions/dynamatrix/matrix_yaml_to_json.py | 71 ++ .github/workflows/ci.yaml | 628 +++++++++++------- .github/workflows/manual_artifact_build.yaml | 469 ------------- CHANGES | 4 + MANIFEST.in | 7 +- lib/yaml/__init__.py | 2 +- packaging/_pyyaml_pep517.py | 51 ++ pyproject.toml | 10 +- setup.py | 45 +- tests/{lib => legacy_tests}/canonical.py | 0 tests/legacy_tests/conftest.py | 132 ++++ .../data/a-nasty-libyaml-bug.loader-error | 0 .../data/aliases-cdumper-bug.code | 0 tests/{ => legacy_tests}/data/aliases.events | 0 tests/{ => legacy_tests}/data/bool.data | 0 tests/{ => legacy_tests}/data/bool.detect | 0 .../data/construct-binary-py2.code | 0 .../data/construct-binary-py2.data | 0 .../data/construct-binary-py3.code | 0 .../data/construct-binary-py3.data | 0 .../data/construct-bool.code | 0 .../data/construct-bool.data | 0 .../data/construct-custom.code | 0 .../data/construct-custom.data | 0 .../data/construct-float.code | 0 .../data/construct-float.data | 0 .../data/construct-int.code | 0 .../data/construct-int.data | 0 .../data/construct-map.code | 0 .../data/construct-map.data | 0 .../data/construct-merge.code | 0 .../data/construct-merge.data | 0 .../data/construct-null.code | 0 .../data/construct-null.data | 0 .../data/construct-omap.code | 0 .../data/construct-omap.data | 0 .../data/construct-pairs.code | 0 .../data/construct-pairs.data | 0 .../data/construct-python-bool.code | 0 .../data/construct-python-bool.data | 0 .../data/construct-python-bytes-py3.code | 0 .../data/construct-python-bytes-py3.data | 0 .../data/construct-python-complex.code | 0 .../data/construct-python-complex.data | 0 .../data/construct-python-float.code | 0 .../data/construct-python-float.data | 0 .../data/construct-python-int.code | 0 .../data/construct-python-int.data | 0 .../data/construct-python-long-short-py2.code | 0 .../data/construct-python-long-short-py2.data | 0 .../data/construct-python-long-short-py3.code | 0 .../data/construct-python-long-short-py3.data | 0 .../data/construct-python-name-module.code | 0 .../data/construct-python-name-module.data | 0 .../data/construct-python-none.code | 0 .../data/construct-python-none.data | 0 .../data/construct-python-object.code | 0 .../data/construct-python-object.data | 0 .../data/construct-python-str-ascii.code | 0 .../data/construct-python-str-ascii.data | 0 .../data/construct-python-str-utf8-py2.code | 0 .../data/construct-python-str-utf8-py2.data | 0 .../data/construct-python-str-utf8-py3.code | 0 .../data/construct-python-str-utf8-py3.data | 0 .../construct-python-tuple-list-dict.code | 0 .../construct-python-tuple-list-dict.data | 0 .../construct-python-unicode-ascii-py2.code | 0 .../construct-python-unicode-ascii-py2.data | 0 .../construct-python-unicode-ascii-py3.code | 0 .../construct-python-unicode-ascii-py3.data | 0 .../construct-python-unicode-utf8-py2.code | 0 .../construct-python-unicode-utf8-py2.data | 0 .../construct-python-unicode-utf8-py3.code | 0 .../construct-python-unicode-utf8-py3.data | 0 .../data/construct-seq.code | 0 .../data/construct-seq.data | 0 .../data/construct-set.code | 0 .../data/construct-set.data | 0 .../data/construct-str-ascii.code | 0 .../data/construct-str-ascii.data | 0 .../data/construct-str-utf8-py2.code | 0 .../data/construct-str-utf8-py2.data | 0 .../data/construct-str-utf8-py3.code | 0 .../data/construct-str-utf8-py3.data | 0 .../data/construct-str.code | 0 .../data/construct-str.data | 0 .../data/construct-timestamp.code | 0 .../data/construct-timestamp.data | 0 .../data/construct-value.code | 0 .../data/construct-value.data | 0 ...nt-separator-in-quoted-scalar.loader-error | 0 .../{ => legacy_tests}/data/documents.events | 0 .../data/duplicate-anchor-1.loader-error | 0 .../data/duplicate-anchor-2.loader-error | 0 .../duplicate-key.former-loader-error.code | 0 .../duplicate-key.former-loader-error.data | 0 ...icate-mapping-key.former-loader-error.code | 0 ...icate-mapping-key.former-loader-error.data | 0 ...plicate-merge-key.former-loader-error.code | 0 ...plicate-merge-key.former-loader-error.data | 0 .../data/duplicate-tag-directive.loader-error | 0 ...plicate-value-key.former-loader-error.code | 0 ...plicate-value-key.former-loader-error.data | 0 .../duplicate-yaml-directive.loader-error | 0 ...scalar-in-simple-key-context-bug.canonical | 0 ...lock-scalar-in-simple-key-context-bug.data | 0 ...nacceptable-unicode-character-bug-py3.code | 0 ...nacceptable-unicode-character-bug-py3.data | 0 ...eptable-unicode-character-bug-py3.skip-ext | 0 ...ng-unacceptable-unicode-character-bug.code | 0 ...ng-unacceptable-unicode-character-bug.data | 0 ...nacceptable-unicode-character-bug.skip-ext | 0 .../{ => legacy_tests}/data/emoticons.unicode | 0 .../data/emoticons2.unicode | 0 .../data/empty-anchor.emitter-error | 0 .../data/empty-document-bug.canonical | 0 .../data/empty-document-bug.data | 0 .../data/empty-document-bug.empty | 0 .../data/empty-documents.single-loader-error | 0 .../data/empty-python-module.loader-error | 0 .../data/empty-python-name.loader-error | 0 .../data/empty-tag-handle.emitter-error | 0 .../data/empty-tag-prefix.emitter-error | 0 .../data/empty-tag.emitter-error | 0 .../data/expected-document-end.emitter-error | 0 .../expected-document-start.emitter-error | 0 .../data/expected-mapping.loader-error | 0 .../data/expected-node-1.emitter-error | 0 .../data/expected-node-2.emitter-error | 0 .../data/expected-nothing.emitter-error | 0 .../data/expected-scalar.loader-error | 0 .../data/expected-sequence.loader-error | 0 .../data/expected-stream-start.emitter-error | 0 .../explicit-document.single-loader-error | 0 .../data/fetch-complex-value-bug.loader-error | 0 .../data/float-representer-2.3-bug.code | 0 .../data/float-representer-2.3-bug.data | 0 tests/{ => legacy_tests}/data/float.data | 0 tests/{ => legacy_tests}/data/float.detect | 0 .../data/forbidden-entry.loader-error | 0 .../data/forbidden-key.loader-error | 0 .../data/forbidden-value.loader-error | 0 .../implicit-document.single-loader-error | 0 tests/{ => legacy_tests}/data/int.data | 0 tests/{ => legacy_tests}/data/int.detect | 0 .../data/invalid-anchor-1.loader-error | 0 .../data/invalid-anchor-2.loader-error | 0 .../data/invalid-anchor.emitter-error | 0 .../data/invalid-base64-data-2.loader-error | 0 .../data/invalid-base64-data.loader-error | 0 ...nvalid-block-scalar-indicator.loader-error | 0 .../data/invalid-character.loader-error | Bin .../data/invalid-character.stream-error | Bin .../data/invalid-directive-line.loader-error | 0 .../invalid-directive-name-1.loader-error | 0 .../invalid-directive-name-2.loader-error | 0 .../invalid-escape-character.loader-error | 0 .../data/invalid-escape-numbers.loader-error | 0 ...valid-indentation-indicator-1.loader-error | 0 ...valid-indentation-indicator-2.loader-error | 0 ...d-item-without-trailing-break.loader-error | 0 .../data/invalid-merge-1.loader-error | 0 .../data/invalid-merge-2.loader-error | 0 .../data/invalid-omap-1.loader-error | 0 .../data/invalid-omap-2.loader-error | 0 .../data/invalid-omap-3.loader-error | 0 .../data/invalid-pairs-1.loader-error | 0 .../data/invalid-pairs-2.loader-error | 0 .../data/invalid-pairs-3.loader-error | 0 .../invalid-python-bytes-2-py3.loader-error | 0 .../invalid-python-bytes-py3.loader-error | 0 .../invalid-python-module-kind.loader-error | 0 .../invalid-python-module-value.loader-error | 0 .../data/invalid-python-module.loader-error | 0 .../invalid-python-name-kind.loader-error | 0 .../invalid-python-name-module.loader-error | 0 .../invalid-python-name-object.loader-error | 0 .../invalid-python-name-value.loader-error | 0 .../data/invalid-simple-key.loader-error | 0 .../data/invalid-single-quote-bug.code | 0 .../data/invalid-single-quote-bug.data | 0 .../invalid-starting-character.loader-error | 0 .../data/invalid-tag-1.loader-error | 0 .../data/invalid-tag-2.loader-error | 0 .../invalid-tag-directive-handle.loader-error | 0 .../invalid-tag-directive-prefix.loader-error | 0 .../data/invalid-tag-handle-1.emitter-error | 0 .../data/invalid-tag-handle-1.loader-error | 0 .../data/invalid-tag-handle-2.emitter-error | 0 .../data/invalid-tag-handle-2.loader-error | 0 .../data/invalid-uri-escapes-1.loader-error | 0 .../data/invalid-uri-escapes-2.loader-error | 0 .../data/invalid-uri-escapes-3.loader-error | 0 .../data/invalid-uri.loader-error | 0 .../data/invalid-utf8-byte.loader-error | 0 .../data/invalid-utf8-byte.stream-error | 0 ...alid-yaml-directive-version-1.loader-error | 0 ...alid-yaml-directive-version-2.loader-error | 0 ...alid-yaml-directive-version-3.loader-error | 0 ...alid-yaml-directive-version-4.loader-error | 0 ...alid-yaml-directive-version-5.loader-error | 0 ...alid-yaml-directive-version-6.loader-error | 0 .../data/invalid-yaml-version.loader-error | 0 tests/{ => legacy_tests}/data/latin.unicode | 0 tests/{ => legacy_tests}/data/mapping.sort | 0 tests/{ => legacy_tests}/data/mapping.sorted | 0 tests/{ => legacy_tests}/data/mappings.events | 0 tests/{ => legacy_tests}/data/merge.data | 0 tests/{ => legacy_tests}/data/merge.detect | 0 .../{ => legacy_tests}/data/more-floats.code | 0 .../{ => legacy_tests}/data/more-floats.data | 0 .../data/multi-constructor.code | 0 .../data/multi-constructor.multi | 0 .../data/myfullloader.subclass_blacklist | 0 .../data/negative-float-bug.code | 0 .../data/negative-float-bug.data | 0 .../data/no-alias-anchor.emitter-error | 0 .../data/no-alias-anchor.skip-ext | 0 .../data/no-block-collection-end.loader-error | 0 .../data/no-block-mapping-end-2.loader-error | 0 .../data/no-block-mapping-end.loader-error | 0 .../data/no-document-start.loader-error | 0 .../data/no-flow-mapping-end.loader-error | 0 .../data/no-flow-sequence-end.loader-error | 0 .../data/no-node-1.loader-error | 0 .../data/no-node-2.loader-error | 0 .../data/no-tag.emitter-error | 0 tests/{ => legacy_tests}/data/null.data | 0 tests/{ => legacy_tests}/data/null.detect | 0 .../data/odd-utf16.stream-error | Bin ...erwrite-state-new-constructor.loader-error | 0 .../data/recursive-anchor.former-loader-error | 0 .../data/recursive-dict.recursive | 0 .../data/recursive-list.recursive | 0 .../data/recursive-set.recursive | 0 .../data/recursive-state.recursive | 0 .../data/recursive-tuple.recursive | 0 .../data/recursive.former-dumper-error | 0 ...emove-possible-simple-key-bug.loader-error | 0 tests/{ => legacy_tests}/data/resolver.data | 0 tests/{ => legacy_tests}/data/resolver.path | 0 .../data/run-parser-crash-bug.data | 0 tests/{ => legacy_tests}/data/scalars.events | 0 .../data/scan-document-end-bug.canonical | 0 .../data/scan-document-end-bug.data | 0 .../data/scan-line-break-bug.canonical | 0 .../data/scan-line-break-bug.data | 0 .../{ => legacy_tests}/data/sequences.events | 0 .../serializer-is-already-opened.dumper-error | 0 .../data/serializer-is-closed-1.dumper-error | 0 .../data/serializer-is-closed-2.dumper-error | 0 .../serializer-is-not-opened-1.dumper-error | 0 .../serializer-is-not-opened-2.dumper-error | 0 .../data/single-dot-is-not-float-bug.code | 0 .../data/single-dot-is-not-float-bug.data | 0 .../data/sloppy-indentation.canonical | 0 .../data/sloppy-indentation.data | 0 tests/{ => legacy_tests}/data/spec-02-01.data | 0 .../data/spec-02-01.structure | 0 .../{ => legacy_tests}/data/spec-02-01.tokens | 0 tests/{ => legacy_tests}/data/spec-02-02.data | 0 .../data/spec-02-02.structure | 0 .../{ => legacy_tests}/data/spec-02-02.tokens | 0 tests/{ => legacy_tests}/data/spec-02-03.data | 0 .../data/spec-02-03.structure | 0 .../{ => legacy_tests}/data/spec-02-03.tokens | 0 tests/{ => legacy_tests}/data/spec-02-04.data | 0 .../data/spec-02-04.structure | 0 .../{ => legacy_tests}/data/spec-02-04.tokens | 0 tests/{ => legacy_tests}/data/spec-02-05.data | 0 .../data/spec-02-05.structure | 0 .../{ => legacy_tests}/data/spec-02-05.tokens | 0 tests/{ => legacy_tests}/data/spec-02-06.data | 0 .../data/spec-02-06.structure | 0 .../{ => legacy_tests}/data/spec-02-06.tokens | 0 tests/{ => legacy_tests}/data/spec-02-07.data | 0 .../data/spec-02-07.structure | 0 .../{ => legacy_tests}/data/spec-02-07.tokens | 0 tests/{ => legacy_tests}/data/spec-02-08.data | 0 .../data/spec-02-08.structure | 0 .../{ => legacy_tests}/data/spec-02-08.tokens | 0 tests/{ => legacy_tests}/data/spec-02-09.data | 0 .../data/spec-02-09.structure | 0 .../{ => legacy_tests}/data/spec-02-09.tokens | 0 tests/{ => legacy_tests}/data/spec-02-10.data | 0 .../data/spec-02-10.structure | 0 .../{ => legacy_tests}/data/spec-02-10.tokens | 0 tests/{ => legacy_tests}/data/spec-02-11.data | 0 .../data/spec-02-11.structure | 0 .../{ => legacy_tests}/data/spec-02-11.tokens | 0 tests/{ => legacy_tests}/data/spec-02-12.data | 0 .../data/spec-02-12.structure | 0 .../{ => legacy_tests}/data/spec-02-12.tokens | 0 tests/{ => legacy_tests}/data/spec-02-13.data | 0 .../data/spec-02-13.structure | 0 .../{ => legacy_tests}/data/spec-02-13.tokens | 0 tests/{ => legacy_tests}/data/spec-02-14.data | 0 .../data/spec-02-14.structure | 0 .../{ => legacy_tests}/data/spec-02-14.tokens | 0 tests/{ => legacy_tests}/data/spec-02-15.data | 0 .../data/spec-02-15.structure | 0 .../{ => legacy_tests}/data/spec-02-15.tokens | 0 tests/{ => legacy_tests}/data/spec-02-16.data | 0 .../data/spec-02-16.structure | 0 .../{ => legacy_tests}/data/spec-02-16.tokens | 0 tests/{ => legacy_tests}/data/spec-02-17.data | 0 .../data/spec-02-17.structure | 0 .../{ => legacy_tests}/data/spec-02-17.tokens | 0 tests/{ => legacy_tests}/data/spec-02-18.data | 0 .../data/spec-02-18.structure | 0 .../{ => legacy_tests}/data/spec-02-18.tokens | 0 tests/{ => legacy_tests}/data/spec-02-19.data | 0 .../data/spec-02-19.structure | 0 .../{ => legacy_tests}/data/spec-02-19.tokens | 0 tests/{ => legacy_tests}/data/spec-02-20.data | 0 .../data/spec-02-20.structure | 0 .../{ => legacy_tests}/data/spec-02-20.tokens | 0 tests/{ => legacy_tests}/data/spec-02-21.data | 0 .../data/spec-02-21.structure | 0 .../{ => legacy_tests}/data/spec-02-21.tokens | 0 tests/{ => legacy_tests}/data/spec-02-22.data | 0 .../data/spec-02-22.structure | 0 .../{ => legacy_tests}/data/spec-02-22.tokens | 0 tests/{ => legacy_tests}/data/spec-02-23.data | 0 .../data/spec-02-23.structure | 0 .../{ => legacy_tests}/data/spec-02-23.tokens | 0 tests/{ => legacy_tests}/data/spec-02-24.data | 0 .../data/spec-02-24.structure | 0 .../{ => legacy_tests}/data/spec-02-24.tokens | 0 tests/{ => legacy_tests}/data/spec-02-25.data | 0 .../data/spec-02-25.structure | 0 .../{ => legacy_tests}/data/spec-02-25.tokens | 0 tests/{ => legacy_tests}/data/spec-02-26.data | 0 .../data/spec-02-26.structure | 0 .../{ => legacy_tests}/data/spec-02-26.tokens | 0 tests/{ => legacy_tests}/data/spec-02-27.data | 0 .../data/spec-02-27.structure | 0 .../{ => legacy_tests}/data/spec-02-27.tokens | 0 tests/{ => legacy_tests}/data/spec-02-28.data | 0 .../data/spec-02-28.structure | 0 .../{ => legacy_tests}/data/spec-02-28.tokens | 0 .../data/spec-05-01-utf16be.data | Bin .../data/spec-05-01-utf16be.empty | 0 .../data/spec-05-01-utf16le.data | Bin .../data/spec-05-01-utf16le.empty | 0 .../data/spec-05-01-utf8.data | 0 .../data/spec-05-01-utf8.empty | 0 .../data/spec-05-02-utf16be.data | Bin .../data/spec-05-02-utf16be.error | 0 .../data/spec-05-02-utf16le.data | Bin .../data/spec-05-02-utf16le.error | 0 .../data/spec-05-02-utf8.data | 0 .../data/spec-05-02-utf8.error | 0 .../data/spec-05-03.canonical | 0 tests/{ => legacy_tests}/data/spec-05-03.data | 0 .../data/spec-05-04.canonical | 0 tests/{ => legacy_tests}/data/spec-05-04.data | 0 tests/{ => legacy_tests}/data/spec-05-05.data | 0 .../{ => legacy_tests}/data/spec-05-05.empty | 0 .../data/spec-05-06.canonical | 0 tests/{ => legacy_tests}/data/spec-05-06.data | 0 .../data/spec-05-07.canonical | 0 tests/{ => legacy_tests}/data/spec-05-07.data | 0 .../data/spec-05-08.canonical | 0 tests/{ => legacy_tests}/data/spec-05-08.data | 0 .../data/spec-05-09.canonical | 0 tests/{ => legacy_tests}/data/spec-05-09.data | 0 tests/{ => legacy_tests}/data/spec-05-10.data | 0 .../{ => legacy_tests}/data/spec-05-10.error | 0 .../data/spec-05-11.canonical | 0 tests/{ => legacy_tests}/data/spec-05-11.data | 0 tests/{ => legacy_tests}/data/spec-05-12.data | 0 .../{ => legacy_tests}/data/spec-05-12.error | 0 .../data/spec-05-13.canonical | 0 tests/{ => legacy_tests}/data/spec-05-13.data | 0 .../data/spec-05-14.canonical | 0 tests/{ => legacy_tests}/data/spec-05-14.data | 0 tests/{ => legacy_tests}/data/spec-05-15.data | 0 .../{ => legacy_tests}/data/spec-05-15.error | 0 .../data/spec-06-01.canonical | 0 tests/{ => legacy_tests}/data/spec-06-01.data | 0 tests/{ => legacy_tests}/data/spec-06-02.data | 0 .../{ => legacy_tests}/data/spec-06-02.empty | 0 .../data/spec-06-03.canonical | 0 tests/{ => legacy_tests}/data/spec-06-03.data | 0 .../data/spec-06-04.canonical | 0 tests/{ => legacy_tests}/data/spec-06-04.data | 0 .../data/spec-06-05.canonical | 0 tests/{ => legacy_tests}/data/spec-06-05.data | 0 .../data/spec-06-06.canonical | 0 tests/{ => legacy_tests}/data/spec-06-06.data | 0 .../data/spec-06-07.canonical | 0 tests/{ => legacy_tests}/data/spec-06-07.data | 0 .../data/spec-06-08.canonical | 0 tests/{ => legacy_tests}/data/spec-06-08.data | 0 .../data/spec-07-01.canonical | 0 tests/{ => legacy_tests}/data/spec-07-01.data | 0 .../data/spec-07-01.skip-ext | 0 .../data/spec-07-02.canonical | 0 tests/{ => legacy_tests}/data/spec-07-02.data | 0 .../data/spec-07-02.skip-ext | 0 tests/{ => legacy_tests}/data/spec-07-03.data | 0 .../{ => legacy_tests}/data/spec-07-03.error | 0 .../data/spec-07-04.canonical | 0 tests/{ => legacy_tests}/data/spec-07-04.data | 0 tests/{ => legacy_tests}/data/spec-07-05.data | 0 .../{ => legacy_tests}/data/spec-07-05.error | 0 .../data/spec-07-06.canonical | 0 tests/{ => legacy_tests}/data/spec-07-06.data | 0 .../data/spec-07-07a.canonical | 0 .../{ => legacy_tests}/data/spec-07-07a.data | 0 .../data/spec-07-07b.canonical | 0 .../{ => legacy_tests}/data/spec-07-07b.data | 0 .../data/spec-07-08.canonical | 0 tests/{ => legacy_tests}/data/spec-07-08.data | 0 .../data/spec-07-09.canonical | 0 tests/{ => legacy_tests}/data/spec-07-09.data | 0 .../data/spec-07-10.canonical | 0 tests/{ => legacy_tests}/data/spec-07-10.data | 0 tests/{ => legacy_tests}/data/spec-07-11.data | 0 .../{ => legacy_tests}/data/spec-07-11.empty | 0 .../data/spec-07-12a.canonical | 0 .../{ => legacy_tests}/data/spec-07-12a.data | 0 .../data/spec-07-12b.canonical | 0 .../{ => legacy_tests}/data/spec-07-12b.data | 0 .../data/spec-07-13.canonical | 0 tests/{ => legacy_tests}/data/spec-07-13.data | 0 .../data/spec-08-01.canonical | 0 tests/{ => legacy_tests}/data/spec-08-01.data | 0 .../data/spec-08-02.canonical | 0 tests/{ => legacy_tests}/data/spec-08-02.data | 0 .../data/spec-08-03.canonical | 0 tests/{ => legacy_tests}/data/spec-08-03.data | 0 tests/{ => legacy_tests}/data/spec-08-04.data | 0 .../{ => legacy_tests}/data/spec-08-04.error | 0 .../data/spec-08-05.canonical | 0 tests/{ => legacy_tests}/data/spec-08-05.data | 0 tests/{ => legacy_tests}/data/spec-08-06.data | 0 .../{ => legacy_tests}/data/spec-08-06.error | 0 .../data/spec-08-07.canonical | 0 tests/{ => legacy_tests}/data/spec-08-07.data | 0 .../data/spec-08-08.canonical | 0 tests/{ => legacy_tests}/data/spec-08-08.data | 0 .../data/spec-08-09.canonical | 0 tests/{ => legacy_tests}/data/spec-08-09.data | 0 .../data/spec-08-10.canonical | 0 tests/{ => legacy_tests}/data/spec-08-10.data | 0 .../data/spec-08-11.canonical | 0 tests/{ => legacy_tests}/data/spec-08-11.data | 0 .../data/spec-08-12.canonical | 0 tests/{ => legacy_tests}/data/spec-08-12.data | 0 .../data/spec-08-13.canonical | 0 tests/{ => legacy_tests}/data/spec-08-13.data | 0 .../data/spec-08-13.skip-ext | 0 .../data/spec-08-14.canonical | 0 tests/{ => legacy_tests}/data/spec-08-14.data | 0 .../data/spec-08-15.canonical | 0 tests/{ => legacy_tests}/data/spec-08-15.data | 0 .../data/spec-09-01.canonical | 0 tests/{ => legacy_tests}/data/spec-09-01.data | 0 .../data/spec-09-02.canonical | 0 tests/{ => legacy_tests}/data/spec-09-02.data | 0 .../data/spec-09-03.canonical | 0 tests/{ => legacy_tests}/data/spec-09-03.data | 0 .../data/spec-09-04.canonical | 0 tests/{ => legacy_tests}/data/spec-09-04.data | 0 .../data/spec-09-05.canonical | 0 tests/{ => legacy_tests}/data/spec-09-05.data | 0 .../data/spec-09-06.canonical | 0 tests/{ => legacy_tests}/data/spec-09-06.data | 0 .../data/spec-09-07.canonical | 0 tests/{ => legacy_tests}/data/spec-09-07.data | 0 .../data/spec-09-08.canonical | 0 tests/{ => legacy_tests}/data/spec-09-08.data | 0 .../data/spec-09-09.canonical | 0 tests/{ => legacy_tests}/data/spec-09-09.data | 0 .../data/spec-09-10.canonical | 0 tests/{ => legacy_tests}/data/spec-09-10.data | 0 .../data/spec-09-11.canonical | 0 tests/{ => legacy_tests}/data/spec-09-11.data | 0 .../data/spec-09-12.canonical | 0 tests/{ => legacy_tests}/data/spec-09-12.data | 0 .../data/spec-09-13.canonical | 0 tests/{ => legacy_tests}/data/spec-09-13.data | 0 tests/{ => legacy_tests}/data/spec-09-14.data | 0 .../{ => legacy_tests}/data/spec-09-14.error | 0 .../data/spec-09-15.canonical | 0 tests/{ => legacy_tests}/data/spec-09-15.data | 0 .../data/spec-09-16.canonical | 0 tests/{ => legacy_tests}/data/spec-09-16.data | 0 .../data/spec-09-17.canonical | 0 tests/{ => legacy_tests}/data/spec-09-17.data | 0 .../data/spec-09-18.canonical | 0 tests/{ => legacy_tests}/data/spec-09-18.data | 0 .../data/spec-09-19.canonical | 0 tests/{ => legacy_tests}/data/spec-09-19.data | 0 .../data/spec-09-20.canonical | 0 tests/{ => legacy_tests}/data/spec-09-20.data | 0 .../data/spec-09-20.skip-ext | 0 tests/{ => legacy_tests}/data/spec-09-21.data | 0 .../{ => legacy_tests}/data/spec-09-21.error | 0 .../data/spec-09-22.canonical | 0 tests/{ => legacy_tests}/data/spec-09-22.data | 0 .../data/spec-09-23.canonical | 0 tests/{ => legacy_tests}/data/spec-09-23.data | 0 .../data/spec-09-24.canonical | 0 tests/{ => legacy_tests}/data/spec-09-24.data | 0 .../data/spec-09-25.canonical | 0 tests/{ => legacy_tests}/data/spec-09-25.data | 0 .../data/spec-09-26.canonical | 0 tests/{ => legacy_tests}/data/spec-09-26.data | 0 .../data/spec-09-27.canonical | 0 tests/{ => legacy_tests}/data/spec-09-27.data | 0 .../data/spec-09-28.canonical | 0 tests/{ => legacy_tests}/data/spec-09-28.data | 0 .../data/spec-09-29.canonical | 0 tests/{ => legacy_tests}/data/spec-09-29.data | 0 .../data/spec-09-30.canonical | 0 tests/{ => legacy_tests}/data/spec-09-30.data | 0 .../data/spec-09-31.canonical | 0 tests/{ => legacy_tests}/data/spec-09-31.data | 0 .../data/spec-09-32.canonical | 0 tests/{ => legacy_tests}/data/spec-09-32.data | 0 .../data/spec-09-33.canonical | 0 tests/{ => legacy_tests}/data/spec-09-33.data | 0 .../data/spec-10-01.canonical | 0 tests/{ => legacy_tests}/data/spec-10-01.data | 0 .../data/spec-10-02.canonical | 0 tests/{ => legacy_tests}/data/spec-10-02.data | 0 .../data/spec-10-03.canonical | 0 tests/{ => legacy_tests}/data/spec-10-03.data | 0 .../data/spec-10-04.canonical | 0 tests/{ => legacy_tests}/data/spec-10-04.data | 0 .../data/spec-10-05.canonical | 0 tests/{ => legacy_tests}/data/spec-10-05.data | 0 .../data/spec-10-06.canonical | 0 tests/{ => legacy_tests}/data/spec-10-06.data | 0 .../data/spec-10-07.canonical | 0 tests/{ => legacy_tests}/data/spec-10-07.data | 0 tests/{ => legacy_tests}/data/spec-10-08.data | 0 .../{ => legacy_tests}/data/spec-10-08.error | 0 .../data/spec-10-09.canonical | 0 tests/{ => legacy_tests}/data/spec-10-09.data | 0 .../data/spec-10-10.canonical | 0 tests/{ => legacy_tests}/data/spec-10-10.data | 0 .../data/spec-10-11.canonical | 0 tests/{ => legacy_tests}/data/spec-10-11.data | 0 .../data/spec-10-12.canonical | 0 tests/{ => legacy_tests}/data/spec-10-12.data | 0 .../data/spec-10-13.canonical | 0 tests/{ => legacy_tests}/data/spec-10-13.data | 0 .../data/spec-10-14.canonical | 0 tests/{ => legacy_tests}/data/spec-10-14.data | 0 .../data/spec-10-15.canonical | 0 tests/{ => legacy_tests}/data/spec-10-15.data | 0 tests/{ => legacy_tests}/data/str.data | 0 tests/{ => legacy_tests}/data/str.detect | 0 tests/{ => legacy_tests}/data/tags.events | 0 tests/{ => legacy_tests}/data/test_mark.marks | 0 .../data/timestamp-bugs.code | 0 .../data/timestamp-bugs.data | 0 tests/{ => legacy_tests}/data/timestamp.data | 0 .../{ => legacy_tests}/data/timestamp.detect | 0 .../data/unacceptable-key.loader-error | 0 .../data/unclosed-bracket.loader-error | 0 .../data/unclosed-quoted-scalar.loader-error | 0 .../data/undefined-anchor.loader-error | 0 .../data/undefined-constructor.loader-error | 0 .../data/undefined-tag-handle.loader-error | 0 .../data/unknown.dumper-error | 0 .../data/unsupported-version.emitter-error | 0 tests/{ => legacy_tests}/data/utf16be.code | 0 tests/{ => legacy_tests}/data/utf16be.data | Bin tests/{ => legacy_tests}/data/utf16le.code | 0 tests/{ => legacy_tests}/data/utf16le.data | Bin .../data/utf8-implicit.code | 0 .../data/utf8-implicit.data | 0 tests/{ => legacy_tests}/data/utf8.code | 0 tests/{ => legacy_tests}/data/utf8.data | 0 tests/{ => legacy_tests}/data/value.data | 0 tests/{ => legacy_tests}/data/value.detect | 0 tests/{ => legacy_tests}/data/yaml.data | 0 tests/{ => legacy_tests}/data/yaml.detect | 0 tests/{ => legacy_tests}/data/yaml11.schema | 0 .../data/yaml11.schema-skip | 0 tests/{lib => legacy_tests}/test_all.py | 0 tests/{lib => legacy_tests}/test_appliance.py | 4 +- tests/{lib => legacy_tests}/test_build.py | 0 tests/{lib => legacy_tests}/test_build_ext.py | 0 tests/{lib => legacy_tests}/test_canonical.py | 0 .../{lib => legacy_tests}/test_constructor.py | 0 tests/{lib => legacy_tests}/test_dump_load.py | 0 tests/{lib => legacy_tests}/test_emitter.py | 0 tests/{lib => legacy_tests}/test_errors.py | 0 .../test_input_output.py | 0 tests/{lib => legacy_tests}/test_mark.py | 0 .../test_multi_constructor.py | 0 tests/{lib => legacy_tests}/test_reader.py | 0 tests/{lib => legacy_tests}/test_recursive.py | 0 .../{lib => legacy_tests}/test_representer.py | 0 tests/{lib => legacy_tests}/test_resolver.py | 0 tests/{lib => legacy_tests}/test_schema.py | 0 tests/{lib => legacy_tests}/test_sort_keys.py | 0 tests/{lib => legacy_tests}/test_structure.py | 0 tests/{lib => legacy_tests}/test_tokens.py | 0 tests/{lib => legacy_tests}/test_yaml.py | 0 tests/{lib => legacy_tests}/test_yaml_ext.py | 0 608 files changed, 718 insertions(+), 727 deletions(-) create mode 100644 .github/actions/dynamatrix/action.yml create mode 100644 .github/actions/dynamatrix/matrix_yaml_to_json.py delete mode 100644 .github/workflows/manual_artifact_build.yaml create mode 100644 packaging/_pyyaml_pep517.py rename tests/{lib => legacy_tests}/canonical.py (100%) create mode 100644 tests/legacy_tests/conftest.py rename tests/{ => legacy_tests}/data/a-nasty-libyaml-bug.loader-error (100%) rename tests/{ => legacy_tests}/data/aliases-cdumper-bug.code (100%) rename tests/{ => legacy_tests}/data/aliases.events (100%) rename tests/{ => legacy_tests}/data/bool.data (100%) rename tests/{ => legacy_tests}/data/bool.detect (100%) rename tests/{ => legacy_tests}/data/construct-binary-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-binary-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-binary-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-binary-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-bool.code (100%) rename tests/{ => legacy_tests}/data/construct-bool.data (100%) rename tests/{ => legacy_tests}/data/construct-custom.code (100%) rename tests/{ => legacy_tests}/data/construct-custom.data (100%) rename tests/{ => legacy_tests}/data/construct-float.code (100%) rename tests/{ => legacy_tests}/data/construct-float.data (100%) rename tests/{ => legacy_tests}/data/construct-int.code (100%) rename tests/{ => legacy_tests}/data/construct-int.data (100%) rename tests/{ => legacy_tests}/data/construct-map.code (100%) rename tests/{ => legacy_tests}/data/construct-map.data (100%) rename tests/{ => legacy_tests}/data/construct-merge.code (100%) rename tests/{ => legacy_tests}/data/construct-merge.data (100%) rename tests/{ => legacy_tests}/data/construct-null.code (100%) rename tests/{ => legacy_tests}/data/construct-null.data (100%) rename tests/{ => legacy_tests}/data/construct-omap.code (100%) rename tests/{ => legacy_tests}/data/construct-omap.data (100%) rename tests/{ => legacy_tests}/data/construct-pairs.code (100%) rename tests/{ => legacy_tests}/data/construct-pairs.data (100%) rename tests/{ => legacy_tests}/data/construct-python-bool.code (100%) rename tests/{ => legacy_tests}/data/construct-python-bool.data (100%) rename tests/{ => legacy_tests}/data/construct-python-bytes-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-python-bytes-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-python-complex.code (100%) rename tests/{ => legacy_tests}/data/construct-python-complex.data (100%) rename tests/{ => legacy_tests}/data/construct-python-float.code (100%) rename tests/{ => legacy_tests}/data/construct-python-float.data (100%) rename tests/{ => legacy_tests}/data/construct-python-int.code (100%) rename tests/{ => legacy_tests}/data/construct-python-int.data (100%) rename tests/{ => legacy_tests}/data/construct-python-long-short-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-python-long-short-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-python-long-short-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-python-long-short-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-python-name-module.code (100%) rename tests/{ => legacy_tests}/data/construct-python-name-module.data (100%) rename tests/{ => legacy_tests}/data/construct-python-none.code (100%) rename tests/{ => legacy_tests}/data/construct-python-none.data (100%) rename tests/{ => legacy_tests}/data/construct-python-object.code (100%) rename tests/{ => legacy_tests}/data/construct-python-object.data (100%) rename tests/{ => legacy_tests}/data/construct-python-str-ascii.code (100%) rename tests/{ => legacy_tests}/data/construct-python-str-ascii.data (100%) rename tests/{ => legacy_tests}/data/construct-python-str-utf8-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-python-str-utf8-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-python-str-utf8-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-python-str-utf8-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-python-tuple-list-dict.code (100%) rename tests/{ => legacy_tests}/data/construct-python-tuple-list-dict.data (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-ascii-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-ascii-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-ascii-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-ascii-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-utf8-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-utf8-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-utf8-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-python-unicode-utf8-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-seq.code (100%) rename tests/{ => legacy_tests}/data/construct-seq.data (100%) rename tests/{ => legacy_tests}/data/construct-set.code (100%) rename tests/{ => legacy_tests}/data/construct-set.data (100%) rename tests/{ => legacy_tests}/data/construct-str-ascii.code (100%) rename tests/{ => legacy_tests}/data/construct-str-ascii.data (100%) rename tests/{ => legacy_tests}/data/construct-str-utf8-py2.code (100%) rename tests/{ => legacy_tests}/data/construct-str-utf8-py2.data (100%) rename tests/{ => legacy_tests}/data/construct-str-utf8-py3.code (100%) rename tests/{ => legacy_tests}/data/construct-str-utf8-py3.data (100%) rename tests/{ => legacy_tests}/data/construct-str.code (100%) rename tests/{ => legacy_tests}/data/construct-str.data (100%) rename tests/{ => legacy_tests}/data/construct-timestamp.code (100%) rename tests/{ => legacy_tests}/data/construct-timestamp.data (100%) rename tests/{ => legacy_tests}/data/construct-value.code (100%) rename tests/{ => legacy_tests}/data/construct-value.data (100%) rename tests/{ => legacy_tests}/data/document-separator-in-quoted-scalar.loader-error (100%) rename tests/{ => legacy_tests}/data/documents.events (100%) rename tests/{ => legacy_tests}/data/duplicate-anchor-1.loader-error (100%) rename tests/{ => legacy_tests}/data/duplicate-anchor-2.loader-error (100%) rename tests/{ => legacy_tests}/data/duplicate-key.former-loader-error.code (100%) rename tests/{ => legacy_tests}/data/duplicate-key.former-loader-error.data (100%) rename tests/{ => legacy_tests}/data/duplicate-mapping-key.former-loader-error.code (100%) rename tests/{ => legacy_tests}/data/duplicate-mapping-key.former-loader-error.data (100%) rename tests/{ => legacy_tests}/data/duplicate-merge-key.former-loader-error.code (100%) rename tests/{ => legacy_tests}/data/duplicate-merge-key.former-loader-error.data (100%) rename tests/{ => legacy_tests}/data/duplicate-tag-directive.loader-error (100%) rename tests/{ => legacy_tests}/data/duplicate-value-key.former-loader-error.code (100%) rename tests/{ => legacy_tests}/data/duplicate-value-key.former-loader-error.data (100%) rename tests/{ => legacy_tests}/data/duplicate-yaml-directive.loader-error (100%) rename tests/{ => legacy_tests}/data/emit-block-scalar-in-simple-key-context-bug.canonical (100%) rename tests/{ => legacy_tests}/data/emit-block-scalar-in-simple-key-context-bug.data (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug-py3.code (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug-py3.data (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug.code (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug.data (100%) rename tests/{ => legacy_tests}/data/emitting-unacceptable-unicode-character-bug.skip-ext (100%) rename tests/{ => legacy_tests}/data/emoticons.unicode (100%) rename tests/{ => legacy_tests}/data/emoticons2.unicode (100%) rename tests/{ => legacy_tests}/data/empty-anchor.emitter-error (100%) rename tests/{ => legacy_tests}/data/empty-document-bug.canonical (100%) rename tests/{ => legacy_tests}/data/empty-document-bug.data (100%) rename tests/{ => legacy_tests}/data/empty-document-bug.empty (100%) rename tests/{ => legacy_tests}/data/empty-documents.single-loader-error (100%) rename tests/{ => legacy_tests}/data/empty-python-module.loader-error (100%) rename tests/{ => legacy_tests}/data/empty-python-name.loader-error (100%) rename tests/{ => legacy_tests}/data/empty-tag-handle.emitter-error (100%) rename tests/{ => legacy_tests}/data/empty-tag-prefix.emitter-error (100%) rename tests/{ => legacy_tests}/data/empty-tag.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-document-end.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-document-start.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-mapping.loader-error (100%) rename tests/{ => legacy_tests}/data/expected-node-1.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-node-2.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-nothing.emitter-error (100%) rename tests/{ => legacy_tests}/data/expected-scalar.loader-error (100%) rename tests/{ => legacy_tests}/data/expected-sequence.loader-error (100%) rename tests/{ => legacy_tests}/data/expected-stream-start.emitter-error (100%) rename tests/{ => legacy_tests}/data/explicit-document.single-loader-error (100%) rename tests/{ => legacy_tests}/data/fetch-complex-value-bug.loader-error (100%) rename tests/{ => legacy_tests}/data/float-representer-2.3-bug.code (100%) rename tests/{ => legacy_tests}/data/float-representer-2.3-bug.data (100%) rename tests/{ => legacy_tests}/data/float.data (100%) rename tests/{ => legacy_tests}/data/float.detect (100%) rename tests/{ => legacy_tests}/data/forbidden-entry.loader-error (100%) rename tests/{ => legacy_tests}/data/forbidden-key.loader-error (100%) rename tests/{ => legacy_tests}/data/forbidden-value.loader-error (100%) rename tests/{ => legacy_tests}/data/implicit-document.single-loader-error (100%) rename tests/{ => legacy_tests}/data/int.data (100%) rename tests/{ => legacy_tests}/data/int.detect (100%) rename tests/{ => legacy_tests}/data/invalid-anchor-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-anchor-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-anchor.emitter-error (100%) rename tests/{ => legacy_tests}/data/invalid-base64-data-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-base64-data.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-block-scalar-indicator.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-character.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-character.stream-error (100%) rename tests/{ => legacy_tests}/data/invalid-directive-line.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-directive-name-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-directive-name-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-escape-character.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-escape-numbers.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-indentation-indicator-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-indentation-indicator-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-item-without-trailing-break.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-merge-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-merge-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-omap-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-omap-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-omap-3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-pairs-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-pairs-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-pairs-3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-bytes-2-py3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-bytes-py3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-module-kind.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-module-value.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-module.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-name-kind.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-name-module.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-name-object.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-python-name-value.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-simple-key.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-single-quote-bug.code (100%) rename tests/{ => legacy_tests}/data/invalid-single-quote-bug.data (100%) rename tests/{ => legacy_tests}/data/invalid-starting-character.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-directive-handle.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-directive-prefix.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-handle-1.emitter-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-handle-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-handle-2.emitter-error (100%) rename tests/{ => legacy_tests}/data/invalid-tag-handle-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-uri-escapes-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-uri-escapes-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-uri-escapes-3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-uri.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-utf8-byte.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-utf8-byte.stream-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-1.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-2.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-3.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-4.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-5.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-directive-version-6.loader-error (100%) rename tests/{ => legacy_tests}/data/invalid-yaml-version.loader-error (100%) rename tests/{ => legacy_tests}/data/latin.unicode (100%) rename tests/{ => legacy_tests}/data/mapping.sort (100%) rename tests/{ => legacy_tests}/data/mapping.sorted (100%) rename tests/{ => legacy_tests}/data/mappings.events (100%) rename tests/{ => legacy_tests}/data/merge.data (100%) rename tests/{ => legacy_tests}/data/merge.detect (100%) rename tests/{ => legacy_tests}/data/more-floats.code (100%) rename tests/{ => legacy_tests}/data/more-floats.data (100%) rename tests/{ => legacy_tests}/data/multi-constructor.code (100%) rename tests/{ => legacy_tests}/data/multi-constructor.multi (100%) rename tests/{ => legacy_tests}/data/myfullloader.subclass_blacklist (100%) rename tests/{ => legacy_tests}/data/negative-float-bug.code (100%) rename tests/{ => legacy_tests}/data/negative-float-bug.data (100%) rename tests/{ => legacy_tests}/data/no-alias-anchor.emitter-error (100%) rename tests/{ => legacy_tests}/data/no-alias-anchor.skip-ext (100%) rename tests/{ => legacy_tests}/data/no-block-collection-end.loader-error (100%) rename tests/{ => legacy_tests}/data/no-block-mapping-end-2.loader-error (100%) rename tests/{ => legacy_tests}/data/no-block-mapping-end.loader-error (100%) rename tests/{ => legacy_tests}/data/no-document-start.loader-error (100%) rename tests/{ => legacy_tests}/data/no-flow-mapping-end.loader-error (100%) rename tests/{ => legacy_tests}/data/no-flow-sequence-end.loader-error (100%) rename tests/{ => legacy_tests}/data/no-node-1.loader-error (100%) rename tests/{ => legacy_tests}/data/no-node-2.loader-error (100%) rename tests/{ => legacy_tests}/data/no-tag.emitter-error (100%) rename tests/{ => legacy_tests}/data/null.data (100%) rename tests/{ => legacy_tests}/data/null.detect (100%) rename tests/{ => legacy_tests}/data/odd-utf16.stream-error (100%) rename tests/{ => legacy_tests}/data/overwrite-state-new-constructor.loader-error (100%) rename tests/{ => legacy_tests}/data/recursive-anchor.former-loader-error (100%) rename tests/{ => legacy_tests}/data/recursive-dict.recursive (100%) rename tests/{ => legacy_tests}/data/recursive-list.recursive (100%) rename tests/{ => legacy_tests}/data/recursive-set.recursive (100%) rename tests/{ => legacy_tests}/data/recursive-state.recursive (100%) rename tests/{ => legacy_tests}/data/recursive-tuple.recursive (100%) rename tests/{ => legacy_tests}/data/recursive.former-dumper-error (100%) rename tests/{ => legacy_tests}/data/remove-possible-simple-key-bug.loader-error (100%) rename tests/{ => legacy_tests}/data/resolver.data (100%) rename tests/{ => legacy_tests}/data/resolver.path (100%) rename tests/{ => legacy_tests}/data/run-parser-crash-bug.data (100%) rename tests/{ => legacy_tests}/data/scalars.events (100%) rename tests/{ => legacy_tests}/data/scan-document-end-bug.canonical (100%) rename tests/{ => legacy_tests}/data/scan-document-end-bug.data (100%) rename tests/{ => legacy_tests}/data/scan-line-break-bug.canonical (100%) rename tests/{ => legacy_tests}/data/scan-line-break-bug.data (100%) rename tests/{ => legacy_tests}/data/sequences.events (100%) rename tests/{ => legacy_tests}/data/serializer-is-already-opened.dumper-error (100%) rename tests/{ => legacy_tests}/data/serializer-is-closed-1.dumper-error (100%) rename tests/{ => legacy_tests}/data/serializer-is-closed-2.dumper-error (100%) rename tests/{ => legacy_tests}/data/serializer-is-not-opened-1.dumper-error (100%) rename tests/{ => legacy_tests}/data/serializer-is-not-opened-2.dumper-error (100%) rename tests/{ => legacy_tests}/data/single-dot-is-not-float-bug.code (100%) rename tests/{ => legacy_tests}/data/single-dot-is-not-float-bug.data (100%) rename tests/{ => legacy_tests}/data/sloppy-indentation.canonical (100%) rename tests/{ => legacy_tests}/data/sloppy-indentation.data (100%) rename tests/{ => legacy_tests}/data/spec-02-01.data (100%) rename tests/{ => legacy_tests}/data/spec-02-01.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-01.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-02.data (100%) rename tests/{ => legacy_tests}/data/spec-02-02.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-02.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-03.data (100%) rename tests/{ => legacy_tests}/data/spec-02-03.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-03.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-04.data (100%) rename tests/{ => legacy_tests}/data/spec-02-04.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-04.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-05.data (100%) rename tests/{ => legacy_tests}/data/spec-02-05.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-05.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-06.data (100%) rename tests/{ => legacy_tests}/data/spec-02-06.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-06.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-07.data (100%) rename tests/{ => legacy_tests}/data/spec-02-07.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-07.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-08.data (100%) rename tests/{ => legacy_tests}/data/spec-02-08.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-08.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-09.data (100%) rename tests/{ => legacy_tests}/data/spec-02-09.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-09.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-10.data (100%) rename tests/{ => legacy_tests}/data/spec-02-10.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-10.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-11.data (100%) rename tests/{ => legacy_tests}/data/spec-02-11.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-11.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-12.data (100%) rename tests/{ => legacy_tests}/data/spec-02-12.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-12.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-13.data (100%) rename tests/{ => legacy_tests}/data/spec-02-13.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-13.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-14.data (100%) rename tests/{ => legacy_tests}/data/spec-02-14.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-14.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-15.data (100%) rename tests/{ => legacy_tests}/data/spec-02-15.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-15.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-16.data (100%) rename tests/{ => legacy_tests}/data/spec-02-16.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-16.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-17.data (100%) rename tests/{ => legacy_tests}/data/spec-02-17.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-17.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-18.data (100%) rename tests/{ => legacy_tests}/data/spec-02-18.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-18.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-19.data (100%) rename tests/{ => legacy_tests}/data/spec-02-19.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-19.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-20.data (100%) rename tests/{ => legacy_tests}/data/spec-02-20.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-20.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-21.data (100%) rename tests/{ => legacy_tests}/data/spec-02-21.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-21.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-22.data (100%) rename tests/{ => legacy_tests}/data/spec-02-22.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-22.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-23.data (100%) rename tests/{ => legacy_tests}/data/spec-02-23.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-23.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-24.data (100%) rename tests/{ => legacy_tests}/data/spec-02-24.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-24.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-25.data (100%) rename tests/{ => legacy_tests}/data/spec-02-25.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-25.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-26.data (100%) rename tests/{ => legacy_tests}/data/spec-02-26.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-26.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-27.data (100%) rename tests/{ => legacy_tests}/data/spec-02-27.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-27.tokens (100%) rename tests/{ => legacy_tests}/data/spec-02-28.data (100%) rename tests/{ => legacy_tests}/data/spec-02-28.structure (100%) rename tests/{ => legacy_tests}/data/spec-02-28.tokens (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf16be.data (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf16be.empty (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf16le.data (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf16le.empty (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf8.data (100%) rename tests/{ => legacy_tests}/data/spec-05-01-utf8.empty (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf16be.data (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf16be.error (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf16le.data (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf16le.error (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf8.data (100%) rename tests/{ => legacy_tests}/data/spec-05-02-utf8.error (100%) rename tests/{ => legacy_tests}/data/spec-05-03.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-03.data (100%) rename tests/{ => legacy_tests}/data/spec-05-04.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-04.data (100%) rename tests/{ => legacy_tests}/data/spec-05-05.data (100%) rename tests/{ => legacy_tests}/data/spec-05-05.empty (100%) rename tests/{ => legacy_tests}/data/spec-05-06.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-06.data (100%) rename tests/{ => legacy_tests}/data/spec-05-07.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-07.data (100%) rename tests/{ => legacy_tests}/data/spec-05-08.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-08.data (100%) rename tests/{ => legacy_tests}/data/spec-05-09.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-09.data (100%) rename tests/{ => legacy_tests}/data/spec-05-10.data (100%) rename tests/{ => legacy_tests}/data/spec-05-10.error (100%) rename tests/{ => legacy_tests}/data/spec-05-11.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-11.data (100%) rename tests/{ => legacy_tests}/data/spec-05-12.data (100%) rename tests/{ => legacy_tests}/data/spec-05-12.error (100%) rename tests/{ => legacy_tests}/data/spec-05-13.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-13.data (100%) rename tests/{ => legacy_tests}/data/spec-05-14.canonical (100%) rename tests/{ => legacy_tests}/data/spec-05-14.data (100%) rename tests/{ => legacy_tests}/data/spec-05-15.data (100%) rename tests/{ => legacy_tests}/data/spec-05-15.error (100%) rename tests/{ => legacy_tests}/data/spec-06-01.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-01.data (100%) rename tests/{ => legacy_tests}/data/spec-06-02.data (100%) rename tests/{ => legacy_tests}/data/spec-06-02.empty (100%) rename tests/{ => legacy_tests}/data/spec-06-03.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-03.data (100%) rename tests/{ => legacy_tests}/data/spec-06-04.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-04.data (100%) rename tests/{ => legacy_tests}/data/spec-06-05.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-05.data (100%) rename tests/{ => legacy_tests}/data/spec-06-06.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-06.data (100%) rename tests/{ => legacy_tests}/data/spec-06-07.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-07.data (100%) rename tests/{ => legacy_tests}/data/spec-06-08.canonical (100%) rename tests/{ => legacy_tests}/data/spec-06-08.data (100%) rename tests/{ => legacy_tests}/data/spec-07-01.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-01.data (100%) rename tests/{ => legacy_tests}/data/spec-07-01.skip-ext (100%) rename tests/{ => legacy_tests}/data/spec-07-02.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-02.data (100%) rename tests/{ => legacy_tests}/data/spec-07-02.skip-ext (100%) rename tests/{ => legacy_tests}/data/spec-07-03.data (100%) rename tests/{ => legacy_tests}/data/spec-07-03.error (100%) rename tests/{ => legacy_tests}/data/spec-07-04.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-04.data (100%) rename tests/{ => legacy_tests}/data/spec-07-05.data (100%) rename tests/{ => legacy_tests}/data/spec-07-05.error (100%) rename tests/{ => legacy_tests}/data/spec-07-06.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-06.data (100%) rename tests/{ => legacy_tests}/data/spec-07-07a.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-07a.data (100%) rename tests/{ => legacy_tests}/data/spec-07-07b.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-07b.data (100%) rename tests/{ => legacy_tests}/data/spec-07-08.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-08.data (100%) rename tests/{ => legacy_tests}/data/spec-07-09.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-09.data (100%) rename tests/{ => legacy_tests}/data/spec-07-10.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-10.data (100%) rename tests/{ => legacy_tests}/data/spec-07-11.data (100%) rename tests/{ => legacy_tests}/data/spec-07-11.empty (100%) rename tests/{ => legacy_tests}/data/spec-07-12a.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-12a.data (100%) rename tests/{ => legacy_tests}/data/spec-07-12b.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-12b.data (100%) rename tests/{ => legacy_tests}/data/spec-07-13.canonical (100%) rename tests/{ => legacy_tests}/data/spec-07-13.data (100%) rename tests/{ => legacy_tests}/data/spec-08-01.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-01.data (100%) rename tests/{ => legacy_tests}/data/spec-08-02.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-02.data (100%) rename tests/{ => legacy_tests}/data/spec-08-03.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-03.data (100%) rename tests/{ => legacy_tests}/data/spec-08-04.data (100%) rename tests/{ => legacy_tests}/data/spec-08-04.error (100%) rename tests/{ => legacy_tests}/data/spec-08-05.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-05.data (100%) rename tests/{ => legacy_tests}/data/spec-08-06.data (100%) rename tests/{ => legacy_tests}/data/spec-08-06.error (100%) rename tests/{ => legacy_tests}/data/spec-08-07.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-07.data (100%) rename tests/{ => legacy_tests}/data/spec-08-08.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-08.data (100%) rename tests/{ => legacy_tests}/data/spec-08-09.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-09.data (100%) rename tests/{ => legacy_tests}/data/spec-08-10.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-10.data (100%) rename tests/{ => legacy_tests}/data/spec-08-11.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-11.data (100%) rename tests/{ => legacy_tests}/data/spec-08-12.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-12.data (100%) rename tests/{ => legacy_tests}/data/spec-08-13.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-13.data (100%) rename tests/{ => legacy_tests}/data/spec-08-13.skip-ext (100%) rename tests/{ => legacy_tests}/data/spec-08-14.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-14.data (100%) rename tests/{ => legacy_tests}/data/spec-08-15.canonical (100%) rename tests/{ => legacy_tests}/data/spec-08-15.data (100%) rename tests/{ => legacy_tests}/data/spec-09-01.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-01.data (100%) rename tests/{ => legacy_tests}/data/spec-09-02.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-02.data (100%) rename tests/{ => legacy_tests}/data/spec-09-03.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-03.data (100%) rename tests/{ => legacy_tests}/data/spec-09-04.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-04.data (100%) rename tests/{ => legacy_tests}/data/spec-09-05.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-05.data (100%) rename tests/{ => legacy_tests}/data/spec-09-06.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-06.data (100%) rename tests/{ => legacy_tests}/data/spec-09-07.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-07.data (100%) rename tests/{ => legacy_tests}/data/spec-09-08.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-08.data (100%) rename tests/{ => legacy_tests}/data/spec-09-09.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-09.data (100%) rename tests/{ => legacy_tests}/data/spec-09-10.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-10.data (100%) rename tests/{ => legacy_tests}/data/spec-09-11.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-11.data (100%) rename tests/{ => legacy_tests}/data/spec-09-12.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-12.data (100%) rename tests/{ => legacy_tests}/data/spec-09-13.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-13.data (100%) rename tests/{ => legacy_tests}/data/spec-09-14.data (100%) rename tests/{ => legacy_tests}/data/spec-09-14.error (100%) rename tests/{ => legacy_tests}/data/spec-09-15.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-15.data (100%) rename tests/{ => legacy_tests}/data/spec-09-16.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-16.data (100%) rename tests/{ => legacy_tests}/data/spec-09-17.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-17.data (100%) rename tests/{ => legacy_tests}/data/spec-09-18.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-18.data (100%) rename tests/{ => legacy_tests}/data/spec-09-19.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-19.data (100%) rename tests/{ => legacy_tests}/data/spec-09-20.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-20.data (100%) rename tests/{ => legacy_tests}/data/spec-09-20.skip-ext (100%) rename tests/{ => legacy_tests}/data/spec-09-21.data (100%) rename tests/{ => legacy_tests}/data/spec-09-21.error (100%) rename tests/{ => legacy_tests}/data/spec-09-22.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-22.data (100%) rename tests/{ => legacy_tests}/data/spec-09-23.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-23.data (100%) rename tests/{ => legacy_tests}/data/spec-09-24.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-24.data (100%) rename tests/{ => legacy_tests}/data/spec-09-25.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-25.data (100%) rename tests/{ => legacy_tests}/data/spec-09-26.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-26.data (100%) rename tests/{ => legacy_tests}/data/spec-09-27.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-27.data (100%) rename tests/{ => legacy_tests}/data/spec-09-28.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-28.data (100%) rename tests/{ => legacy_tests}/data/spec-09-29.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-29.data (100%) rename tests/{ => legacy_tests}/data/spec-09-30.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-30.data (100%) rename tests/{ => legacy_tests}/data/spec-09-31.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-31.data (100%) rename tests/{ => legacy_tests}/data/spec-09-32.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-32.data (100%) rename tests/{ => legacy_tests}/data/spec-09-33.canonical (100%) rename tests/{ => legacy_tests}/data/spec-09-33.data (100%) rename tests/{ => legacy_tests}/data/spec-10-01.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-01.data (100%) rename tests/{ => legacy_tests}/data/spec-10-02.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-02.data (100%) rename tests/{ => legacy_tests}/data/spec-10-03.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-03.data (100%) rename tests/{ => legacy_tests}/data/spec-10-04.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-04.data (100%) rename tests/{ => legacy_tests}/data/spec-10-05.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-05.data (100%) rename tests/{ => legacy_tests}/data/spec-10-06.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-06.data (100%) rename tests/{ => legacy_tests}/data/spec-10-07.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-07.data (100%) rename tests/{ => legacy_tests}/data/spec-10-08.data (100%) rename tests/{ => legacy_tests}/data/spec-10-08.error (100%) rename tests/{ => legacy_tests}/data/spec-10-09.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-09.data (100%) rename tests/{ => legacy_tests}/data/spec-10-10.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-10.data (100%) rename tests/{ => legacy_tests}/data/spec-10-11.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-11.data (100%) rename tests/{ => legacy_tests}/data/spec-10-12.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-12.data (100%) rename tests/{ => legacy_tests}/data/spec-10-13.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-13.data (100%) rename tests/{ => legacy_tests}/data/spec-10-14.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-14.data (100%) rename tests/{ => legacy_tests}/data/spec-10-15.canonical (100%) rename tests/{ => legacy_tests}/data/spec-10-15.data (100%) rename tests/{ => legacy_tests}/data/str.data (100%) rename tests/{ => legacy_tests}/data/str.detect (100%) rename tests/{ => legacy_tests}/data/tags.events (100%) rename tests/{ => legacy_tests}/data/test_mark.marks (100%) rename tests/{ => legacy_tests}/data/timestamp-bugs.code (100%) rename tests/{ => legacy_tests}/data/timestamp-bugs.data (100%) rename tests/{ => legacy_tests}/data/timestamp.data (100%) rename tests/{ => legacy_tests}/data/timestamp.detect (100%) rename tests/{ => legacy_tests}/data/unacceptable-key.loader-error (100%) rename tests/{ => legacy_tests}/data/unclosed-bracket.loader-error (100%) rename tests/{ => legacy_tests}/data/unclosed-quoted-scalar.loader-error (100%) rename tests/{ => legacy_tests}/data/undefined-anchor.loader-error (100%) rename tests/{ => legacy_tests}/data/undefined-constructor.loader-error (100%) rename tests/{ => legacy_tests}/data/undefined-tag-handle.loader-error (100%) rename tests/{ => legacy_tests}/data/unknown.dumper-error (100%) rename tests/{ => legacy_tests}/data/unsupported-version.emitter-error (100%) rename tests/{ => legacy_tests}/data/utf16be.code (100%) rename tests/{ => legacy_tests}/data/utf16be.data (100%) rename tests/{ => legacy_tests}/data/utf16le.code (100%) rename tests/{ => legacy_tests}/data/utf16le.data (100%) rename tests/{ => legacy_tests}/data/utf8-implicit.code (100%) rename tests/{ => legacy_tests}/data/utf8-implicit.data (100%) rename tests/{ => legacy_tests}/data/utf8.code (100%) rename tests/{ => legacy_tests}/data/utf8.data (100%) rename tests/{ => legacy_tests}/data/value.data (100%) rename tests/{ => legacy_tests}/data/value.detect (100%) rename tests/{ => legacy_tests}/data/yaml.data (100%) rename tests/{ => legacy_tests}/data/yaml.detect (100%) rename tests/{ => legacy_tests}/data/yaml11.schema (100%) rename tests/{ => legacy_tests}/data/yaml11.schema-skip (100%) rename tests/{lib => legacy_tests}/test_all.py (100%) rename tests/{lib => legacy_tests}/test_appliance.py (97%) rename tests/{lib => legacy_tests}/test_build.py (100%) rename tests/{lib => legacy_tests}/test_build_ext.py (100%) rename tests/{lib => legacy_tests}/test_canonical.py (100%) rename tests/{lib => legacy_tests}/test_constructor.py (100%) rename tests/{lib => legacy_tests}/test_dump_load.py (100%) rename tests/{lib => legacy_tests}/test_emitter.py (100%) rename tests/{lib => legacy_tests}/test_errors.py (100%) rename tests/{lib => legacy_tests}/test_input_output.py (100%) rename tests/{lib => legacy_tests}/test_mark.py (100%) rename tests/{lib => legacy_tests}/test_multi_constructor.py (100%) rename tests/{lib => legacy_tests}/test_reader.py (100%) rename tests/{lib => legacy_tests}/test_recursive.py (100%) rename tests/{lib => legacy_tests}/test_representer.py (100%) rename tests/{lib => legacy_tests}/test_resolver.py (100%) rename tests/{lib => legacy_tests}/test_schema.py (100%) rename tests/{lib => legacy_tests}/test_sort_keys.py (100%) rename tests/{lib => legacy_tests}/test_structure.py (100%) rename tests/{lib => legacy_tests}/test_tokens.py (100%) rename tests/{lib => legacy_tests}/test_yaml.py (100%) rename tests/{lib => legacy_tests}/test_yaml_ext.py (100%) diff --git a/.github/actions/dynamatrix/action.yml b/.github/actions/dynamatrix/action.yml new file mode 100644 index 00000000..11eef3bb --- /dev/null +++ b/.github/actions/dynamatrix/action.yml @@ -0,0 +1,22 @@ +name: Create matrix +description: Create matrix +inputs: + matrix_yaml: + description: input yaml matrix as multiline string; any entry with a bool true `omit` key will be filtered from the output matrix + required: true +outputs: + matrix_json: + description: filtered matrix as JSON + value: ${{ steps.matrix_gen.outputs.matrix_json }} + +runs: + using: "composite" + + steps: + - id: matrix_gen + run: | + # FIXME: input sanity check to prevent shell injection + python3 $GITHUB_ACTION_PATH/matrix_yaml_to_json.py --from-stdin << EOF + ${{ inputs.matrix_yaml }} + EOF + shell: bash diff --git a/.github/actions/dynamatrix/matrix_yaml_to_json.py b/.github/actions/dynamatrix/matrix_yaml_to_json.py new file mode 100644 index 00000000..77bebaf4 --- /dev/null +++ b/.github/actions/dynamatrix/matrix_yaml_to_json.py @@ -0,0 +1,71 @@ +from __future__ import annotations + +import argparse +import json +import os +import pathlib +import sys +import typing as t +import yaml + +from collections.abc import MutableMapping, Sequence + +skipped_entries = [] + +def _filter_omit_entries(value): + if isinstance(value, MutableMapping): + if (omit_value := value.pop('omit', ...)) is not ...: + if omit_value is True or str(omit_value).lower().strip() == 'true': + print(f'omitting {value} from matrix') + skipped_entries.append(value) + return ... + + return {k: v for k, v in ((k, _filter_omit_entries(v)) for k, v in value.items()) if v is not ...} + + if isinstance(value, str): + return value + + if isinstance(value, Sequence): + return [v for v in (_filter_omit_entries(v) for v in value) if v is not ...] + + return value + +def main(): + p = argparse.ArgumentParser(description='GHA YAML matrix filter') + required_grp = p.add_mutually_exclusive_group(required=True) + required_grp.add_argument('--from-stdin', action='store_true', help='read input YAML from stdin') + required_grp.add_argument('--from-file', type=pathlib.Path, help='read input YAML from file path') + + args = p.parse_args() + + path: pathlib.Path | None + + matrix_yaml: str + + if path := args.from_file: + matrix_yaml = path.read_text() + elif args.from_stdin: + matrix_yaml = sys.stdin.read() + else: + raise Exception('no source provided for matrix yaml') + + raw_matrix = yaml.safe_load(matrix_yaml) + filtered_matrix = _filter_omit_entries(raw_matrix) + + output_matrix_json = json.dumps(filtered_matrix) + output_skipped_matrix_json = json.dumps(skipped_entries) + + print(f'filtered matrix: {output_matrix_json}') + print(f'skipped entries: {output_skipped_matrix_json}') + + if (gh_output := os.environ.get('GITHUB_OUTPUT')): + print('setting step output var matrix_json; skipped_matrix_json...') + with pathlib.Path(gh_output).open('a') as env_fd: + env_fd.write(f'matrix_json<<__MATRIX_EOF\n{output_matrix_json}\n__MATRIX_EOF\n') + env_fd.write(f'skipped_matrix_json<<__MATRIX_EOF\n{output_skipped_matrix_json}\n__MATRIX_EOF\n') + else: + print("GITHUB_OUTPUT not set; skipping variable output") + + +if __name__ == '__main__': + main() diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c823062a..28800091 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,8 +1,4 @@ --- -# This is the CI workflow (not the artifact build/release workflow). The workflows -# are split because GHA doesn't support a dynamic/conditional matrix. This workflow -# has slow jobs and jobs that require private GHA runners (eg, M1 Mac) commented out. -# Ensure changes are synced with manual_artifact_build.yaml. name: PyYAML CI on: @@ -10,25 +6,52 @@ on: pull_request: types: [opened, synchronize, reopened] workflow_dispatch: + inputs: + libyaml_repo: + description: Repo URL for libyaml + type: string + default: https://github.com/yaml/libyaml + libyaml_ref: + description: Tag/branch ref for libyaml + type: string + default: 0.2.5 + skip_artifact_upload: + description: Skip most artifact uploads? + type: boolean + default: true + skip_ci_redundant_jobs: + description: Skip redundant jobs for CI? + type: boolean + default: true + skip_slow_jobs: + description: Skip slow (emulated) jobs for CI? + type: boolean + default: true env: - LIBYAML_REPO: https://github.com/yaml/libyaml - LIBYAML_REF: 0.2.5 + LIBYAML_REPO: ${{ inputs.libyaml_repo || 'https://github.com/yaml/libyaml' }} # FIXME: can we ref the input.default value? + LIBYAML_REF: ${{ inputs.libyaml_ref || '0.2.5' }} # FIXME: can we ref the input.default value? + skip_ci_redundant_jobs: ${{ inputs.skip_ci_redundant_jobs || github.event_name == 'pull_request' || github.event_name == 'push' }} + skip_slow_jobs: ${{ inputs.skip_slow_jobs || github.event_name == 'pull_request' || github.event_name == 'push' }} + skip_artifact_upload: ${{ (github.event_name == 'workflow_dispatch' && inputs.skip_artifact_upload) || github.event_name != 'workflow_dispatch' }} jobs: python_sdist: name: pyyaml sdist - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + outputs: + artifact_name: ${{ steps.build_sdist.outputs.artifact_name }} steps: - name: Checkout PyYAML - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install a python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.x - name: Build sdist + id: build_sdist env: PYYAML_FORCE_CYTHON: 1 PYYAML_FORCE_LIBYAML: 0 @@ -36,64 +59,60 @@ jobs: python -V python -m pip install build - python -m build . - - # Ensure exactly one artifact was produced. - [[ $(shopt -s nullglob; ls dist/*.tar.gz | wc -w) == 1 ]] || { - echo "Unexpected content in dist dir: '$(ls dist/*.tar.gz)'." - exit 1 - } - - - name: Test sdist - run: | - # Install some libyaml headers. - # TODO Should we smoke test the sdist against the libyaml we built? - sudo apt update - sudo apt install libyaml-dev -y - - # Ensure Cython is not present so we use only what's in the sdist. - python -m pip uninstall Cython -y || true + python -m build -s . - # Pass no extra args. - # We should auto-install with libyaml since it's present. - python -m pip install dist/*.tar.gz -v - - python packaging/build/smoketest.py + echo "artifact_name=$(ls ./dist)" >> "$GITHUB_OUTPUT" - name: Upload sdist artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: dist - path: dist/*.tar.gz + name: ${{ steps.build_sdist.outputs.artifact_name }} + path: dist/${{ steps.build_sdist.outputs.artifact_name }} + if-no-files-found: error + # always upload the sdist artifact- all the wheel build jobs require it + make_linux_libyaml_matrix: + runs-on: ubuntu-22.04 + outputs: + matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} + steps: + - uses: actions/checkout@v4 + - name: make a matrix + id: make_matrix + uses: ./.github/actions/dynamatrix + with: + matrix_yaml: | + include: + - { platform: manylinux1, arch: x86_64 } + - { platform: manylinux2014, arch: x86_64 } + - { platform: manylinux2014, arch: aarch64, omit: ${{ env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, omit: ${{ env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: x86_64 } + - { platform: musllinux_1_1, arch: aarch64, omit: ${{ env.skip_slow_jobs }} } linux_libyaml: - name: libyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}} - runs-on: ubuntu-latest + needs: [make_linux_libyaml_matrix] + name: libyaml ${{ matrix.platform }} ${{ matrix.arch }} + runs-on: ubuntu-22.04 strategy: - matrix: - cfg: - - { platform: manylinux1, arch: x86_64 } - - { platform: manylinux2014, arch: x86_64 } -# - { platform: manylinux2014, arch: aarch64 } -# - { platform: manylinux2014, arch: s390x } - - { platform: musllinux_1_1, arch: x86_64 } + fail-fast: false + matrix: ${{ fromJSON(needs.make_linux_libyaml_matrix.outputs.matrix_json) }} env: - DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}} + DOCKER_IMAGE: quay.io/pypa/${{ matrix.platform }}_${{ matrix.arch }} steps: - name: Check cached libyaml state id: cached_libyaml - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: libyaml - key: libyaml_${{matrix.cfg.platform}}_${{matrix.cfg.arch}}_${{env.LIBYAML_REF}} + key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }} - name: configure docker foreign arch support - uses: docker/setup-qemu-action@v2 - if: matrix.cfg.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true' + uses: docker/setup-qemu-action@v3 + if: matrix.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true' - name: Checkout pyyaml - uses: actions/checkout@v3 + uses: actions/checkout@v4 if: steps.cached_libyaml.outputs.cache-hit != 'true' - name: Build libyaml @@ -112,58 +131,78 @@ jobs: sudo chmod -R a+r ./libyaml/ if: steps.cached_libyaml.outputs.cache-hit != 'true' + make_linux_pyyaml_matrix: + runs-on: ubuntu-22.04 + outputs: + matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} + steps: + - uses: actions/checkout@v4 + - name: make a matrix + id: make_matrix + uses: ./.github/actions/dynamatrix + with: + matrix_yaml: | + include: + - { platform: manylinux1, arch: x86_64, spec: cp38 } + - { platform: manylinux1, arch: x86_64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: manylinux2014, arch: x86_64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: manylinux2014, arch: x86_64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: manylinux2014, arch: x86_64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: manylinux2014, arch: x86_64, spec: cp313 } + - { platform: manylinux2014, arch: aarch64, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: aarch64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: aarch64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: aarch64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: aarch64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: aarch64, spec: cp313, omit: ${{ env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: manylinux2014, arch: s390x, spec: cp313, omit: ${{ env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } + - { platform: musllinux_1_1, arch: x86_64, spec: cp313 } + - { platform: musllinux_1_1, arch: aarch64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: aarch64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: aarch64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: aarch64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } + - { platform: musllinux_1_1, arch: aarch64, spec: cp313, omit: ${{ env.skip_slow_jobs }} } + linux_pyyaml: - needs: linux_libyaml - name: pyyaml ${{matrix.arch}} ${{matrix.platform}} ${{matrix.spec}} - runs-on: ubuntu-latest + needs: [python_sdist, linux_libyaml, make_linux_pyyaml_matrix] + name: pyyaml ${{matrix.spec}}-${{matrix.platform}}_${{matrix.arch}} + runs-on: ubuntu-22.04 strategy: - matrix: - include: - - { platform: manylinux1, arch: x86_64, spec: cp36 } -# - { platform: manylinux1, arch: x86_64, spec: cp37 } -# - { platform: manylinux1, arch: x86_64, spec: cp38 } -# - { platform: manylinux1, arch: x86_64, spec: cp39 } -# - { platform: manylinux2014, arch: x86_64, spec: cp310 } -# - { platform: manylinux2014, arch: x86_64, spec: cp311 } - - { platform: manylinux2014, arch: x86_64, spec: cp312 } -# - { platform: manylinux2014, arch: aarch64, spec: cp36 } -# - { platform: manylinux2014, arch: aarch64, spec: cp37 } -# - { platform: manylinux2014, arch: aarch64, spec: cp38 } -# - { platform: manylinux2014, arch: aarch64, spec: cp39 } -# - { platform: manylinux2014, arch: aarch64, spec: cp310 } -# - { platform: manylinux2014, arch: aarch64, spec: cp311 } -# - { platform: manylinux2014, arch: aarch64, spec: cp312 } -# - { platform: manylinux2014, arch: s390x, spec: cp36 } -# - { platform: manylinux2014, arch: s390x, spec: cp37 } -# - { platform: manylinux2014, arch: s390x, spec: cp38 } -# - { platform: manylinux2014, arch: s390x, spec: cp39 } -# - { platform: manylinux2014, arch: s390x, spec: cp310 } -# - { platform: manylinux2014, arch: s390x, spec: cp311 } -# - { platform: manylinux2014, arch: s390x, spec: cp312 } -# - { platform: musllinux_1_1, arch: x86_64, spec: cp38 } -# - { platform: musllinux_1_1, arch: x86_64, spec: cp39 } -# - { platform: musllinux_1_1, arch: x86_64, spec: cp310 } -# - { platform: musllinux_1_1, arch: x86_64, spec: cp311 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp312 } + fail-fast: false + matrix: ${{ fromJSON(needs.make_linux_pyyaml_matrix.outputs.matrix_json) }} steps: - - name: Checkout PyYAML - uses: actions/checkout@v3 + - name: fetch sdist artifact + id: fetch_sdist + uses: actions/download-artifact@v4 + with: + name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Fetch cached libyaml id: cached_libyaml - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: libyaml key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}} fail-on-cache-miss: true - name: configure docker foreign arch support - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 if: matrix.arch != 'x86_64' - name: Build/Test/Package + id: build env: CIBW_ARCHS: all # HACK: ick, maybe deconstruct the matrix a bit or query cibuildwheel for its default target *linux spec first? @@ -171,24 +210,47 @@ jobs: CIBW_BUILD_VERBOSITY: 1 # containerized Linux builds require explicit CIBW_ENVIRONMENT CIBW_ENVIRONMENT: > - C_INCLUDE_PATH=libyaml/include - LIBRARY_PATH=libyaml/src/.libs - LD_LIBRARY_PATH=libyaml/src/.libs + LD_LIBRARY_PATH=../libyaml/src/.libs PYYAML_FORCE_CYTHON=1 PYYAML_FORCE_LIBYAML=1 - CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py + CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || '' }} + CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || '' }} + CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux_img || '' }} + CIBW_MANYLINUX_S390X_IMAGE: ${{ matrix.manylinux_img || '' }} + CIBW_MUSLLINUX_X86_64_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_1' }} + CIBW_MUSLLINUX_I686_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_1' }} + CIBW_MUSLLINUX_AARCH64_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_1' }} + CIBW_PRERELEASE_PYTHONS: 1 + CIBW_TEST_COMMAND: cd {project}; pytest + CIBW_TEST_REQUIRES: pytest run: | set -eux + python3 -V - python3 -m pip install -U --user cibuildwheel - python3 -m cibuildwheel --platform auto --output-dir dist . + python3 -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }} + + mkdir pyyaml + + tar zxf ${{ steps.fetch_sdist.outputs.download-path }}/pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml + + cat << 'EOF' > build_config.toml + [tool.cibuildwheel.config-settings] + pyyaml_build_config='{"force":1, "library_dirs": ["../libyaml/src/.libs"], "include_dirs": ["../libyaml/include"]}' + EOF + + CIBW_BEFORE_BUILD="ls -l {project}" python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml + + echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" + # FIXME: ensure exactly one artifact - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: dist + name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error + if: ${{ env.skip_artifact_upload != 'true' }} + macos_libyaml: name: libyaml macos ${{matrix.arch}} @@ -196,25 +258,25 @@ jobs: matrix: include: - arch: x86_64 -# - arch: arm64 -# runs_on: [self-hosted, macOS, arm64] -# deployment_target: '11.0' -# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} -# sdkroot: macosx11.3 + runs-on: macos-13 + run_wrapper: arch -x86_64 bash --noprofile --norc -eo pipefail {0} + - arch: arm64 + deployment_target: '11.0' + run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} defaults: run: - shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} - runs-on: ${{ matrix.runs_on || 'macos-11' }} + shell: ${{ matrix.run_wrapper || 'arch -x86_64 bash --noprofile --norc -eo pipefail {0}' }} + runs-on: ${{ matrix.runs-on || 'macos-14' }} steps: - name: Check cached libyaml state id: cached_libyaml - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: libyaml key: libyaml_macos_${{matrix.arch}}_${{env.LIBYAML_REF}} - name: Checkout PyYAML - uses: actions/checkout@v3 + uses: actions/checkout@v4 if: steps.cached_libyaml.outputs.cache-hit != 'true' - name: Build libyaml @@ -223,112 +285,154 @@ jobs: SDKROOT: ${{ matrix.sdkroot || 'macosx' }} run: | set -eux - brew install automake coreutils m4 + brew install automake coreutils m4 libtool bash ./packaging/build/libyaml.sh echo "finished artifact arch is $(lipo -archs libyaml/src/.libs/libyaml.a)" if: steps.cached_libyaml.outputs.cache-hit != 'true' + make_macos_pyyaml_matrix: + runs-on: ubuntu-22.04 + outputs: + matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} + steps: + - uses: actions/checkout@v4 + - name: make a matrix + id: make_matrix + uses: ./.github/actions/dynamatrix + with: + matrix_yaml: | + include: + - spec: cp38-macosx_x86_64 + cibw_version: cibuildwheel==2.11.1 + runs_on: [macos-13] + omit: ${{ env.skip_ci_redundant_jobs }} + - spec: cp39-macosx_x86_64 + runs_on: [macos-13] + omit: ${{ env.skip_ci_redundant_jobs }} + - spec: cp310-macosx_x86_64 + runs_on: [macos-13] + omit: ${{ env.skip_ci_redundant_jobs }} + - spec: cp311-macosx_x86_64 + runs_on: [macos-13] + omit: ${{ env.skip_ci_redundant_jobs }} + - spec: cp312-macosx_x86_64 + runs_on: [macos-13] + omit: ${{ env.skip_ci_redundant_jobs }} + - spec: cp313-macosx_x86_64 + runs_on: [macos-13] + + - spec: cp39-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp310-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp311-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp312-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp313-macosx_arm64 + deployment_target: '11.0' + arch: arm64 + macos_pyyaml: - needs: macos_libyaml + needs: [python_sdist, macos_libyaml, make_macos_pyyaml_matrix] name: pyyaml ${{ matrix.spec }} - runs-on: ${{ matrix.runs_on || 'macos-11' }} + runs-on: ${{ matrix.runs_on || 'macos-14' }} defaults: run: shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} strategy: - matrix: - include: -# - spec: cp36-macosx_x86_64 -# cibw_version: cibuildwheel==2.11.1 -# - spec: cp37-macosx_x86_64 -# cibw_version: cibuildwheel==2.11.1 -# - spec: cp38-macosx_x86_64 -# cibw_version: cibuildwheel==2.11.1 -# - spec: cp39-macosx_x86_64 -# - spec: cp310-macosx_x86_64 -# - spec: cp311-macosx_x86_64 - - spec: cp312-macosx_x86_64 - -# # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported -# - spec: cp39-macosx_arm64 -# deployment_target: '11.0' -# runs_on: [self-hosted, macOS, arm64] -# arch: arm64 -# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} -# sdkroot: macosx11.3 -# -# - spec: cp310-macosx_arm64 -# deployment_target: '11.0' -# runs_on: [self-hosted, macOS, arm64] -# arch: arm64 -# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} -# sdkroot: macosx11.3 -# -# - spec: cp311-macosx_arm64 -# deployment_target: '11.0' -# runs_on: [self-hosted, macOS, arm64] -# arch: arm64 -# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} -# sdkroot: macosx11.3 -# -# - spec: cp312-macosx_arm64 -# deployment_target: '11.0' -# runs_on: [self-hosted, macOS, arm64] -# arch: arm64 -# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} -# sdkroot: macosx11.3 - + fail-fast: false + matrix: ${{ fromJSON(needs.make_macos_pyyaml_matrix.outputs.matrix_json) }} steps: - - name: Checkout PyYAML - uses: actions/checkout@v3 + - name: fetch sdist artifact + id: fetch_sdist + uses: actions/download-artifact@v4 + with: + name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Get cached libyaml state id: cached_libyaml - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: libyaml key: libyaml_macos_${{ matrix.arch || 'x86_64' }}_${{env.LIBYAML_REF}} fail-on-cache-miss: true + - name: Install python + uses: actions/setup-python@v5 + with: + python-version: '3.11' # as of 2024-05, this has to be < 3.12 since the macos-13 runner image's + # built-in virtualenv/pip are pinned to busted versions that fail on newer Pythons + - name: Build/Test/Package + id: build env: - C_INCLUDE_PATH: libyaml/include + C_INCLUDE_PATH: ../libyaml/include CIBW_BUILD: ${{matrix.spec}} CIBW_BUILD_VERBOSITY: 1 - CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py - LIBRARY_PATH: libyaml/src/.libs + CIBW_PRERELEASE_PYTHONS: 1 + CIBW_TEST_COMMAND: pytest {package} + CIBW_TEST_REQUIRES: pytest + LIBRARY_PATH: ../libyaml/src/.libs MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }} + PYYAML_FORCE_CYTHON: 1 + PYYAML_FORCE_LIBYAML: 1 SDKROOT: ${{ matrix.sdkroot || 'macosx' }} run: | + set -eux python3 -V python3 -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }} - python3 -m cibuildwheel --platform auto --output-dir dist . + mkdir pyyaml + + tar zxf pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml + + cat << 'EOF' > build_config.toml + [tool.cibuildwheel.config-settings] + pyyaml_build_config='{"force":1, "library_dirs": ["../libyaml/src/.libs"], "include_dirs": ["../libyaml/include"]}' + EOF + + python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml + + echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" + # FIXME: ensure exactly one artifact - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: dist + name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error + if: ${{ env.skip_artifact_upload != 'true' }} + windows_libyaml: - name: libyaml ${{matrix.platform}} ${{matrix.arch}} - runs-on: ${{matrix.platform}} + name: libyaml windows ${{ matrix.arch }} + runs-on: ${{ matrix.platform || 'windows-2022' }} strategy: matrix: include: - - platform: windows-2019 - arch: x64 - - platform: windows-2019 - arch: win32 + - arch: x64 + - arch: win32 steps: - name: Get cached libyaml state id: cached_libyaml - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: libyaml - key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}} + key: libyaml_${{ 'windows' }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }} - name: Build libyaml shell: bash @@ -348,74 +452,63 @@ jobs: mkdir libyaml/build pushd libyaml/build - cmake.exe -G "Visual Studio 16 2019" -A ${{ matrix.arch }} -DYAML_STATIC_LIB_NAME=yaml .. + cmake.exe -G "Visual Studio 17 2022" -A ${{ matrix.arch }} -DYAML_STATIC_LIB_NAME=yaml .. cmake.exe --build . --config Release popd + make_windows_pyyaml_matrix: + runs-on: ubuntu-22.04 + outputs: + matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} + steps: + - uses: actions/checkout@v4 + - name: make a matrix + id: make_matrix + uses: ./.github/actions/dynamatrix + with: + matrix_yaml: | + include: + - spec: cp38-win_amd64 + + - spec: cp39-win_amd64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp310-win_amd64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp311-win_amd64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp312-win_amd64 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp313-win_amd64 + + - spec: cp38-win32 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp39-win32 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp310-win32 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp311-win32 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp312-win32 + omit: ${{ env.skip_ci_redundant_jobs }} + + - spec: cp313-win32 + omit: ${{ env.skip_ci_redundant_jobs }} windows_pyyaml: - needs: windows_libyaml - name: pyyaml ${{ matrix.platform }} ${{matrix.python_arch}} ${{matrix.spec}} - runs-on: ${{matrix.platform}} + needs: [python_sdist, windows_libyaml, make_windows_pyyaml_matrix] + name: pyyaml ${{matrix.spec}} + runs-on: ${{ matrix.runs-on || 'windows-2022' }} strategy: - matrix: - include: -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: 3.6 -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: 3.7 -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: 3.8 -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: 3.9 -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: '3.10' -# - platform: windows-2019 -# build_arch: x64 -# python_arch: x64 -# spec: '3.11' - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: '3.12.0-rc.1' -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: 3.6 -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: 3.7 -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: 3.8 -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: 3.9 -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: '3.10' -# - platform: windows-2019 -# build_arch: win32 -# python_arch: x86 -# spec: '3.11' - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: '3.12.0-rc.1' + fail-fast: false + matrix: ${{ fromJSON(needs.make_windows_pyyaml_matrix.outputs.matrix_json) }} steps: # autocrlf screws up tests under Windows - name: Set git to use LF @@ -423,48 +516,87 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - - name: Checkout pyyaml - uses: actions/checkout@v3 + - name: fetch sdist artifact + id: fetch_sdist + uses: actions/download-artifact@v4 + with: + name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Get cached libyaml state id: cached_libyaml - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: libyaml - key: libyaml_${{matrix.platform}}_${{matrix.build_arch}}_${{env.LIBYAML_REF}} + key: libyaml_${{'windows'}}_${{ contains(matrix.spec, 'win_amd64') && 'x64' || 'win32' }}_${{env.LIBYAML_REF}} fail-on-cache-miss: true - - name: Install python ${{ matrix.spec }} - uses: actions/setup-python@v4 + - name: Install python + uses: actions/setup-python@v5 with: - architecture: ${{ matrix.python_arch }} - python-version: ${{ matrix.spec }} + python-version: 3.x - name: Build/Test/Package - env: - PYYAML_FORCE_CYTHON: 1 - PYYAML_FORCE_LIBYAML: 1 + id: build shell: bash + env: + CIBW_BUILD: ${{matrix.spec}} + CIBW_BUILD_VERBOSITY: 1 + CIBW_BEFORE_TEST: ls -l {package} + CIBW_TEST_COMMAND: pytest {package} + CIBW_TEST_REQUIRES: pytest + CIBW_PRERELEASE_PYTHONS: 1 + #CIBW_CONFIG_SETTINGS: | + # pyyaml_build_config='{"include_dirs": ["libyaml/include"], "library_dirs": ["libyaml/build/Release"], "define": [["YAML_DECLARE_STATIC", 1]], "force": 1}' run: | set -eux python -V - python -m pip install "Cython<3.0" setuptools wheel + python -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }} + mkdir pyyaml + + tar zxf pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml - python setup.py \ - --with-libyaml build_ext \ - -I libyaml/include \ - -L libyaml/build/Release \ - -D YAML_DECLARE_STATIC \ - build bdist_wheel + cat << 'EOF' > build_config.toml + [tool.cibuildwheel.config-settings] + pyyaml_build_config='{"force":1, "include_dirs": ["../libyaml/include"], "library_dirs": ["../libyaml/build/Release"], "define": [["YAML_DECLARE_STATIC", 1]], "force": 1}' + EOF - # run tests on built wheel - python -m pip install dist/*.whl - python tests/lib/test_all.py + python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml + + echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" + # FIXME: ensure exactly one artifact - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: dist + name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error + if: ${{ env.skip_artifact_upload != 'true' }} + + merge_artifacts: + needs: [python_sdist, macos_pyyaml, linux_pyyaml, windows_pyyaml] + runs-on: ubuntu-22.04 + steps: + - name: merge all artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: dist + delete-merged: true + if: ${{ env.skip_artifact_upload != 'true' }} + + + check: + if: always() + needs: + - python_sdist + - linux_pyyaml + - macos_pyyaml + - windows_pyyaml + - merge_artifacts + runs-on: ubuntu-latest + steps: + - name: Verify all previous jobs succeeded (provides a single check to sample for gating purposes) + uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} ... diff --git a/.github/workflows/manual_artifact_build.yaml b/.github/workflows/manual_artifact_build.yaml deleted file mode 100644 index c669f95a..00000000 --- a/.github/workflows/manual_artifact_build.yaml +++ /dev/null @@ -1,469 +0,0 @@ ---- -# This is the actual artifact build/release workflow. This workflow exists temporarily -# because GHA doesn't support a dynamic/conditional matrix. Ensure changes are synced with ci.yaml. -name: Manual Artifact Build - -on: -# push: -# pull_request: -# types: [opened, synchronize, reopened] - workflow_dispatch: - -env: - LIBYAML_REPO: https://github.com/yaml/libyaml - LIBYAML_REF: 0.2.5 - -jobs: - python_sdist: - name: pyyaml sdist - runs-on: ubuntu-latest - steps: - - name: Checkout PyYAML - uses: actions/checkout@v3 - - - name: Install a python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - - name: Build sdist - env: - PYYAML_FORCE_CYTHON: 1 - PYYAML_FORCE_LIBYAML: 0 - run: | - python -V - python -m pip install build - - python -m build . - - # Ensure exactly one artifact was produced. - [[ $(shopt -s nullglob; ls dist/*.tar.gz | wc -w) == 1 ]] || { - echo "Unexpected content in dist dir: '$(ls dist/*.tar.gz)'." - exit 1 - } - - - name: Test sdist - run: | - # Install some libyaml headers. - # TODO Should we smoke test the sdist against the libyaml we built? - sudo apt update - sudo apt install libyaml-dev -y - - # Ensure Cython is not present so we use only what's in the sdist. - python -m pip uninstall Cython -y || true - - # Pass no extra args. - # We should auto-install with libyaml since it's present. - python -m pip install dist/*.tar.gz -v - - python packaging/build/smoketest.py - - - name: Upload sdist artifact - uses: actions/upload-artifact@v3 - with: - name: dist - path: dist/*.tar.gz - - - linux_libyaml: - name: libyaml ${{matrix.cfg.arch}} ${{matrix.cfg.platform}} - runs-on: ubuntu-latest - strategy: - matrix: - cfg: - - { platform: manylinux1, arch: x86_64 } - - { platform: manylinux2014, arch: x86_64 } - - { platform: manylinux2014, arch: aarch64 } - - { platform: manylinux2014, arch: s390x } - - { platform: musllinux_1_1, arch: x86_64 } - - env: - DOCKER_IMAGE: quay.io/pypa/${{matrix.cfg.platform}}_${{matrix.cfg.arch}} - steps: - - name: Check cached libyaml state - id: cached_libyaml - uses: actions/cache@v3 - with: - path: libyaml - key: libyaml_${{matrix.cfg.platform}}_${{matrix.cfg.arch}}_${{env.LIBYAML_REF}} - - - name: configure docker foreign arch support - uses: docker/setup-qemu-action@v2 - if: matrix.cfg.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true' - - - name: Checkout pyyaml - uses: actions/checkout@v3 - if: steps.cached_libyaml.outputs.cache-hit != 'true' - - - name: Build libyaml - run: > - docker run --rm - --volume "$(pwd):/io" - --env LIBYAML_REF - --env LIBYAML_REPO - --workdir /io - "$DOCKER_IMAGE" - /io/packaging/build/libyaml.sh - if: steps.cached_libyaml.outputs.cache-hit != 'true' - - - name: ensure output is world readable (or cache fill fails with Permission Denied) - run: > - sudo chmod -R a+r ./libyaml/ - if: steps.cached_libyaml.outputs.cache-hit != 'true' - - - linux_pyyaml: - needs: linux_libyaml - name: pyyaml ${{matrix.arch}} ${{matrix.platform}} ${{matrix.spec}} - runs-on: ubuntu-latest - strategy: - matrix: - include: - - { platform: manylinux1, arch: x86_64, spec: cp36 } - - { platform: manylinux1, arch: x86_64, spec: cp37 } - - { platform: manylinux1, arch: x86_64, spec: cp38 } - - { platform: manylinux1, arch: x86_64, spec: cp39 } - - { platform: manylinux2014, arch: x86_64, spec: cp310 } - - { platform: manylinux2014, arch: x86_64, spec: cp311 } - - { platform: manylinux2014, arch: x86_64, spec: cp312 } - - { platform: manylinux2014, arch: aarch64, spec: cp36 } - - { platform: manylinux2014, arch: aarch64, spec: cp37 } - - { platform: manylinux2014, arch: aarch64, spec: cp38 } - - { platform: manylinux2014, arch: aarch64, spec: cp39 } - - { platform: manylinux2014, arch: aarch64, spec: cp310 } - - { platform: manylinux2014, arch: aarch64, spec: cp311 } - - { platform: manylinux2014, arch: aarch64, spec: cp312 } - - { platform: manylinux2014, arch: s390x, spec: cp36 } - - { platform: manylinux2014, arch: s390x, spec: cp37 } - - { platform: manylinux2014, arch: s390x, spec: cp38 } - - { platform: manylinux2014, arch: s390x, spec: cp39 } - - { platform: manylinux2014, arch: s390x, spec: cp310 } - - { platform: manylinux2014, arch: s390x, spec: cp311 } - - { platform: manylinux2014, arch: s390x, spec: cp312 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp38 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp39 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp310 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp311 } - - { platform: musllinux_1_1, arch: x86_64, spec: cp312 } - - steps: - - name: Checkout PyYAML - uses: actions/checkout@v3 - - - name: Fetch cached libyaml - id: cached_libyaml - uses: actions/cache/restore@v3 - with: - path: libyaml - key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}} - fail-on-cache-miss: true - - - name: configure docker foreign arch support - uses: docker/setup-qemu-action@v2 - if: matrix.arch != 'x86_64' - - - name: Build/Test/Package - env: - CIBW_ARCHS: all - # HACK: ick, maybe deconstruct the matrix a bit or query cibuildwheel for its default target *linux spec first? - CIBW_BUILD: ${{matrix.spec}}-${{ contains(matrix.platform, 'musllinux') && 'musllinux' || 'manylinux' }}_${{matrix.arch}} - CIBW_BUILD_VERBOSITY: 1 - # containerized Linux builds require explicit CIBW_ENVIRONMENT - CIBW_ENVIRONMENT: > - C_INCLUDE_PATH=libyaml/include - LIBRARY_PATH=libyaml/src/.libs - LD_LIBRARY_PATH=libyaml/src/.libs - PYYAML_FORCE_CYTHON=1 - PYYAML_FORCE_LIBYAML=1 - CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py - run: | - set -eux - python3 -V - python3 -m pip install -U --user cibuildwheel - python3 -m cibuildwheel --platform auto --output-dir dist . - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: dist - path: dist/*.whl - if-no-files-found: error - - macos_libyaml: - name: libyaml macos ${{matrix.arch}} - strategy: - matrix: - include: - - arch: x86_64 - - arch: arm64 - runs_on: [self-hosted, macOS, arm64] - deployment_target: '11.0' - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - defaults: - run: - shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} - runs-on: ${{ matrix.runs_on || 'macos-11' }} - steps: - - name: Check cached libyaml state - id: cached_libyaml - uses: actions/cache@v3 - with: - path: libyaml - key: libyaml_macos_${{matrix.arch}}_${{env.LIBYAML_REF}} - - - name: Checkout PyYAML - uses: actions/checkout@v3 - if: steps.cached_libyaml.outputs.cache-hit != 'true' - - - name: Build libyaml - env: - MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }} - SDKROOT: ${{ matrix.sdkroot || 'macosx' }} - run: | - set -eux - brew install automake coreutils m4 - bash ./packaging/build/libyaml.sh - echo "finished artifact arch is $(lipo -archs libyaml/src/.libs/libyaml.a)" - if: steps.cached_libyaml.outputs.cache-hit != 'true' - - - macos_pyyaml: - needs: macos_libyaml - name: pyyaml ${{ matrix.spec }} - runs-on: ${{ matrix.runs_on || 'macos-11' }} - defaults: - run: - shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} - strategy: - matrix: - include: - - spec: cp36-macosx_x86_64 - cibw_version: cibuildwheel==2.11.1 - - spec: cp37-macosx_x86_64 - cibw_version: cibuildwheel==2.11.1 - - spec: cp38-macosx_x86_64 - cibw_version: cibuildwheel==2.11.1 - - spec: cp39-macosx_x86_64 - - spec: cp310-macosx_x86_64 - - spec: cp311-macosx_x86_64 - - spec: cp312-macosx_x86_64 - - # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported - - spec: cp39-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS, arm64] - arch: arm64 - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp310-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS, arm64] - arch: arm64 - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp311-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS, arm64] - arch: arm64 - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp312-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS, arm64] - arch: arm64 - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - steps: - - name: Checkout PyYAML - uses: actions/checkout@v3 - - - name: Get cached libyaml state - id: cached_libyaml - uses: actions/cache/restore@v3 - with: - path: libyaml - key: libyaml_macos_${{ matrix.arch || 'x86_64' }}_${{env.LIBYAML_REF}} - fail-on-cache-miss: true - - - name: Build/Test/Package - env: - C_INCLUDE_PATH: libyaml/include - CIBW_BUILD: ${{matrix.spec}} - CIBW_BUILD_VERBOSITY: 1 - CIBW_TEST_COMMAND: cd {project}; python tests/lib/test_all.py - LIBRARY_PATH: libyaml/src/.libs - MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.9' }} - SDKROOT: ${{ matrix.sdkroot || 'macosx' }} - run: | - python3 -V - python3 -m pip install -U --user ${{ matrix.cibw_version || 'cibuildwheel' }} - python3 -m cibuildwheel --platform auto --output-dir dist . - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: dist - path: dist/*.whl - if-no-files-found: error - - windows_libyaml: - name: libyaml ${{matrix.platform}} ${{matrix.arch}} - runs-on: ${{matrix.platform}} - strategy: - matrix: - include: - - platform: windows-2019 - arch: x64 - - platform: windows-2019 - arch: win32 - steps: - - name: Get cached libyaml state - id: cached_libyaml - uses: actions/cache@v3 - with: - path: libyaml - key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}} - - - name: Build libyaml - shell: bash - if: steps.cached_libyaml.outputs.cache-hit != 'true' - run: | - # git spews all over stderr unless we tell it not to - export GIT_REDIRECT_STDERR="2>&1" - - if [[ ! -d ./libyaml ]]; then - git clone -b ${{ env.LIBYAML_REF }} ${{ env.LIBYAML_REPO }} 2>&1 - fi - - pushd libyaml - git clean -fdx - popd - - mkdir libyaml/build - - pushd libyaml/build - cmake.exe -G "Visual Studio 16 2019" -A ${{ matrix.arch }} -DYAML_STATIC_LIB_NAME=yaml .. - cmake.exe --build . --config Release - popd - - - windows_pyyaml: - needs: windows_libyaml - name: pyyaml ${{ matrix.platform }} ${{matrix.python_arch}} ${{matrix.spec}} - runs-on: ${{matrix.platform}} - strategy: - matrix: - include: - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: 3.6 - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: 3.7 - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: 3.8 - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: 3.9 - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: '3.10' - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: '3.11' - - platform: windows-2019 - build_arch: x64 - python_arch: x64 - spec: '3.12.0-rc.1' - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: 3.6 - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: 3.7 - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: 3.8 - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: 3.9 - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: '3.10' - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: '3.11' - - platform: windows-2019 - build_arch: win32 - python_arch: x86 - spec: '3.12.0-rc.1' - steps: - # autocrlf screws up tests under Windows - - name: Set git to use LF - run: | - git config --global core.autocrlf false - git config --global core.eol lf - - - name: Checkout pyyaml - uses: actions/checkout@v3 - - - name: Get cached libyaml state - id: cached_libyaml - uses: actions/cache/restore@v3 - with: - path: libyaml - key: libyaml_${{matrix.platform}}_${{matrix.build_arch}}_${{env.LIBYAML_REF}} - fail-on-cache-miss: true - - - name: Install python ${{ matrix.spec }} - uses: actions/setup-python@v4 - with: - architecture: ${{ matrix.python_arch }} - python-version: ${{ matrix.spec }} - - - name: Build/Test/Package - env: - PYYAML_FORCE_CYTHON: 1 - PYYAML_FORCE_LIBYAML: 1 - shell: bash - run: | - set -eux - python -V - python -m pip install "Cython<3.0" setuptools wheel - - python setup.py \ - --with-libyaml build_ext \ - -I libyaml/include \ - -L libyaml/build/Release \ - -D YAML_DECLARE_STATIC \ - build bdist_wheel - - # run tests on built wheel - python -m pip install dist/*.whl - python tests/lib/test_all.py - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: dist - path: dist/*.whl - if-no-files-found: error -... diff --git a/CHANGES b/CHANGES index 27e11bfa..94226924 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,10 @@ For a complete changelog, see: * https://github.com/yaml/pyyaml/commits/ * https://bitbucket.org/xi/pyyaml/commits/ +6.0.2rc1 (2024-06-10) + +* https://github.com/yaml/pyyaml/pull/808 -- Support for Cython 3.x and Python 3.13 + 6.0.1 (2023-07-18) * https://github.com/yaml/pyyaml/pull/702 -- pin Cython build dep to < 3.0 diff --git a/MANIFEST.in b/MANIFEST.in index 3ab0c4f4..71137e77 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,8 @@ include CHANGES README LICENSE Makefile pyproject.toml setup.py recursive-include lib/yaml *.py recursive-include lib/_yaml *.py +recursive-include packaging * recursive-include examples *.py *.cfg *.yaml -recursive-include tests/data * -recursive-include tests/lib *.py -recursive-include yaml * +recursive-include tests/legacy_tests/ *.py +recursive-include tests/legacy_tests/data * +recursive-include yaml * \ No newline at end of file diff --git a/lib/yaml/__init__.py b/lib/yaml/__init__.py index 82493619..93291f36 100644 --- a/lib/yaml/__init__.py +++ b/lib/yaml/__init__.py @@ -8,7 +8,7 @@ from .loader import * from .dumper import * -__version__ = '6.0.1' +__version__ = '6.0.2rc1' try: from .cyaml import * __with_libyaml__ = True diff --git a/packaging/_pyyaml_pep517.py b/packaging/_pyyaml_pep517.py new file mode 100644 index 00000000..5f390266 --- /dev/null +++ b/packaging/_pyyaml_pep517.py @@ -0,0 +1,51 @@ +import inspect + + +def _bridge_build_meta(): + import functools + import sys + + from setuptools import build_meta + + self_module = sys.modules[__name__] + + for attr_name in build_meta.__all__: + attr_value = getattr(build_meta, attr_name) + if callable(attr_value): + setattr(self_module, attr_name, functools.partial(_expose_config_settings, attr_value)) + + +class ActiveConfigSettings: + _current = {} + + def __init__(self, config_settings): + self._config = config_settings + + def __enter__(self): + type(self)._current = self._config + + def __exit__(self, exc_type, exc_val, exc_tb): + type(self)._current = {} + + @classmethod + def current(cls): + return cls._current + + +def _expose_config_settings(real_method, *args, **kwargs): + from contextlib import nullcontext + import inspect + + sig = inspect.signature(real_method) + boundargs = sig.bind(*args, **kwargs) + + config = boundargs.arguments.get('config_settings') + + ctx = ActiveConfigSettings(config) if config else nullcontext() + + with ctx: + return real_method(*args, **kwargs) + + +_bridge_build_meta() + diff --git a/pyproject.toml b/pyproject.toml index 4bc04c0d..d8e5b969 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,9 @@ [build-system] -requires = ["setuptools", "wheel", "Cython<3.0"] -build-backend = "setuptools.build_meta" +requires = [ + "setuptools", # FIXME: declare min/max setuptools versions? + "wheel", + "Cython; python_version < '3.13'", + "Cython>=3.0; python_version >= '3.13'" +] +backend-path = ["packaging"] +build-backend = "_pyyaml_pep517" diff --git a/setup.py b/setup.py index 65b0ea0e..09fecb8e 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ NAME = 'PyYAML' -VERSION = '6.0.1' +VERSION = '6.0.2rc1' DESCRIPTION = "YAML parser and emitter for Python" LONG_DESCRIPTION = """\ YAML is a data serialization format designed for human readability @@ -34,6 +34,8 @@ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules", @@ -82,7 +84,12 @@ with_cython = True try: from Cython.Distutils.extension import Extension as _Extension - from Cython.Distutils import build_ext as _build_ext + try: + # try old_build_ext from Cython > 3 first, until we can dump it entirely + from Cython.Distutils.old_build_ext import old_build_ext as _build_ext + except ImportError: + # Cython < 3 + from Cython.Distutils import build_ext as _build_ext with_cython = True except ImportError: if with_cython: @@ -94,6 +101,14 @@ bdist_wheel = None +try: + from _pyyaml_pep517 import ActiveConfigSettings +except ImportError: + class ActiveConfigSettings: + @staticmethod + def current(): + return {} + # on Windows, disable wheel generation warning noise windows_ignore_warnings = [ "Unknown distribution option: 'python_requires'", @@ -173,6 +188,31 @@ def __init__(self, name, sources, feature_name, feature_description, class build_ext(_build_ext): + def finalize_options(self): + super().finalize_options() + pep517_config = ActiveConfigSettings.current() + + build_config = pep517_config.get('pyyaml_build_config') + + if build_config: + import json + build_config = json.loads(build_config) + print(f"`pyyaml_build_config`: {build_config}") + else: + build_config = {} + print("No `pyyaml_build_config` setting found.") + + for key, value in build_config.items(): + existing_value = getattr(self, key, ...) + if existing_value is ...: + print(f"ignoring unknown config key {key!r}") + continue + + if existing_value: + print(f"combining {key!r} {existing_value!r} and {value!r}") + value = existing_value + value # FIXME: handle type diff + + setattr(self, key, value) def run(self): optional = True @@ -230,6 +270,7 @@ def build_extensions(self): if with_ext is not None and not with_ext: continue if with_cython: + print(f"BUILDING CYTHON EXT; {self.include_dirs=} {self.library_dirs=} {self.define=}") ext.sources = self.cython_sources(ext.sources, ext) try: self.build_extension(ext) diff --git a/tests/lib/canonical.py b/tests/legacy_tests/canonical.py similarity index 100% rename from tests/lib/canonical.py rename to tests/legacy_tests/canonical.py diff --git a/tests/legacy_tests/conftest.py b/tests/legacy_tests/conftest.py new file mode 100644 index 00000000..e9e813ba --- /dev/null +++ b/tests/legacy_tests/conftest.py @@ -0,0 +1,132 @@ +# pytest custom collection adapter for legacy pyyaml unit tests/data files; surfaces each +# legacy test case as a pyyaml item + +import os +import pathlib +import pytest +import warnings + +from test_appliance import find_test_filenames, DATA + +try: + from yaml import _yaml + HAS_LIBYAML_EXT = True + del _yaml +except ImportError: + HAS_LIBYAML_EXT = False + + +_test_filenames = find_test_filenames(DATA) + +# ignore all datafiles +collect_ignore_glob = ['data/*'] + + +class PyYAMLItem(pytest.Item): + def __init__(self, parent=None, config=None, session=None, nodeid=None, function=None, filenames=None, **kwargs): + self._function = function + self._fargs = filenames or [] + + super().__init__(os.path.basename(filenames[0]) if filenames else parent.name, parent, config, session, nodeid) + # this is gnarly since the type of fspath is private; fixed in pytest 7 to use pathlib on the `path` attr + if filenames: # pass the data file location as the test path + self.fspath = parent.fspath.__class__(filenames[0]) + self.lineno = 1 + else: # pass the function location in the code + self.fspath = parent.fspath.__class__(function.__code__.co_filename) + self.lineno = function.__code__.co_firstlineno + + def runtest(self): + self._function(verbose=True, *self._fargs) + + def reportinfo(self): + return self.fspath, self.lineno, '' + + +class PyYAMLCollector(pytest.Collector): + def __init__(self, name, parent=None, function=None, **kwargs): + self._function = function + self.fspath = parent.fspath.__class__(function.__code__.co_filename) + self.lineno = function.__code__.co_firstlineno + + # avoid fspath deprecation warnings on pytest < 7 + if hasattr(self, 'path') and 'fspath' in kwargs: + del kwargs['fspath'] + + super().__init__(name=name, parent=parent, **kwargs) + + def collect(self): + items = [] + + unittest = getattr(self._function, 'unittest', None) + + if unittest is True: # no filenames + items.append(PyYAMLItem.from_parent(parent=self, function=self._function, filenames=None)) + else: + for base, exts in _test_filenames: + filenames = [] + for ext in unittest: + if ext not in exts: + break + filenames.append(os.path.join(DATA, base + ext)) + else: + skip_exts = getattr(self._function, 'skip', []) + for skip_ext in skip_exts: + if skip_ext in exts: + break + else: + items.append(PyYAMLItem.from_parent(parent=self, function=self._function, filenames=filenames)) + + return items or None + + def reportinfo(self): + return self.fspath, self.lineno, '' + + @classmethod + def from_parent(cls, parent, fspath, **kwargs): + return super().from_parent(parent=parent, fspath=fspath, **kwargs) + + +@pytest.hookimpl(hookwrapper=True, trylast=True) +def pytest_pycollect_makeitem(collector, name: str, obj: object): + outcome = yield + outcome.get_result() + if not callable(obj): + outcome.force_result(None) + return + unittest = getattr(obj, 'unittest', None) + + if not unittest: + outcome.force_result(None) + return + + if unittest is True: # no file list to run against, just return a test item instead of a collector + outcome.force_result(PyYAMLItem.from_parent(name=name, parent=collector, fspath=collector.fspath, function=obj)) + return + + # there's a file list; return a collector to create individual items for each + outcome.force_result(PyYAMLCollector.from_parent(name=name, parent=collector, fspath=collector.fspath, function=obj)) + return + + +def pytest_collection_modifyitems(session, config, items): + pass + + +def pytest_ignore_collect(collection_path: pathlib.Path): + basename = collection_path.name + # ignore all Python files in this subtree for normal pytest collection + if basename not in ['test_yaml.py', 'test_yaml_ext.py']: + return True + + # ignore extension tests (depending on config) + if basename == 'test_yaml_ext.py': + require_libyaml = os.environ.get('PYYAML_FORCE_LIBYAML', None) + if require_libyaml == '1' and not HAS_LIBYAML_EXT: + raise RuntimeError('PYYAML_FORCE_LIBYAML envvar is set, but libyaml extension is not available') + if require_libyaml == '0': + return True + if not HAS_LIBYAML_EXT: + warnings.warn('libyaml extension is not available, skipping libyaml tests') + return True + diff --git a/tests/data/a-nasty-libyaml-bug.loader-error b/tests/legacy_tests/data/a-nasty-libyaml-bug.loader-error similarity index 100% rename from tests/data/a-nasty-libyaml-bug.loader-error rename to tests/legacy_tests/data/a-nasty-libyaml-bug.loader-error diff --git a/tests/data/aliases-cdumper-bug.code b/tests/legacy_tests/data/aliases-cdumper-bug.code similarity index 100% rename from tests/data/aliases-cdumper-bug.code rename to tests/legacy_tests/data/aliases-cdumper-bug.code diff --git a/tests/data/aliases.events b/tests/legacy_tests/data/aliases.events similarity index 100% rename from tests/data/aliases.events rename to tests/legacy_tests/data/aliases.events diff --git a/tests/data/bool.data b/tests/legacy_tests/data/bool.data similarity index 100% rename from tests/data/bool.data rename to tests/legacy_tests/data/bool.data diff --git a/tests/data/bool.detect b/tests/legacy_tests/data/bool.detect similarity index 100% rename from tests/data/bool.detect rename to tests/legacy_tests/data/bool.detect diff --git a/tests/data/construct-binary-py2.code b/tests/legacy_tests/data/construct-binary-py2.code similarity index 100% rename from tests/data/construct-binary-py2.code rename to tests/legacy_tests/data/construct-binary-py2.code diff --git a/tests/data/construct-binary-py2.data b/tests/legacy_tests/data/construct-binary-py2.data similarity index 100% rename from tests/data/construct-binary-py2.data rename to tests/legacy_tests/data/construct-binary-py2.data diff --git a/tests/data/construct-binary-py3.code b/tests/legacy_tests/data/construct-binary-py3.code similarity index 100% rename from tests/data/construct-binary-py3.code rename to tests/legacy_tests/data/construct-binary-py3.code diff --git a/tests/data/construct-binary-py3.data b/tests/legacy_tests/data/construct-binary-py3.data similarity index 100% rename from tests/data/construct-binary-py3.data rename to tests/legacy_tests/data/construct-binary-py3.data diff --git a/tests/data/construct-bool.code b/tests/legacy_tests/data/construct-bool.code similarity index 100% rename from tests/data/construct-bool.code rename to tests/legacy_tests/data/construct-bool.code diff --git a/tests/data/construct-bool.data b/tests/legacy_tests/data/construct-bool.data similarity index 100% rename from tests/data/construct-bool.data rename to tests/legacy_tests/data/construct-bool.data diff --git a/tests/data/construct-custom.code b/tests/legacy_tests/data/construct-custom.code similarity index 100% rename from tests/data/construct-custom.code rename to tests/legacy_tests/data/construct-custom.code diff --git a/tests/data/construct-custom.data b/tests/legacy_tests/data/construct-custom.data similarity index 100% rename from tests/data/construct-custom.data rename to tests/legacy_tests/data/construct-custom.data diff --git a/tests/data/construct-float.code b/tests/legacy_tests/data/construct-float.code similarity index 100% rename from tests/data/construct-float.code rename to tests/legacy_tests/data/construct-float.code diff --git a/tests/data/construct-float.data b/tests/legacy_tests/data/construct-float.data similarity index 100% rename from tests/data/construct-float.data rename to tests/legacy_tests/data/construct-float.data diff --git a/tests/data/construct-int.code b/tests/legacy_tests/data/construct-int.code similarity index 100% rename from tests/data/construct-int.code rename to tests/legacy_tests/data/construct-int.code diff --git a/tests/data/construct-int.data b/tests/legacy_tests/data/construct-int.data similarity index 100% rename from tests/data/construct-int.data rename to tests/legacy_tests/data/construct-int.data diff --git a/tests/data/construct-map.code b/tests/legacy_tests/data/construct-map.code similarity index 100% rename from tests/data/construct-map.code rename to tests/legacy_tests/data/construct-map.code diff --git a/tests/data/construct-map.data b/tests/legacy_tests/data/construct-map.data similarity index 100% rename from tests/data/construct-map.data rename to tests/legacy_tests/data/construct-map.data diff --git a/tests/data/construct-merge.code b/tests/legacy_tests/data/construct-merge.code similarity index 100% rename from tests/data/construct-merge.code rename to tests/legacy_tests/data/construct-merge.code diff --git a/tests/data/construct-merge.data b/tests/legacy_tests/data/construct-merge.data similarity index 100% rename from tests/data/construct-merge.data rename to tests/legacy_tests/data/construct-merge.data diff --git a/tests/data/construct-null.code b/tests/legacy_tests/data/construct-null.code similarity index 100% rename from tests/data/construct-null.code rename to tests/legacy_tests/data/construct-null.code diff --git a/tests/data/construct-null.data b/tests/legacy_tests/data/construct-null.data similarity index 100% rename from tests/data/construct-null.data rename to tests/legacy_tests/data/construct-null.data diff --git a/tests/data/construct-omap.code b/tests/legacy_tests/data/construct-omap.code similarity index 100% rename from tests/data/construct-omap.code rename to tests/legacy_tests/data/construct-omap.code diff --git a/tests/data/construct-omap.data b/tests/legacy_tests/data/construct-omap.data similarity index 100% rename from tests/data/construct-omap.data rename to tests/legacy_tests/data/construct-omap.data diff --git a/tests/data/construct-pairs.code b/tests/legacy_tests/data/construct-pairs.code similarity index 100% rename from tests/data/construct-pairs.code rename to tests/legacy_tests/data/construct-pairs.code diff --git a/tests/data/construct-pairs.data b/tests/legacy_tests/data/construct-pairs.data similarity index 100% rename from tests/data/construct-pairs.data rename to tests/legacy_tests/data/construct-pairs.data diff --git a/tests/data/construct-python-bool.code b/tests/legacy_tests/data/construct-python-bool.code similarity index 100% rename from tests/data/construct-python-bool.code rename to tests/legacy_tests/data/construct-python-bool.code diff --git a/tests/data/construct-python-bool.data b/tests/legacy_tests/data/construct-python-bool.data similarity index 100% rename from tests/data/construct-python-bool.data rename to tests/legacy_tests/data/construct-python-bool.data diff --git a/tests/data/construct-python-bytes-py3.code b/tests/legacy_tests/data/construct-python-bytes-py3.code similarity index 100% rename from tests/data/construct-python-bytes-py3.code rename to tests/legacy_tests/data/construct-python-bytes-py3.code diff --git a/tests/data/construct-python-bytes-py3.data b/tests/legacy_tests/data/construct-python-bytes-py3.data similarity index 100% rename from tests/data/construct-python-bytes-py3.data rename to tests/legacy_tests/data/construct-python-bytes-py3.data diff --git a/tests/data/construct-python-complex.code b/tests/legacy_tests/data/construct-python-complex.code similarity index 100% rename from tests/data/construct-python-complex.code rename to tests/legacy_tests/data/construct-python-complex.code diff --git a/tests/data/construct-python-complex.data b/tests/legacy_tests/data/construct-python-complex.data similarity index 100% rename from tests/data/construct-python-complex.data rename to tests/legacy_tests/data/construct-python-complex.data diff --git a/tests/data/construct-python-float.code b/tests/legacy_tests/data/construct-python-float.code similarity index 100% rename from tests/data/construct-python-float.code rename to tests/legacy_tests/data/construct-python-float.code diff --git a/tests/data/construct-python-float.data b/tests/legacy_tests/data/construct-python-float.data similarity index 100% rename from tests/data/construct-python-float.data rename to tests/legacy_tests/data/construct-python-float.data diff --git a/tests/data/construct-python-int.code b/tests/legacy_tests/data/construct-python-int.code similarity index 100% rename from tests/data/construct-python-int.code rename to tests/legacy_tests/data/construct-python-int.code diff --git a/tests/data/construct-python-int.data b/tests/legacy_tests/data/construct-python-int.data similarity index 100% rename from tests/data/construct-python-int.data rename to tests/legacy_tests/data/construct-python-int.data diff --git a/tests/data/construct-python-long-short-py2.code b/tests/legacy_tests/data/construct-python-long-short-py2.code similarity index 100% rename from tests/data/construct-python-long-short-py2.code rename to tests/legacy_tests/data/construct-python-long-short-py2.code diff --git a/tests/data/construct-python-long-short-py2.data b/tests/legacy_tests/data/construct-python-long-short-py2.data similarity index 100% rename from tests/data/construct-python-long-short-py2.data rename to tests/legacy_tests/data/construct-python-long-short-py2.data diff --git a/tests/data/construct-python-long-short-py3.code b/tests/legacy_tests/data/construct-python-long-short-py3.code similarity index 100% rename from tests/data/construct-python-long-short-py3.code rename to tests/legacy_tests/data/construct-python-long-short-py3.code diff --git a/tests/data/construct-python-long-short-py3.data b/tests/legacy_tests/data/construct-python-long-short-py3.data similarity index 100% rename from tests/data/construct-python-long-short-py3.data rename to tests/legacy_tests/data/construct-python-long-short-py3.data diff --git a/tests/data/construct-python-name-module.code b/tests/legacy_tests/data/construct-python-name-module.code similarity index 100% rename from tests/data/construct-python-name-module.code rename to tests/legacy_tests/data/construct-python-name-module.code diff --git a/tests/data/construct-python-name-module.data b/tests/legacy_tests/data/construct-python-name-module.data similarity index 100% rename from tests/data/construct-python-name-module.data rename to tests/legacy_tests/data/construct-python-name-module.data diff --git a/tests/data/construct-python-none.code b/tests/legacy_tests/data/construct-python-none.code similarity index 100% rename from tests/data/construct-python-none.code rename to tests/legacy_tests/data/construct-python-none.code diff --git a/tests/data/construct-python-none.data b/tests/legacy_tests/data/construct-python-none.data similarity index 100% rename from tests/data/construct-python-none.data rename to tests/legacy_tests/data/construct-python-none.data diff --git a/tests/data/construct-python-object.code b/tests/legacy_tests/data/construct-python-object.code similarity index 100% rename from tests/data/construct-python-object.code rename to tests/legacy_tests/data/construct-python-object.code diff --git a/tests/data/construct-python-object.data b/tests/legacy_tests/data/construct-python-object.data similarity index 100% rename from tests/data/construct-python-object.data rename to tests/legacy_tests/data/construct-python-object.data diff --git a/tests/data/construct-python-str-ascii.code b/tests/legacy_tests/data/construct-python-str-ascii.code similarity index 100% rename from tests/data/construct-python-str-ascii.code rename to tests/legacy_tests/data/construct-python-str-ascii.code diff --git a/tests/data/construct-python-str-ascii.data b/tests/legacy_tests/data/construct-python-str-ascii.data similarity index 100% rename from tests/data/construct-python-str-ascii.data rename to tests/legacy_tests/data/construct-python-str-ascii.data diff --git a/tests/data/construct-python-str-utf8-py2.code b/tests/legacy_tests/data/construct-python-str-utf8-py2.code similarity index 100% rename from tests/data/construct-python-str-utf8-py2.code rename to tests/legacy_tests/data/construct-python-str-utf8-py2.code diff --git a/tests/data/construct-python-str-utf8-py2.data b/tests/legacy_tests/data/construct-python-str-utf8-py2.data similarity index 100% rename from tests/data/construct-python-str-utf8-py2.data rename to tests/legacy_tests/data/construct-python-str-utf8-py2.data diff --git a/tests/data/construct-python-str-utf8-py3.code b/tests/legacy_tests/data/construct-python-str-utf8-py3.code similarity index 100% rename from tests/data/construct-python-str-utf8-py3.code rename to tests/legacy_tests/data/construct-python-str-utf8-py3.code diff --git a/tests/data/construct-python-str-utf8-py3.data b/tests/legacy_tests/data/construct-python-str-utf8-py3.data similarity index 100% rename from tests/data/construct-python-str-utf8-py3.data rename to tests/legacy_tests/data/construct-python-str-utf8-py3.data diff --git a/tests/data/construct-python-tuple-list-dict.code b/tests/legacy_tests/data/construct-python-tuple-list-dict.code similarity index 100% rename from tests/data/construct-python-tuple-list-dict.code rename to tests/legacy_tests/data/construct-python-tuple-list-dict.code diff --git a/tests/data/construct-python-tuple-list-dict.data b/tests/legacy_tests/data/construct-python-tuple-list-dict.data similarity index 100% rename from tests/data/construct-python-tuple-list-dict.data rename to tests/legacy_tests/data/construct-python-tuple-list-dict.data diff --git a/tests/data/construct-python-unicode-ascii-py2.code b/tests/legacy_tests/data/construct-python-unicode-ascii-py2.code similarity index 100% rename from tests/data/construct-python-unicode-ascii-py2.code rename to tests/legacy_tests/data/construct-python-unicode-ascii-py2.code diff --git a/tests/data/construct-python-unicode-ascii-py2.data b/tests/legacy_tests/data/construct-python-unicode-ascii-py2.data similarity index 100% rename from tests/data/construct-python-unicode-ascii-py2.data rename to tests/legacy_tests/data/construct-python-unicode-ascii-py2.data diff --git a/tests/data/construct-python-unicode-ascii-py3.code b/tests/legacy_tests/data/construct-python-unicode-ascii-py3.code similarity index 100% rename from tests/data/construct-python-unicode-ascii-py3.code rename to tests/legacy_tests/data/construct-python-unicode-ascii-py3.code diff --git a/tests/data/construct-python-unicode-ascii-py3.data b/tests/legacy_tests/data/construct-python-unicode-ascii-py3.data similarity index 100% rename from tests/data/construct-python-unicode-ascii-py3.data rename to tests/legacy_tests/data/construct-python-unicode-ascii-py3.data diff --git a/tests/data/construct-python-unicode-utf8-py2.code b/tests/legacy_tests/data/construct-python-unicode-utf8-py2.code similarity index 100% rename from tests/data/construct-python-unicode-utf8-py2.code rename to tests/legacy_tests/data/construct-python-unicode-utf8-py2.code diff --git a/tests/data/construct-python-unicode-utf8-py2.data b/tests/legacy_tests/data/construct-python-unicode-utf8-py2.data similarity index 100% rename from tests/data/construct-python-unicode-utf8-py2.data rename to tests/legacy_tests/data/construct-python-unicode-utf8-py2.data diff --git a/tests/data/construct-python-unicode-utf8-py3.code b/tests/legacy_tests/data/construct-python-unicode-utf8-py3.code similarity index 100% rename from tests/data/construct-python-unicode-utf8-py3.code rename to tests/legacy_tests/data/construct-python-unicode-utf8-py3.code diff --git a/tests/data/construct-python-unicode-utf8-py3.data b/tests/legacy_tests/data/construct-python-unicode-utf8-py3.data similarity index 100% rename from tests/data/construct-python-unicode-utf8-py3.data rename to tests/legacy_tests/data/construct-python-unicode-utf8-py3.data diff --git a/tests/data/construct-seq.code b/tests/legacy_tests/data/construct-seq.code similarity index 100% rename from tests/data/construct-seq.code rename to tests/legacy_tests/data/construct-seq.code diff --git a/tests/data/construct-seq.data b/tests/legacy_tests/data/construct-seq.data similarity index 100% rename from tests/data/construct-seq.data rename to tests/legacy_tests/data/construct-seq.data diff --git a/tests/data/construct-set.code b/tests/legacy_tests/data/construct-set.code similarity index 100% rename from tests/data/construct-set.code rename to tests/legacy_tests/data/construct-set.code diff --git a/tests/data/construct-set.data b/tests/legacy_tests/data/construct-set.data similarity index 100% rename from tests/data/construct-set.data rename to tests/legacy_tests/data/construct-set.data diff --git a/tests/data/construct-str-ascii.code b/tests/legacy_tests/data/construct-str-ascii.code similarity index 100% rename from tests/data/construct-str-ascii.code rename to tests/legacy_tests/data/construct-str-ascii.code diff --git a/tests/data/construct-str-ascii.data b/tests/legacy_tests/data/construct-str-ascii.data similarity index 100% rename from tests/data/construct-str-ascii.data rename to tests/legacy_tests/data/construct-str-ascii.data diff --git a/tests/data/construct-str-utf8-py2.code b/tests/legacy_tests/data/construct-str-utf8-py2.code similarity index 100% rename from tests/data/construct-str-utf8-py2.code rename to tests/legacy_tests/data/construct-str-utf8-py2.code diff --git a/tests/data/construct-str-utf8-py2.data b/tests/legacy_tests/data/construct-str-utf8-py2.data similarity index 100% rename from tests/data/construct-str-utf8-py2.data rename to tests/legacy_tests/data/construct-str-utf8-py2.data diff --git a/tests/data/construct-str-utf8-py3.code b/tests/legacy_tests/data/construct-str-utf8-py3.code similarity index 100% rename from tests/data/construct-str-utf8-py3.code rename to tests/legacy_tests/data/construct-str-utf8-py3.code diff --git a/tests/data/construct-str-utf8-py3.data b/tests/legacy_tests/data/construct-str-utf8-py3.data similarity index 100% rename from tests/data/construct-str-utf8-py3.data rename to tests/legacy_tests/data/construct-str-utf8-py3.data diff --git a/tests/data/construct-str.code b/tests/legacy_tests/data/construct-str.code similarity index 100% rename from tests/data/construct-str.code rename to tests/legacy_tests/data/construct-str.code diff --git a/tests/data/construct-str.data b/tests/legacy_tests/data/construct-str.data similarity index 100% rename from tests/data/construct-str.data rename to tests/legacy_tests/data/construct-str.data diff --git a/tests/data/construct-timestamp.code b/tests/legacy_tests/data/construct-timestamp.code similarity index 100% rename from tests/data/construct-timestamp.code rename to tests/legacy_tests/data/construct-timestamp.code diff --git a/tests/data/construct-timestamp.data b/tests/legacy_tests/data/construct-timestamp.data similarity index 100% rename from tests/data/construct-timestamp.data rename to tests/legacy_tests/data/construct-timestamp.data diff --git a/tests/data/construct-value.code b/tests/legacy_tests/data/construct-value.code similarity index 100% rename from tests/data/construct-value.code rename to tests/legacy_tests/data/construct-value.code diff --git a/tests/data/construct-value.data b/tests/legacy_tests/data/construct-value.data similarity index 100% rename from tests/data/construct-value.data rename to tests/legacy_tests/data/construct-value.data diff --git a/tests/data/document-separator-in-quoted-scalar.loader-error b/tests/legacy_tests/data/document-separator-in-quoted-scalar.loader-error similarity index 100% rename from tests/data/document-separator-in-quoted-scalar.loader-error rename to tests/legacy_tests/data/document-separator-in-quoted-scalar.loader-error diff --git a/tests/data/documents.events b/tests/legacy_tests/data/documents.events similarity index 100% rename from tests/data/documents.events rename to tests/legacy_tests/data/documents.events diff --git a/tests/data/duplicate-anchor-1.loader-error b/tests/legacy_tests/data/duplicate-anchor-1.loader-error similarity index 100% rename from tests/data/duplicate-anchor-1.loader-error rename to tests/legacy_tests/data/duplicate-anchor-1.loader-error diff --git a/tests/data/duplicate-anchor-2.loader-error b/tests/legacy_tests/data/duplicate-anchor-2.loader-error similarity index 100% rename from tests/data/duplicate-anchor-2.loader-error rename to tests/legacy_tests/data/duplicate-anchor-2.loader-error diff --git a/tests/data/duplicate-key.former-loader-error.code b/tests/legacy_tests/data/duplicate-key.former-loader-error.code similarity index 100% rename from tests/data/duplicate-key.former-loader-error.code rename to tests/legacy_tests/data/duplicate-key.former-loader-error.code diff --git a/tests/data/duplicate-key.former-loader-error.data b/tests/legacy_tests/data/duplicate-key.former-loader-error.data similarity index 100% rename from tests/data/duplicate-key.former-loader-error.data rename to tests/legacy_tests/data/duplicate-key.former-loader-error.data diff --git a/tests/data/duplicate-mapping-key.former-loader-error.code b/tests/legacy_tests/data/duplicate-mapping-key.former-loader-error.code similarity index 100% rename from tests/data/duplicate-mapping-key.former-loader-error.code rename to tests/legacy_tests/data/duplicate-mapping-key.former-loader-error.code diff --git a/tests/data/duplicate-mapping-key.former-loader-error.data b/tests/legacy_tests/data/duplicate-mapping-key.former-loader-error.data similarity index 100% rename from tests/data/duplicate-mapping-key.former-loader-error.data rename to tests/legacy_tests/data/duplicate-mapping-key.former-loader-error.data diff --git a/tests/data/duplicate-merge-key.former-loader-error.code b/tests/legacy_tests/data/duplicate-merge-key.former-loader-error.code similarity index 100% rename from tests/data/duplicate-merge-key.former-loader-error.code rename to tests/legacy_tests/data/duplicate-merge-key.former-loader-error.code diff --git a/tests/data/duplicate-merge-key.former-loader-error.data b/tests/legacy_tests/data/duplicate-merge-key.former-loader-error.data similarity index 100% rename from tests/data/duplicate-merge-key.former-loader-error.data rename to tests/legacy_tests/data/duplicate-merge-key.former-loader-error.data diff --git a/tests/data/duplicate-tag-directive.loader-error b/tests/legacy_tests/data/duplicate-tag-directive.loader-error similarity index 100% rename from tests/data/duplicate-tag-directive.loader-error rename to tests/legacy_tests/data/duplicate-tag-directive.loader-error diff --git a/tests/data/duplicate-value-key.former-loader-error.code b/tests/legacy_tests/data/duplicate-value-key.former-loader-error.code similarity index 100% rename from tests/data/duplicate-value-key.former-loader-error.code rename to tests/legacy_tests/data/duplicate-value-key.former-loader-error.code diff --git a/tests/data/duplicate-value-key.former-loader-error.data b/tests/legacy_tests/data/duplicate-value-key.former-loader-error.data similarity index 100% rename from tests/data/duplicate-value-key.former-loader-error.data rename to tests/legacy_tests/data/duplicate-value-key.former-loader-error.data diff --git a/tests/data/duplicate-yaml-directive.loader-error b/tests/legacy_tests/data/duplicate-yaml-directive.loader-error similarity index 100% rename from tests/data/duplicate-yaml-directive.loader-error rename to tests/legacy_tests/data/duplicate-yaml-directive.loader-error diff --git a/tests/data/emit-block-scalar-in-simple-key-context-bug.canonical b/tests/legacy_tests/data/emit-block-scalar-in-simple-key-context-bug.canonical similarity index 100% rename from tests/data/emit-block-scalar-in-simple-key-context-bug.canonical rename to tests/legacy_tests/data/emit-block-scalar-in-simple-key-context-bug.canonical diff --git a/tests/data/emit-block-scalar-in-simple-key-context-bug.data b/tests/legacy_tests/data/emit-block-scalar-in-simple-key-context-bug.data similarity index 100% rename from tests/data/emit-block-scalar-in-simple-key-context-bug.data rename to tests/legacy_tests/data/emit-block-scalar-in-simple-key-context-bug.data diff --git a/tests/data/emitting-unacceptable-unicode-character-bug-py3.code b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.code similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug-py3.code rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.code diff --git a/tests/data/emitting-unacceptable-unicode-character-bug-py3.data b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.data similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug-py3.data rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.data diff --git a/tests/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext diff --git a/tests/data/emitting-unacceptable-unicode-character-bug.code b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.code similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug.code rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.code diff --git a/tests/data/emitting-unacceptable-unicode-character-bug.data b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.data similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug.data rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.data diff --git a/tests/data/emitting-unacceptable-unicode-character-bug.skip-ext b/tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.skip-ext similarity index 100% rename from tests/data/emitting-unacceptable-unicode-character-bug.skip-ext rename to tests/legacy_tests/data/emitting-unacceptable-unicode-character-bug.skip-ext diff --git a/tests/data/emoticons.unicode b/tests/legacy_tests/data/emoticons.unicode similarity index 100% rename from tests/data/emoticons.unicode rename to tests/legacy_tests/data/emoticons.unicode diff --git a/tests/data/emoticons2.unicode b/tests/legacy_tests/data/emoticons2.unicode similarity index 100% rename from tests/data/emoticons2.unicode rename to tests/legacy_tests/data/emoticons2.unicode diff --git a/tests/data/empty-anchor.emitter-error b/tests/legacy_tests/data/empty-anchor.emitter-error similarity index 100% rename from tests/data/empty-anchor.emitter-error rename to tests/legacy_tests/data/empty-anchor.emitter-error diff --git a/tests/data/empty-document-bug.canonical b/tests/legacy_tests/data/empty-document-bug.canonical similarity index 100% rename from tests/data/empty-document-bug.canonical rename to tests/legacy_tests/data/empty-document-bug.canonical diff --git a/tests/data/empty-document-bug.data b/tests/legacy_tests/data/empty-document-bug.data similarity index 100% rename from tests/data/empty-document-bug.data rename to tests/legacy_tests/data/empty-document-bug.data diff --git a/tests/data/empty-document-bug.empty b/tests/legacy_tests/data/empty-document-bug.empty similarity index 100% rename from tests/data/empty-document-bug.empty rename to tests/legacy_tests/data/empty-document-bug.empty diff --git a/tests/data/empty-documents.single-loader-error b/tests/legacy_tests/data/empty-documents.single-loader-error similarity index 100% rename from tests/data/empty-documents.single-loader-error rename to tests/legacy_tests/data/empty-documents.single-loader-error diff --git a/tests/data/empty-python-module.loader-error b/tests/legacy_tests/data/empty-python-module.loader-error similarity index 100% rename from tests/data/empty-python-module.loader-error rename to tests/legacy_tests/data/empty-python-module.loader-error diff --git a/tests/data/empty-python-name.loader-error b/tests/legacy_tests/data/empty-python-name.loader-error similarity index 100% rename from tests/data/empty-python-name.loader-error rename to tests/legacy_tests/data/empty-python-name.loader-error diff --git a/tests/data/empty-tag-handle.emitter-error b/tests/legacy_tests/data/empty-tag-handle.emitter-error similarity index 100% rename from tests/data/empty-tag-handle.emitter-error rename to tests/legacy_tests/data/empty-tag-handle.emitter-error diff --git a/tests/data/empty-tag-prefix.emitter-error b/tests/legacy_tests/data/empty-tag-prefix.emitter-error similarity index 100% rename from tests/data/empty-tag-prefix.emitter-error rename to tests/legacy_tests/data/empty-tag-prefix.emitter-error diff --git a/tests/data/empty-tag.emitter-error b/tests/legacy_tests/data/empty-tag.emitter-error similarity index 100% rename from tests/data/empty-tag.emitter-error rename to tests/legacy_tests/data/empty-tag.emitter-error diff --git a/tests/data/expected-document-end.emitter-error b/tests/legacy_tests/data/expected-document-end.emitter-error similarity index 100% rename from tests/data/expected-document-end.emitter-error rename to tests/legacy_tests/data/expected-document-end.emitter-error diff --git a/tests/data/expected-document-start.emitter-error b/tests/legacy_tests/data/expected-document-start.emitter-error similarity index 100% rename from tests/data/expected-document-start.emitter-error rename to tests/legacy_tests/data/expected-document-start.emitter-error diff --git a/tests/data/expected-mapping.loader-error b/tests/legacy_tests/data/expected-mapping.loader-error similarity index 100% rename from tests/data/expected-mapping.loader-error rename to tests/legacy_tests/data/expected-mapping.loader-error diff --git a/tests/data/expected-node-1.emitter-error b/tests/legacy_tests/data/expected-node-1.emitter-error similarity index 100% rename from tests/data/expected-node-1.emitter-error rename to tests/legacy_tests/data/expected-node-1.emitter-error diff --git a/tests/data/expected-node-2.emitter-error b/tests/legacy_tests/data/expected-node-2.emitter-error similarity index 100% rename from tests/data/expected-node-2.emitter-error rename to tests/legacy_tests/data/expected-node-2.emitter-error diff --git a/tests/data/expected-nothing.emitter-error b/tests/legacy_tests/data/expected-nothing.emitter-error similarity index 100% rename from tests/data/expected-nothing.emitter-error rename to tests/legacy_tests/data/expected-nothing.emitter-error diff --git a/tests/data/expected-scalar.loader-error b/tests/legacy_tests/data/expected-scalar.loader-error similarity index 100% rename from tests/data/expected-scalar.loader-error rename to tests/legacy_tests/data/expected-scalar.loader-error diff --git a/tests/data/expected-sequence.loader-error b/tests/legacy_tests/data/expected-sequence.loader-error similarity index 100% rename from tests/data/expected-sequence.loader-error rename to tests/legacy_tests/data/expected-sequence.loader-error diff --git a/tests/data/expected-stream-start.emitter-error b/tests/legacy_tests/data/expected-stream-start.emitter-error similarity index 100% rename from tests/data/expected-stream-start.emitter-error rename to tests/legacy_tests/data/expected-stream-start.emitter-error diff --git a/tests/data/explicit-document.single-loader-error b/tests/legacy_tests/data/explicit-document.single-loader-error similarity index 100% rename from tests/data/explicit-document.single-loader-error rename to tests/legacy_tests/data/explicit-document.single-loader-error diff --git a/tests/data/fetch-complex-value-bug.loader-error b/tests/legacy_tests/data/fetch-complex-value-bug.loader-error similarity index 100% rename from tests/data/fetch-complex-value-bug.loader-error rename to tests/legacy_tests/data/fetch-complex-value-bug.loader-error diff --git a/tests/data/float-representer-2.3-bug.code b/tests/legacy_tests/data/float-representer-2.3-bug.code similarity index 100% rename from tests/data/float-representer-2.3-bug.code rename to tests/legacy_tests/data/float-representer-2.3-bug.code diff --git a/tests/data/float-representer-2.3-bug.data b/tests/legacy_tests/data/float-representer-2.3-bug.data similarity index 100% rename from tests/data/float-representer-2.3-bug.data rename to tests/legacy_tests/data/float-representer-2.3-bug.data diff --git a/tests/data/float.data b/tests/legacy_tests/data/float.data similarity index 100% rename from tests/data/float.data rename to tests/legacy_tests/data/float.data diff --git a/tests/data/float.detect b/tests/legacy_tests/data/float.detect similarity index 100% rename from tests/data/float.detect rename to tests/legacy_tests/data/float.detect diff --git a/tests/data/forbidden-entry.loader-error b/tests/legacy_tests/data/forbidden-entry.loader-error similarity index 100% rename from tests/data/forbidden-entry.loader-error rename to tests/legacy_tests/data/forbidden-entry.loader-error diff --git a/tests/data/forbidden-key.loader-error b/tests/legacy_tests/data/forbidden-key.loader-error similarity index 100% rename from tests/data/forbidden-key.loader-error rename to tests/legacy_tests/data/forbidden-key.loader-error diff --git a/tests/data/forbidden-value.loader-error b/tests/legacy_tests/data/forbidden-value.loader-error similarity index 100% rename from tests/data/forbidden-value.loader-error rename to tests/legacy_tests/data/forbidden-value.loader-error diff --git a/tests/data/implicit-document.single-loader-error b/tests/legacy_tests/data/implicit-document.single-loader-error similarity index 100% rename from tests/data/implicit-document.single-loader-error rename to tests/legacy_tests/data/implicit-document.single-loader-error diff --git a/tests/data/int.data b/tests/legacy_tests/data/int.data similarity index 100% rename from tests/data/int.data rename to tests/legacy_tests/data/int.data diff --git a/tests/data/int.detect b/tests/legacy_tests/data/int.detect similarity index 100% rename from tests/data/int.detect rename to tests/legacy_tests/data/int.detect diff --git a/tests/data/invalid-anchor-1.loader-error b/tests/legacy_tests/data/invalid-anchor-1.loader-error similarity index 100% rename from tests/data/invalid-anchor-1.loader-error rename to tests/legacy_tests/data/invalid-anchor-1.loader-error diff --git a/tests/data/invalid-anchor-2.loader-error b/tests/legacy_tests/data/invalid-anchor-2.loader-error similarity index 100% rename from tests/data/invalid-anchor-2.loader-error rename to tests/legacy_tests/data/invalid-anchor-2.loader-error diff --git a/tests/data/invalid-anchor.emitter-error b/tests/legacy_tests/data/invalid-anchor.emitter-error similarity index 100% rename from tests/data/invalid-anchor.emitter-error rename to tests/legacy_tests/data/invalid-anchor.emitter-error diff --git a/tests/data/invalid-base64-data-2.loader-error b/tests/legacy_tests/data/invalid-base64-data-2.loader-error similarity index 100% rename from tests/data/invalid-base64-data-2.loader-error rename to tests/legacy_tests/data/invalid-base64-data-2.loader-error diff --git a/tests/data/invalid-base64-data.loader-error b/tests/legacy_tests/data/invalid-base64-data.loader-error similarity index 100% rename from tests/data/invalid-base64-data.loader-error rename to tests/legacy_tests/data/invalid-base64-data.loader-error diff --git a/tests/data/invalid-block-scalar-indicator.loader-error b/tests/legacy_tests/data/invalid-block-scalar-indicator.loader-error similarity index 100% rename from tests/data/invalid-block-scalar-indicator.loader-error rename to tests/legacy_tests/data/invalid-block-scalar-indicator.loader-error diff --git a/tests/data/invalid-character.loader-error b/tests/legacy_tests/data/invalid-character.loader-error similarity index 100% rename from tests/data/invalid-character.loader-error rename to tests/legacy_tests/data/invalid-character.loader-error diff --git a/tests/data/invalid-character.stream-error b/tests/legacy_tests/data/invalid-character.stream-error similarity index 100% rename from tests/data/invalid-character.stream-error rename to tests/legacy_tests/data/invalid-character.stream-error diff --git a/tests/data/invalid-directive-line.loader-error b/tests/legacy_tests/data/invalid-directive-line.loader-error similarity index 100% rename from tests/data/invalid-directive-line.loader-error rename to tests/legacy_tests/data/invalid-directive-line.loader-error diff --git a/tests/data/invalid-directive-name-1.loader-error b/tests/legacy_tests/data/invalid-directive-name-1.loader-error similarity index 100% rename from tests/data/invalid-directive-name-1.loader-error rename to tests/legacy_tests/data/invalid-directive-name-1.loader-error diff --git a/tests/data/invalid-directive-name-2.loader-error b/tests/legacy_tests/data/invalid-directive-name-2.loader-error similarity index 100% rename from tests/data/invalid-directive-name-2.loader-error rename to tests/legacy_tests/data/invalid-directive-name-2.loader-error diff --git a/tests/data/invalid-escape-character.loader-error b/tests/legacy_tests/data/invalid-escape-character.loader-error similarity index 100% rename from tests/data/invalid-escape-character.loader-error rename to tests/legacy_tests/data/invalid-escape-character.loader-error diff --git a/tests/data/invalid-escape-numbers.loader-error b/tests/legacy_tests/data/invalid-escape-numbers.loader-error similarity index 100% rename from tests/data/invalid-escape-numbers.loader-error rename to tests/legacy_tests/data/invalid-escape-numbers.loader-error diff --git a/tests/data/invalid-indentation-indicator-1.loader-error b/tests/legacy_tests/data/invalid-indentation-indicator-1.loader-error similarity index 100% rename from tests/data/invalid-indentation-indicator-1.loader-error rename to tests/legacy_tests/data/invalid-indentation-indicator-1.loader-error diff --git a/tests/data/invalid-indentation-indicator-2.loader-error b/tests/legacy_tests/data/invalid-indentation-indicator-2.loader-error similarity index 100% rename from tests/data/invalid-indentation-indicator-2.loader-error rename to tests/legacy_tests/data/invalid-indentation-indicator-2.loader-error diff --git a/tests/data/invalid-item-without-trailing-break.loader-error b/tests/legacy_tests/data/invalid-item-without-trailing-break.loader-error similarity index 100% rename from tests/data/invalid-item-without-trailing-break.loader-error rename to tests/legacy_tests/data/invalid-item-without-trailing-break.loader-error diff --git a/tests/data/invalid-merge-1.loader-error b/tests/legacy_tests/data/invalid-merge-1.loader-error similarity index 100% rename from tests/data/invalid-merge-1.loader-error rename to tests/legacy_tests/data/invalid-merge-1.loader-error diff --git a/tests/data/invalid-merge-2.loader-error b/tests/legacy_tests/data/invalid-merge-2.loader-error similarity index 100% rename from tests/data/invalid-merge-2.loader-error rename to tests/legacy_tests/data/invalid-merge-2.loader-error diff --git a/tests/data/invalid-omap-1.loader-error b/tests/legacy_tests/data/invalid-omap-1.loader-error similarity index 100% rename from tests/data/invalid-omap-1.loader-error rename to tests/legacy_tests/data/invalid-omap-1.loader-error diff --git a/tests/data/invalid-omap-2.loader-error b/tests/legacy_tests/data/invalid-omap-2.loader-error similarity index 100% rename from tests/data/invalid-omap-2.loader-error rename to tests/legacy_tests/data/invalid-omap-2.loader-error diff --git a/tests/data/invalid-omap-3.loader-error b/tests/legacy_tests/data/invalid-omap-3.loader-error similarity index 100% rename from tests/data/invalid-omap-3.loader-error rename to tests/legacy_tests/data/invalid-omap-3.loader-error diff --git a/tests/data/invalid-pairs-1.loader-error b/tests/legacy_tests/data/invalid-pairs-1.loader-error similarity index 100% rename from tests/data/invalid-pairs-1.loader-error rename to tests/legacy_tests/data/invalid-pairs-1.loader-error diff --git a/tests/data/invalid-pairs-2.loader-error b/tests/legacy_tests/data/invalid-pairs-2.loader-error similarity index 100% rename from tests/data/invalid-pairs-2.loader-error rename to tests/legacy_tests/data/invalid-pairs-2.loader-error diff --git a/tests/data/invalid-pairs-3.loader-error b/tests/legacy_tests/data/invalid-pairs-3.loader-error similarity index 100% rename from tests/data/invalid-pairs-3.loader-error rename to tests/legacy_tests/data/invalid-pairs-3.loader-error diff --git a/tests/data/invalid-python-bytes-2-py3.loader-error b/tests/legacy_tests/data/invalid-python-bytes-2-py3.loader-error similarity index 100% rename from tests/data/invalid-python-bytes-2-py3.loader-error rename to tests/legacy_tests/data/invalid-python-bytes-2-py3.loader-error diff --git a/tests/data/invalid-python-bytes-py3.loader-error b/tests/legacy_tests/data/invalid-python-bytes-py3.loader-error similarity index 100% rename from tests/data/invalid-python-bytes-py3.loader-error rename to tests/legacy_tests/data/invalid-python-bytes-py3.loader-error diff --git a/tests/data/invalid-python-module-kind.loader-error b/tests/legacy_tests/data/invalid-python-module-kind.loader-error similarity index 100% rename from tests/data/invalid-python-module-kind.loader-error rename to tests/legacy_tests/data/invalid-python-module-kind.loader-error diff --git a/tests/data/invalid-python-module-value.loader-error b/tests/legacy_tests/data/invalid-python-module-value.loader-error similarity index 100% rename from tests/data/invalid-python-module-value.loader-error rename to tests/legacy_tests/data/invalid-python-module-value.loader-error diff --git a/tests/data/invalid-python-module.loader-error b/tests/legacy_tests/data/invalid-python-module.loader-error similarity index 100% rename from tests/data/invalid-python-module.loader-error rename to tests/legacy_tests/data/invalid-python-module.loader-error diff --git a/tests/data/invalid-python-name-kind.loader-error b/tests/legacy_tests/data/invalid-python-name-kind.loader-error similarity index 100% rename from tests/data/invalid-python-name-kind.loader-error rename to tests/legacy_tests/data/invalid-python-name-kind.loader-error diff --git a/tests/data/invalid-python-name-module.loader-error b/tests/legacy_tests/data/invalid-python-name-module.loader-error similarity index 100% rename from tests/data/invalid-python-name-module.loader-error rename to tests/legacy_tests/data/invalid-python-name-module.loader-error diff --git a/tests/data/invalid-python-name-object.loader-error b/tests/legacy_tests/data/invalid-python-name-object.loader-error similarity index 100% rename from tests/data/invalid-python-name-object.loader-error rename to tests/legacy_tests/data/invalid-python-name-object.loader-error diff --git a/tests/data/invalid-python-name-value.loader-error b/tests/legacy_tests/data/invalid-python-name-value.loader-error similarity index 100% rename from tests/data/invalid-python-name-value.loader-error rename to tests/legacy_tests/data/invalid-python-name-value.loader-error diff --git a/tests/data/invalid-simple-key.loader-error b/tests/legacy_tests/data/invalid-simple-key.loader-error similarity index 100% rename from tests/data/invalid-simple-key.loader-error rename to tests/legacy_tests/data/invalid-simple-key.loader-error diff --git a/tests/data/invalid-single-quote-bug.code b/tests/legacy_tests/data/invalid-single-quote-bug.code similarity index 100% rename from tests/data/invalid-single-quote-bug.code rename to tests/legacy_tests/data/invalid-single-quote-bug.code diff --git a/tests/data/invalid-single-quote-bug.data b/tests/legacy_tests/data/invalid-single-quote-bug.data similarity index 100% rename from tests/data/invalid-single-quote-bug.data rename to tests/legacy_tests/data/invalid-single-quote-bug.data diff --git a/tests/data/invalid-starting-character.loader-error b/tests/legacy_tests/data/invalid-starting-character.loader-error similarity index 100% rename from tests/data/invalid-starting-character.loader-error rename to tests/legacy_tests/data/invalid-starting-character.loader-error diff --git a/tests/data/invalid-tag-1.loader-error b/tests/legacy_tests/data/invalid-tag-1.loader-error similarity index 100% rename from tests/data/invalid-tag-1.loader-error rename to tests/legacy_tests/data/invalid-tag-1.loader-error diff --git a/tests/data/invalid-tag-2.loader-error b/tests/legacy_tests/data/invalid-tag-2.loader-error similarity index 100% rename from tests/data/invalid-tag-2.loader-error rename to tests/legacy_tests/data/invalid-tag-2.loader-error diff --git a/tests/data/invalid-tag-directive-handle.loader-error b/tests/legacy_tests/data/invalid-tag-directive-handle.loader-error similarity index 100% rename from tests/data/invalid-tag-directive-handle.loader-error rename to tests/legacy_tests/data/invalid-tag-directive-handle.loader-error diff --git a/tests/data/invalid-tag-directive-prefix.loader-error b/tests/legacy_tests/data/invalid-tag-directive-prefix.loader-error similarity index 100% rename from tests/data/invalid-tag-directive-prefix.loader-error rename to tests/legacy_tests/data/invalid-tag-directive-prefix.loader-error diff --git a/tests/data/invalid-tag-handle-1.emitter-error b/tests/legacy_tests/data/invalid-tag-handle-1.emitter-error similarity index 100% rename from tests/data/invalid-tag-handle-1.emitter-error rename to tests/legacy_tests/data/invalid-tag-handle-1.emitter-error diff --git a/tests/data/invalid-tag-handle-1.loader-error b/tests/legacy_tests/data/invalid-tag-handle-1.loader-error similarity index 100% rename from tests/data/invalid-tag-handle-1.loader-error rename to tests/legacy_tests/data/invalid-tag-handle-1.loader-error diff --git a/tests/data/invalid-tag-handle-2.emitter-error b/tests/legacy_tests/data/invalid-tag-handle-2.emitter-error similarity index 100% rename from tests/data/invalid-tag-handle-2.emitter-error rename to tests/legacy_tests/data/invalid-tag-handle-2.emitter-error diff --git a/tests/data/invalid-tag-handle-2.loader-error b/tests/legacy_tests/data/invalid-tag-handle-2.loader-error similarity index 100% rename from tests/data/invalid-tag-handle-2.loader-error rename to tests/legacy_tests/data/invalid-tag-handle-2.loader-error diff --git a/tests/data/invalid-uri-escapes-1.loader-error b/tests/legacy_tests/data/invalid-uri-escapes-1.loader-error similarity index 100% rename from tests/data/invalid-uri-escapes-1.loader-error rename to tests/legacy_tests/data/invalid-uri-escapes-1.loader-error diff --git a/tests/data/invalid-uri-escapes-2.loader-error b/tests/legacy_tests/data/invalid-uri-escapes-2.loader-error similarity index 100% rename from tests/data/invalid-uri-escapes-2.loader-error rename to tests/legacy_tests/data/invalid-uri-escapes-2.loader-error diff --git a/tests/data/invalid-uri-escapes-3.loader-error b/tests/legacy_tests/data/invalid-uri-escapes-3.loader-error similarity index 100% rename from tests/data/invalid-uri-escapes-3.loader-error rename to tests/legacy_tests/data/invalid-uri-escapes-3.loader-error diff --git a/tests/data/invalid-uri.loader-error b/tests/legacy_tests/data/invalid-uri.loader-error similarity index 100% rename from tests/data/invalid-uri.loader-error rename to tests/legacy_tests/data/invalid-uri.loader-error diff --git a/tests/data/invalid-utf8-byte.loader-error b/tests/legacy_tests/data/invalid-utf8-byte.loader-error similarity index 100% rename from tests/data/invalid-utf8-byte.loader-error rename to tests/legacy_tests/data/invalid-utf8-byte.loader-error diff --git a/tests/data/invalid-utf8-byte.stream-error b/tests/legacy_tests/data/invalid-utf8-byte.stream-error similarity index 100% rename from tests/data/invalid-utf8-byte.stream-error rename to tests/legacy_tests/data/invalid-utf8-byte.stream-error diff --git a/tests/data/invalid-yaml-directive-version-1.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-1.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-1.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-1.loader-error diff --git a/tests/data/invalid-yaml-directive-version-2.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-2.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-2.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-2.loader-error diff --git a/tests/data/invalid-yaml-directive-version-3.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-3.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-3.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-3.loader-error diff --git a/tests/data/invalid-yaml-directive-version-4.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-4.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-4.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-4.loader-error diff --git a/tests/data/invalid-yaml-directive-version-5.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-5.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-5.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-5.loader-error diff --git a/tests/data/invalid-yaml-directive-version-6.loader-error b/tests/legacy_tests/data/invalid-yaml-directive-version-6.loader-error similarity index 100% rename from tests/data/invalid-yaml-directive-version-6.loader-error rename to tests/legacy_tests/data/invalid-yaml-directive-version-6.loader-error diff --git a/tests/data/invalid-yaml-version.loader-error b/tests/legacy_tests/data/invalid-yaml-version.loader-error similarity index 100% rename from tests/data/invalid-yaml-version.loader-error rename to tests/legacy_tests/data/invalid-yaml-version.loader-error diff --git a/tests/data/latin.unicode b/tests/legacy_tests/data/latin.unicode similarity index 100% rename from tests/data/latin.unicode rename to tests/legacy_tests/data/latin.unicode diff --git a/tests/data/mapping.sort b/tests/legacy_tests/data/mapping.sort similarity index 100% rename from tests/data/mapping.sort rename to tests/legacy_tests/data/mapping.sort diff --git a/tests/data/mapping.sorted b/tests/legacy_tests/data/mapping.sorted similarity index 100% rename from tests/data/mapping.sorted rename to tests/legacy_tests/data/mapping.sorted diff --git a/tests/data/mappings.events b/tests/legacy_tests/data/mappings.events similarity index 100% rename from tests/data/mappings.events rename to tests/legacy_tests/data/mappings.events diff --git a/tests/data/merge.data b/tests/legacy_tests/data/merge.data similarity index 100% rename from tests/data/merge.data rename to tests/legacy_tests/data/merge.data diff --git a/tests/data/merge.detect b/tests/legacy_tests/data/merge.detect similarity index 100% rename from tests/data/merge.detect rename to tests/legacy_tests/data/merge.detect diff --git a/tests/data/more-floats.code b/tests/legacy_tests/data/more-floats.code similarity index 100% rename from tests/data/more-floats.code rename to tests/legacy_tests/data/more-floats.code diff --git a/tests/data/more-floats.data b/tests/legacy_tests/data/more-floats.data similarity index 100% rename from tests/data/more-floats.data rename to tests/legacy_tests/data/more-floats.data diff --git a/tests/data/multi-constructor.code b/tests/legacy_tests/data/multi-constructor.code similarity index 100% rename from tests/data/multi-constructor.code rename to tests/legacy_tests/data/multi-constructor.code diff --git a/tests/data/multi-constructor.multi b/tests/legacy_tests/data/multi-constructor.multi similarity index 100% rename from tests/data/multi-constructor.multi rename to tests/legacy_tests/data/multi-constructor.multi diff --git a/tests/data/myfullloader.subclass_blacklist b/tests/legacy_tests/data/myfullloader.subclass_blacklist similarity index 100% rename from tests/data/myfullloader.subclass_blacklist rename to tests/legacy_tests/data/myfullloader.subclass_blacklist diff --git a/tests/data/negative-float-bug.code b/tests/legacy_tests/data/negative-float-bug.code similarity index 100% rename from tests/data/negative-float-bug.code rename to tests/legacy_tests/data/negative-float-bug.code diff --git a/tests/data/negative-float-bug.data b/tests/legacy_tests/data/negative-float-bug.data similarity index 100% rename from tests/data/negative-float-bug.data rename to tests/legacy_tests/data/negative-float-bug.data diff --git a/tests/data/no-alias-anchor.emitter-error b/tests/legacy_tests/data/no-alias-anchor.emitter-error similarity index 100% rename from tests/data/no-alias-anchor.emitter-error rename to tests/legacy_tests/data/no-alias-anchor.emitter-error diff --git a/tests/data/no-alias-anchor.skip-ext b/tests/legacy_tests/data/no-alias-anchor.skip-ext similarity index 100% rename from tests/data/no-alias-anchor.skip-ext rename to tests/legacy_tests/data/no-alias-anchor.skip-ext diff --git a/tests/data/no-block-collection-end.loader-error b/tests/legacy_tests/data/no-block-collection-end.loader-error similarity index 100% rename from tests/data/no-block-collection-end.loader-error rename to tests/legacy_tests/data/no-block-collection-end.loader-error diff --git a/tests/data/no-block-mapping-end-2.loader-error b/tests/legacy_tests/data/no-block-mapping-end-2.loader-error similarity index 100% rename from tests/data/no-block-mapping-end-2.loader-error rename to tests/legacy_tests/data/no-block-mapping-end-2.loader-error diff --git a/tests/data/no-block-mapping-end.loader-error b/tests/legacy_tests/data/no-block-mapping-end.loader-error similarity index 100% rename from tests/data/no-block-mapping-end.loader-error rename to tests/legacy_tests/data/no-block-mapping-end.loader-error diff --git a/tests/data/no-document-start.loader-error b/tests/legacy_tests/data/no-document-start.loader-error similarity index 100% rename from tests/data/no-document-start.loader-error rename to tests/legacy_tests/data/no-document-start.loader-error diff --git a/tests/data/no-flow-mapping-end.loader-error b/tests/legacy_tests/data/no-flow-mapping-end.loader-error similarity index 100% rename from tests/data/no-flow-mapping-end.loader-error rename to tests/legacy_tests/data/no-flow-mapping-end.loader-error diff --git a/tests/data/no-flow-sequence-end.loader-error b/tests/legacy_tests/data/no-flow-sequence-end.loader-error similarity index 100% rename from tests/data/no-flow-sequence-end.loader-error rename to tests/legacy_tests/data/no-flow-sequence-end.loader-error diff --git a/tests/data/no-node-1.loader-error b/tests/legacy_tests/data/no-node-1.loader-error similarity index 100% rename from tests/data/no-node-1.loader-error rename to tests/legacy_tests/data/no-node-1.loader-error diff --git a/tests/data/no-node-2.loader-error b/tests/legacy_tests/data/no-node-2.loader-error similarity index 100% rename from tests/data/no-node-2.loader-error rename to tests/legacy_tests/data/no-node-2.loader-error diff --git a/tests/data/no-tag.emitter-error b/tests/legacy_tests/data/no-tag.emitter-error similarity index 100% rename from tests/data/no-tag.emitter-error rename to tests/legacy_tests/data/no-tag.emitter-error diff --git a/tests/data/null.data b/tests/legacy_tests/data/null.data similarity index 100% rename from tests/data/null.data rename to tests/legacy_tests/data/null.data diff --git a/tests/data/null.detect b/tests/legacy_tests/data/null.detect similarity index 100% rename from tests/data/null.detect rename to tests/legacy_tests/data/null.detect diff --git a/tests/data/odd-utf16.stream-error b/tests/legacy_tests/data/odd-utf16.stream-error similarity index 100% rename from tests/data/odd-utf16.stream-error rename to tests/legacy_tests/data/odd-utf16.stream-error diff --git a/tests/data/overwrite-state-new-constructor.loader-error b/tests/legacy_tests/data/overwrite-state-new-constructor.loader-error similarity index 100% rename from tests/data/overwrite-state-new-constructor.loader-error rename to tests/legacy_tests/data/overwrite-state-new-constructor.loader-error diff --git a/tests/data/recursive-anchor.former-loader-error b/tests/legacy_tests/data/recursive-anchor.former-loader-error similarity index 100% rename from tests/data/recursive-anchor.former-loader-error rename to tests/legacy_tests/data/recursive-anchor.former-loader-error diff --git a/tests/data/recursive-dict.recursive b/tests/legacy_tests/data/recursive-dict.recursive similarity index 100% rename from tests/data/recursive-dict.recursive rename to tests/legacy_tests/data/recursive-dict.recursive diff --git a/tests/data/recursive-list.recursive b/tests/legacy_tests/data/recursive-list.recursive similarity index 100% rename from tests/data/recursive-list.recursive rename to tests/legacy_tests/data/recursive-list.recursive diff --git a/tests/data/recursive-set.recursive b/tests/legacy_tests/data/recursive-set.recursive similarity index 100% rename from tests/data/recursive-set.recursive rename to tests/legacy_tests/data/recursive-set.recursive diff --git a/tests/data/recursive-state.recursive b/tests/legacy_tests/data/recursive-state.recursive similarity index 100% rename from tests/data/recursive-state.recursive rename to tests/legacy_tests/data/recursive-state.recursive diff --git a/tests/data/recursive-tuple.recursive b/tests/legacy_tests/data/recursive-tuple.recursive similarity index 100% rename from tests/data/recursive-tuple.recursive rename to tests/legacy_tests/data/recursive-tuple.recursive diff --git a/tests/data/recursive.former-dumper-error b/tests/legacy_tests/data/recursive.former-dumper-error similarity index 100% rename from tests/data/recursive.former-dumper-error rename to tests/legacy_tests/data/recursive.former-dumper-error diff --git a/tests/data/remove-possible-simple-key-bug.loader-error b/tests/legacy_tests/data/remove-possible-simple-key-bug.loader-error similarity index 100% rename from tests/data/remove-possible-simple-key-bug.loader-error rename to tests/legacy_tests/data/remove-possible-simple-key-bug.loader-error diff --git a/tests/data/resolver.data b/tests/legacy_tests/data/resolver.data similarity index 100% rename from tests/data/resolver.data rename to tests/legacy_tests/data/resolver.data diff --git a/tests/data/resolver.path b/tests/legacy_tests/data/resolver.path similarity index 100% rename from tests/data/resolver.path rename to tests/legacy_tests/data/resolver.path diff --git a/tests/data/run-parser-crash-bug.data b/tests/legacy_tests/data/run-parser-crash-bug.data similarity index 100% rename from tests/data/run-parser-crash-bug.data rename to tests/legacy_tests/data/run-parser-crash-bug.data diff --git a/tests/data/scalars.events b/tests/legacy_tests/data/scalars.events similarity index 100% rename from tests/data/scalars.events rename to tests/legacy_tests/data/scalars.events diff --git a/tests/data/scan-document-end-bug.canonical b/tests/legacy_tests/data/scan-document-end-bug.canonical similarity index 100% rename from tests/data/scan-document-end-bug.canonical rename to tests/legacy_tests/data/scan-document-end-bug.canonical diff --git a/tests/data/scan-document-end-bug.data b/tests/legacy_tests/data/scan-document-end-bug.data similarity index 100% rename from tests/data/scan-document-end-bug.data rename to tests/legacy_tests/data/scan-document-end-bug.data diff --git a/tests/data/scan-line-break-bug.canonical b/tests/legacy_tests/data/scan-line-break-bug.canonical similarity index 100% rename from tests/data/scan-line-break-bug.canonical rename to tests/legacy_tests/data/scan-line-break-bug.canonical diff --git a/tests/data/scan-line-break-bug.data b/tests/legacy_tests/data/scan-line-break-bug.data similarity index 100% rename from tests/data/scan-line-break-bug.data rename to tests/legacy_tests/data/scan-line-break-bug.data diff --git a/tests/data/sequences.events b/tests/legacy_tests/data/sequences.events similarity index 100% rename from tests/data/sequences.events rename to tests/legacy_tests/data/sequences.events diff --git a/tests/data/serializer-is-already-opened.dumper-error b/tests/legacy_tests/data/serializer-is-already-opened.dumper-error similarity index 100% rename from tests/data/serializer-is-already-opened.dumper-error rename to tests/legacy_tests/data/serializer-is-already-opened.dumper-error diff --git a/tests/data/serializer-is-closed-1.dumper-error b/tests/legacy_tests/data/serializer-is-closed-1.dumper-error similarity index 100% rename from tests/data/serializer-is-closed-1.dumper-error rename to tests/legacy_tests/data/serializer-is-closed-1.dumper-error diff --git a/tests/data/serializer-is-closed-2.dumper-error b/tests/legacy_tests/data/serializer-is-closed-2.dumper-error similarity index 100% rename from tests/data/serializer-is-closed-2.dumper-error rename to tests/legacy_tests/data/serializer-is-closed-2.dumper-error diff --git a/tests/data/serializer-is-not-opened-1.dumper-error b/tests/legacy_tests/data/serializer-is-not-opened-1.dumper-error similarity index 100% rename from tests/data/serializer-is-not-opened-1.dumper-error rename to tests/legacy_tests/data/serializer-is-not-opened-1.dumper-error diff --git a/tests/data/serializer-is-not-opened-2.dumper-error b/tests/legacy_tests/data/serializer-is-not-opened-2.dumper-error similarity index 100% rename from tests/data/serializer-is-not-opened-2.dumper-error rename to tests/legacy_tests/data/serializer-is-not-opened-2.dumper-error diff --git a/tests/data/single-dot-is-not-float-bug.code b/tests/legacy_tests/data/single-dot-is-not-float-bug.code similarity index 100% rename from tests/data/single-dot-is-not-float-bug.code rename to tests/legacy_tests/data/single-dot-is-not-float-bug.code diff --git a/tests/data/single-dot-is-not-float-bug.data b/tests/legacy_tests/data/single-dot-is-not-float-bug.data similarity index 100% rename from tests/data/single-dot-is-not-float-bug.data rename to tests/legacy_tests/data/single-dot-is-not-float-bug.data diff --git a/tests/data/sloppy-indentation.canonical b/tests/legacy_tests/data/sloppy-indentation.canonical similarity index 100% rename from tests/data/sloppy-indentation.canonical rename to tests/legacy_tests/data/sloppy-indentation.canonical diff --git a/tests/data/sloppy-indentation.data b/tests/legacy_tests/data/sloppy-indentation.data similarity index 100% rename from tests/data/sloppy-indentation.data rename to tests/legacy_tests/data/sloppy-indentation.data diff --git a/tests/data/spec-02-01.data b/tests/legacy_tests/data/spec-02-01.data similarity index 100% rename from tests/data/spec-02-01.data rename to tests/legacy_tests/data/spec-02-01.data diff --git a/tests/data/spec-02-01.structure b/tests/legacy_tests/data/spec-02-01.structure similarity index 100% rename from tests/data/spec-02-01.structure rename to tests/legacy_tests/data/spec-02-01.structure diff --git a/tests/data/spec-02-01.tokens b/tests/legacy_tests/data/spec-02-01.tokens similarity index 100% rename from tests/data/spec-02-01.tokens rename to tests/legacy_tests/data/spec-02-01.tokens diff --git a/tests/data/spec-02-02.data b/tests/legacy_tests/data/spec-02-02.data similarity index 100% rename from tests/data/spec-02-02.data rename to tests/legacy_tests/data/spec-02-02.data diff --git a/tests/data/spec-02-02.structure b/tests/legacy_tests/data/spec-02-02.structure similarity index 100% rename from tests/data/spec-02-02.structure rename to tests/legacy_tests/data/spec-02-02.structure diff --git a/tests/data/spec-02-02.tokens b/tests/legacy_tests/data/spec-02-02.tokens similarity index 100% rename from tests/data/spec-02-02.tokens rename to tests/legacy_tests/data/spec-02-02.tokens diff --git a/tests/data/spec-02-03.data b/tests/legacy_tests/data/spec-02-03.data similarity index 100% rename from tests/data/spec-02-03.data rename to tests/legacy_tests/data/spec-02-03.data diff --git a/tests/data/spec-02-03.structure b/tests/legacy_tests/data/spec-02-03.structure similarity index 100% rename from tests/data/spec-02-03.structure rename to tests/legacy_tests/data/spec-02-03.structure diff --git a/tests/data/spec-02-03.tokens b/tests/legacy_tests/data/spec-02-03.tokens similarity index 100% rename from tests/data/spec-02-03.tokens rename to tests/legacy_tests/data/spec-02-03.tokens diff --git a/tests/data/spec-02-04.data b/tests/legacy_tests/data/spec-02-04.data similarity index 100% rename from tests/data/spec-02-04.data rename to tests/legacy_tests/data/spec-02-04.data diff --git a/tests/data/spec-02-04.structure b/tests/legacy_tests/data/spec-02-04.structure similarity index 100% rename from tests/data/spec-02-04.structure rename to tests/legacy_tests/data/spec-02-04.structure diff --git a/tests/data/spec-02-04.tokens b/tests/legacy_tests/data/spec-02-04.tokens similarity index 100% rename from tests/data/spec-02-04.tokens rename to tests/legacy_tests/data/spec-02-04.tokens diff --git a/tests/data/spec-02-05.data b/tests/legacy_tests/data/spec-02-05.data similarity index 100% rename from tests/data/spec-02-05.data rename to tests/legacy_tests/data/spec-02-05.data diff --git a/tests/data/spec-02-05.structure b/tests/legacy_tests/data/spec-02-05.structure similarity index 100% rename from tests/data/spec-02-05.structure rename to tests/legacy_tests/data/spec-02-05.structure diff --git a/tests/data/spec-02-05.tokens b/tests/legacy_tests/data/spec-02-05.tokens similarity index 100% rename from tests/data/spec-02-05.tokens rename to tests/legacy_tests/data/spec-02-05.tokens diff --git a/tests/data/spec-02-06.data b/tests/legacy_tests/data/spec-02-06.data similarity index 100% rename from tests/data/spec-02-06.data rename to tests/legacy_tests/data/spec-02-06.data diff --git a/tests/data/spec-02-06.structure b/tests/legacy_tests/data/spec-02-06.structure similarity index 100% rename from tests/data/spec-02-06.structure rename to tests/legacy_tests/data/spec-02-06.structure diff --git a/tests/data/spec-02-06.tokens b/tests/legacy_tests/data/spec-02-06.tokens similarity index 100% rename from tests/data/spec-02-06.tokens rename to tests/legacy_tests/data/spec-02-06.tokens diff --git a/tests/data/spec-02-07.data b/tests/legacy_tests/data/spec-02-07.data similarity index 100% rename from tests/data/spec-02-07.data rename to tests/legacy_tests/data/spec-02-07.data diff --git a/tests/data/spec-02-07.structure b/tests/legacy_tests/data/spec-02-07.structure similarity index 100% rename from tests/data/spec-02-07.structure rename to tests/legacy_tests/data/spec-02-07.structure diff --git a/tests/data/spec-02-07.tokens b/tests/legacy_tests/data/spec-02-07.tokens similarity index 100% rename from tests/data/spec-02-07.tokens rename to tests/legacy_tests/data/spec-02-07.tokens diff --git a/tests/data/spec-02-08.data b/tests/legacy_tests/data/spec-02-08.data similarity index 100% rename from tests/data/spec-02-08.data rename to tests/legacy_tests/data/spec-02-08.data diff --git a/tests/data/spec-02-08.structure b/tests/legacy_tests/data/spec-02-08.structure similarity index 100% rename from tests/data/spec-02-08.structure rename to tests/legacy_tests/data/spec-02-08.structure diff --git a/tests/data/spec-02-08.tokens b/tests/legacy_tests/data/spec-02-08.tokens similarity index 100% rename from tests/data/spec-02-08.tokens rename to tests/legacy_tests/data/spec-02-08.tokens diff --git a/tests/data/spec-02-09.data b/tests/legacy_tests/data/spec-02-09.data similarity index 100% rename from tests/data/spec-02-09.data rename to tests/legacy_tests/data/spec-02-09.data diff --git a/tests/data/spec-02-09.structure b/tests/legacy_tests/data/spec-02-09.structure similarity index 100% rename from tests/data/spec-02-09.structure rename to tests/legacy_tests/data/spec-02-09.structure diff --git a/tests/data/spec-02-09.tokens b/tests/legacy_tests/data/spec-02-09.tokens similarity index 100% rename from tests/data/spec-02-09.tokens rename to tests/legacy_tests/data/spec-02-09.tokens diff --git a/tests/data/spec-02-10.data b/tests/legacy_tests/data/spec-02-10.data similarity index 100% rename from tests/data/spec-02-10.data rename to tests/legacy_tests/data/spec-02-10.data diff --git a/tests/data/spec-02-10.structure b/tests/legacy_tests/data/spec-02-10.structure similarity index 100% rename from tests/data/spec-02-10.structure rename to tests/legacy_tests/data/spec-02-10.structure diff --git a/tests/data/spec-02-10.tokens b/tests/legacy_tests/data/spec-02-10.tokens similarity index 100% rename from tests/data/spec-02-10.tokens rename to tests/legacy_tests/data/spec-02-10.tokens diff --git a/tests/data/spec-02-11.data b/tests/legacy_tests/data/spec-02-11.data similarity index 100% rename from tests/data/spec-02-11.data rename to tests/legacy_tests/data/spec-02-11.data diff --git a/tests/data/spec-02-11.structure b/tests/legacy_tests/data/spec-02-11.structure similarity index 100% rename from tests/data/spec-02-11.structure rename to tests/legacy_tests/data/spec-02-11.structure diff --git a/tests/data/spec-02-11.tokens b/tests/legacy_tests/data/spec-02-11.tokens similarity index 100% rename from tests/data/spec-02-11.tokens rename to tests/legacy_tests/data/spec-02-11.tokens diff --git a/tests/data/spec-02-12.data b/tests/legacy_tests/data/spec-02-12.data similarity index 100% rename from tests/data/spec-02-12.data rename to tests/legacy_tests/data/spec-02-12.data diff --git a/tests/data/spec-02-12.structure b/tests/legacy_tests/data/spec-02-12.structure similarity index 100% rename from tests/data/spec-02-12.structure rename to tests/legacy_tests/data/spec-02-12.structure diff --git a/tests/data/spec-02-12.tokens b/tests/legacy_tests/data/spec-02-12.tokens similarity index 100% rename from tests/data/spec-02-12.tokens rename to tests/legacy_tests/data/spec-02-12.tokens diff --git a/tests/data/spec-02-13.data b/tests/legacy_tests/data/spec-02-13.data similarity index 100% rename from tests/data/spec-02-13.data rename to tests/legacy_tests/data/spec-02-13.data diff --git a/tests/data/spec-02-13.structure b/tests/legacy_tests/data/spec-02-13.structure similarity index 100% rename from tests/data/spec-02-13.structure rename to tests/legacy_tests/data/spec-02-13.structure diff --git a/tests/data/spec-02-13.tokens b/tests/legacy_tests/data/spec-02-13.tokens similarity index 100% rename from tests/data/spec-02-13.tokens rename to tests/legacy_tests/data/spec-02-13.tokens diff --git a/tests/data/spec-02-14.data b/tests/legacy_tests/data/spec-02-14.data similarity index 100% rename from tests/data/spec-02-14.data rename to tests/legacy_tests/data/spec-02-14.data diff --git a/tests/data/spec-02-14.structure b/tests/legacy_tests/data/spec-02-14.structure similarity index 100% rename from tests/data/spec-02-14.structure rename to tests/legacy_tests/data/spec-02-14.structure diff --git a/tests/data/spec-02-14.tokens b/tests/legacy_tests/data/spec-02-14.tokens similarity index 100% rename from tests/data/spec-02-14.tokens rename to tests/legacy_tests/data/spec-02-14.tokens diff --git a/tests/data/spec-02-15.data b/tests/legacy_tests/data/spec-02-15.data similarity index 100% rename from tests/data/spec-02-15.data rename to tests/legacy_tests/data/spec-02-15.data diff --git a/tests/data/spec-02-15.structure b/tests/legacy_tests/data/spec-02-15.structure similarity index 100% rename from tests/data/spec-02-15.structure rename to tests/legacy_tests/data/spec-02-15.structure diff --git a/tests/data/spec-02-15.tokens b/tests/legacy_tests/data/spec-02-15.tokens similarity index 100% rename from tests/data/spec-02-15.tokens rename to tests/legacy_tests/data/spec-02-15.tokens diff --git a/tests/data/spec-02-16.data b/tests/legacy_tests/data/spec-02-16.data similarity index 100% rename from tests/data/spec-02-16.data rename to tests/legacy_tests/data/spec-02-16.data diff --git a/tests/data/spec-02-16.structure b/tests/legacy_tests/data/spec-02-16.structure similarity index 100% rename from tests/data/spec-02-16.structure rename to tests/legacy_tests/data/spec-02-16.structure diff --git a/tests/data/spec-02-16.tokens b/tests/legacy_tests/data/spec-02-16.tokens similarity index 100% rename from tests/data/spec-02-16.tokens rename to tests/legacy_tests/data/spec-02-16.tokens diff --git a/tests/data/spec-02-17.data b/tests/legacy_tests/data/spec-02-17.data similarity index 100% rename from tests/data/spec-02-17.data rename to tests/legacy_tests/data/spec-02-17.data diff --git a/tests/data/spec-02-17.structure b/tests/legacy_tests/data/spec-02-17.structure similarity index 100% rename from tests/data/spec-02-17.structure rename to tests/legacy_tests/data/spec-02-17.structure diff --git a/tests/data/spec-02-17.tokens b/tests/legacy_tests/data/spec-02-17.tokens similarity index 100% rename from tests/data/spec-02-17.tokens rename to tests/legacy_tests/data/spec-02-17.tokens diff --git a/tests/data/spec-02-18.data b/tests/legacy_tests/data/spec-02-18.data similarity index 100% rename from tests/data/spec-02-18.data rename to tests/legacy_tests/data/spec-02-18.data diff --git a/tests/data/spec-02-18.structure b/tests/legacy_tests/data/spec-02-18.structure similarity index 100% rename from tests/data/spec-02-18.structure rename to tests/legacy_tests/data/spec-02-18.structure diff --git a/tests/data/spec-02-18.tokens b/tests/legacy_tests/data/spec-02-18.tokens similarity index 100% rename from tests/data/spec-02-18.tokens rename to tests/legacy_tests/data/spec-02-18.tokens diff --git a/tests/data/spec-02-19.data b/tests/legacy_tests/data/spec-02-19.data similarity index 100% rename from tests/data/spec-02-19.data rename to tests/legacy_tests/data/spec-02-19.data diff --git a/tests/data/spec-02-19.structure b/tests/legacy_tests/data/spec-02-19.structure similarity index 100% rename from tests/data/spec-02-19.structure rename to tests/legacy_tests/data/spec-02-19.structure diff --git a/tests/data/spec-02-19.tokens b/tests/legacy_tests/data/spec-02-19.tokens similarity index 100% rename from tests/data/spec-02-19.tokens rename to tests/legacy_tests/data/spec-02-19.tokens diff --git a/tests/data/spec-02-20.data b/tests/legacy_tests/data/spec-02-20.data similarity index 100% rename from tests/data/spec-02-20.data rename to tests/legacy_tests/data/spec-02-20.data diff --git a/tests/data/spec-02-20.structure b/tests/legacy_tests/data/spec-02-20.structure similarity index 100% rename from tests/data/spec-02-20.structure rename to tests/legacy_tests/data/spec-02-20.structure diff --git a/tests/data/spec-02-20.tokens b/tests/legacy_tests/data/spec-02-20.tokens similarity index 100% rename from tests/data/spec-02-20.tokens rename to tests/legacy_tests/data/spec-02-20.tokens diff --git a/tests/data/spec-02-21.data b/tests/legacy_tests/data/spec-02-21.data similarity index 100% rename from tests/data/spec-02-21.data rename to tests/legacy_tests/data/spec-02-21.data diff --git a/tests/data/spec-02-21.structure b/tests/legacy_tests/data/spec-02-21.structure similarity index 100% rename from tests/data/spec-02-21.structure rename to tests/legacy_tests/data/spec-02-21.structure diff --git a/tests/data/spec-02-21.tokens b/tests/legacy_tests/data/spec-02-21.tokens similarity index 100% rename from tests/data/spec-02-21.tokens rename to tests/legacy_tests/data/spec-02-21.tokens diff --git a/tests/data/spec-02-22.data b/tests/legacy_tests/data/spec-02-22.data similarity index 100% rename from tests/data/spec-02-22.data rename to tests/legacy_tests/data/spec-02-22.data diff --git a/tests/data/spec-02-22.structure b/tests/legacy_tests/data/spec-02-22.structure similarity index 100% rename from tests/data/spec-02-22.structure rename to tests/legacy_tests/data/spec-02-22.structure diff --git a/tests/data/spec-02-22.tokens b/tests/legacy_tests/data/spec-02-22.tokens similarity index 100% rename from tests/data/spec-02-22.tokens rename to tests/legacy_tests/data/spec-02-22.tokens diff --git a/tests/data/spec-02-23.data b/tests/legacy_tests/data/spec-02-23.data similarity index 100% rename from tests/data/spec-02-23.data rename to tests/legacy_tests/data/spec-02-23.data diff --git a/tests/data/spec-02-23.structure b/tests/legacy_tests/data/spec-02-23.structure similarity index 100% rename from tests/data/spec-02-23.structure rename to tests/legacy_tests/data/spec-02-23.structure diff --git a/tests/data/spec-02-23.tokens b/tests/legacy_tests/data/spec-02-23.tokens similarity index 100% rename from tests/data/spec-02-23.tokens rename to tests/legacy_tests/data/spec-02-23.tokens diff --git a/tests/data/spec-02-24.data b/tests/legacy_tests/data/spec-02-24.data similarity index 100% rename from tests/data/spec-02-24.data rename to tests/legacy_tests/data/spec-02-24.data diff --git a/tests/data/spec-02-24.structure b/tests/legacy_tests/data/spec-02-24.structure similarity index 100% rename from tests/data/spec-02-24.structure rename to tests/legacy_tests/data/spec-02-24.structure diff --git a/tests/data/spec-02-24.tokens b/tests/legacy_tests/data/spec-02-24.tokens similarity index 100% rename from tests/data/spec-02-24.tokens rename to tests/legacy_tests/data/spec-02-24.tokens diff --git a/tests/data/spec-02-25.data b/tests/legacy_tests/data/spec-02-25.data similarity index 100% rename from tests/data/spec-02-25.data rename to tests/legacy_tests/data/spec-02-25.data diff --git a/tests/data/spec-02-25.structure b/tests/legacy_tests/data/spec-02-25.structure similarity index 100% rename from tests/data/spec-02-25.structure rename to tests/legacy_tests/data/spec-02-25.structure diff --git a/tests/data/spec-02-25.tokens b/tests/legacy_tests/data/spec-02-25.tokens similarity index 100% rename from tests/data/spec-02-25.tokens rename to tests/legacy_tests/data/spec-02-25.tokens diff --git a/tests/data/spec-02-26.data b/tests/legacy_tests/data/spec-02-26.data similarity index 100% rename from tests/data/spec-02-26.data rename to tests/legacy_tests/data/spec-02-26.data diff --git a/tests/data/spec-02-26.structure b/tests/legacy_tests/data/spec-02-26.structure similarity index 100% rename from tests/data/spec-02-26.structure rename to tests/legacy_tests/data/spec-02-26.structure diff --git a/tests/data/spec-02-26.tokens b/tests/legacy_tests/data/spec-02-26.tokens similarity index 100% rename from tests/data/spec-02-26.tokens rename to tests/legacy_tests/data/spec-02-26.tokens diff --git a/tests/data/spec-02-27.data b/tests/legacy_tests/data/spec-02-27.data similarity index 100% rename from tests/data/spec-02-27.data rename to tests/legacy_tests/data/spec-02-27.data diff --git a/tests/data/spec-02-27.structure b/tests/legacy_tests/data/spec-02-27.structure similarity index 100% rename from tests/data/spec-02-27.structure rename to tests/legacy_tests/data/spec-02-27.structure diff --git a/tests/data/spec-02-27.tokens b/tests/legacy_tests/data/spec-02-27.tokens similarity index 100% rename from tests/data/spec-02-27.tokens rename to tests/legacy_tests/data/spec-02-27.tokens diff --git a/tests/data/spec-02-28.data b/tests/legacy_tests/data/spec-02-28.data similarity index 100% rename from tests/data/spec-02-28.data rename to tests/legacy_tests/data/spec-02-28.data diff --git a/tests/data/spec-02-28.structure b/tests/legacy_tests/data/spec-02-28.structure similarity index 100% rename from tests/data/spec-02-28.structure rename to tests/legacy_tests/data/spec-02-28.structure diff --git a/tests/data/spec-02-28.tokens b/tests/legacy_tests/data/spec-02-28.tokens similarity index 100% rename from tests/data/spec-02-28.tokens rename to tests/legacy_tests/data/spec-02-28.tokens diff --git a/tests/data/spec-05-01-utf16be.data b/tests/legacy_tests/data/spec-05-01-utf16be.data similarity index 100% rename from tests/data/spec-05-01-utf16be.data rename to tests/legacy_tests/data/spec-05-01-utf16be.data diff --git a/tests/data/spec-05-01-utf16be.empty b/tests/legacy_tests/data/spec-05-01-utf16be.empty similarity index 100% rename from tests/data/spec-05-01-utf16be.empty rename to tests/legacy_tests/data/spec-05-01-utf16be.empty diff --git a/tests/data/spec-05-01-utf16le.data b/tests/legacy_tests/data/spec-05-01-utf16le.data similarity index 100% rename from tests/data/spec-05-01-utf16le.data rename to tests/legacy_tests/data/spec-05-01-utf16le.data diff --git a/tests/data/spec-05-01-utf16le.empty b/tests/legacy_tests/data/spec-05-01-utf16le.empty similarity index 100% rename from tests/data/spec-05-01-utf16le.empty rename to tests/legacy_tests/data/spec-05-01-utf16le.empty diff --git a/tests/data/spec-05-01-utf8.data b/tests/legacy_tests/data/spec-05-01-utf8.data similarity index 100% rename from tests/data/spec-05-01-utf8.data rename to tests/legacy_tests/data/spec-05-01-utf8.data diff --git a/tests/data/spec-05-01-utf8.empty b/tests/legacy_tests/data/spec-05-01-utf8.empty similarity index 100% rename from tests/data/spec-05-01-utf8.empty rename to tests/legacy_tests/data/spec-05-01-utf8.empty diff --git a/tests/data/spec-05-02-utf16be.data b/tests/legacy_tests/data/spec-05-02-utf16be.data similarity index 100% rename from tests/data/spec-05-02-utf16be.data rename to tests/legacy_tests/data/spec-05-02-utf16be.data diff --git a/tests/data/spec-05-02-utf16be.error b/tests/legacy_tests/data/spec-05-02-utf16be.error similarity index 100% rename from tests/data/spec-05-02-utf16be.error rename to tests/legacy_tests/data/spec-05-02-utf16be.error diff --git a/tests/data/spec-05-02-utf16le.data b/tests/legacy_tests/data/spec-05-02-utf16le.data similarity index 100% rename from tests/data/spec-05-02-utf16le.data rename to tests/legacy_tests/data/spec-05-02-utf16le.data diff --git a/tests/data/spec-05-02-utf16le.error b/tests/legacy_tests/data/spec-05-02-utf16le.error similarity index 100% rename from tests/data/spec-05-02-utf16le.error rename to tests/legacy_tests/data/spec-05-02-utf16le.error diff --git a/tests/data/spec-05-02-utf8.data b/tests/legacy_tests/data/spec-05-02-utf8.data similarity index 100% rename from tests/data/spec-05-02-utf8.data rename to tests/legacy_tests/data/spec-05-02-utf8.data diff --git a/tests/data/spec-05-02-utf8.error b/tests/legacy_tests/data/spec-05-02-utf8.error similarity index 100% rename from tests/data/spec-05-02-utf8.error rename to tests/legacy_tests/data/spec-05-02-utf8.error diff --git a/tests/data/spec-05-03.canonical b/tests/legacy_tests/data/spec-05-03.canonical similarity index 100% rename from tests/data/spec-05-03.canonical rename to tests/legacy_tests/data/spec-05-03.canonical diff --git a/tests/data/spec-05-03.data b/tests/legacy_tests/data/spec-05-03.data similarity index 100% rename from tests/data/spec-05-03.data rename to tests/legacy_tests/data/spec-05-03.data diff --git a/tests/data/spec-05-04.canonical b/tests/legacy_tests/data/spec-05-04.canonical similarity index 100% rename from tests/data/spec-05-04.canonical rename to tests/legacy_tests/data/spec-05-04.canonical diff --git a/tests/data/spec-05-04.data b/tests/legacy_tests/data/spec-05-04.data similarity index 100% rename from tests/data/spec-05-04.data rename to tests/legacy_tests/data/spec-05-04.data diff --git a/tests/data/spec-05-05.data b/tests/legacy_tests/data/spec-05-05.data similarity index 100% rename from tests/data/spec-05-05.data rename to tests/legacy_tests/data/spec-05-05.data diff --git a/tests/data/spec-05-05.empty b/tests/legacy_tests/data/spec-05-05.empty similarity index 100% rename from tests/data/spec-05-05.empty rename to tests/legacy_tests/data/spec-05-05.empty diff --git a/tests/data/spec-05-06.canonical b/tests/legacy_tests/data/spec-05-06.canonical similarity index 100% rename from tests/data/spec-05-06.canonical rename to tests/legacy_tests/data/spec-05-06.canonical diff --git a/tests/data/spec-05-06.data b/tests/legacy_tests/data/spec-05-06.data similarity index 100% rename from tests/data/spec-05-06.data rename to tests/legacy_tests/data/spec-05-06.data diff --git a/tests/data/spec-05-07.canonical b/tests/legacy_tests/data/spec-05-07.canonical similarity index 100% rename from tests/data/spec-05-07.canonical rename to tests/legacy_tests/data/spec-05-07.canonical diff --git a/tests/data/spec-05-07.data b/tests/legacy_tests/data/spec-05-07.data similarity index 100% rename from tests/data/spec-05-07.data rename to tests/legacy_tests/data/spec-05-07.data diff --git a/tests/data/spec-05-08.canonical b/tests/legacy_tests/data/spec-05-08.canonical similarity index 100% rename from tests/data/spec-05-08.canonical rename to tests/legacy_tests/data/spec-05-08.canonical diff --git a/tests/data/spec-05-08.data b/tests/legacy_tests/data/spec-05-08.data similarity index 100% rename from tests/data/spec-05-08.data rename to tests/legacy_tests/data/spec-05-08.data diff --git a/tests/data/spec-05-09.canonical b/tests/legacy_tests/data/spec-05-09.canonical similarity index 100% rename from tests/data/spec-05-09.canonical rename to tests/legacy_tests/data/spec-05-09.canonical diff --git a/tests/data/spec-05-09.data b/tests/legacy_tests/data/spec-05-09.data similarity index 100% rename from tests/data/spec-05-09.data rename to tests/legacy_tests/data/spec-05-09.data diff --git a/tests/data/spec-05-10.data b/tests/legacy_tests/data/spec-05-10.data similarity index 100% rename from tests/data/spec-05-10.data rename to tests/legacy_tests/data/spec-05-10.data diff --git a/tests/data/spec-05-10.error b/tests/legacy_tests/data/spec-05-10.error similarity index 100% rename from tests/data/spec-05-10.error rename to tests/legacy_tests/data/spec-05-10.error diff --git a/tests/data/spec-05-11.canonical b/tests/legacy_tests/data/spec-05-11.canonical similarity index 100% rename from tests/data/spec-05-11.canonical rename to tests/legacy_tests/data/spec-05-11.canonical diff --git a/tests/data/spec-05-11.data b/tests/legacy_tests/data/spec-05-11.data similarity index 100% rename from tests/data/spec-05-11.data rename to tests/legacy_tests/data/spec-05-11.data diff --git a/tests/data/spec-05-12.data b/tests/legacy_tests/data/spec-05-12.data similarity index 100% rename from tests/data/spec-05-12.data rename to tests/legacy_tests/data/spec-05-12.data diff --git a/tests/data/spec-05-12.error b/tests/legacy_tests/data/spec-05-12.error similarity index 100% rename from tests/data/spec-05-12.error rename to tests/legacy_tests/data/spec-05-12.error diff --git a/tests/data/spec-05-13.canonical b/tests/legacy_tests/data/spec-05-13.canonical similarity index 100% rename from tests/data/spec-05-13.canonical rename to tests/legacy_tests/data/spec-05-13.canonical diff --git a/tests/data/spec-05-13.data b/tests/legacy_tests/data/spec-05-13.data similarity index 100% rename from tests/data/spec-05-13.data rename to tests/legacy_tests/data/spec-05-13.data diff --git a/tests/data/spec-05-14.canonical b/tests/legacy_tests/data/spec-05-14.canonical similarity index 100% rename from tests/data/spec-05-14.canonical rename to tests/legacy_tests/data/spec-05-14.canonical diff --git a/tests/data/spec-05-14.data b/tests/legacy_tests/data/spec-05-14.data similarity index 100% rename from tests/data/spec-05-14.data rename to tests/legacy_tests/data/spec-05-14.data diff --git a/tests/data/spec-05-15.data b/tests/legacy_tests/data/spec-05-15.data similarity index 100% rename from tests/data/spec-05-15.data rename to tests/legacy_tests/data/spec-05-15.data diff --git a/tests/data/spec-05-15.error b/tests/legacy_tests/data/spec-05-15.error similarity index 100% rename from tests/data/spec-05-15.error rename to tests/legacy_tests/data/spec-05-15.error diff --git a/tests/data/spec-06-01.canonical b/tests/legacy_tests/data/spec-06-01.canonical similarity index 100% rename from tests/data/spec-06-01.canonical rename to tests/legacy_tests/data/spec-06-01.canonical diff --git a/tests/data/spec-06-01.data b/tests/legacy_tests/data/spec-06-01.data similarity index 100% rename from tests/data/spec-06-01.data rename to tests/legacy_tests/data/spec-06-01.data diff --git a/tests/data/spec-06-02.data b/tests/legacy_tests/data/spec-06-02.data similarity index 100% rename from tests/data/spec-06-02.data rename to tests/legacy_tests/data/spec-06-02.data diff --git a/tests/data/spec-06-02.empty b/tests/legacy_tests/data/spec-06-02.empty similarity index 100% rename from tests/data/spec-06-02.empty rename to tests/legacy_tests/data/spec-06-02.empty diff --git a/tests/data/spec-06-03.canonical b/tests/legacy_tests/data/spec-06-03.canonical similarity index 100% rename from tests/data/spec-06-03.canonical rename to tests/legacy_tests/data/spec-06-03.canonical diff --git a/tests/data/spec-06-03.data b/tests/legacy_tests/data/spec-06-03.data similarity index 100% rename from tests/data/spec-06-03.data rename to tests/legacy_tests/data/spec-06-03.data diff --git a/tests/data/spec-06-04.canonical b/tests/legacy_tests/data/spec-06-04.canonical similarity index 100% rename from tests/data/spec-06-04.canonical rename to tests/legacy_tests/data/spec-06-04.canonical diff --git a/tests/data/spec-06-04.data b/tests/legacy_tests/data/spec-06-04.data similarity index 100% rename from tests/data/spec-06-04.data rename to tests/legacy_tests/data/spec-06-04.data diff --git a/tests/data/spec-06-05.canonical b/tests/legacy_tests/data/spec-06-05.canonical similarity index 100% rename from tests/data/spec-06-05.canonical rename to tests/legacy_tests/data/spec-06-05.canonical diff --git a/tests/data/spec-06-05.data b/tests/legacy_tests/data/spec-06-05.data similarity index 100% rename from tests/data/spec-06-05.data rename to tests/legacy_tests/data/spec-06-05.data diff --git a/tests/data/spec-06-06.canonical b/tests/legacy_tests/data/spec-06-06.canonical similarity index 100% rename from tests/data/spec-06-06.canonical rename to tests/legacy_tests/data/spec-06-06.canonical diff --git a/tests/data/spec-06-06.data b/tests/legacy_tests/data/spec-06-06.data similarity index 100% rename from tests/data/spec-06-06.data rename to tests/legacy_tests/data/spec-06-06.data diff --git a/tests/data/spec-06-07.canonical b/tests/legacy_tests/data/spec-06-07.canonical similarity index 100% rename from tests/data/spec-06-07.canonical rename to tests/legacy_tests/data/spec-06-07.canonical diff --git a/tests/data/spec-06-07.data b/tests/legacy_tests/data/spec-06-07.data similarity index 100% rename from tests/data/spec-06-07.data rename to tests/legacy_tests/data/spec-06-07.data diff --git a/tests/data/spec-06-08.canonical b/tests/legacy_tests/data/spec-06-08.canonical similarity index 100% rename from tests/data/spec-06-08.canonical rename to tests/legacy_tests/data/spec-06-08.canonical diff --git a/tests/data/spec-06-08.data b/tests/legacy_tests/data/spec-06-08.data similarity index 100% rename from tests/data/spec-06-08.data rename to tests/legacy_tests/data/spec-06-08.data diff --git a/tests/data/spec-07-01.canonical b/tests/legacy_tests/data/spec-07-01.canonical similarity index 100% rename from tests/data/spec-07-01.canonical rename to tests/legacy_tests/data/spec-07-01.canonical diff --git a/tests/data/spec-07-01.data b/tests/legacy_tests/data/spec-07-01.data similarity index 100% rename from tests/data/spec-07-01.data rename to tests/legacy_tests/data/spec-07-01.data diff --git a/tests/data/spec-07-01.skip-ext b/tests/legacy_tests/data/spec-07-01.skip-ext similarity index 100% rename from tests/data/spec-07-01.skip-ext rename to tests/legacy_tests/data/spec-07-01.skip-ext diff --git a/tests/data/spec-07-02.canonical b/tests/legacy_tests/data/spec-07-02.canonical similarity index 100% rename from tests/data/spec-07-02.canonical rename to tests/legacy_tests/data/spec-07-02.canonical diff --git a/tests/data/spec-07-02.data b/tests/legacy_tests/data/spec-07-02.data similarity index 100% rename from tests/data/spec-07-02.data rename to tests/legacy_tests/data/spec-07-02.data diff --git a/tests/data/spec-07-02.skip-ext b/tests/legacy_tests/data/spec-07-02.skip-ext similarity index 100% rename from tests/data/spec-07-02.skip-ext rename to tests/legacy_tests/data/spec-07-02.skip-ext diff --git a/tests/data/spec-07-03.data b/tests/legacy_tests/data/spec-07-03.data similarity index 100% rename from tests/data/spec-07-03.data rename to tests/legacy_tests/data/spec-07-03.data diff --git a/tests/data/spec-07-03.error b/tests/legacy_tests/data/spec-07-03.error similarity index 100% rename from tests/data/spec-07-03.error rename to tests/legacy_tests/data/spec-07-03.error diff --git a/tests/data/spec-07-04.canonical b/tests/legacy_tests/data/spec-07-04.canonical similarity index 100% rename from tests/data/spec-07-04.canonical rename to tests/legacy_tests/data/spec-07-04.canonical diff --git a/tests/data/spec-07-04.data b/tests/legacy_tests/data/spec-07-04.data similarity index 100% rename from tests/data/spec-07-04.data rename to tests/legacy_tests/data/spec-07-04.data diff --git a/tests/data/spec-07-05.data b/tests/legacy_tests/data/spec-07-05.data similarity index 100% rename from tests/data/spec-07-05.data rename to tests/legacy_tests/data/spec-07-05.data diff --git a/tests/data/spec-07-05.error b/tests/legacy_tests/data/spec-07-05.error similarity index 100% rename from tests/data/spec-07-05.error rename to tests/legacy_tests/data/spec-07-05.error diff --git a/tests/data/spec-07-06.canonical b/tests/legacy_tests/data/spec-07-06.canonical similarity index 100% rename from tests/data/spec-07-06.canonical rename to tests/legacy_tests/data/spec-07-06.canonical diff --git a/tests/data/spec-07-06.data b/tests/legacy_tests/data/spec-07-06.data similarity index 100% rename from tests/data/spec-07-06.data rename to tests/legacy_tests/data/spec-07-06.data diff --git a/tests/data/spec-07-07a.canonical b/tests/legacy_tests/data/spec-07-07a.canonical similarity index 100% rename from tests/data/spec-07-07a.canonical rename to tests/legacy_tests/data/spec-07-07a.canonical diff --git a/tests/data/spec-07-07a.data b/tests/legacy_tests/data/spec-07-07a.data similarity index 100% rename from tests/data/spec-07-07a.data rename to tests/legacy_tests/data/spec-07-07a.data diff --git a/tests/data/spec-07-07b.canonical b/tests/legacy_tests/data/spec-07-07b.canonical similarity index 100% rename from tests/data/spec-07-07b.canonical rename to tests/legacy_tests/data/spec-07-07b.canonical diff --git a/tests/data/spec-07-07b.data b/tests/legacy_tests/data/spec-07-07b.data similarity index 100% rename from tests/data/spec-07-07b.data rename to tests/legacy_tests/data/spec-07-07b.data diff --git a/tests/data/spec-07-08.canonical b/tests/legacy_tests/data/spec-07-08.canonical similarity index 100% rename from tests/data/spec-07-08.canonical rename to tests/legacy_tests/data/spec-07-08.canonical diff --git a/tests/data/spec-07-08.data b/tests/legacy_tests/data/spec-07-08.data similarity index 100% rename from tests/data/spec-07-08.data rename to tests/legacy_tests/data/spec-07-08.data diff --git a/tests/data/spec-07-09.canonical b/tests/legacy_tests/data/spec-07-09.canonical similarity index 100% rename from tests/data/spec-07-09.canonical rename to tests/legacy_tests/data/spec-07-09.canonical diff --git a/tests/data/spec-07-09.data b/tests/legacy_tests/data/spec-07-09.data similarity index 100% rename from tests/data/spec-07-09.data rename to tests/legacy_tests/data/spec-07-09.data diff --git a/tests/data/spec-07-10.canonical b/tests/legacy_tests/data/spec-07-10.canonical similarity index 100% rename from tests/data/spec-07-10.canonical rename to tests/legacy_tests/data/spec-07-10.canonical diff --git a/tests/data/spec-07-10.data b/tests/legacy_tests/data/spec-07-10.data similarity index 100% rename from tests/data/spec-07-10.data rename to tests/legacy_tests/data/spec-07-10.data diff --git a/tests/data/spec-07-11.data b/tests/legacy_tests/data/spec-07-11.data similarity index 100% rename from tests/data/spec-07-11.data rename to tests/legacy_tests/data/spec-07-11.data diff --git a/tests/data/spec-07-11.empty b/tests/legacy_tests/data/spec-07-11.empty similarity index 100% rename from tests/data/spec-07-11.empty rename to tests/legacy_tests/data/spec-07-11.empty diff --git a/tests/data/spec-07-12a.canonical b/tests/legacy_tests/data/spec-07-12a.canonical similarity index 100% rename from tests/data/spec-07-12a.canonical rename to tests/legacy_tests/data/spec-07-12a.canonical diff --git a/tests/data/spec-07-12a.data b/tests/legacy_tests/data/spec-07-12a.data similarity index 100% rename from tests/data/spec-07-12a.data rename to tests/legacy_tests/data/spec-07-12a.data diff --git a/tests/data/spec-07-12b.canonical b/tests/legacy_tests/data/spec-07-12b.canonical similarity index 100% rename from tests/data/spec-07-12b.canonical rename to tests/legacy_tests/data/spec-07-12b.canonical diff --git a/tests/data/spec-07-12b.data b/tests/legacy_tests/data/spec-07-12b.data similarity index 100% rename from tests/data/spec-07-12b.data rename to tests/legacy_tests/data/spec-07-12b.data diff --git a/tests/data/spec-07-13.canonical b/tests/legacy_tests/data/spec-07-13.canonical similarity index 100% rename from tests/data/spec-07-13.canonical rename to tests/legacy_tests/data/spec-07-13.canonical diff --git a/tests/data/spec-07-13.data b/tests/legacy_tests/data/spec-07-13.data similarity index 100% rename from tests/data/spec-07-13.data rename to tests/legacy_tests/data/spec-07-13.data diff --git a/tests/data/spec-08-01.canonical b/tests/legacy_tests/data/spec-08-01.canonical similarity index 100% rename from tests/data/spec-08-01.canonical rename to tests/legacy_tests/data/spec-08-01.canonical diff --git a/tests/data/spec-08-01.data b/tests/legacy_tests/data/spec-08-01.data similarity index 100% rename from tests/data/spec-08-01.data rename to tests/legacy_tests/data/spec-08-01.data diff --git a/tests/data/spec-08-02.canonical b/tests/legacy_tests/data/spec-08-02.canonical similarity index 100% rename from tests/data/spec-08-02.canonical rename to tests/legacy_tests/data/spec-08-02.canonical diff --git a/tests/data/spec-08-02.data b/tests/legacy_tests/data/spec-08-02.data similarity index 100% rename from tests/data/spec-08-02.data rename to tests/legacy_tests/data/spec-08-02.data diff --git a/tests/data/spec-08-03.canonical b/tests/legacy_tests/data/spec-08-03.canonical similarity index 100% rename from tests/data/spec-08-03.canonical rename to tests/legacy_tests/data/spec-08-03.canonical diff --git a/tests/data/spec-08-03.data b/tests/legacy_tests/data/spec-08-03.data similarity index 100% rename from tests/data/spec-08-03.data rename to tests/legacy_tests/data/spec-08-03.data diff --git a/tests/data/spec-08-04.data b/tests/legacy_tests/data/spec-08-04.data similarity index 100% rename from tests/data/spec-08-04.data rename to tests/legacy_tests/data/spec-08-04.data diff --git a/tests/data/spec-08-04.error b/tests/legacy_tests/data/spec-08-04.error similarity index 100% rename from tests/data/spec-08-04.error rename to tests/legacy_tests/data/spec-08-04.error diff --git a/tests/data/spec-08-05.canonical b/tests/legacy_tests/data/spec-08-05.canonical similarity index 100% rename from tests/data/spec-08-05.canonical rename to tests/legacy_tests/data/spec-08-05.canonical diff --git a/tests/data/spec-08-05.data b/tests/legacy_tests/data/spec-08-05.data similarity index 100% rename from tests/data/spec-08-05.data rename to tests/legacy_tests/data/spec-08-05.data diff --git a/tests/data/spec-08-06.data b/tests/legacy_tests/data/spec-08-06.data similarity index 100% rename from tests/data/spec-08-06.data rename to tests/legacy_tests/data/spec-08-06.data diff --git a/tests/data/spec-08-06.error b/tests/legacy_tests/data/spec-08-06.error similarity index 100% rename from tests/data/spec-08-06.error rename to tests/legacy_tests/data/spec-08-06.error diff --git a/tests/data/spec-08-07.canonical b/tests/legacy_tests/data/spec-08-07.canonical similarity index 100% rename from tests/data/spec-08-07.canonical rename to tests/legacy_tests/data/spec-08-07.canonical diff --git a/tests/data/spec-08-07.data b/tests/legacy_tests/data/spec-08-07.data similarity index 100% rename from tests/data/spec-08-07.data rename to tests/legacy_tests/data/spec-08-07.data diff --git a/tests/data/spec-08-08.canonical b/tests/legacy_tests/data/spec-08-08.canonical similarity index 100% rename from tests/data/spec-08-08.canonical rename to tests/legacy_tests/data/spec-08-08.canonical diff --git a/tests/data/spec-08-08.data b/tests/legacy_tests/data/spec-08-08.data similarity index 100% rename from tests/data/spec-08-08.data rename to tests/legacy_tests/data/spec-08-08.data diff --git a/tests/data/spec-08-09.canonical b/tests/legacy_tests/data/spec-08-09.canonical similarity index 100% rename from tests/data/spec-08-09.canonical rename to tests/legacy_tests/data/spec-08-09.canonical diff --git a/tests/data/spec-08-09.data b/tests/legacy_tests/data/spec-08-09.data similarity index 100% rename from tests/data/spec-08-09.data rename to tests/legacy_tests/data/spec-08-09.data diff --git a/tests/data/spec-08-10.canonical b/tests/legacy_tests/data/spec-08-10.canonical similarity index 100% rename from tests/data/spec-08-10.canonical rename to tests/legacy_tests/data/spec-08-10.canonical diff --git a/tests/data/spec-08-10.data b/tests/legacy_tests/data/spec-08-10.data similarity index 100% rename from tests/data/spec-08-10.data rename to tests/legacy_tests/data/spec-08-10.data diff --git a/tests/data/spec-08-11.canonical b/tests/legacy_tests/data/spec-08-11.canonical similarity index 100% rename from tests/data/spec-08-11.canonical rename to tests/legacy_tests/data/spec-08-11.canonical diff --git a/tests/data/spec-08-11.data b/tests/legacy_tests/data/spec-08-11.data similarity index 100% rename from tests/data/spec-08-11.data rename to tests/legacy_tests/data/spec-08-11.data diff --git a/tests/data/spec-08-12.canonical b/tests/legacy_tests/data/spec-08-12.canonical similarity index 100% rename from tests/data/spec-08-12.canonical rename to tests/legacy_tests/data/spec-08-12.canonical diff --git a/tests/data/spec-08-12.data b/tests/legacy_tests/data/spec-08-12.data similarity index 100% rename from tests/data/spec-08-12.data rename to tests/legacy_tests/data/spec-08-12.data diff --git a/tests/data/spec-08-13.canonical b/tests/legacy_tests/data/spec-08-13.canonical similarity index 100% rename from tests/data/spec-08-13.canonical rename to tests/legacy_tests/data/spec-08-13.canonical diff --git a/tests/data/spec-08-13.data b/tests/legacy_tests/data/spec-08-13.data similarity index 100% rename from tests/data/spec-08-13.data rename to tests/legacy_tests/data/spec-08-13.data diff --git a/tests/data/spec-08-13.skip-ext b/tests/legacy_tests/data/spec-08-13.skip-ext similarity index 100% rename from tests/data/spec-08-13.skip-ext rename to tests/legacy_tests/data/spec-08-13.skip-ext diff --git a/tests/data/spec-08-14.canonical b/tests/legacy_tests/data/spec-08-14.canonical similarity index 100% rename from tests/data/spec-08-14.canonical rename to tests/legacy_tests/data/spec-08-14.canonical diff --git a/tests/data/spec-08-14.data b/tests/legacy_tests/data/spec-08-14.data similarity index 100% rename from tests/data/spec-08-14.data rename to tests/legacy_tests/data/spec-08-14.data diff --git a/tests/data/spec-08-15.canonical b/tests/legacy_tests/data/spec-08-15.canonical similarity index 100% rename from tests/data/spec-08-15.canonical rename to tests/legacy_tests/data/spec-08-15.canonical diff --git a/tests/data/spec-08-15.data b/tests/legacy_tests/data/spec-08-15.data similarity index 100% rename from tests/data/spec-08-15.data rename to tests/legacy_tests/data/spec-08-15.data diff --git a/tests/data/spec-09-01.canonical b/tests/legacy_tests/data/spec-09-01.canonical similarity index 100% rename from tests/data/spec-09-01.canonical rename to tests/legacy_tests/data/spec-09-01.canonical diff --git a/tests/data/spec-09-01.data b/tests/legacy_tests/data/spec-09-01.data similarity index 100% rename from tests/data/spec-09-01.data rename to tests/legacy_tests/data/spec-09-01.data diff --git a/tests/data/spec-09-02.canonical b/tests/legacy_tests/data/spec-09-02.canonical similarity index 100% rename from tests/data/spec-09-02.canonical rename to tests/legacy_tests/data/spec-09-02.canonical diff --git a/tests/data/spec-09-02.data b/tests/legacy_tests/data/spec-09-02.data similarity index 100% rename from tests/data/spec-09-02.data rename to tests/legacy_tests/data/spec-09-02.data diff --git a/tests/data/spec-09-03.canonical b/tests/legacy_tests/data/spec-09-03.canonical similarity index 100% rename from tests/data/spec-09-03.canonical rename to tests/legacy_tests/data/spec-09-03.canonical diff --git a/tests/data/spec-09-03.data b/tests/legacy_tests/data/spec-09-03.data similarity index 100% rename from tests/data/spec-09-03.data rename to tests/legacy_tests/data/spec-09-03.data diff --git a/tests/data/spec-09-04.canonical b/tests/legacy_tests/data/spec-09-04.canonical similarity index 100% rename from tests/data/spec-09-04.canonical rename to tests/legacy_tests/data/spec-09-04.canonical diff --git a/tests/data/spec-09-04.data b/tests/legacy_tests/data/spec-09-04.data similarity index 100% rename from tests/data/spec-09-04.data rename to tests/legacy_tests/data/spec-09-04.data diff --git a/tests/data/spec-09-05.canonical b/tests/legacy_tests/data/spec-09-05.canonical similarity index 100% rename from tests/data/spec-09-05.canonical rename to tests/legacy_tests/data/spec-09-05.canonical diff --git a/tests/data/spec-09-05.data b/tests/legacy_tests/data/spec-09-05.data similarity index 100% rename from tests/data/spec-09-05.data rename to tests/legacy_tests/data/spec-09-05.data diff --git a/tests/data/spec-09-06.canonical b/tests/legacy_tests/data/spec-09-06.canonical similarity index 100% rename from tests/data/spec-09-06.canonical rename to tests/legacy_tests/data/spec-09-06.canonical diff --git a/tests/data/spec-09-06.data b/tests/legacy_tests/data/spec-09-06.data similarity index 100% rename from tests/data/spec-09-06.data rename to tests/legacy_tests/data/spec-09-06.data diff --git a/tests/data/spec-09-07.canonical b/tests/legacy_tests/data/spec-09-07.canonical similarity index 100% rename from tests/data/spec-09-07.canonical rename to tests/legacy_tests/data/spec-09-07.canonical diff --git a/tests/data/spec-09-07.data b/tests/legacy_tests/data/spec-09-07.data similarity index 100% rename from tests/data/spec-09-07.data rename to tests/legacy_tests/data/spec-09-07.data diff --git a/tests/data/spec-09-08.canonical b/tests/legacy_tests/data/spec-09-08.canonical similarity index 100% rename from tests/data/spec-09-08.canonical rename to tests/legacy_tests/data/spec-09-08.canonical diff --git a/tests/data/spec-09-08.data b/tests/legacy_tests/data/spec-09-08.data similarity index 100% rename from tests/data/spec-09-08.data rename to tests/legacy_tests/data/spec-09-08.data diff --git a/tests/data/spec-09-09.canonical b/tests/legacy_tests/data/spec-09-09.canonical similarity index 100% rename from tests/data/spec-09-09.canonical rename to tests/legacy_tests/data/spec-09-09.canonical diff --git a/tests/data/spec-09-09.data b/tests/legacy_tests/data/spec-09-09.data similarity index 100% rename from tests/data/spec-09-09.data rename to tests/legacy_tests/data/spec-09-09.data diff --git a/tests/data/spec-09-10.canonical b/tests/legacy_tests/data/spec-09-10.canonical similarity index 100% rename from tests/data/spec-09-10.canonical rename to tests/legacy_tests/data/spec-09-10.canonical diff --git a/tests/data/spec-09-10.data b/tests/legacy_tests/data/spec-09-10.data similarity index 100% rename from tests/data/spec-09-10.data rename to tests/legacy_tests/data/spec-09-10.data diff --git a/tests/data/spec-09-11.canonical b/tests/legacy_tests/data/spec-09-11.canonical similarity index 100% rename from tests/data/spec-09-11.canonical rename to tests/legacy_tests/data/spec-09-11.canonical diff --git a/tests/data/spec-09-11.data b/tests/legacy_tests/data/spec-09-11.data similarity index 100% rename from tests/data/spec-09-11.data rename to tests/legacy_tests/data/spec-09-11.data diff --git a/tests/data/spec-09-12.canonical b/tests/legacy_tests/data/spec-09-12.canonical similarity index 100% rename from tests/data/spec-09-12.canonical rename to tests/legacy_tests/data/spec-09-12.canonical diff --git a/tests/data/spec-09-12.data b/tests/legacy_tests/data/spec-09-12.data similarity index 100% rename from tests/data/spec-09-12.data rename to tests/legacy_tests/data/spec-09-12.data diff --git a/tests/data/spec-09-13.canonical b/tests/legacy_tests/data/spec-09-13.canonical similarity index 100% rename from tests/data/spec-09-13.canonical rename to tests/legacy_tests/data/spec-09-13.canonical diff --git a/tests/data/spec-09-13.data b/tests/legacy_tests/data/spec-09-13.data similarity index 100% rename from tests/data/spec-09-13.data rename to tests/legacy_tests/data/spec-09-13.data diff --git a/tests/data/spec-09-14.data b/tests/legacy_tests/data/spec-09-14.data similarity index 100% rename from tests/data/spec-09-14.data rename to tests/legacy_tests/data/spec-09-14.data diff --git a/tests/data/spec-09-14.error b/tests/legacy_tests/data/spec-09-14.error similarity index 100% rename from tests/data/spec-09-14.error rename to tests/legacy_tests/data/spec-09-14.error diff --git a/tests/data/spec-09-15.canonical b/tests/legacy_tests/data/spec-09-15.canonical similarity index 100% rename from tests/data/spec-09-15.canonical rename to tests/legacy_tests/data/spec-09-15.canonical diff --git a/tests/data/spec-09-15.data b/tests/legacy_tests/data/spec-09-15.data similarity index 100% rename from tests/data/spec-09-15.data rename to tests/legacy_tests/data/spec-09-15.data diff --git a/tests/data/spec-09-16.canonical b/tests/legacy_tests/data/spec-09-16.canonical similarity index 100% rename from tests/data/spec-09-16.canonical rename to tests/legacy_tests/data/spec-09-16.canonical diff --git a/tests/data/spec-09-16.data b/tests/legacy_tests/data/spec-09-16.data similarity index 100% rename from tests/data/spec-09-16.data rename to tests/legacy_tests/data/spec-09-16.data diff --git a/tests/data/spec-09-17.canonical b/tests/legacy_tests/data/spec-09-17.canonical similarity index 100% rename from tests/data/spec-09-17.canonical rename to tests/legacy_tests/data/spec-09-17.canonical diff --git a/tests/data/spec-09-17.data b/tests/legacy_tests/data/spec-09-17.data similarity index 100% rename from tests/data/spec-09-17.data rename to tests/legacy_tests/data/spec-09-17.data diff --git a/tests/data/spec-09-18.canonical b/tests/legacy_tests/data/spec-09-18.canonical similarity index 100% rename from tests/data/spec-09-18.canonical rename to tests/legacy_tests/data/spec-09-18.canonical diff --git a/tests/data/spec-09-18.data b/tests/legacy_tests/data/spec-09-18.data similarity index 100% rename from tests/data/spec-09-18.data rename to tests/legacy_tests/data/spec-09-18.data diff --git a/tests/data/spec-09-19.canonical b/tests/legacy_tests/data/spec-09-19.canonical similarity index 100% rename from tests/data/spec-09-19.canonical rename to tests/legacy_tests/data/spec-09-19.canonical diff --git a/tests/data/spec-09-19.data b/tests/legacy_tests/data/spec-09-19.data similarity index 100% rename from tests/data/spec-09-19.data rename to tests/legacy_tests/data/spec-09-19.data diff --git a/tests/data/spec-09-20.canonical b/tests/legacy_tests/data/spec-09-20.canonical similarity index 100% rename from tests/data/spec-09-20.canonical rename to tests/legacy_tests/data/spec-09-20.canonical diff --git a/tests/data/spec-09-20.data b/tests/legacy_tests/data/spec-09-20.data similarity index 100% rename from tests/data/spec-09-20.data rename to tests/legacy_tests/data/spec-09-20.data diff --git a/tests/data/spec-09-20.skip-ext b/tests/legacy_tests/data/spec-09-20.skip-ext similarity index 100% rename from tests/data/spec-09-20.skip-ext rename to tests/legacy_tests/data/spec-09-20.skip-ext diff --git a/tests/data/spec-09-21.data b/tests/legacy_tests/data/spec-09-21.data similarity index 100% rename from tests/data/spec-09-21.data rename to tests/legacy_tests/data/spec-09-21.data diff --git a/tests/data/spec-09-21.error b/tests/legacy_tests/data/spec-09-21.error similarity index 100% rename from tests/data/spec-09-21.error rename to tests/legacy_tests/data/spec-09-21.error diff --git a/tests/data/spec-09-22.canonical b/tests/legacy_tests/data/spec-09-22.canonical similarity index 100% rename from tests/data/spec-09-22.canonical rename to tests/legacy_tests/data/spec-09-22.canonical diff --git a/tests/data/spec-09-22.data b/tests/legacy_tests/data/spec-09-22.data similarity index 100% rename from tests/data/spec-09-22.data rename to tests/legacy_tests/data/spec-09-22.data diff --git a/tests/data/spec-09-23.canonical b/tests/legacy_tests/data/spec-09-23.canonical similarity index 100% rename from tests/data/spec-09-23.canonical rename to tests/legacy_tests/data/spec-09-23.canonical diff --git a/tests/data/spec-09-23.data b/tests/legacy_tests/data/spec-09-23.data similarity index 100% rename from tests/data/spec-09-23.data rename to tests/legacy_tests/data/spec-09-23.data diff --git a/tests/data/spec-09-24.canonical b/tests/legacy_tests/data/spec-09-24.canonical similarity index 100% rename from tests/data/spec-09-24.canonical rename to tests/legacy_tests/data/spec-09-24.canonical diff --git a/tests/data/spec-09-24.data b/tests/legacy_tests/data/spec-09-24.data similarity index 100% rename from tests/data/spec-09-24.data rename to tests/legacy_tests/data/spec-09-24.data diff --git a/tests/data/spec-09-25.canonical b/tests/legacy_tests/data/spec-09-25.canonical similarity index 100% rename from tests/data/spec-09-25.canonical rename to tests/legacy_tests/data/spec-09-25.canonical diff --git a/tests/data/spec-09-25.data b/tests/legacy_tests/data/spec-09-25.data similarity index 100% rename from tests/data/spec-09-25.data rename to tests/legacy_tests/data/spec-09-25.data diff --git a/tests/data/spec-09-26.canonical b/tests/legacy_tests/data/spec-09-26.canonical similarity index 100% rename from tests/data/spec-09-26.canonical rename to tests/legacy_tests/data/spec-09-26.canonical diff --git a/tests/data/spec-09-26.data b/tests/legacy_tests/data/spec-09-26.data similarity index 100% rename from tests/data/spec-09-26.data rename to tests/legacy_tests/data/spec-09-26.data diff --git a/tests/data/spec-09-27.canonical b/tests/legacy_tests/data/spec-09-27.canonical similarity index 100% rename from tests/data/spec-09-27.canonical rename to tests/legacy_tests/data/spec-09-27.canonical diff --git a/tests/data/spec-09-27.data b/tests/legacy_tests/data/spec-09-27.data similarity index 100% rename from tests/data/spec-09-27.data rename to tests/legacy_tests/data/spec-09-27.data diff --git a/tests/data/spec-09-28.canonical b/tests/legacy_tests/data/spec-09-28.canonical similarity index 100% rename from tests/data/spec-09-28.canonical rename to tests/legacy_tests/data/spec-09-28.canonical diff --git a/tests/data/spec-09-28.data b/tests/legacy_tests/data/spec-09-28.data similarity index 100% rename from tests/data/spec-09-28.data rename to tests/legacy_tests/data/spec-09-28.data diff --git a/tests/data/spec-09-29.canonical b/tests/legacy_tests/data/spec-09-29.canonical similarity index 100% rename from tests/data/spec-09-29.canonical rename to tests/legacy_tests/data/spec-09-29.canonical diff --git a/tests/data/spec-09-29.data b/tests/legacy_tests/data/spec-09-29.data similarity index 100% rename from tests/data/spec-09-29.data rename to tests/legacy_tests/data/spec-09-29.data diff --git a/tests/data/spec-09-30.canonical b/tests/legacy_tests/data/spec-09-30.canonical similarity index 100% rename from tests/data/spec-09-30.canonical rename to tests/legacy_tests/data/spec-09-30.canonical diff --git a/tests/data/spec-09-30.data b/tests/legacy_tests/data/spec-09-30.data similarity index 100% rename from tests/data/spec-09-30.data rename to tests/legacy_tests/data/spec-09-30.data diff --git a/tests/data/spec-09-31.canonical b/tests/legacy_tests/data/spec-09-31.canonical similarity index 100% rename from tests/data/spec-09-31.canonical rename to tests/legacy_tests/data/spec-09-31.canonical diff --git a/tests/data/spec-09-31.data b/tests/legacy_tests/data/spec-09-31.data similarity index 100% rename from tests/data/spec-09-31.data rename to tests/legacy_tests/data/spec-09-31.data diff --git a/tests/data/spec-09-32.canonical b/tests/legacy_tests/data/spec-09-32.canonical similarity index 100% rename from tests/data/spec-09-32.canonical rename to tests/legacy_tests/data/spec-09-32.canonical diff --git a/tests/data/spec-09-32.data b/tests/legacy_tests/data/spec-09-32.data similarity index 100% rename from tests/data/spec-09-32.data rename to tests/legacy_tests/data/spec-09-32.data diff --git a/tests/data/spec-09-33.canonical b/tests/legacy_tests/data/spec-09-33.canonical similarity index 100% rename from tests/data/spec-09-33.canonical rename to tests/legacy_tests/data/spec-09-33.canonical diff --git a/tests/data/spec-09-33.data b/tests/legacy_tests/data/spec-09-33.data similarity index 100% rename from tests/data/spec-09-33.data rename to tests/legacy_tests/data/spec-09-33.data diff --git a/tests/data/spec-10-01.canonical b/tests/legacy_tests/data/spec-10-01.canonical similarity index 100% rename from tests/data/spec-10-01.canonical rename to tests/legacy_tests/data/spec-10-01.canonical diff --git a/tests/data/spec-10-01.data b/tests/legacy_tests/data/spec-10-01.data similarity index 100% rename from tests/data/spec-10-01.data rename to tests/legacy_tests/data/spec-10-01.data diff --git a/tests/data/spec-10-02.canonical b/tests/legacy_tests/data/spec-10-02.canonical similarity index 100% rename from tests/data/spec-10-02.canonical rename to tests/legacy_tests/data/spec-10-02.canonical diff --git a/tests/data/spec-10-02.data b/tests/legacy_tests/data/spec-10-02.data similarity index 100% rename from tests/data/spec-10-02.data rename to tests/legacy_tests/data/spec-10-02.data diff --git a/tests/data/spec-10-03.canonical b/tests/legacy_tests/data/spec-10-03.canonical similarity index 100% rename from tests/data/spec-10-03.canonical rename to tests/legacy_tests/data/spec-10-03.canonical diff --git a/tests/data/spec-10-03.data b/tests/legacy_tests/data/spec-10-03.data similarity index 100% rename from tests/data/spec-10-03.data rename to tests/legacy_tests/data/spec-10-03.data diff --git a/tests/data/spec-10-04.canonical b/tests/legacy_tests/data/spec-10-04.canonical similarity index 100% rename from tests/data/spec-10-04.canonical rename to tests/legacy_tests/data/spec-10-04.canonical diff --git a/tests/data/spec-10-04.data b/tests/legacy_tests/data/spec-10-04.data similarity index 100% rename from tests/data/spec-10-04.data rename to tests/legacy_tests/data/spec-10-04.data diff --git a/tests/data/spec-10-05.canonical b/tests/legacy_tests/data/spec-10-05.canonical similarity index 100% rename from tests/data/spec-10-05.canonical rename to tests/legacy_tests/data/spec-10-05.canonical diff --git a/tests/data/spec-10-05.data b/tests/legacy_tests/data/spec-10-05.data similarity index 100% rename from tests/data/spec-10-05.data rename to tests/legacy_tests/data/spec-10-05.data diff --git a/tests/data/spec-10-06.canonical b/tests/legacy_tests/data/spec-10-06.canonical similarity index 100% rename from tests/data/spec-10-06.canonical rename to tests/legacy_tests/data/spec-10-06.canonical diff --git a/tests/data/spec-10-06.data b/tests/legacy_tests/data/spec-10-06.data similarity index 100% rename from tests/data/spec-10-06.data rename to tests/legacy_tests/data/spec-10-06.data diff --git a/tests/data/spec-10-07.canonical b/tests/legacy_tests/data/spec-10-07.canonical similarity index 100% rename from tests/data/spec-10-07.canonical rename to tests/legacy_tests/data/spec-10-07.canonical diff --git a/tests/data/spec-10-07.data b/tests/legacy_tests/data/spec-10-07.data similarity index 100% rename from tests/data/spec-10-07.data rename to tests/legacy_tests/data/spec-10-07.data diff --git a/tests/data/spec-10-08.data b/tests/legacy_tests/data/spec-10-08.data similarity index 100% rename from tests/data/spec-10-08.data rename to tests/legacy_tests/data/spec-10-08.data diff --git a/tests/data/spec-10-08.error b/tests/legacy_tests/data/spec-10-08.error similarity index 100% rename from tests/data/spec-10-08.error rename to tests/legacy_tests/data/spec-10-08.error diff --git a/tests/data/spec-10-09.canonical b/tests/legacy_tests/data/spec-10-09.canonical similarity index 100% rename from tests/data/spec-10-09.canonical rename to tests/legacy_tests/data/spec-10-09.canonical diff --git a/tests/data/spec-10-09.data b/tests/legacy_tests/data/spec-10-09.data similarity index 100% rename from tests/data/spec-10-09.data rename to tests/legacy_tests/data/spec-10-09.data diff --git a/tests/data/spec-10-10.canonical b/tests/legacy_tests/data/spec-10-10.canonical similarity index 100% rename from tests/data/spec-10-10.canonical rename to tests/legacy_tests/data/spec-10-10.canonical diff --git a/tests/data/spec-10-10.data b/tests/legacy_tests/data/spec-10-10.data similarity index 100% rename from tests/data/spec-10-10.data rename to tests/legacy_tests/data/spec-10-10.data diff --git a/tests/data/spec-10-11.canonical b/tests/legacy_tests/data/spec-10-11.canonical similarity index 100% rename from tests/data/spec-10-11.canonical rename to tests/legacy_tests/data/spec-10-11.canonical diff --git a/tests/data/spec-10-11.data b/tests/legacy_tests/data/spec-10-11.data similarity index 100% rename from tests/data/spec-10-11.data rename to tests/legacy_tests/data/spec-10-11.data diff --git a/tests/data/spec-10-12.canonical b/tests/legacy_tests/data/spec-10-12.canonical similarity index 100% rename from tests/data/spec-10-12.canonical rename to tests/legacy_tests/data/spec-10-12.canonical diff --git a/tests/data/spec-10-12.data b/tests/legacy_tests/data/spec-10-12.data similarity index 100% rename from tests/data/spec-10-12.data rename to tests/legacy_tests/data/spec-10-12.data diff --git a/tests/data/spec-10-13.canonical b/tests/legacy_tests/data/spec-10-13.canonical similarity index 100% rename from tests/data/spec-10-13.canonical rename to tests/legacy_tests/data/spec-10-13.canonical diff --git a/tests/data/spec-10-13.data b/tests/legacy_tests/data/spec-10-13.data similarity index 100% rename from tests/data/spec-10-13.data rename to tests/legacy_tests/data/spec-10-13.data diff --git a/tests/data/spec-10-14.canonical b/tests/legacy_tests/data/spec-10-14.canonical similarity index 100% rename from tests/data/spec-10-14.canonical rename to tests/legacy_tests/data/spec-10-14.canonical diff --git a/tests/data/spec-10-14.data b/tests/legacy_tests/data/spec-10-14.data similarity index 100% rename from tests/data/spec-10-14.data rename to tests/legacy_tests/data/spec-10-14.data diff --git a/tests/data/spec-10-15.canonical b/tests/legacy_tests/data/spec-10-15.canonical similarity index 100% rename from tests/data/spec-10-15.canonical rename to tests/legacy_tests/data/spec-10-15.canonical diff --git a/tests/data/spec-10-15.data b/tests/legacy_tests/data/spec-10-15.data similarity index 100% rename from tests/data/spec-10-15.data rename to tests/legacy_tests/data/spec-10-15.data diff --git a/tests/data/str.data b/tests/legacy_tests/data/str.data similarity index 100% rename from tests/data/str.data rename to tests/legacy_tests/data/str.data diff --git a/tests/data/str.detect b/tests/legacy_tests/data/str.detect similarity index 100% rename from tests/data/str.detect rename to tests/legacy_tests/data/str.detect diff --git a/tests/data/tags.events b/tests/legacy_tests/data/tags.events similarity index 100% rename from tests/data/tags.events rename to tests/legacy_tests/data/tags.events diff --git a/tests/data/test_mark.marks b/tests/legacy_tests/data/test_mark.marks similarity index 100% rename from tests/data/test_mark.marks rename to tests/legacy_tests/data/test_mark.marks diff --git a/tests/data/timestamp-bugs.code b/tests/legacy_tests/data/timestamp-bugs.code similarity index 100% rename from tests/data/timestamp-bugs.code rename to tests/legacy_tests/data/timestamp-bugs.code diff --git a/tests/data/timestamp-bugs.data b/tests/legacy_tests/data/timestamp-bugs.data similarity index 100% rename from tests/data/timestamp-bugs.data rename to tests/legacy_tests/data/timestamp-bugs.data diff --git a/tests/data/timestamp.data b/tests/legacy_tests/data/timestamp.data similarity index 100% rename from tests/data/timestamp.data rename to tests/legacy_tests/data/timestamp.data diff --git a/tests/data/timestamp.detect b/tests/legacy_tests/data/timestamp.detect similarity index 100% rename from tests/data/timestamp.detect rename to tests/legacy_tests/data/timestamp.detect diff --git a/tests/data/unacceptable-key.loader-error b/tests/legacy_tests/data/unacceptable-key.loader-error similarity index 100% rename from tests/data/unacceptable-key.loader-error rename to tests/legacy_tests/data/unacceptable-key.loader-error diff --git a/tests/data/unclosed-bracket.loader-error b/tests/legacy_tests/data/unclosed-bracket.loader-error similarity index 100% rename from tests/data/unclosed-bracket.loader-error rename to tests/legacy_tests/data/unclosed-bracket.loader-error diff --git a/tests/data/unclosed-quoted-scalar.loader-error b/tests/legacy_tests/data/unclosed-quoted-scalar.loader-error similarity index 100% rename from tests/data/unclosed-quoted-scalar.loader-error rename to tests/legacy_tests/data/unclosed-quoted-scalar.loader-error diff --git a/tests/data/undefined-anchor.loader-error b/tests/legacy_tests/data/undefined-anchor.loader-error similarity index 100% rename from tests/data/undefined-anchor.loader-error rename to tests/legacy_tests/data/undefined-anchor.loader-error diff --git a/tests/data/undefined-constructor.loader-error b/tests/legacy_tests/data/undefined-constructor.loader-error similarity index 100% rename from tests/data/undefined-constructor.loader-error rename to tests/legacy_tests/data/undefined-constructor.loader-error diff --git a/tests/data/undefined-tag-handle.loader-error b/tests/legacy_tests/data/undefined-tag-handle.loader-error similarity index 100% rename from tests/data/undefined-tag-handle.loader-error rename to tests/legacy_tests/data/undefined-tag-handle.loader-error diff --git a/tests/data/unknown.dumper-error b/tests/legacy_tests/data/unknown.dumper-error similarity index 100% rename from tests/data/unknown.dumper-error rename to tests/legacy_tests/data/unknown.dumper-error diff --git a/tests/data/unsupported-version.emitter-error b/tests/legacy_tests/data/unsupported-version.emitter-error similarity index 100% rename from tests/data/unsupported-version.emitter-error rename to tests/legacy_tests/data/unsupported-version.emitter-error diff --git a/tests/data/utf16be.code b/tests/legacy_tests/data/utf16be.code similarity index 100% rename from tests/data/utf16be.code rename to tests/legacy_tests/data/utf16be.code diff --git a/tests/data/utf16be.data b/tests/legacy_tests/data/utf16be.data similarity index 100% rename from tests/data/utf16be.data rename to tests/legacy_tests/data/utf16be.data diff --git a/tests/data/utf16le.code b/tests/legacy_tests/data/utf16le.code similarity index 100% rename from tests/data/utf16le.code rename to tests/legacy_tests/data/utf16le.code diff --git a/tests/data/utf16le.data b/tests/legacy_tests/data/utf16le.data similarity index 100% rename from tests/data/utf16le.data rename to tests/legacy_tests/data/utf16le.data diff --git a/tests/data/utf8-implicit.code b/tests/legacy_tests/data/utf8-implicit.code similarity index 100% rename from tests/data/utf8-implicit.code rename to tests/legacy_tests/data/utf8-implicit.code diff --git a/tests/data/utf8-implicit.data b/tests/legacy_tests/data/utf8-implicit.data similarity index 100% rename from tests/data/utf8-implicit.data rename to tests/legacy_tests/data/utf8-implicit.data diff --git a/tests/data/utf8.code b/tests/legacy_tests/data/utf8.code similarity index 100% rename from tests/data/utf8.code rename to tests/legacy_tests/data/utf8.code diff --git a/tests/data/utf8.data b/tests/legacy_tests/data/utf8.data similarity index 100% rename from tests/data/utf8.data rename to tests/legacy_tests/data/utf8.data diff --git a/tests/data/value.data b/tests/legacy_tests/data/value.data similarity index 100% rename from tests/data/value.data rename to tests/legacy_tests/data/value.data diff --git a/tests/data/value.detect b/tests/legacy_tests/data/value.detect similarity index 100% rename from tests/data/value.detect rename to tests/legacy_tests/data/value.detect diff --git a/tests/data/yaml.data b/tests/legacy_tests/data/yaml.data similarity index 100% rename from tests/data/yaml.data rename to tests/legacy_tests/data/yaml.data diff --git a/tests/data/yaml.detect b/tests/legacy_tests/data/yaml.detect similarity index 100% rename from tests/data/yaml.detect rename to tests/legacy_tests/data/yaml.detect diff --git a/tests/data/yaml11.schema b/tests/legacy_tests/data/yaml11.schema similarity index 100% rename from tests/data/yaml11.schema rename to tests/legacy_tests/data/yaml11.schema diff --git a/tests/data/yaml11.schema-skip b/tests/legacy_tests/data/yaml11.schema-skip similarity index 100% rename from tests/data/yaml11.schema-skip rename to tests/legacy_tests/data/yaml11.schema-skip diff --git a/tests/lib/test_all.py b/tests/legacy_tests/test_all.py similarity index 100% rename from tests/lib/test_all.py rename to tests/legacy_tests/test_all.py diff --git a/tests/lib/test_appliance.py b/tests/legacy_tests/test_appliance.py similarity index 97% rename from tests/lib/test_appliance.py rename to tests/legacy_tests/test_appliance.py index 0c5cda18..4d42b30a 100644 --- a/tests/lib/test_appliance.py +++ b/tests/legacy_tests/test_appliance.py @@ -1,7 +1,7 @@ -import sys, os, os.path, types, traceback, pprint +import sys, os, os.path, types, traceback, pprint, pathlib -DATA = 'tests/data' +DATA = str(pathlib.Path(__file__).parent / 'data') def find_test_functions(collections): if not isinstance(collections, list): diff --git a/tests/lib/test_build.py b/tests/legacy_tests/test_build.py similarity index 100% rename from tests/lib/test_build.py rename to tests/legacy_tests/test_build.py diff --git a/tests/lib/test_build_ext.py b/tests/legacy_tests/test_build_ext.py similarity index 100% rename from tests/lib/test_build_ext.py rename to tests/legacy_tests/test_build_ext.py diff --git a/tests/lib/test_canonical.py b/tests/legacy_tests/test_canonical.py similarity index 100% rename from tests/lib/test_canonical.py rename to tests/legacy_tests/test_canonical.py diff --git a/tests/lib/test_constructor.py b/tests/legacy_tests/test_constructor.py similarity index 100% rename from tests/lib/test_constructor.py rename to tests/legacy_tests/test_constructor.py diff --git a/tests/lib/test_dump_load.py b/tests/legacy_tests/test_dump_load.py similarity index 100% rename from tests/lib/test_dump_load.py rename to tests/legacy_tests/test_dump_load.py diff --git a/tests/lib/test_emitter.py b/tests/legacy_tests/test_emitter.py similarity index 100% rename from tests/lib/test_emitter.py rename to tests/legacy_tests/test_emitter.py diff --git a/tests/lib/test_errors.py b/tests/legacy_tests/test_errors.py similarity index 100% rename from tests/lib/test_errors.py rename to tests/legacy_tests/test_errors.py diff --git a/tests/lib/test_input_output.py b/tests/legacy_tests/test_input_output.py similarity index 100% rename from tests/lib/test_input_output.py rename to tests/legacy_tests/test_input_output.py diff --git a/tests/lib/test_mark.py b/tests/legacy_tests/test_mark.py similarity index 100% rename from tests/lib/test_mark.py rename to tests/legacy_tests/test_mark.py diff --git a/tests/lib/test_multi_constructor.py b/tests/legacy_tests/test_multi_constructor.py similarity index 100% rename from tests/lib/test_multi_constructor.py rename to tests/legacy_tests/test_multi_constructor.py diff --git a/tests/lib/test_reader.py b/tests/legacy_tests/test_reader.py similarity index 100% rename from tests/lib/test_reader.py rename to tests/legacy_tests/test_reader.py diff --git a/tests/lib/test_recursive.py b/tests/legacy_tests/test_recursive.py similarity index 100% rename from tests/lib/test_recursive.py rename to tests/legacy_tests/test_recursive.py diff --git a/tests/lib/test_representer.py b/tests/legacy_tests/test_representer.py similarity index 100% rename from tests/lib/test_representer.py rename to tests/legacy_tests/test_representer.py diff --git a/tests/lib/test_resolver.py b/tests/legacy_tests/test_resolver.py similarity index 100% rename from tests/lib/test_resolver.py rename to tests/legacy_tests/test_resolver.py diff --git a/tests/lib/test_schema.py b/tests/legacy_tests/test_schema.py similarity index 100% rename from tests/lib/test_schema.py rename to tests/legacy_tests/test_schema.py diff --git a/tests/lib/test_sort_keys.py b/tests/legacy_tests/test_sort_keys.py similarity index 100% rename from tests/lib/test_sort_keys.py rename to tests/legacy_tests/test_sort_keys.py diff --git a/tests/lib/test_structure.py b/tests/legacy_tests/test_structure.py similarity index 100% rename from tests/lib/test_structure.py rename to tests/legacy_tests/test_structure.py diff --git a/tests/lib/test_tokens.py b/tests/legacy_tests/test_tokens.py similarity index 100% rename from tests/lib/test_tokens.py rename to tests/legacy_tests/test_tokens.py diff --git a/tests/lib/test_yaml.py b/tests/legacy_tests/test_yaml.py similarity index 100% rename from tests/lib/test_yaml.py rename to tests/legacy_tests/test_yaml.py diff --git a/tests/lib/test_yaml_ext.py b/tests/legacy_tests/test_yaml_ext.py similarity index 100% rename from tests/lib/test_yaml_ext.py rename to tests/legacy_tests/test_yaml_ext.py