avrotize 2.22.0__tar.gz → 2.22.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. {avrotize-2.22.0 → avrotize-2.22.1}/PKG-INFO +1 -1
  2. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/_version.py +3 -3
  3. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojsons.py +25 -3
  4. {avrotize-2.22.0 → avrotize-2.22.1}/LICENSE +0 -0
  5. {avrotize-2.22.0 → avrotize-2.22.1}/README.md +0 -0
  6. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/__init__.py +0 -0
  7. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/__main__.py +0 -0
  8. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/asn1toavro.py +0 -0
  9. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotize.py +0 -0
  10. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp/CMakeLists.txt.jinja +0 -0
  11. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp/build.bat.jinja +0 -0
  12. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp/build.sh.jinja +0 -0
  13. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp/dataclass_body.jinja +0 -0
  14. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp/vcpkg.json.jinja +0 -0
  15. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocpp.py +0 -0
  16. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/README.md.jinja +0 -0
  17. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/class_test.cs.jinja +0 -0
  18. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/dataclass_core.jinja +0 -0
  19. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/enum_test.cs.jinja +0 -0
  20. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/project.csproj.jinja +0 -0
  21. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/project.sln.jinja +0 -0
  22. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/run_coverage.ps1.jinja +0 -0
  23. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/run_coverage.sh.jinja +0 -0
  24. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp/testproject.csproj.jinja +0 -0
  25. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsharp.py +0 -0
  26. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotocsv.py +0 -0
  27. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotodatapackage.py +0 -0
  28. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotodb.py +0 -0
  29. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo/go_enum.jinja +0 -0
  30. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo/go_helpers.jinja +0 -0
  31. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo/go_struct.jinja +0 -0
  32. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo/go_test.jinja +0 -0
  33. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo/go_union.jinja +0 -0
  34. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotogo.py +0 -0
  35. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotographql.py +0 -0
  36. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotoiceberg.py +0 -0
  37. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojava/class_test.java.jinja +0 -0
  38. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojava/enum_test.java.jinja +0 -0
  39. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojava/testproject.pom.jinja +0 -0
  40. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojava.py +0 -0
  41. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojs.py +0 -0
  42. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotojstruct.py +0 -0
  43. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotokusto.py +0 -0
  44. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotomd/README.md.jinja +0 -0
  45. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotomd.py +0 -0
  46. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotools.py +0 -0
  47. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotoparquet.py +0 -0
  48. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotoproto.py +0 -0
  49. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython/dataclass_core.jinja +0 -0
  50. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython/enum_core.jinja +0 -0
  51. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython/pyproject_toml.jinja +0 -0
  52. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython/test_class.jinja +0 -0
  53. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython/test_enum.jinja +0 -0
  54. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotopython.py +0 -0
  55. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotorust/dataclass_enum.rs.jinja +0 -0
  56. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotorust/dataclass_struct.rs.jinja +0 -0
  57. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotorust/dataclass_union.rs.jinja +0 -0
  58. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotorust.py +0 -0
  59. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/class_core.ts.jinja +0 -0
  60. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/class_test.ts.jinja +0 -0
  61. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/enum_core.ts.jinja +0 -0
  62. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/gitignore.jinja +0 -0
  63. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/index.ts.jinja +0 -0
  64. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/package.json.jinja +0 -0
  65. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots/tsconfig.json.jinja +0 -0
  66. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotots.py +0 -0
  67. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/avrotoxsd.py +0 -0
  68. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/cddltostructure.py +0 -0
  69. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/commands.json +0 -0
  70. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/common.py +0 -0
  71. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/constants.py +0 -0
  72. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/csvtoavro.py +0 -0
  73. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/datapackagetoavro.py +0 -0
  74. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/cpp/vcpkg/vcpkg.json +0 -0
  75. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/cs/net90/dependencies.csproj +0 -0
  76. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/go/go121/go.mod +0 -0
  77. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/java/jdk21/pom.xml +0 -0
  78. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/python/py312/requirements.txt +0 -0
  79. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/rust/stable/Cargo.toml +0 -0
  80. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependencies/typescript/node22/package.json +0 -0
  81. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependency_resolver.py +0 -0
  82. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/dependency_version.py +0 -0
  83. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/generic/generic.avsc +0 -0
  84. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/jsonstoavro.py +0 -0
  85. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/jsonstostructure.py +0 -0
  86. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/jstructtoavro.py +0 -0
  87. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/kstructtoavro.py +0 -0
  88. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/kustotoavro.py +0 -0
  89. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/openapitostructure.py +0 -0
  90. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/parquettoavro.py +0 -0
  91. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/proto2parser.py +0 -0
  92. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/proto3parser.py +0 -0
  93. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototoavro.py +0 -0
  94. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/any.avsc +0 -0
  95. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/api.avsc +0 -0
  96. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/duration.avsc +0 -0
  97. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/field_mask.avsc +0 -0
  98. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/struct.avsc +0 -0
  99. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/timestamp.avsc +0 -0
  100. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/type.avsc +0 -0
  101. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/prototypes/wrappers.avsc +0 -0
  102. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocddl.py +0 -0
  103. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp/CMakeLists.txt.jinja +0 -0
  104. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp/build.bat.jinja +0 -0
  105. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp/build.sh.jinja +0 -0
  106. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp/dataclass_body.jinja +0 -0
  107. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp/vcpkg.json.jinja +0 -0
  108. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocpp.py +0 -0
  109. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/class_test.cs.jinja +0 -0
  110. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/dataclass_core.jinja +0 -0
  111. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/enum_test.cs.jinja +0 -0
  112. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/json_structure_converters.cs.jinja +0 -0
  113. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/program.cs.jinja +0 -0
  114. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/project.csproj.jinja +0 -0
  115. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/project.sln.jinja +0 -0
  116. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/testproject.csproj.jinja +0 -0
  117. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp/tuple_converter.cs.jinja +0 -0
  118. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsharp.py +0 -0
  119. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretocsv.py +0 -0
  120. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretodatapackage.py +0 -0
  121. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretodb.py +0 -0
  122. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo/go_enum.jinja +0 -0
  123. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo/go_helpers.jinja +0 -0
  124. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo/go_interface.jinja +0 -0
  125. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo/go_struct.jinja +0 -0
  126. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo/go_test.jinja +0 -0
  127. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretogo.py +0 -0
  128. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretographql.py +0 -0
  129. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretoiceberg.py +0 -0
  130. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/choice_core.jinja +0 -0
  131. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/class_core.jinja +0 -0
  132. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/enum_core.jinja +0 -0
  133. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/equals_hashcode.jinja +0 -0
  134. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/pom.xml.jinja +0 -0
  135. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava/tuple_core.jinja +0 -0
  136. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojava.py +0 -0
  137. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/class_core.js.jinja +0 -0
  138. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/enum_core.js.jinja +0 -0
  139. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/package.json.jinja +0 -0
  140. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/test_class.js.jinja +0 -0
  141. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/test_enum.js.jinja +0 -0
  142. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs/test_runner.js.jinja +0 -0
  143. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojs.py +0 -0
  144. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretojsons.py +0 -0
  145. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretokusto.py +0 -0
  146. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretomd/README.md.jinja +0 -0
  147. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretomd.py +0 -0
  148. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretoproto.py +0 -0
  149. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/dataclass_core.jinja +0 -0
  150. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/enum_core.jinja +0 -0
  151. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/map_alias.jinja +0 -0
  152. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/pyproject_toml.jinja +0 -0
  153. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/test_class.jinja +0 -0
  154. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython/test_enum.jinja +0 -0
  155. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretopython.py +0 -0
  156. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretorust/dataclass_enum.rs.jinja +0 -0
  157. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretorust/dataclass_struct.rs.jinja +0 -0
  158. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretorust/dataclass_union.rs.jinja +0 -0
  159. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretorust.py +0 -0
  160. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/class_core.ts.jinja +0 -0
  161. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/enum_core.ts.jinja +0 -0
  162. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/gitignore.jinja +0 -0
  163. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/index.ts.jinja +0 -0
  164. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/package.json.jinja +0 -0
  165. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/test_class.ts.jinja +0 -0
  166. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots/tsconfig.json.jinja +0 -0
  167. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretots.py +0 -0
  168. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/structuretoxsd.py +0 -0
  169. {avrotize-2.22.0 → avrotize-2.22.1}/avrotize/xsdtoavro.py +0 -0
  170. {avrotize-2.22.0 → avrotize-2.22.1}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: avrotize
