This is an automated email from the ASF dual-hosted git repository.

RyanSkraba pushed a commit to branch pr/2250
in repository https://gitbox.apache.org/repos/asf/avro.git

commit 2cee342d2038655ce90e248e88cd04d795bc0958
Merge: 8fa32e7f37 28285c9e81
Author: Ryan Skraba <[email protected]>
AuthorDate: Tue Aug 4 18:47:16 2026 +0200

    Merge branch 'main' into pr/2250

 .asf.yaml                                          |   20 +-
 .devcontainer/devcontainer.json                    |   69 +-
 .editorconfig                                      |   17 +
 .github/PULL_REQUEST_TEMPLATE.md                   |    2 +-
 .github/dependabot.yml                             |    7 -
 .github/labeler.yml                                |   58 +-
 .github/workflows/codeql-csharp-analysis.yml       |   17 +-
 .github/workflows/codeql-java-analysis.yml         |   31 +-
 .github/workflows/codeql-js-analysis.yml           |   12 +-
 .github/workflows/codeql-py-analysis.yml           |   12 +-
 .github/workflows/deploy-docs.yml                  |  322 ++
 .github/workflows/java-publish-snapshot.yml        |   33 +-
 .github/workflows/labeler.yml                      |    6 +-
 .github/workflows/maven4.yml                       |   28 +-
 .github/workflows/rat.yml                          |   27 +-
 .github/workflows/spotless.yml                     |   25 +-
 .../workflows/test-docker.yml                      |   35 +-
 .github/workflows/test-lang-c++.yml                |   21 +-
 .github/workflows/test-lang-c.yml                  |   71 +-
 .github/workflows/test-lang-csharp.yml             |   53 +-
 .github/workflows/test-lang-java.yml               |  160 +-
 .github/workflows/test-lang-js.yml                 |   54 +-
 .github/workflows/test-lang-perl.yml               |   97 +-
 .github/workflows/test-lang-php.yml                |   72 +-
 .github/workflows/test-lang-py.yml                 |   95 +-
 .github/workflows/test-lang-ruby.yml               |   65 +-
 .github/workflows/test-lang-rust-audit.yml         |   56 -
 .github/workflows/test-lang-rust-ci.yml            |  238 -
 .github/workflows/test-lang-rust-clippy.yml        |   50 -
 .gitmodules                                        |    3 -
 .mvn/extensions.xml                                |    2 +-
 BUILD.md                                           |   27 +-
 DIST_README.txt                                    |    2 +-
 LICENSE.txt                                        |  180 -
 NOTICE.txt                                         |   49 +-
 README.md                                          |   34 +-
 build.sh                                           |   62 +-
 composer.json                                      |   63 +-
 doc/.gitignore                                     |    1 -
 doc/README.md                                      |   57 +-
 doc/assets/icons/logo.png                          |  Bin 4777 -> 0 bytes
 doc/assets/images/logo-black-text.png              |  Bin 0 -> 2429 bytes
 doc/assets/images/logo-text.svg                    |   38 +
 doc/assets/images/logo-white-text.png              |  Bin 0 -> 2416 bytes
 doc/assets/images/logo.png                         |  Bin 0 -> 1451 bytes
 doc/assets/images/logo.svg                         |   27 +
 doc/assets/scss/PTMono-Regular.ttf                 |  Bin 0 -> 169480 bytes
 doc/assets/scss/_styles_project.scss               |   39 +
 doc/config.toml                                    |   50 +-
 doc/content/en/_index.html                         |    2 +-
 doc/content/en/_index.md                           |   40 +
 doc/content/en/avro.rdf                            |   67 +
 .../news/new-committer-christophe-le-saec.md}      |   22 +-
 .../new-committer-oscar-westra-van-holthe-kind.md  |   41 +
 .../news/new-pmc-michael-a-smith.md}               |   15 +-
 doc/content/en/blog/news/new-project-logo.md       |   50 +
 .../en/blog/releases/avro-1.11.2-released.md       |   98 +
 .../en/blog/releases/avro-1.11.3-released.md       |   79 +
 .../en/blog/releases/avro-1.11.4-released.md       |   49 +
 .../en/blog/releases/avro-1.11.5-released.md       |   48 +
 .../en/blog/releases/avro-1.12.0-released.md       |  538 +++
 .../en/blog/releases/avro-1.12.1-released.md       |   90 +
 .../en/docs/++version++/Editor Support/_index.md   |  175 +
 .../Editor Support/eclipseAvroclipse.png           |  Bin 0 -> 6419 bytes
 .../jetbrainsAvroAndParquetViewer.svg              |    6 +
 .../jetbrainsAvroIdlSchemaSupport.svg              |   21 +
 .../Editor Support/jetbrainsBigDataFileViewer.svg  |   13 +
 .../Editor Support/visualStudioAvroIdl.png         |  Bin 0 -> 29293 bytes
 .../Editor Support/visualStudioAvroTools.png       |  Bin 0 -> 7092 bytes
 .../Editor Support/visualStudioAvroViewer.png      |  Bin 0 -> 113909 bytes
 .../++version++/Getting started (Java)/_index.md   |   30 +-
 .../++version++/Getting started (Python)/_index.md |    6 +-
 .../en/docs/++version++/IDL Language/_index.md     |  235 +-
 .../en/docs/++version++/MapReduce guide/_index.md  |    2 +
 .../en/docs/++version++/SASL profile/_index.md     |    2 +
 .../en/docs/++version++/Specification/_index.md    |  125 +-
 doc/content/en/docs/++version++/_index.md          |    4 +-
 .../_index.md => docs/++version++/api-py.md}       |   10 +-
 .../_index.md => docs/++version++/api-rust.md}     |   10 +-
 .../Getting started (Java)/_index.md               |   10 +-
 .../Getting started (Python)/_index.md             |   17 +-
 .../{++version++ => 1.11.1}/IDL Language/_index.md |   20 +-
 .../MapReduce guide/_index.md                      |   10 +-
 .../{++version++ => 1.11.1}/SASL profile/_index.md |    4 +-
 .../Specification/_index.md                        |   33 +-
 .../en/docs/{++version++ => 1.11.1}/_index.md      |    6 +-
 .../Security/_index.md => docs/1.11.1/api-c++.md}  |   10 +-
 .../Security/_index.md => docs/1.11.1/api-c.md}    |   10 +-
 .../_index.md => docs/1.11.1/api-csharp.md}        |   10 +-
 .../Security/_index.md => docs/1.11.1/api-java.md} |   10 +-
 .../icons => content/en/docs/1.11.1}/logo.svg      |    0
 .../Getting started (Java)/_index.md               |   10 +-
 .../Getting started (Python)/_index.md             |    6 +-
 .../{++version++ => 1.11.2}/IDL Language/_index.md |   12 +-
 .../MapReduce guide/_index.md                      |   10 +-
 .../{++version++ => 1.11.2}/SASL profile/_index.md |    4 +-
 .../Specification/_index.md                        |    0
 .../en/docs/{++version++ => 1.11.2}/_index.md      |    6 +-
 .../Security/_index.md => docs/1.11.2/api-c++.md}  |   10 +-
 .../Security/_index.md => docs/1.11.2/api-c.md}    |   10 +-
 .../_index.md => docs/1.11.2/api-csharp.md}        |   10 +-
 .../Security/_index.md => docs/1.11.2/api-java.md} |   10 +-
 .../en/docs/{++version++ => 1.11.2}/logo.svg       |    0
 .../Getting started (Java)/_index.md               |   10 +-
 .../Getting started (Python)/_index.md             |    6 +-
 .../{++version++ => 1.11.3}/IDL Language/_index.md |   12 +-
 .../MapReduce guide/_index.md                      |   10 +-
 .../{++version++ => 1.11.3}/SASL profile/_index.md |    4 +-
 .../Specification/_index.md                        |    9 +-
 .../en/docs/{++version++ => 1.11.3}/_index.md      |    6 +-
 .../Security/_index.md => docs/1.11.3/api-c++.md}  |   10 +-
 .../Security/_index.md => docs/1.11.3/api-c.md}    |   10 +-
 .../_index.md => docs/1.11.3/api-csharp.md}        |   10 +-
 .../Security/_index.md => docs/1.11.3/api-java.md} |   10 +-
 .../Security/_index.md => docs/1.11.3/api-py.md}   |   10 +-
 .../icons => content/en/docs/1.11.3}/logo.svg      |    0
 .../Getting started (Java)/_index.md               |   10 +-
 .../Getting started (Python)/_index.md             |    6 +-
 .../{++version++ => 1.11.4}/IDL Language/_index.md |   12 +-
 .../MapReduce guide/_index.md                      |   10 +-
 .../{++version++ => 1.11.4}/SASL profile/_index.md |    4 +-
 .../Specification/_index.md                        |    9 +-
 .../en/docs/{++version++ => 1.11.4}/_index.md      |    6 +-
 .../Security/_index.md => docs/1.11.4/api-c++.md}  |   10 +-
 .../Security/_index.md => docs/1.11.4/api-c.md}    |   10 +-
 .../_index.md => docs/1.11.4/api-csharp.md}        |   10 +-
 .../Security/_index.md => docs/1.11.4/api-java.md} |   10 +-
 .../Security/_index.md => docs/1.11.4/api-py.md}   |   10 +-
 .../icons => content/en/docs/1.11.4}/logo.svg      |    0
 .../Getting started (Java)/_index.md               |   26 +-
 .../Getting started (Python)/_index.md             |   10 +-
 .../{++version++ => 1.12.0}/IDL Language/_index.md |  178 +-
 .../MapReduce guide/_index.md                      |   10 +-
 .../{++version++ => 1.12.0}/SASL profile/_index.md |    0
 .../Specification/_index.md                        |   99 +-
 .../en/docs/{++version++ => 1.12.0}/_index.md      |    6 +-
 .../Security/_index.md => docs/1.12.0/api-c++.md}  |   10 +-
 .../Security/_index.md => docs/1.12.0/api-c.md}    |   10 +-
 .../_index.md => docs/1.12.0/api-csharp.md}        |   10 +-
 .../Security/_index.md => docs/1.12.0/api-java.md} |   10 +-
 .../Security/_index.md => docs/1.12.0/api-py.md}   |   10 +-
 .../en/docs/1.12.0/trevni/css/maven-base.css       |  168 +
 .../en/docs/1.12.0/trevni/css/maven-theme.css      |  161 +
 doc/content/en/docs/1.12.0/trevni/css/print.css    |   26 +
 doc/content/en/docs/1.12.0/trevni/css/site.css     |    1 +
 .../en/docs/1.12.0/trevni/dependencies.html        |  503 +++
 .../docs/1.12.0/trevni/dependency-convergence.html |  339 ++
 .../en/docs/1.12.0/trevni/dependency-info.html     |  118 +
 .../docs/1.12.0/trevni/dependency-management.html  |  613 +++
 .../1.12.0/trevni/distribution-management.html     |   94 +
 doc/content/en/docs/1.12.0/trevni/images/close.gif |  Bin 0 -> 279 bytes
 .../en/docs/1.12.0/trevni/images/collapsed.gif     |  Bin 0 -> 53 bytes
 .../en/docs/1.12.0/trevni/images/expanded.gif      |  Bin 0 -> 52 bytes
 .../en/docs/1.12.0/trevni/images/external.png      |  Bin 0 -> 230 bytes
 .../docs/1.12.0/trevni/images/icon_error_sml.gif   |  Bin 0 -> 1010 bytes
 .../en/docs/1.12.0/trevni/images/icon_info_sml.gif |  Bin 0 -> 606 bytes
 .../docs/1.12.0/trevni/images/icon_success_sml.gif |  Bin 0 -> 990 bytes
 .../docs/1.12.0/trevni/images/icon_warning_sml.gif |  Bin 0 -> 576 bytes
 .../trevni/images/logos/build-by-maven-black.png   |  Bin 0 -> 2294 bytes
 .../trevni/images/logos/build-by-maven-white.png   |  Bin 0 -> 2260 bytes
 .../1.12.0/trevni/images/logos/maven-feather.png   |  Bin 0 -> 3330 bytes
 .../en/docs/1.12.0/trevni/images/newwindow.png     |  Bin 0 -> 220 bytes
 doc/content/en/docs/1.12.0/trevni/index.html       |  107 +
 .../en/docs/1.12.0/trevni/issue-management.html    |   96 +
 .../content/en/docs/1.12.0/trevni/licenses.html    |  199 +-
 .../en/docs/1.12.0/trevni/mailing-lists.html       |  117 +
 doc/content/en/docs/1.12.0/trevni/modules.html     |  105 +
 .../en/docs/1.12.0/trevni/plugin-management.html   |  244 ++
 doc/content/en/docs/1.12.0/trevni/plugins.html     |  158 +
 .../en/docs/1.12.0/trevni/project-info.html        |  139 +
 doc/content/en/docs/1.12.0/trevni/scm.html         |  106 +
 doc/content/en/docs/1.12.0/trevni/summary.html     |  133 +
 doc/content/en/docs/_index.md                      |    4 +-
 .../Contributors onboarding guide/_index.md        |    4 +-
 doc/content/en/project/Credits/_index.md           |   48 +-
 doc/content/en/project/How to contribute/_index.md |    4 +-
 doc/content/en/project/Privacy policy/_index.md    |    4 +-
 doc/content/en/project/Security/_index.md          |   43 +-
 doc/examples/example.py                            |   28 +-
 doc/examples/java-example/pom.xml                  |   23 +-
 doc/examples/mr-example/pom.xml                    |    6 +-
 lang/rust/wasm-demo/src/lib.rs => doc/go.mod       |   10 +
 doc/go.sum                                         |    6 +
 doc/layouts/partials/navbar-asf-links.html         |   16 +-
 doc/layouts/partials/navbar-docs-selector.html     |   16 +-
 doc/layouts/partials/navbar.html                   |    7 +-
 doc/layouts/project/list.html                      |    6 +-
 doc/layouts/shortcodes/project_logo.html           |   22 +
 doc/package-lock.json                              |  922 ++++
 doc/package.json                                   |    6 +-
 doc/themes/docsy                                   |    1 -
 lang/c++/CMakeLists.txt                            |  326 +-
 lang/c++/LICENSE                                   |   30 -
 lang/c++/MainPage.dox                              |    7 +-
 lang/c++/README                                    |    8 +-
 lang/c++/api/LogicalType.hh                        |   65 -
 lang/c++/build.sh                                  |   26 +-
 lang/c++/cmake/avro-cpp-config.cmake.in            |   67 +
 .../c++/cmake/avro-cpp.pc.in                       |   23 +-
 lang/c++/examples/cpx.hh                           |   17 +-
 lang/c++/examples/custom.cc                        |   14 +-
 lang/c++/examples/datafile.cc                      |   17 +-
 lang/c++/examples/generated.cc                     |   10 +-
 lang/c++/examples/generic.cc                       |   16 +-
 lang/c++/examples/imaginary.hh                     |   18 +-
 lang/c++/examples/resolving.cc                     |   16 +-
 lang/c++/examples/schemaload.cc                    |    7 +-
 lang/c++/examples/validating.cc                    |   20 +-
 lang/c++/impl/BinaryDecoder.cc                     |   12 +-
 lang/c++/impl/Compiler.cc                          |  216 +-
 lang/c++/impl/CustomAttributes.cc                  |   41 +-
 lang/c++/impl/DataFile.cc                          |  460 +-
 lang/c++/impl/FileStream.cc                        |   30 +-
 lang/c++/impl/Generic.cc                           |    6 +-
 lang/c++/impl/GenericDatum.cc                      |    2 +-
 lang/c++/impl/LogicalType.cc                       |   58 +-
 lang/c++/impl/Node.cc                              |  114 +-
 lang/c++/impl/NodeImpl.cc                          |  157 +-
 lang/c++/impl/Resolver.cc                          |   42 +-
 lang/c++/impl/Schema.cc                            |    2 +-
 lang/c++/impl/Stream.cc                            |    8 +-
 lang/c++/impl/ValidSchema.cc                       |    7 +-
 lang/c++/impl/Validator.cc                         |   17 +-
 lang/c++/impl/Zigzag.cc                            |    8 +-
 lang/c++/impl/ZstdCompressWrapper.cc               |   62 +
 .../Exception.hh => impl/ZstdCompressWrapper.hh}   |   30 +-
 lang/c++/impl/ZstdDecompressWrapper.cc             |   78 +
 .../Exception.hh => impl/ZstdDecompressWrapper.hh} |   30 +-
 lang/c++/impl/avrogencpp.cc                        |  423 +-
 lang/c++/impl/json/JsonDom.cc                      |   27 +-
 lang/c++/impl/json/JsonDom.hh                      |   31 +-
 lang/c++/impl/json/JsonIO.cc                       |  106 +-
 lang/c++/impl/json/JsonIO.hh                       |   52 +-
 lang/c++/impl/parsing/JsonCodec.cc                 |   12 +-
 lang/c++/impl/parsing/ResolvingDecoder.cc          |  109 +-
 lang/c++/impl/parsing/Symbol.cc                    |    6 +-
 lang/c++/impl/parsing/Symbol.hh                    |   68 +-
 lang/c++/impl/parsing/ValidatingCodec.cc           |    4 +-
 lang/c++/{api => include/avro}/AvroParse.hh        |    0
 lang/c++/{api => include/avro}/AvroSerialize.hh    |    0
 lang/c++/{api => include/avro}/AvroTraits.hh       |    0
 lang/c++/{api => include/avro}/Compiler.hh         |    9 +-
 lang/c++/{api => include/avro}/Config.hh           |   40 +-
 lang/c++/{api => include/avro}/CustomAttributes.hh |   21 +-
 lang/c++/{api => include/avro}/DataFile.hh         |   89 +-
 lang/c++/{api => include/avro}/Decoder.hh          |    0
 lang/c++/{api => include/avro}/Encoder.hh          |    0
 lang/c++/{api => include/avro}/Exception.hh        |    8 +-
 lang/c++/{api => include/avro}/Generic.hh          |   12 +-
 lang/c++/{api => include/avro}/GenericDatum.hh     |   61 +-
 lang/c++/{api => include/avro}/Layout.hh           |    8 +-
 lang/c++/include/avro/LogicalType.hh               |  120 +
 lang/c++/{api => include/avro}/Node.hh             |   47 +-
 lang/c++/{api => include/avro}/NodeConcepts.hh     |    4 +-
 lang/c++/{api => include/avro}/NodeImpl.hh         |   95 +-
 lang/c++/{api => include/avro}/Parser.hh           |    5 +-
 lang/c++/{api => include/avro}/Reader.hh           |   16 +-
 lang/c++/{api => include/avro}/Resolver.hh         |    7 +-
 lang/c++/{api => include/avro}/ResolverSchema.hh   |    1 -
 lang/c++/{api => include/avro}/ResolvingReader.hh  |    5 +-
 lang/c++/{api => include/avro}/Schema.hh           |    2 +-
 lang/c++/{api => include/avro}/SchemaResolution.hh |    0
 lang/c++/{api => include/avro}/Serializer.hh       |    6 +-
 lang/c++/{api => include/avro}/Specific.hh         |    5 +-
 lang/c++/{api => include/avro}/Stream.hh           |   13 +-
 lang/c++/{api => include/avro}/Types.hh            |    9 +
 lang/c++/{api => include/avro}/ValidSchema.hh      |    0
 lang/c++/{api => include/avro}/Validator.hh        |   41 +-
 lang/c++/{api => include/avro}/Writer.hh           |    6 +-
 lang/c++/{api => include/avro}/Zigzag.hh           |    6 +-
 lang/c++/{api => include/avro}/buffer/Buffer.hh    |   11 +-
 .../{api => include/avro}/buffer/BufferPrint.hh    |    2 +-
 .../{api => include/avro}/buffer/BufferReader.hh   |    8 +-
 .../{api => include/avro}/buffer/BufferStream.hh   |    4 +-
 .../avro}/buffer/BufferStreambuf.hh                |   10 +-
 .../avro}/buffer/detail/BufferDetail.hh            |   37 +-
 .../avro}/buffer/detail/BufferDetailIterator.hh    |   18 -
 lang/c++/jsonschemas/big_union                     |  101 +
 lang/c++/jsonschemas/bigrecord                     |    3 +-
 .../jsonschemas/cpp_reserved_words_union_typedef   |   13 +
 lang/c++/jsonschemas/union_empty_record            |   25 +
 lang/c++/jsonschemas/union_redundant_types         |   22 +
 lang/c++/m4/README                                 |    3 -
 lang/c++/m4/m4_ax_boost_asio.m4                    |  108 -
 lang/c++/m4/m4_ax_boost_base.m4                    |  219 -
 lang/c++/m4/m4_ax_boost_filesystem.m4              |  115 -
 lang/c++/m4/m4_ax_boost_regex.m4                   |  105 -
 lang/c++/m4/m4_ax_boost_system.m4                  |  117 -
 lang/c++/m4/m4_ax_boost_thread.m4                  |  146 -
 lang/c++/parser/AvroLex.ll                         |  203 -
 lang/c++/parser/AvroYacc.yy                        |  200 -
 lang/c++/test/AvrogencppTestReservedWords.cc       |    1 +
 lang/c++/test/AvrogencppTests.cc                   |  258 +-
 lang/c++/test/CodecTests.cc                        |  778 +++-
 lang/c++/test/CommonsSchemasTests.cc               |   94 +
 lang/c++/test/CompilerTests.cc                     |   63 +
 lang/c++/test/DataFileTests.cc                     |  604 ++-
 lang/c++/test/JsonTests.cc                         |   17 +-
 lang/c++/test/SchemaTests.cc                       |  729 +++-
 lang/c++/test/StreamTests.cc                       |   13 +-
 lang/c++/test/buffertest.cc                        |  122 +-
 lang/c++/test/unittest.cc                          |   75 +-
 lang/c/CMakeLists.txt                              |   10 +-
 lang/c/build.sh                                    |    5 +
 lang/c/docs/index.txt                              |    4 +-
 lang/c/examples/quickstop.c                        |    2 +-
 lang/c/src/avro/basics.h                           |    4 +-
 lang/c/src/avro/refcount.h                         |    5 +-
 lang/c/src/codec.c                                 |    3 +
 lang/c/src/consume-binary.c                        |    3 +
 lang/c/src/datafile.c                              |   12 +
 lang/c/src/datum.c                                 |   13 +-
 lang/c/src/datum_equal.c                           |   10 +-
 lang/c/src/datum_size.c                            |    3 +-
 lang/c/src/datum_skip.c                            |    3 +
 lang/c/src/datum_validate.c                        |    4 +-
 lang/c/src/datum_value.c                           |   14 +-
 lang/c/src/encoding.h                              |    2 +
 lang/c/src/encoding_binary.c                       |   16 +-
 lang/c/src/generic.c                               |    2 +-
 lang/c/src/memoize.c                               |    6 +-
 lang/c/src/schema.c                                |   23 +-
 lang/c/src/st.c                                    |   34 +-
 lang/c/src/st.h                                    |   22 +-
 lang/c/src/value-json.c                            |   11 +-
 lang/c/tests/CMakeLists.txt                        |    2 +
 lang/c/tests/test_avro_4246.c                      |  223 +
 lang/c/tests/test_avro_data.c                      |    8 +-
 lang/c/tests/test_avro_type_collision.c            |   64 +
 lang/c/version.sh                                  |    4 +-
 lang/csharp/README.md                              |   32 +-
 lang/csharp/build.sh                               |    7 +-
 lang/csharp/common.props                           |    8 +-
 lang/csharp/src/apache/benchmark/Program.cs        |    4 +-
 lang/csharp/src/apache/ipc/Avro.ipc.csproj         |    2 +-
 lang/csharp/src/apache/ipc/HttpListenerServer.cs   |    2 +-
 lang/csharp/src/apache/ipc/Responder.cs            |   16 +-
 .../src/apache/ipc/Specific/SpecificRequestor.cs   |    6 +-
 lang/csharp/src/apache/main/AvroDecimal.cs         |   17 +-
 lang/csharp/src/apache/main/CodeGen/CodeGen.cs     |   51 +-
 lang/csharp/src/apache/main/File/DeflateCodec.cs   |   32 +-
 .../src/apache/main/Generic/GenericReader.cs       |   29 +-
 .../apache/main/Generic/PreresolvingDatumReader.cs |   40 +-
 .../apache/main/IO/BinaryDecoder.netstandard2.0.cs |    4 +-
 .../main/IO/BinaryDecoder.notnetstandard2.0.cs     |    4 +-
 lang/csharp/src/apache/main/IO/BinaryEncoder.cs    |   18 +-
 lang/csharp/src/apache/main/IO/JsonDecoder.cs      |   72 +-
 lang/csharp/src/apache/main/Protocol/Message.cs    |    1 +
 lang/csharp/src/apache/main/Schema/Field.cs        |   10 +
 .../csharp/src/apache/main/Schema/LogicalSchema.cs |   18 +-
 lang/csharp/src/apache/main/Schema/Schema.cs       |   17 +-
 lang/csharp/src/apache/main/Schema/SchemaName.cs   |   89 +
 .../src/apache/main/Specific/SpecificReader.cs     |   24 +-
 .../src/apache/main/Specific/SpecificWriter.cs     |    2 +-
 .../src/apache/main/Util/LogicalTypeFactory.cs     |   20 +-
 .../src/apache/main/Util/UnknownLogicalType.cs     |  145 +
 lang/csharp/src/apache/test/AvroDecimalTest.cs     |   74 +-
 .../src/apache/test/AvroGen/AvroGenHelper.cs       |   13 +-
 .../src/apache/test/AvroGen/AvroGenSchemaTests.cs  |   10 +-
 lang/csharp/src/apache/test/CodGen/CodeGenTest.cs  |   55 +
 lang/csharp/src/apache/test/File/FileTests.cs      |   35 +-
 lang/csharp/src/apache/test/IO/JsonCodecTests.cs   |  113 +-
 lang/csharp/src/apache/test/NuGetPackageTests.cs   |  156 +
 .../src/apache/test/Protocol/ProtocolTest.cs       |   17 +
 lang/csharp/src/apache/test/Schema/SchemaTests.cs  |  113 +-
 .../apache/test/Util/UnknownLogicalTypeTests.cs    |  188 +
 lang/csharp/versions.props                         |   37 +-
 lang/java/android/pom.xml                          |    2 +-
 .../java/archetypes/avro-service-archetype/pom.xml |    2 +-
 .../avro-service-archetype/src/main/pom/pom.xml    |    7 +
 .../projects/basic/archetype.properties            |    0
 .../projects/basic/goal.txt                        |    0
 lang/java/archetypes/pom.xml                       |    2 +-
 lang/java/avro/pom.xml                             |  229 +-
 lang/java/avro/src/it/pom.xml                      |  179 +
 lang/java/avro/src/it/settings.xml                 |   51 +
 .../avro/CanonicalSchemaFormatterFactory.java}     |   17 +-
 .../src/main/java/org/apache/avro/Conversion.java  |   43 +-
 .../src/main/java/org/apache/avro/Conversions.java |  152 +-
 .../org/apache/avro/FormattedSchemaParser.java     |   77 +
 .../main/java/org/apache/avro/JsonProperties.java  |   15 +-
 .../java/org/apache/avro/JsonSchemaFormatter.java} |   15 +-
 .../apache/avro/JsonSchemaFormatterFactory.java}   |   20 +-
 .../java/org/apache/avro/JsonSchemaParser.java     |   88 +
 .../main/java/org/apache/avro/LogicalTypes.java    |  130 +-
 .../main/java/org/apache/avro/NameValidator.java   |  104 +
 .../main/java/org/apache/avro/ParseContext.java    |  351 ++
 .../src/main/java/org/apache/avro/Protocol.java    |  185 +-
 .../src/main/java/org/apache/avro/Resolver.java    |    2 +-
 .../avro/src/main/java/org/apache/avro/Schema.java |  743 ++--
 .../main/java/org/apache/avro/SchemaBuilder.java   |    4 +-
 .../java/org/apache/avro/SchemaCompatibility.java  |    4 +-
 .../main/java/org/apache/avro/SchemaFormatter.java |  131 +
 .../org/apache/avro/SchemaFormatterFactory.java    |  106 +
 .../main/java/org/apache/avro/SchemaParser.java    |  345 ++
 .../java/org/apache/avro/SystemLimitException.java |  392 ++
 .../org/apache/avro/UnresolvedUnionException.java  |    9 +-
 .../src/main/java/org/apache/avro/data/Json.java   |   10 +-
 .../java/org/apache/avro/data/TimeConversions.java |   78 +
 .../main/java/org/apache/avro/file/BZip2Codec.java |    6 +-
 .../java/org/apache/avro/file/CodecFactory.java    |    4 +-
 .../org/apache/avro/file/DataFileConstants.java    |    1 -
 .../java/org/apache/avro/file/DataFileReader.java  |   34 +-
 .../org/apache/avro/file/DataFileReader12.java     |   10 +-
 .../java/org/apache/avro/file/DataFileStream.java  |   72 +-
 .../java/org/apache/avro/file/DataFileWriter.java  |  112 +-
 .../java/org/apache/avro/file/DeflateCodec.java    |   10 +-
 .../main/java/org/apache/avro/file/FileReader.java |    4 +-
 .../apache/avro/file/SeekableByteArrayInput.java   |    9 +-
 .../java/org/apache/avro/file/SnappyCodec.java     |   10 +-
 .../main/java/org/apache/avro/file/XZCodec.java    |   10 +-
 .../java/org/apache/avro/file/ZstandardCodec.java  |    6 +-
 .../java/org/apache/avro/generic/GenericData.java  |  247 +-
 .../apache/avro/generic/GenericDatumReader.java    |  207 +-
 .../apache/avro/generic/GenericDatumWriter.java    |    6 +-
 .../org/apache/avro/generic/PrimitivesArrays.java  |  665 +++
 .../main/java/org/apache/avro/io/BinaryData.java   |   34 +-
 .../java/org/apache/avro/io/BinaryDecoder.java     |  219 +-
 .../java/org/apache/avro/io/BinaryEncoder.java     |   46 +-
 .../org/apache/avro/io/BlockingBinaryEncoder.java  |    9 +-
 .../avro/io/BlockingDirectBinaryEncoder.java       |  141 +
 .../org/apache/avro/io/BufferedBinaryEncoder.java  |   13 +-
 .../main/java/org/apache/avro/io/DatumWriter.java  |   16 +
 .../src/main/java/org/apache/avro/io/Decoder.java  |   76 +-
 .../java/org/apache/avro/io/DecoderFactory.java    |   16 +-
 .../org/apache/avro/io/DirectBinaryDecoder.java    |   23 +-
 .../org/apache/avro/io/DirectBinaryEncoder.java    |   12 +-
 .../src/main/java/org/apache/avro/io/Encoder.java  |   58 +-
 .../java/org/apache/avro/io/EncoderFactory.java    |   92 +-
 .../java/org/apache/avro/io/FastReaderBuilder.java |   91 +-
 .../main/java/org/apache/avro/io/JsonDecoder.java  |   81 +-
 .../main/java/org/apache/avro/io/JsonEncoder.java  |   69 +-
 .../java/org/apache/avro/io/ResolvingDecoder.java  |   17 +-
 .../java/org/apache/avro/io/ValidatingDecoder.java |    7 +-
 .../java/org/apache/avro/io/ValidatingEncoder.java |    8 +-
 .../java/org/apache/avro/io/parsing/Parser.java    |    2 +-
 .../avro/io/parsing/ResolvingGrammarGenerator.java |   41 +-
 .../java/org/apache/avro/io/parsing/Symbol.java    |   25 +-
 .../io/parsing/ValidatingGrammarGenerator.java     |    2 +-
 .../apache/avro/message/BinaryMessageDecoder.java  |    2 +-
 .../org/apache/avro/message/RawMessageDecoder.java |    4 +-
 .../org/apache/avro/message/RawMessageEncoder.java |    3 +-
 .../apache/avro/path/TracingAvroTypeException.java |    4 +-
 .../java/org/apache/avro/reflect/AvroEncode.java   |    4 +-
 .../apache/avro/reflect/FieldAccessReflect.java    |   10 +-
 .../org/apache/avro/reflect/FieldAccessUnsafe.java |  366 --
 .../java/org/apache/avro/reflect/ReflectData.java  |  103 +-
 .../apache/avro/reflect/ReflectDatumReader.java    |   14 +
 .../apache/avro/reflect/ReflectDatumWriter.java    |   12 +-
 .../org/apache/avro/reflect/ReflectionUtil.java    |   38 +-
 .../apache/avro/specific/ExternalizableInput.java  |    5 -
 .../org/apache/avro/specific/SpecificData.java     |  167 +-
 .../apache/avro/specific/SpecificDatumReader.java  |   43 +-
 .../apache/avro/util/ByteBufferInputStream.java    |   16 +-
 .../apache/avro/util/ClassSecurityValidator.java   |  254 ++
 .../main/java/org/apache/avro/util/ClassUtils.java |   12 +-
 .../main/java/org/apache/avro/util/MapUtil.java    |    7 +-
 .../avro/util/NonCopyingByteArrayOutputStream.java |   90 +-
 .../main/java/org/apache/avro/util/RandomData.java |   69 +-
 .../java/org/apache/avro/util/SchemaResolver.java  |  275 ++
 .../java/org/apache/avro/util/SchemaVisitor.java   |   69 +
 .../main/java/org/apache/avro/util}/Schemas.java   |  135 +-
 .../main/java/org/apache/avro/util/TimePeriod.java |  393 ++
 .../src/main/java/org/apache/avro/util/Utf8.java   |  124 +-
 .../java/org/apache/avro/util/UtfTextUtils.java    |  247 ++
 .../org/apache/avro/util/WeakIdentityHashMap.java  |    4 +-
 .../apache/avro/util/internal/JacksonUtils.java    |   44 +-
 .../org.apache.avro.SchemaFormatterFactory}        |    6 +-
 ...ummyLogicalTypeFactory.java => CustomType.java} |   28 +-
 ...alTypeFactory.java => CustomTypeConverter.java} |   28 +-
 ...tory.java => CustomTypeLogicalTypeFactory.java} |    6 +-
 .../java/org/apache/avro/DummySchemaParser.java    |   53 +
 .../java/org/apache/avro/FooBarSpecificRecord.java |    2 +-
 .../java/org/apache/avro/GenerateBlockingData.java |    2 +-
 .../java/org/apache/avro/ParseContextTest.java     |  129 +
 .../java/org/apache/avro/SchemaFormatterTest.java  |   88 +
 .../org/apache/avro/SchemaNameValidatorTest.java   |   59 +
 .../org/apache/avro/TestBigDecimalConversion.java  |   85 +
 .../src/test/java/org/apache/avro/TestCompare.java |   37 +-
 .../test/java/org/apache/avro/TestDataFile.java    |  123 +-
 .../java/org/apache/avro/TestDataFileConcat.java   |   75 +-
 .../org/apache/avro/TestDataFileCorruption.java    |    5 +-
 .../java/org/apache/avro/TestDataFileReader.java   |  110 +-
 .../src/test/java/org/apache/avro/TestFixed.java   |   17 +-
 .../test/java/org/apache/avro/TestLogicalType.java |   45 +-
 .../test/java/org/apache/avro/TestProtocol.java    |   88 +
 .../TestReadingWritingDataInEvolvedSchemas.java    |  344 +-
 .../src/test/java/org/apache/avro/TestSchema.java  |  305 +-
 .../java/org/apache/avro/TestSchemaBuilder.java    |   25 +-
 .../java/org/apache/avro/TestSchemaCommons.java    |   17 +-
 .../org/apache/avro/TestSchemaCompatibility.java   |   28 +-
 .../avro/TestSchemaCompatibilityEnumDefaults.java  |   13 +-
 .../TestSchemaCompatibilityFixedSizeMismatch.java  |   52 +-
 .../TestSchemaCompatibilityMissingEnumSymbols.java |   45 +-
 .../TestSchemaCompatibilityMissingUnionBranch.java |  129 +-
 .../avro/TestSchemaCompatibilityNameMismatch.java  |   51 +-
 ...ompatibilityReaderFieldMissingDefaultValue.java |   43 +-
 .../avro/TestSchemaCompatibilityTypeMismatch.java  |  124 +-
 .../org/apache/avro/TestSchemaNormalization.java   |    6 +-
 .../java/org/apache/avro/TestSchemaParser.java     |  141 +
 .../org/apache/avro/TestSchemaValidateDefault.java |  152 +
 .../java/org/apache/avro/TestSchemaValidation.java |    2 +-
 .../java/org/apache/avro/TestSchemaWarnings.java   |   14 +-
 .../org/apache/avro/TestSystemLimitException.java  |  208 +
 .../test/java/org/apache/avro/TestUnionError.java  |   87 +
 .../org/apache/avro/TestUnionSelfReference.java    |   25 +-
 .../java/org/apache/avro/TestUuidConversions.java  |   72 +
 .../src/test/java/org/apache/avro/TypeEnum.java    |    2 +-
 .../org/apache/avro/data/TestTimeConversions.java  |   19 +
 .../java/org/apache/avro/file/TestAllCodecs.java   |   58 +-
 .../avro/file/TestIOExceptionDuringWrite.java      |    3 +-
 .../avro/file/TestSeekableByteArrayInput.java      |   47 +-
 .../apache/avro/file/TestSeekableInputStream.java  |   57 +
 .../GenericDataArrayTest.java}                     |   34 +-
 .../org/apache/avro/generic/GenericDataTest.java   |  262 ++
 .../apache/avro/generic/PrimitivesArraysTest.java  |  307 ++
 .../org/apache/avro/generic/TestGenericData.java   |  121 +-
 .../avro/generic/TestGenericDatumReader.java       |  569 +++
 .../avro/generic/TestGenericDatumWriter.java       |   20 +-
 .../avro/generic/TestGenericLogicalTypes.java      |  144 +-
 .../avro/io/FastReaderBuilderJavaClassTest.java    |  116 +
 .../java/org/apache/avro/io/TestBinaryData.java    |   56 +-
 .../java/org/apache/avro/io/TestBinaryDecoder.java |  640 ++-
 .../apache/avro/io/TestBinaryEncoderFidelity.java  |   42 +
 .../avro/io/TestBlockingDirectBinaryEncoder.java   |  147 +
 .../java/org/apache/avro/io/TestBlockingIO.java    |   65 +-
 .../java/org/apache/avro/io/TestBlockingIO2.java   |   38 +-
 .../test/java/org/apache/avro/io/TestEncoders.java |  110 +-
 .../avro/io/TestFastReaderBuilderClassLoading.java |  120 +
 .../java/org/apache/avro/io/TestJsonDecoder.java   |   43 +-
 .../java/org/apache/avro/io/TestResolvingIO.java   |   60 +-
 .../apache/avro/io/TestResolvingIOResolving.java   |   62 +-
 .../java/org/apache/avro/io/TestValidatingIO.java  |  115 +-
 .../org/apache/avro/io/parsing/SymbolTest.java     |    3 +-
 .../io/parsing/TestResolvingGrammarGenerator.java  |   68 +-
 .../io/parsing/TestResolvingGrammarGenerator2.java |    3 +-
 .../TestGenerateInteropSingleObjectEncoding.java   |    5 +-
 .../message/TestInteropSingleObjectEncoding.java   |    5 +-
 .../org/apache/avro/reflect/TestAvroEncode.java    |  181 +
 .../java/org/apache/avro/reflect/TestReflect.java  |  175 +-
 .../org/apache/avro/reflect/TestReflectData.java   |   15 +-
 .../avro/reflect/TestReflectDatumReader.java       |   18 +
 .../avro/reflect/TestReflectLogicalTypes.java      |  111 +-
 .../apache/avro/reflect/TestReflectionUtil.java    |   79 -
 .../avro/specific/TestRecordWithLogicalTypes.java  |   53 +-
 .../avro/specific/TestRecordWithMapsAndArrays.java |  875 ++++
 .../specific/TestRecordWithoutLogicalTypes.java    |    4 +-
 .../org/apache/avro/specific/TestSpecificData.java |   19 +
 .../avro/specific/TestSpecificRecordWithUnion.java |   36 +-
 .../avro/specific/TestSpecificToFromByteArray.java |    5 +-
 .../org/apache/avro/specific/TestUnionRecord.java  |    2 +-
 .../test/java/org/apache/avro/specific/int$.java   |  229 +
 .../util/NonCopyingByteArrayOutputStreamTest.java  |   93 +
 .../avro/util/TestClassSecurityValidator.java      |  138 +
 .../java/org/apache/avro/util/TestRandomData.java  |  225 +
 .../org/apache/avro/util/TestSchemaResolver.java   |   82 +
 .../java/org/apache/avro/util/TestSchemas.java     |  210 +
 .../test/java/org/apache/avro/util/TestUtf8.java   |   79 +-
 .../java/org/apache/avro/util/TimePeriodTest.java  |  306 ++
 .../org/apache/avro/util/UtfTextUtilsTest.java     |  132 +
 .../apache/avro/util/WeakIdentityHashMapTest.java  |   89 +
 .../avro/util/internal/TestJacksonUtils.java       |    5 +
 .../META-INF/services/org.apache.avro.Conversion}  |   17 +-
 .../services/org.apache.avro.FormattedSchemaParser |   18 +-
 ...org.apache.avro.LogicalTypes$LogicalTypeFactory |    2 +-
 .../test/resources/TestRecordWithLogicalTypes.avsc |    8 +-
 .../resources/TestRecordWithMapsAndArrays.avsc     |   47 +
 .../resources/multipleFile/ApplicationEvent.avsc   |   44 +
 .../test/resources/multipleFile/DocumentInfo.avsc  |   19 +
 .../test/resources/multipleFile/MyResponse.avsc    |   14 +
 .../avro/src/test/resources/multipleFile/README.md |    8 +
 lang/java/build.sh                                 |    7 +-
 lang/java/compiler/pom.xml                         |   70 +-
 .../apache/avro/compiler/idl/SchemaResolver.java   |   25 +-
 .../org/apache/avro/compiler/schema/Schemas.java   |    6 +-
 .../apache/avro/compiler/specific/SchemaTask.java  |   15 +-
 .../avro/compiler/specific/SpecificCompiler.java   |  399 +-
 .../javacc/org/apache/avro/compiler/idl/idl.jj     |   10 +-
 .../specific/templates/java/classic/enum.vm        |    4 +-
 .../specific/templates/java/classic/fixed.vm       |    4 +-
 .../specific/templates/java/classic/protocol.vm    |    8 +-
 .../specific/templates/java/classic/record.vm      |  106 +-
 lang/java/compiler/src/test/idl/input/bar.avpr     |    3 +-
 lang/java/compiler/src/test/idl/input/union.avdl   |   16 +
 lang/java/compiler/src/test/idl/output/import.avpr |   10 +-
 .../compiler/src/test/idl/output/nestedimport.avpr |   11 +-
 lang/java/compiler/src/test/idl/output/union.avpr  |   38 +
 .../apache/avro/compiler/schema/TestSchemas.java   |   62 +-
 .../compiler/specific/TestSpecificCompiler.java    |  291 +-
 .../apache/avro/specific/TestGeneratedCode.java    |   31 +-
 .../org/apache/avro/specific/TestSpecificData.java |   29 +-
 .../src/test/resources/full_record_v2.avsc         |    3 +-
 .../regression_error_field_in_record.avsc          |   22 +
 .../compiler/src/test/resources/simple_record.avsc |    5 +-
 lang/java/grpc/pom.xml                             |    5 +-
 lang/java/grpc/src/test/avro/TestService.avdl      |    2 +-
 lang/java/idl/pom.xml                              |  178 +
 .../src/main/java/org/apache/avro/idl/IdlFile.java |  166 +
 .../main/java/org/apache/avro/idl/IdlReader.java   | 1073 +++++
 .../org/apache/avro/idl/IdlSchemaFormatter.java}   |   37 +-
 .../avro/idl/IdlSchemaFormatterFactory.java}       |   14 +-
 .../java/org/apache/avro/idl/IdlSchemaParser.java  |   53 +
 .../main/java/org/apache/avro/idl/IdlUtils.java    |  545 +++
 .../idl/src/main/resources/META-INF}/LICENSE       |    0
 .../org.apache.avro.FormattedSchemaParser}         |    5 +-
 .../org.apache.avro.SchemaFormatterFactory}        |    5 +-
 .../src/test/idl/AnnotationOnTypeReference.avdl}   |   20 +-
 .../src/test/idl/cycle.avdl}                       |   30 +-
 .../test/idl/extra/duplicateNameErrorParsing.avdl  |   14 +
 .../idl/src/test/idl/extra/protocolSyntax.avdl     |    9 +
 lang/java/idl/src/test/idl/extra/schemaSyntax.avdl |    8 +
 .../{compiler => idl}/src/test/idl/input/bar.avpr  |    0
 .../idl/src/test/idl/input/baseball.avdl}          |   14 +-
 lang/java/idl/src/test/idl/input/baz.avsc          |    3 +
 lang/java/idl/src/test/idl/input/comments.avdl     |   64 +
 .../src/test/idl/input/cycle.avdl}                 |   30 +-
 .../java/idl/src/test/idl/input}/echo.avdl         |   20 +-
 lang/java/idl/src/test/idl/input/foo.avsc          |    3 +
 .../src/test/idl/input/forward_ref.avdl}           |   21 +-
 .../java/idl/src/test/idl/input/import.avdl        |   35 +-
 .../java/idl/src/test/idl/input/interop.avdl       |   53 +-
 .../src/test/idl/input/leading_underscore.avdl}    |   15 +-
 lang/java/idl/src/test/idl/input/mr_events.avdl    |   74 +
 .../java/idl/src/test/idl/input/namespaces.avdl    |   47 +-
 .../java/idl/src/test/idl/input/nestedimport.avdl  |   28 +-
 lang/java/idl/src/test/idl/input/player.avsc       |    8 +
 lang/java/idl/src/test/idl/input/position.avsc     |    3 +
 .../idl/src/test/idl/input/reservedwords.avdl}     |   18 +-
 .../src/test/idl/input/schema_syntax_schema.avdl}  |   41 +-
 lang/java/idl/src/test/idl/input/simple.avdl       |   90 +
 .../java/idl/src/test/idl/input/status_schema.avdl |    5 +
 .../idl/src/test/idl/input/unicode.avdl}           |   18 +-
 lang/java/idl/src/test/idl/input/union.avdl        |   16 +
 .../idl/src/test/idl/input/uuid.avdl}              |   33 +-
 .../java/idl/src/test/idl/logicalTypes.avdl        |   31 +-
 .../src/test/idl/output/baseball.avpr}             |   46 +-
 lang/java/idl/src/test/idl/output/comments.avpr    |   67 +
 lang/java/idl/src/test/idl/output/cycle.avpr       |   55 +
 lang/java/idl/src/test/idl/output/echo.avpr        |   37 +
 lang/java/idl/src/test/idl/output/forward_ref.avpr |   16 +
 .../src/test/idl/output/import.avpr                |    0
 lang/java/idl/src/test/idl/output/interop.avpr     |   94 +
 .../src/test/idl/output/leading_underscore.avpr    |   17 +
 lang/java/idl/src/test/idl/output/mr_events.avpr   |  125 +
 lang/java/idl/src/test/idl/output/namespaces.avpr  |   51 +
 .../src/test/idl/output/nestedimport.avpr          |    0
 .../src/test/idl/output/reservedwords.avpr}        |   42 +-
 .../idl/src/test/idl/output/schema_syntax.avsc     |   36 +
 lang/java/idl/src/test/idl/output/simple.avpr      |  152 +
 lang/java/idl/src/test/idl/output/status.avsc      |    9 +
 lang/java/idl/src/test/idl/output/unicode.avpr     |   17 +
 lang/java/idl/src/test/idl/output/union.avpr       |   38 +
 lang/java/idl/src/test/idl/output/uuid.avpr        |   29 +
 .../test/idl/putOnClassPath/OnTheClasspath.avdl}   |   17 +-
 .../test/idl/putOnClassPath/OnTheClasspath.avpr    |   11 +
 .../test/idl/putOnClassPath/OnTheClasspath.avsc    |    6 +
 .../idl/putOnClassPath/folder/relativePath.avdl}   |   15 +-
 .../src/test/idl/putOnClassPath/nestedtypes.avdl}  |   16 +-
 .../avro/idl/IdlSchemaFormatterFactoryTest.java    |   61 +
 .../java/org/apache/avro/idl/IdlUtilsTest.java     |  193 +
 .../test/java/org/apache/avro/idl/TestCycle.java   |   88 +
 .../java/org/apache/avro/idl/TestIdlReader.java    |  269 ++
 .../java/org/apache/avro/idl/TestLogicalTypes.java |   96 +
 .../idl/TestReferenceAnnotationNotAllowed.java     |   42 +
 .../apache/avro/util/idl_utils_test_protocol.avdl  |   45 +
 .../apache/avro/util/idl_utils_test_schema.avdl    |   35 +
 lang/java/integration-test/codegen-test/pom.xml    |    4 +-
 lang/java/integration-test/pom.xml                 |    4 +-
 .../test-custom-conversions/pom.xml                |    4 +-
 lang/java/interop-data-test/pom.xml                |  215 +
 lang/java/interop-data-test/src/it/check/pom.xml   |  187 +
 .../java/org/apache/avro/DataFileInteropTest.java  |   12 +-
 .../java/interop-data-test/src/it/generate/pom.xml |  244 ++
 lang/java/interop-data-test/src/it/settings.xml    |   51 +
 lang/java/ipc-jetty/pom.xml                        |    4 +-
 .../org/apache/avro/ipc/jetty/StaticServlet.java   |   45 -
 .../org/apache/avro/ipc/jetty/StatsServer.java     |   41 +-
 lang/java/ipc-netty/pom.xml                        |    8 +-
 .../ipc/netty/TestNettyServerWithCompression.java  |    2 +-
 lang/java/ipc/pom.xml                              |    6 +-
 .../avro/ipc/stats/static/jquery-1.4.2.min.js      |  154 -
 .../avro/ipc/stats/static/jquery-3.7.1.min.js      |    2 +
 .../apache/avro/ipc/stats/templates/statsview.vm   |    4 +-
 .../src/test/java/org/apache/avro/TestCompare.java |  126 -
 .../java/org/apache/avro/TestDataFileReflect.java  |   97 +
 .../java/org/apache/avro/TestDataFileSpecific.java |   63 +-
 .../java/org/apache/avro/TestProtocolReflect.java  |    5 +
 .../src/test/java/org/apache/avro/TestSchema.java  |  207 +-
 .../compiler/specific/TestSpecificCompiler.java    |   70 +-
 .../ipc/src/test/java/org/apache/avro/io/Perf.java |   17 +-
 lang/java/java17-test/pom.xml                      |   68 +
 .../org/apache/avro/reflect/TestJavaRecords.java   |  108 +
 lang/java/mapred/pom.xml                           |    8 +-
 .../avro/hadoop/file/HadoopCodecFactory.java       |    9 +-
 .../avro/hadoop/io/AvroDatumConverterFactory.java  |    2 +-
 .../apache/avro/hadoop/io/AvroSequenceFile.java    |    6 +-
 .../apache/avro/hadoop/io/AvroSerialization.java   |    9 +-
 .../main/java/org/apache/avro/mapred/AvroJob.java  |    7 +-
 .../org/apache/avro/mapred/AvroMultipleInputs.java |    5 +-
 .../org/apache/avro/mapred/TaggedInputSplit.java   |    5 +-
 .../java/org/apache/avro/mapreduce/AvroJob.java    |    9 +-
 .../avro/hadoop/file/TestHadoopCodecFactory.java   |    7 +
 .../hadoop/io/TestAvroDatumConverterFactory.java   |   15 +
 .../avro/mapred/tether/TestWordCountTether.java    |    1 +
 .../org/apache/avro/mapred/tether/TetherTask.java  |    5 +-
 .../avro/mapreduce/TestAvroMultipleOutputs.java    |    5 +-
 .../mapreduce/TestAvroMultipleOutputsSyncable.java |    5 +-
 .../org/apache/avro/mapreduce/TestWordCount.java   |    3 +-
 lang/java/maven-plugin/pom.xml                     |   15 +-
 .../org/apache/avro/mojo/AbstractAvroMojo.java     |  173 +-
 .../mojo/{IDLProtocolMojo.java => IDLMojo.java}    |   60 +-
 .../java/org/apache/avro/mojo/IDLProtocolMojo.java |   96 +-
 .../java/org/apache/avro/mojo/ProtocolMojo.java    |   29 +-
 .../main/java/org/apache/avro/mojo/SchemaMojo.java |   65 +-
 .../src/test/avro/AvdlClasspathImport.avdl         |   16 +-
 .../maven-plugin/src/test/avro/extends/Custom.avsc |   18 +
 .../avro/multipleSchemas/ApplicationEvent.avsc     |   44 +
 .../test/avro/multipleSchemas/DocumentInfo.avsc    |   19 +
 .../src/test/avro/multipleSchemas/MyResponse.avsc  |   14 +
 .../src/test/avro/multipleSchemas/README.md        |    8 +
 .../org/apache/avro/custom/CustomRecordBase.java}  |   12 +-
 .../java/org/apache/avro/mojo/TestIDLMojo.java     |  128 +
 .../org/apache/avro/mojo/TestIDLProtocolMojo.java  |   82 -
 .../java/org/apache/avro/mojo/TestInduceMojo.java  |    3 +-
 .../java/org/apache/avro/mojo/TestSchemaMojo.java  |   56 +-
 .../{pom.xml => pom-incremental-compilation.xml}   |    6 +-
 .../unit/idl/pom-injecting-velocity-tools.xml      |    2 +-
 .../resources/unit/idl/{pom.xml => pom-javacc.xml} |    1 +
 .../src/test/resources/unit/idl/pom.xml            |    3 +-
 .../unit/protocol/pom-injecting-velocity-tools.xml |    2 +-
 .../src/test/resources/unit/protocol/pom.xml       |    2 +-
 .../pom.xml => schema/pom-customExtends.xml}       |   16 +-
 .../pom.xml => schema/pom-multiple-schema.xml}     |   10 +-
 .../schema/{pom.xml => pom-nonexistent-file.xml}   |    5 +-
 .../{pom.xml => pom-nonexistent-second-file.xml}   |    4 +-
 .../src/test/resources/unit/schema/pom.xml         |    2 +-
 lang/java/perf/pom.xml                             |   25 +-
 .../avro/perf/test/basic/ExtendedEnumTest.java     |    5 +-
 .../avro/perf/test/basic/UnchangedUnionTest.java   |    5 +-
 .../perf/test/generic/GenericNestedFakeTest.java   |    5 +-
 .../avro/perf/test/generic/GenericNestedTest.java  |    5 +-
 .../avro/perf/test/generic/GenericStringTest.java  |    5 +-
 .../apache/avro/perf/test/generic/GenericTest.java |    5 +-
 .../perf/test/generic/GenericWithDefaultTest.java  |    5 +-
 .../test/generic/GenericWithOutOfOrderTest.java    |    5 +-
 .../test/generic/GenericWithPromotionTest.java     |    5 +-
 .../perf/test/generic/MinBytesPerElementTest.java  |  287 ++
 .../apache/avro/perf/test/record/RecordTest.java   |    3 +-
 .../perf/test/record/RecordWithDefaultTest.java    |    5 +-
 .../perf/test/record/RecordWithOutOfOrderTest.java |    5 +-
 .../perf/test/record/RecordWithPromotionTest.java  |    5 +-
 .../avro/perf/test/record/ResolvingRecordTest.java |    5 +-
 .../perf/test/record/ValidatingRecordTest.java     |    3 +-
 .../perf/test/reflect/ReflectBigRecordTest.java    |    5 +-
 .../perf/test/reflect/ReflectDoubleArrayTest.java  |    5 +-
 .../perf/test/reflect/ReflectFloatArrayTest.java   |    5 +-
 .../perf/test/reflect/ReflectIntArrayTest.java     |    5 +-
 .../reflect/ReflectLargeFloatArrayBlockedTest.java |    5 +-
 .../test/reflect/ReflectLargeFloatArrayTest.java   |    5 +-
 .../perf/test/reflect/ReflectLongArrayTest.java    |    5 +-
 .../test/reflect/ReflectNestedFloatArrayTest.java  |    5 +-
 .../test/reflect/ReflectNestedObjectArrayTest.java |    5 +-
 .../avro/perf/test/reflect/ReflectRecordTest.java  |    5 +-
 lang/java/pom.xml                                  |  140 +-
 lang/java/protobuf/pom.xml                         |   12 +-
 .../org/apache/avro/protobuf/ProtoConversions.java |   44 +-
 .../org/apache/avro/protobuf/ProtobufData.java     |   16 +-
 .../org/apache/avro/protobuf/TestProtobuf.java     |   14 +
 .../org/apache/avro/protobuf/multiplefiles/A.java  |   12 +
 .../apache/avro/protobuf/multiplefiles/Foo.java    | 1539 ++++---
 .../avro/protobuf/multiplefiles/FooOrBuilder.java  |   89 +
 .../org/apache/avro/protobuf/multiplefiles/M.java  |  194 +-
 .../avro/protobuf/multiplefiles/MOrBuilder.java    |    1 +
 .../protobuf/multiplefiles/TestMultipleFiles.java  |   28 +-
 .../java/org/apache/avro/protobuf/noopt/Test.java  | 1857 ++++----
 .../org/apache/avro/protobuf/noopt/TestProto3.java |  883 ++++
 lang/java/protobuf/src/test/protobuf/test.proto    |    2 +
 .../protobuf/src/test/protobuf/test_proto3.proto}  |   22 +-
 lang/java/thrift/pom.xml                           |   30 +-
 .../java/org/apache/avro/thrift/ThriftData.java    |    6 +-
 lang/java/tools/pom.xml                            |   18 +-
 .../apache/avro/tool/BinaryFragmentToJsonTool.java |    3 +-
 .../org/apache/avro/tool/CreateRandomFileTool.java |    3 +-
 .../org/apache/avro/tool/DataFileReadTool.java     |   28 +-
 .../org/apache/avro/tool/DataFileWriteTool.java    |    2 +-
 .../java/org/apache/avro/tool/FromTextTool.java    |    4 +-
 .../org/apache/avro/tool/IdlToSchemataTool.java    |   59 +-
 .../main/java/org/apache/avro/tool/IdlTool.java    |   65 +-
 .../apache/avro/tool/JsonToBinaryFragmentTool.java |    3 +-
 .../apache/avro/tool/SchemaFingerprintTool.java    |    7 +-
 .../apache/avro/tool/SchemaNormalizationTool.java  |    3 +-
 .../org/apache/avro/tool/SpecificCompilerTool.java |   62 +-
 .../main/java/org/apache/avro/tool/TetherTool.java |    3 +-
 .../main/java/org/apache/avro/tool/ToTextTool.java |    4 +-
 .../apache/avro/tool/TrevniCreateRandomTool.java   |    3 +-
 .../src/main/java/org/apache/avro/tool/Util.java   |   14 +-
 .../jetbrainsnullsafeannotationsfieldstest.avsc    |    8 +
 .../jspecifynullsafeannotationsfieldstest.avsc     |    8 +
 .../input/optionalgettersnullablefieldstest.avsc   |    3 +-
 .../src/test/compiler/output-string/Position.java  |    5 +-
 .../avro/examples/baseball/FieldTest.java          |   50 +-
 .../JSpecifyNullSafeAnnotationsFieldsTest.java}    |  288 +-
 .../JetBrainsNullSafeAnnotationsFieldsTest.java}   |  288 +-
 .../avro/examples/baseball/Player.java             |   42 +-
 .../avro/examples/baseball/Position.java           |    4 +-
 .../avro/examples/baseball/Proto.java              |    2 +-
 .../output/AddExtraOptionalGettersTest.java        |   34 +-
 .../src/test/compiler/output/NoSettersTest.java    |   34 +-
 .../output/OptionalGettersAllFieldsTest.java       |   42 +-
 .../output/OptionalGettersNullableFieldsTest.java  |  122 +-
 .../tools/src/test/compiler/output/Player.java     |   42 +-
 .../tools/src/test/compiler/output/Position.java   |    4 +-
 .../tools/src/test/idl/schema.avdl}                |   25 +-
 lang/java/tools/src/test/idl/schema.avsc           |   36 +
 .../java/org/apache/avro/tool/TestCatTool.java     |    5 +-
 .../apache/avro/tool/TestCreateRandomFileTool.java |   27 +-
 .../apache/avro/tool/TestDataFileRepairTool.java   |    2 +-
 .../apache/avro/tool/TestIdlToSchemataTool.java    |   29 +-
 .../java/org/apache/avro/tool/TestIdlTool.java     |   45 +-
 .../org/apache/avro/tool/TestRpcProtocolTool.java  |   51 +-
 .../apache/avro/tool/TestSpecificCompilerTool.java |   30 +
 .../java/org/apache/avro/tool/TestTetherTool.java  |    1 +
 .../org/apache/avro/tool/TestToTrevniTool.java     |   19 +-
 lang/java/trevni/avro/pom.xml                      |    4 +-
 .../org/apache/trevni/avro/AvroColumnReader.java   |    3 +-
 .../java/org/apache/trevni/avro/TestCases.java     |    5 +-
 .../org/apache/trevni/avro/TestEvolvedSchema.java  |    7 +-
 .../java/org/apache/trevni/avro/TestShredder.java  |   36 +-
 .../java/org/apache/trevni/avro/TestWordCount.java |    3 +-
 .../trevni/avro/mapreduce/TestKeyWordCount.java    |    3 +-
 lang/java/trevni/core/pom.xml                      |    4 +-
 .../test/java/org/apache/trevni/TestAllCodecs.java |   29 +-
 .../java/org/apache/trevni/TestColumnFile.java     |  129 +-
 lang/java/trevni/doc/pom.xml                       |    2 +-
 lang/java/trevni/pom.xml                           |    6 +-
 lang/js/.gitignore                                 |    1 +
 lang/js/lib/schemas.js                             |   21 +-
 lang/js/package-lock.json                          | 3790 +++++++++-------
 lang/js/package.json                               |   20 +-
 lang/js/test/test_schemas.js                       |  161 +
 lang/perl/Changes                                  |   28 +
 lang/perl/MANIFEST                                 |    1 -
 lang/perl/Makefile.PL                              |   35 +-
 lang/perl/bin/avro-to-json                         |    4 +-
 lang/perl/build.sh                                 |    7 +-
 lang/perl/lib/Avro/BinaryDecoder.pm                |    8 +-
 lang/perl/lib/Avro/BinaryEncoder.pm                |   83 +-
 lang/perl/lib/Avro/DataFileReader.pm               |    4 +-
 lang/perl/lib/Avro/Protocol.pm                     |    4 +-
 lang/perl/lib/Avro/Schema.pm                       |   34 +-
 lang/perl/t/01_schema.t                            |   34 +-
 lang/perl/t/02_bin_encode.t                        |  115 +-
 lang/perl/t/03_bin_decode.t                        |   35 +-
 lang/perl/t/04_datafile.t                          |   17 +
 lang/perl/xt/interop.t                             |    7 +-
 lang/perl/xt/schema.t                              |    2 +-
 lang/php/.gitignore                                |    2 +
 lang/php/.php-cs-fixer.dist.php                    |  103 +
 lang/php/README.md                                 |    8 +-
 lang/php/build.sh                                  |   19 +-
 lang/php/examples/write_read.php                   |    6 +-
 lang/php/lib/Avro.php                              |   38 +-
 lang/php/lib/AvroDebug.php                         |   86 +-
 lang/php/lib/AvroException.php                     |    1 -
 lang/php/lib/AvroGMP.php                           |  117 +-
 lang/php/lib/AvroIO.php                            |   55 +-
 lang/php/lib/AvroNotImplementedException.php       |    1 -
 lang/php/lib/AvroUtil.php                          |   11 +-
 lang/php/lib/DataFile/AvroDataIO.php               |  110 +-
 lang/php/lib/DataFile/AvroDataIOException.php      |    1 -
 lang/php/lib/DataFile/AvroDataIOReader.php         |  265 +-
 lang/php/lib/DataFile/AvroDataIOWriter.php         |  242 +-
 lang/php/lib/Datum/AvroIOBinaryDecoder.php         |  205 +-
 lang/php/lib/Datum/AvroIOBinaryEncoder.php         |  135 +-
 lang/php/lib/Datum/AvroIODatumReader.php           |  548 +--
 lang/php/lib/Datum/AvroIODatumWriter.php           |  223 +-
 lang/php/lib/Datum/AvroIOSchemaMatchException.php  |   14 +-
 lang/php/lib/Datum/AvroIOTypeException.php         |    2 -
 lang/php/lib/Datum/Type/AvroDuration.php           |  111 +
 lang/php/lib/IO/AvroFile.php                       |   86 +-
 lang/php/lib/IO/AvroIOException.php                |    1 -
 lang/php/lib/IO/AvroStringIO.php                   |  176 +-
 lang/php/lib/Protocol/AvroProtocol.php             |   80 +-
 lang/php/lib/Protocol/AvroProtocolMessage.php      |   57 +-
 ...emaParseException.php => AvroAliasedSchema.php} |   11 +-
 lang/php/lib/Schema/AvroArraySchema.php            |   44 +-
 lang/php/lib/Schema/AvroEnumSchema.php             |   33 +-
 lang/php/lib/Schema/AvroField.php                  |  229 +-
 lang/php/lib/Schema/AvroFixedSchema.php            |   91 +-
 lang/php/lib/Schema/AvroLogicalType.php            |  136 +
 lang/php/lib/Schema/AvroMapSchema.php              |   47 +-
 lang/php/lib/Schema/AvroName.php                   |  120 +-
 lang/php/lib/Schema/AvroNamedSchema.php            |   69 +-
 lang/php/lib/Schema/AvroNamedSchemata.php          |   94 +-
 lang/php/lib/Schema/AvroPrimitiveSchema.php        |   87 +-
 lang/php/lib/Schema/AvroRecordSchema.php           |  138 +-
 lang/php/lib/Schema/AvroSchema.php                 |  475 +-
 lang/php/lib/Schema/AvroSchemaParseException.php   |    1 -
 lang/php/lib/Schema/AvroUnionSchema.php            |   60 +-
 lang/php/lib/autoload.php                          |   72 +-
 lang/php/monorepo.json                             |   16 -
 lang/php/phpstan-baseline.neon                     |  148 +
 lang/{py/pyproject.toml => php/phpstan.neon}       |   20 +-
 lang/php/phpunit.xml                               |   55 +-
 lang/php/test/DataFileTest.php                     |  265 +-
 lang/php/test/DatumIOTest.php                      |  491 ++-
 lang/php/test/FloatIntEncodingTest.php             |  543 +--
 lang/php/test/IODatumReaderTest.php                |  295 +-
 lang/php/test/InterOpTest.php                      |   41 +-
 lang/php/test/LongEncodingTest.php                 |  259 +-
 lang/php/test/NameTest.php                         |   62 +-
 lang/php/test/ProtocolFileTest.php                 |  790 ++--
 lang/php/test/SchemaTest.php                       | 1902 +++++---
 lang/php/test/StringIOTest.php                     |   18 +-
 lang/php/test/generate_interop_data.php            |   15 +-
 lang/php/test/test_helper.php                      |   10 +-
 lang/py/README.md                                  |    2 +-
 lang/py/avro/__main__.py                           |    1 +
 lang/py/avro/constants.py                          |    1 -
 lang/py/avro/datafile.py                           |   13 +-
 lang/py/avro/errors.py                             |    4 +
 lang/py/avro/io.py                                 |   20 +-
 lang/py/avro/ipc.py                                |   67 +-
 lang/py/avro/name.py                               |    1 +
 lang/py/avro/schema.py                             |  211 +-
 lang/py/avro/test/gen_interop_data.py              |    4 +-
 lang/py/avro/test/sample_http_server.py            |   13 +-
 lang/py/avro/test/test_io.py                       |  102 +-
 lang/py/avro/test/test_protocol.py                 |    2 +-
 lang/py/avro/test/test_schema.py                   |  306 +-
 lang/py/avro/test/test_script.py                   |   17 +-
 lang/py/avro/test/test_tether_task.py              |    3 +-
 lang/py/avro/test/test_tether_task_runner.py       |    8 +-
 lang/py/avro/test/test_tether_word_count.py        |   16 +-
 lang/py/avro/tether/__init__.py                    |   10 +
 lang/py/avro/tether/tether_task.py                 |   22 +-
 lang/py/avro/tether/tether_task_runner.py          |    8 +-
 lang/py/avro/tool.py                               |    3 +-
 lang/py/avro/utils.py                              |    2 +
 lang/py/build.sh                                   |   70 +-
 lang/{java/build.sh => py/docs/Makefile}           |   50 +-
 lang/py/docs/make.bat                              |   50 +
 lang/py/docs/source/_static/.gitignore             |    0
 lang/py/docs/source/automodule.rst                 |   54 +
 lang/py/docs/source/conf.py                        |   47 +
 .../py/docs/source/index.rst                       |   34 +-
 lang/py/docs/source/intro.rst                      |   29 +
 lang/py/pyproject.toml                             |   70 +-
 lang/py/setup.cfg                                  |   83 -
 lang/py/setup.py                                   |    2 -
 lang/py/tox.ini                                    |   86 -
 lang/py/uv.lock                                    | 1009 +++++
 lang/ruby/lib/avro/io.rb                           |   28 +-
 lang/ruby/lib/avro/logical_types.rb                |   35 +-
 lang/ruby/lib/avro/schema.rb                       |   18 +-
 lang/ruby/lib/avro/schema_validator.rb             |   16 +-
 lang/ruby/test/random_data.rb                      |    2 +
 lang/ruby/test/test_io.rb                          |    5 +-
 lang/ruby/test/test_logical_types.rb               |  136 +-
 lang/ruby/test/test_schema.rb                      |   33 +
 lang/rust/.deactivate.sh                           |   22 -
 lang/rust/.gitignore                               |    8 -
 lang/rust/.pre-commit-config.yaml                  |   33 -
 lang/rust/.requirements-precommit.txt              |    1 -
 lang/rust/CHANGELOG.md                             |  166 -
 lang/rust/Cargo.lock                               | 1287 ------
 lang/rust/Cargo.toml                               |   27 -
 lang/rust/Makefile                                 |  105 -
 lang/rust/README.md                                |   42 +-
 lang/rust/README.tpl                               |   19 -
 lang/rust/avro/Cargo.toml                          |   92 -
 lang/rust/avro/README.md                           |  658 ---
 lang/rust/avro/benches/quickstop-null.avro         |  Bin 166053 -> 0 bytes
 lang/rust/avro/benches/serde.rs                    |  335 --
 lang/rust/avro/benches/serde_json.rs               |   79 -
 lang/rust/avro/benches/single.rs                   |  193 -
 lang/rust/avro/examples/benchmark.rs               |  154 -
 lang/rust/avro/examples/generate_interop_data.rs   |  111 -
 lang/rust/avro/examples/test_interop_data.rs       |   79 -
 .../test_interop_single_object_encoding.rs         |   75 -
 lang/rust/avro/examples/to_value.rs                |   29 -
 lang/rust/avro/src/codec.rs                        |  279 --
 lang/rust/avro/src/de.rs                           | 1255 ------
 lang/rust/avro/src/decimal.rs                      |  125 -
 lang/rust/avro/src/decode.rs                       |  784 ----
 lang/rust/avro/src/duration.rs                     |  155 -
 lang/rust/avro/src/encode.rs                       |  839 ----
 lang/rust/avro/src/error.rs                        |  454 --
 lang/rust/avro/src/lib.rs                          |  986 -----
 lang/rust/avro/src/rabin.rs                        |  162 -
 lang/rust/avro/src/reader.rs                       |  963 -----
 lang/rust/avro/src/schema.rs                       | 4537 --------------------
 lang/rust/avro/src/schema_compatibility.rs         |  903 ----
 lang/rust/avro/src/ser.rs                          | 1028 -----
 lang/rust/avro/src/types.rs                        | 2641 ------------
 lang/rust/avro/src/util.rs                         |  287 --
 lang/rust/avro/src/writer.rs                       | 1306 ------
 lang/rust/avro/tests/append_to_existing.rs         |   86 -
 lang/rust/avro/tests/io.rs                         |  319 --
 lang/rust/avro/tests/schema.rs                     | 1386 ------
 lang/rust/avro/tests/shared.rs                     |  147 -
 .../rust/avro/tests/to_from_avro_datum_schemata.rs |   84 -
 lang/rust/avro_derive/Cargo.toml                   |   45 -
 lang/rust/avro_derive/README.md                    |   69 -
 lang/rust/avro_derive/src/lib.rs                   |  524 ---
 lang/rust/avro_derive/tests/derive.rs              | 1563 -------
 lang/rust/avro_test_helper/Cargo.toml              |   39 -
 lang/rust/avro_test_helper/README.md               |   51 -
 lang/rust/avro_test_helper/src/lib.rs              |   51 -
 lang/rust/avro_test_helper/src/logger.rs           |   79 -
 lang/rust/build.sh                                 |   69 -
 lang/rust/fuzz/.gitignore                          |    4 -
 lang/rust/fuzz/Cargo.toml                          |   49 -
 lang/rust/fuzz/corpus/roundtrip/infinite_iteration |  Bin 132 -> 0 bytes
 .../fuzz/corpus/roundtrip/negate_with_overflow     |  Bin 17 -> 0 bytes
 lang/rust/fuzz/corpus/roundtrip/unchecked_resize   |  Bin 58 -> 0 bytes
 lang/rust/fuzz/fuzz_targets/roundtrip.rs           |  117 -
 lang/rust/migration_guide.md                       |  107 -
 lang/rust/rustfmt.toml                             |   19 -
 lang/rust/wasm-demo/Cargo.toml                     |   48 -
 lang/rust/wasm-demo/README.md                      |   28 -
 lang/rust/wasm-demo/tests/demos.rs                 |   86 -
 pom.xml                                            |  148 +-
 share/VERSION.txt                                  |    2 +-
 share/docker/Dockerfile                            |  142 +-
 share/docker/run-tests.sh                          |    8 +-
 share/editors/README.txt                           |    5 +
 share/idl_grammar/org/apache/avro/idl/Idl.g4       |  257 ++
 share/test/data/weather-deflate.avro               |  Bin 0 -> 319 bytes
 share/test/data/weather-zstd.avro                  |  Bin 0 -> 333 bytes
 share/test/interop/bin/test_rpc_interop.sh         |    2 +-
 share/test/schemas/contexts.avdl                   |    2 +-
 share/test/schemas/echo.avdl                       |    2 +-
 share/test/schemas/fooBar.avsc                     |   21 +
 share/test/schemas/http.avdl                       |    2 +-
 share/test/schemas/nestedNullable.avdl             |    2 +-
 share/test/schemas/schemaevolution.avdl            |    2 +-
 share/test/schemas/social.avdl                     |    2 +-
 share/test/schemas/specialtypes.avdl               |    2 +-
 share/test/schemas/stringables.avdl                |    2 +-
 1040 files changed, 52608 insertions(+), 42593 deletions(-)

diff --cc lang/py/avro/schema.py
index 2eb231402a,018f74debe..a35ab1d471
--- a/lang/py/avro/schema.py
+++ b/lang/py/avro/schema.py
@@@ -587,16 -715,9 +715,18 @@@ class EnumSchema(EqualByPropsMixin, Nam
              return symbols
          raise Exception
  
 +    @property
 +    def default(self) -> Union[str, None]:
 +        symbol = self.get_prop("default")
 +        if isinstance(symbol, str):
 +            return symbol
 +        if symbol is None:
 +            return None
 +        raise Exception
 +
-     doc = property(lambda self: self.get_prop("doc"))
+     @property
+     def doc(self):
+         return self.get_prop("doc")
  
      def match(self, writer):
          """Return True if the current schema (as reader) matches the writer 
schema.
diff --cc lang/py/avro/test/test_io.py
index 7d634d1b28,41a0e366ba..41d7f827cf
--- a/lang/py/avro/test/test_io.py
+++ b/lang/py/avro/test/test_io.py
@@@ -638,122 -697,23 +697,133 @@@ class TestMisc(unittest.TestCase)
          assert str(exc.exception) == 'The datum "5.0" provided for "foo" is 
not an example of the schema "long"'
  
      def test_type_exception_record(self) -> None:
-         writers_schema = avro.schema.parse(json.dumps({"type": "record", 
"name": "Test", "fields": [{"name": "foo", "type": "long"}]}))
+         writers_schema = avro.schema.parse(
+             json.dumps(
+                 {
+                     "type": "record",
+                     "name": "Test",
+                     "fields": [{"name": "foo", "type": "long"}],
+                 }
+             )
+         )
          datum_to_write = ("foo", 5.0)
  
-         with self.assertRaisesRegex(avro.errors.AvroTypeException, r"The 
datum \".*\" provided for \".*\" is not an example of the schema [\s\S]*"):
+         with self.assertRaisesRegex(
+             avro.errors.AvroTypeException,
+             r"The datum \".*\" provided for \".*\" is not an example of the 
schema [\s\S]*",
+         ):
              write_datum(datum_to_write, writers_schema)
  
 +    def test_can_read_future_enum_symbol_with_default(self) -> None:
 +        default_symbol = "unknown"
 +        future_symbol = "crc32_be"
 +
 +        readers_schema = avro.schema.parse(
 +            json.dumps(
 +                {
 +                    "fields": [
 +                        {
 +                            "name": "checksum_algorithm",
 +                            "type": {
 +                                "name": "ChecksumAlgorithm",
 +                                "symbols": [default_symbol, "xxhash3_64_be"],
 +                                "type": "enum",
 +                                "default": default_symbol,
 +                            },
 +                        },
 +                    ],
 +                    "name": "Test",
 +                    "type": "record",
 +                }
 +            )
 +        )
 +        # Writer adds the "crc32_be" symbol.
 +        writers_schema = avro.schema.parse(
 +            json.dumps(
 +                {
 +                    "fields": [
 +                        {
 +                            "name": "checksum_algorithm",
 +                            "type": {
 +                                "name": "ChecksumAlgorithm",
 +                                "symbols": [
 +                                    "unknown",
 +                                    "xxhash3_64_be",
 +                                    future_symbol,
 +                                ],
 +                                "type": "enum",
 +                                "default": default_symbol,
 +                            },
 +                        }
 +                    ],
 +                    "name": "Test",
 +                    "type": "record",
 +                }
 +            )
 +        )
 +
 +        datum_to_write = {"checksum_algorithm": future_symbol}
 +
 +        buffer, encoder, datum_writer = write_datum(datum_to_write, 
writers_schema)
 +        buffer.seek(0)
 +        decoder = avro.io.BinaryDecoder(buffer)
 +        reader = avro.io.DatumReader(readers_schema)
 +        datum_read = reader.read(decoder)
 +        self.assertEqual(datum_read, {"checksum_algorithm": default_symbol})
 +
 +    def test_raises_error_for_future_enum_symbol_without_default(self) -> 
None:
 +        future_symbol = "crc32_be"
 +
 +        readers_schema = avro.schema.parse(
 +            json.dumps(
 +                {
 +                    "fields": [
 +                        {
 +                            "name": "checksum_algorithm",
 +                            "type": {
 +                                "name": "ChecksumAlgorithm",
 +                                "symbols": ["xxhash3_64_be"],
 +                                "type": "enum",
 +                            },
 +                        },
 +                    ],
 +                    "name": "Test",
 +                    "type": "record",
 +                }
 +            )
 +        )
 +        # Writer adds the "crc32_be" symbol.
 +        writers_schema = avro.schema.parse(
 +            json.dumps(
 +                {
 +                    "fields": [
 +                        {
 +                            "name": "checksum_algorithm",
 +                            "type": {
 +                                "name": "ChecksumAlgorithm",
 +                                "symbols": [
 +                                    "xxhash3_64_be",
 +                                    future_symbol,
 +                                ],
 +                                "type": "enum",
 +                            },
 +                        }
 +                    ],
 +                    "name": "Test",
 +                    "type": "record",
 +                }
 +            )
 +        )
 +
 +        datum_to_write = {"checksum_algorithm": future_symbol}
 +
 +        buffer, encoder, datum_writer = write_datum(datum_to_write, 
writers_schema)
 +        buffer.seek(0)
 +        decoder = avro.io.BinaryDecoder(buffer)
 +        reader = avro.io.DatumReader(readers_schema)
 +        with self.assertRaises(avro.errors.SchemaResolutionException):
 +            reader.read(decoder)
 +
  
  def load_tests(loader: unittest.TestLoader, default_tests: None, pattern: 
None) -> unittest.TestSuite:
      """Generate test cases across many test schema."""

Reply via email to