3
- Version: 2.22.0
3
+ Version: 2.22.1
4
4
  Summary: Tools to convert from and to Avro Schema from various other schema languages.
5
5
  Author-email: Clemens Vasters <clemensv@microsoft.com>
6
6
  Requires-Python: >=3.10
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '2.22.0'
32
- __version_tuple__ = version_tuple = (2, 22, 0)
31
+ __version__ = version = '2.22.1'
32
+ __version_tuple__ = version_tuple = (2, 22, 1)
33
33
 
34
- __commit_id__ = commit_id = 'g5d3e04df0'
34
+ __commit_id__ = commit_id = 'g09745f1ba'
@@ -184,16 +184,38 @@ class AvroToJsonSchemaConverter:
184
184
  def handle_type_union(self, types: List[Union[str, Dict[str, Any]]]) -> Dict[str, Any] | List[Dict[str, Any]| str] | str:
185
185
  """
186
186
  Handle Avro type unions, returning a JSON schema that validates against any of the types.
187
+ Preserves nullability from Avro unions containing 'null'.
187
188
  """
189
+ is_nullable = 'null' in types
188
190
  non_null_types = [t for t in types if t != 'null']
191
+
189
192
  if len(non_null_types) == 1:
190
- # Single non-null type
191
- return self.parse_avro_schema(non_null_types[0])
193
+ # Single non-null type - check if it's a primitive that can use type array
194
+ single_type = non_null_types[0]
195
+ json_schema = self.parse_avro_schema(single_type)
196
+
197
+ if is_nullable and isinstance(json_schema, dict):
198
+ # For primitives with a simple 'type' field, we can use type array notation
199
+ if 'type' in json_schema and isinstance(json_schema['type'], str) and '$ref' not in json_schema:
200
+ # Primitive type - add null to type array
201
+ json_schema = copy.deepcopy(json_schema)
202
+ json_schema['type'] = [json_schema['type'], 'null']
203
+ elif '$ref' in json_schema:
204
+ # Reference type - use oneOf with null
205
+ json_schema = {
206
+ 'oneOf': [
207
+ {'type': 'null'},
208
+ json_schema
209
+ ]
210
+ }
211
+ return json_schema
192
212
  else:
193
213
  # Multiple non-null types
194
- union_types = [self.convert_reference(t) if isinstance(t,str) and t in self.defined_types else self.avro_primitive_to_json_type(t)
214
+ union_types = [self.convert_reference(t) if isinstance(t, str) and t in self.defined_types else self.avro_primitive_to_json_type(t)
195
215
  if isinstance(t, str) else self.parse_avro_schema(t)
196
216
  for t in non_null_types]
217
+ if is_nullable:
218
+ union_types.insert(0, {'type': 'null'})
197
219
  return {
198
220
  'oneOf': union_types
199
221
  }
File without changes
File without changes
File without changes
File without changes