avrotize 2.21.0__py3-none-any.whl → 2.22.0__py3-none-any.whl
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.
- avrotize/_version.py +2 -2
- avrotize/avrotogo.py +21 -8
- avrotize/avrotojava/class_test.java.jinja +2 -4
- avrotize/avrotojava.py +67 -5
- avrotize/avrotopython/dataclass_core.jinja +12 -2
- avrotize/avrotopython/test_class.jinja +2 -1
- avrotize/avrotopython.py +48 -2
- avrotize/avrotorust/dataclass_enum.rs.jinja +9 -7
- avrotize/avrotorust/dataclass_struct.rs.jinja +19 -11
- avrotize/avrotorust/dataclass_union.rs.jinja +25 -7
- avrotize/avrotorust.py +64 -26
- avrotize/structuretocsharp.py +42 -11
- avrotize/structuretodb.py +21 -0
- avrotize/structuretogo.py +38 -10
- avrotize/structuretojava/pom.xml.jinja +5 -0
- avrotize/structuretojava.py +114 -8
- avrotize/structuretopython/dataclass_core.jinja +2 -1
- avrotize/structuretopython.py +100 -19
- avrotize/structuretots.py +8 -5
- {avrotize-2.21.0.dist-info → avrotize-2.22.0.dist-info}/METADATA +1 -1
- {avrotize-2.21.0.dist-info → avrotize-2.22.0.dist-info}/RECORD +24 -24
- {avrotize-2.21.0.dist-info → avrotize-2.22.0.dist-info}/WHEEL +0 -0
- {avrotize-2.21.0.dist-info → avrotize-2.22.0.dist-info}/entry_points.txt +0 -0
- {avrotize-2.21.0.dist-info → avrotize-2.22.0.dist-info}/licenses/LICENSE +0 -0
avrotize/structuretopython.py
CHANGED
|
@@ -15,6 +15,38 @@ JsonNode = Dict[str, 'JsonNode'] | List['JsonNode'] | str | None
|
|
|
15
15
|
|
|
16
16
|
INDENT = ' '
|
|
17
17
|
|
|
18
|
+
# Python standard library modules that should not be shadowed by package names
|
|
19
|
+
PYTHON_STDLIB_MODULES = {
|
|
20
|
+
'abc', 'aifc', 'argparse', 'array', 'ast', 'asynchat', 'asyncio', 'asyncore',
|
|
21
|
+
'atexit', 'audioop', 'base64', 'bdb', 'binascii', 'binhex', 'bisect', 'builtins',
|
|
22
|
+
'bz2', 'calendar', 'cgi', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs',
|
|
23
|
+
'codeop', 'collections', 'colorsys', 'compileall', 'concurrent', 'configparser',
|
|
24
|
+
'contextlib', 'contextvars', 'copy', 'copyreg', 'cProfile', 'crypt', 'csv',
|
|
25
|
+
'ctypes', 'curses', 'dataclasses', 'datetime', 'dbm', 'decimal', 'difflib',
|
|
26
|
+
'dis', 'distutils', 'doctest', 'email', 'encodings', 'enum', 'errno', 'faulthandler',
|
|
27
|
+
'fcntl', 'filecmp', 'fileinput', 'fnmatch', 'fractions', 'ftplib', 'functools',
|
|
28
|
+
'gc', 'getopt', 'getpass', 'gettext', 'glob', 'graphlib', 'grp', 'gzip',
|
|
29
|
+
'hashlib', 'heapq', 'hmac', 'html', 'http', 'imaplib', 'imghdr', 'imp',
|
|
30
|
+
'importlib', 'inspect', 'io', 'ipaddress', 'itertools', 'json', 'keyword',
|
|
31
|
+
'lib2to3', 'linecache', 'locale', 'logging', 'lzma', 'mailbox', 'mailcap',
|
|
32
|
+
'marshal', 'math', 'mimetypes', 'mmap', 'modulefinder', 'multiprocessing',
|
|
33
|
+
'netrc', 'nis', 'nntplib', 'numbers', 'operator', 'optparse', 'os', 'ossaudiodev',
|
|
34
|
+
'pathlib', 'pdb', 'pickle', 'pickletools', 'pipes', 'pkgutil', 'platform',
|
|
35
|
+
'plistlib', 'poplib', 'posix', 'posixpath', 'pprint', 'profile', 'pstats',
|
|
36
|
+
'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'queue', 'quopri', 'random',
|
|
37
|
+
're', 'readline', 'reprlib', 'resource', 'rlcompleter', 'runpy', 'sched',
|
|
38
|
+
'secrets', 'select', 'selectors', 'shelve', 'shlex', 'shutil', 'signal',
|
|
39
|
+
'site', 'smtpd', 'smtplib', 'sndhdr', 'socket', 'socketserver', 'spwd',
|
|
40
|
+
'sqlite3', 'ssl', 'stat', 'statistics', 'string', 'stringprep', 'struct',
|
|
41
|
+
'subprocess', 'sunau', 'symtable', 'sys', 'sysconfig', 'syslog', 'tabnanny',
|
|
42
|
+
'tarfile', 'telnetlib', 'tempfile', 'termios', 'test', 'textwrap', 'threading',
|
|
43
|
+
'time', 'timeit', 'tkinter', 'token', 'tokenize', 'trace', 'traceback',
|
|
44
|
+
'tracemalloc', 'tty', 'turtle', 'turtledemo', 'types', 'typing', 'unicodedata',
|
|
45
|
+
'unittest', 'urllib', 'uu', 'uuid', 'venv', 'warnings', 'wave', 'weakref',
|
|
46
|
+
'webbrowser', 'winreg', 'winsound', 'wsgiref', 'xdrlib', 'xml', 'xmlrpc',
|
|
47
|
+
'zipapp', 'zipfile', 'zipimport', 'zlib', 'zoneinfo',
|
|
48
|
+
}
|
|
49
|
+
|
|
18
50
|
|
|
19
51
|
def is_python_reserved_word(word: str) -> bool:
|
|
20
52
|
"""Checks if a word is a Python reserved word"""
|
|
@@ -28,6 +60,13 @@ def is_python_reserved_word(word: str) -> bool:
|
|
|
28
60
|
return word in reserved_words
|
|
29
61
|
|
|
30
62
|
|
|
63
|
+
def safe_package_name(name: str) -> str:
|
|
64
|
+
"""Converts a name to a safe Python package name that won't shadow stdlib"""
|
|
65
|
+
if name.lower() in PYTHON_STDLIB_MODULES:
|
|
66
|
+
return f"{name}_types"
|
|
67
|
+
return name
|
|
68
|
+
|
|
69
|
+
|
|
31
70
|
class StructureToPython:
|
|
32
71
|
""" Converts JSON Structure schema to Python classes """
|
|
33
72
|
|
|
@@ -110,11 +149,38 @@ class StructureToPython:
|
|
|
110
149
|
type_name.startswith('typing.Optional[') or type_name.startswith('typing.Union[') or \
|
|
111
150
|
type_name == 'typing.Any'
|
|
112
151
|
|
|
152
|
+
def safe_identifier(self, name: str, class_name: str = '', fallback_prefix: str = 'field') -> str:
|
|
153
|
+
"""Converts a name to a safe Python identifier.
|
|
154
|
+
|
|
155
|
+
Handles:
|
|
156
|
+
- Reserved words (append _)
|
|
157
|
+
- Numeric prefixes (prepend _)
|
|
158
|
+
- Special characters (replace with _)
|
|
159
|
+
- All-special-char names (use fallback_prefix)
|
|
160
|
+
- Class name collision (append _)
|
|
161
|
+
"""
|
|
162
|
+
import re
|
|
163
|
+
# Replace invalid characters with underscores
|
|
164
|
+
safe = re.sub(r'[^a-zA-Z0-9_]', '_', str(name))
|
|
165
|
+
# Remove leading/trailing underscores from sanitization, but keep intentional ones
|
|
166
|
+
safe = safe.strip('_') if safe != name else safe
|
|
167
|
+
# If nothing left after removing special chars, use fallback
|
|
168
|
+
if not safe or not re.match(r'^[a-zA-Z_]', safe):
|
|
169
|
+
if safe and re.match(r'^[0-9]', safe):
|
|
170
|
+
safe = '_' + safe # Numeric prefix
|
|
171
|
+
else:
|
|
172
|
+
safe = fallback_prefix + '_' + (safe if safe else 'unnamed')
|
|
173
|
+
# Handle reserved words
|
|
174
|
+
if is_python_reserved_word(safe):
|
|
175
|
+
safe = safe + '_'
|
|
176
|
+
# Handle class name collision
|
|
177
|
+
if class_name and safe == class_name:
|
|
178
|
+
safe = safe + '_'
|
|
179
|
+
return safe
|
|
180
|
+
|
|
113
181
|
def safe_name(self, name: str) -> str:
|
|
114
|
-
"""Converts a name to a safe Python name"""
|
|
115
|
-
|
|
116
|
-
return name + "_"
|
|
117
|
-
return name
|
|
182
|
+
"""Converts a name to a safe Python name (legacy wrapper)"""
|
|
183
|
+
return self.safe_identifier(name)
|
|
118
184
|
|
|
119
185
|
def pascal_type_name(self, ref: str) -> str:
|
|
120
186
|
"""Converts a reference to a type name"""
|
|
@@ -286,6 +352,7 @@ class StructureToPython:
|
|
|
286
352
|
class_name = pascal(explicit_name if explicit_name else structure_schema.get('name', 'UnnamedClass'))
|
|
287
353
|
schema_namespace = structure_schema.get('namespace', parent_namespace)
|
|
288
354
|
namespace = self.concat_namespace(self.base_package, schema_namespace).lower()
|
|
355
|
+
package_name = self.python_package_from_structure_type(schema_namespace, class_name)
|
|
289
356
|
python_qualified_name = self.python_fully_qualified_name_from_structure_type(schema_namespace, class_name)
|
|
290
357
|
|
|
291
358
|
if python_qualified_name in self.generated_types:
|
|
@@ -323,7 +390,7 @@ class StructureToPython:
|
|
|
323
390
|
# Generate field docstrings
|
|
324
391
|
field_docstrings = [{
|
|
325
392
|
'name': self.safe_name(field['name']),
|
|
326
|
-
'original_name': field['name'],
|
|
393
|
+
'original_name': field.get('json_name') or field['name'],
|
|
327
394
|
'type': field['type'],
|
|
328
395
|
'is_primitive': field['is_primitive'],
|
|
329
396
|
'is_enum': field['is_enum'],
|
|
@@ -358,8 +425,8 @@ class StructureToPython:
|
|
|
358
425
|
)
|
|
359
426
|
|
|
360
427
|
if write_file:
|
|
361
|
-
self.write_to_file(
|
|
362
|
-
self.generate_test_class(
|
|
428
|
+
self.write_to_file(package_name, class_name, class_definition)
|
|
429
|
+
self.generate_test_class(package_name, class_name, field_docstrings, import_types)
|
|
363
430
|
|
|
364
431
|
self.generated_types[python_qualified_name] = 'class'
|
|
365
432
|
self.generated_structure_types[python_qualified_name] = structure_schema
|
|
@@ -368,7 +435,10 @@ class StructureToPython:
|
|
|
368
435
|
def generate_field(self, prop_name: str, prop_schema: Dict, class_name: str,
|
|
369
436
|
parent_namespace: str, required_props: List, import_types: Set[str]) -> Dict:
|
|
370
437
|
""" Generates a field for a Python dataclass """
|
|
371
|
-
|
|
438
|
+
# Sanitize field name for Python identifier validity
|
|
439
|
+
field_name = self.safe_identifier(prop_name, class_name)
|
|
440
|
+
# Track if we need a field_name annotation for JSON serialization
|
|
441
|
+
needs_field_name_annotation = field_name != prop_name
|
|
372
442
|
|
|
373
443
|
# Check if this is a const field
|
|
374
444
|
if 'const' in prop_schema:
|
|
@@ -377,6 +447,7 @@ class StructureToPython:
|
|
|
377
447
|
class_name, field_name, prop_schema, parent_namespace, import_types)
|
|
378
448
|
return {
|
|
379
449
|
'name': field_name,
|
|
450
|
+
'json_name': prop_name if needs_field_name_annotation else None,
|
|
380
451
|
'type': prop_type,
|
|
381
452
|
'is_primitive': self.is_python_primitive(prop_type) or self.is_python_typing_struct(prop_type),
|
|
382
453
|
'is_enum': False,
|
|
@@ -403,6 +474,7 @@ class StructureToPython:
|
|
|
403
474
|
|
|
404
475
|
return {
|
|
405
476
|
'name': field_name,
|
|
477
|
+
'json_name': prop_name if needs_field_name_annotation else None,
|
|
406
478
|
'type': prop_type,
|
|
407
479
|
'is_primitive': self.is_python_primitive(prop_type) or self.is_python_typing_struct(prop_type),
|
|
408
480
|
'is_enum': prop_type in self.generated_types and self.generated_types[prop_type] == 'enum',
|
|
@@ -424,6 +496,7 @@ class StructureToPython:
|
|
|
424
496
|
class_name = pascal(structure_schema.get('name', field_name + 'Enum'))
|
|
425
497
|
schema_namespace = structure_schema.get('namespace', parent_namespace)
|
|
426
498
|
namespace = self.concat_namespace(self.base_package, schema_namespace).lower()
|
|
499
|
+
package_name = self.python_package_from_structure_type(schema_namespace, class_name)
|
|
427
500
|
python_qualified_name = self.python_fully_qualified_name_from_structure_type(schema_namespace, class_name)
|
|
428
501
|
|
|
429
502
|
if python_qualified_name in self.generated_types:
|
|
@@ -442,8 +515,8 @@ class StructureToPython:
|
|
|
442
515
|
)
|
|
443
516
|
|
|
444
517
|
if write_file:
|
|
445
|
-
self.write_to_file(
|
|
446
|
-
self.generate_test_enum(
|
|
518
|
+
self.write_to_file(package_name, class_name, enum_definition)
|
|
519
|
+
self.generate_test_enum(package_name, class_name, symbols)
|
|
447
520
|
|
|
448
521
|
self.generated_types[python_qualified_name] = 'enum'
|
|
449
522
|
self.generated_enum_symbols[python_qualified_name] = symbols
|
|
@@ -513,6 +586,7 @@ class StructureToPython:
|
|
|
513
586
|
class_name = pascal(structure_schema.get('name', 'UnnamedMap'))
|
|
514
587
|
schema_namespace = structure_schema.get('namespace', parent_namespace)
|
|
515
588
|
namespace = self.concat_namespace(self.base_package, schema_namespace).lower()
|
|
589
|
+
package_name = self.python_package_from_structure_type(schema_namespace, class_name)
|
|
516
590
|
python_qualified_name = self.python_fully_qualified_name_from_structure_type(schema_namespace, class_name)
|
|
517
591
|
|
|
518
592
|
if python_qualified_name in self.generated_types:
|
|
@@ -537,7 +611,7 @@ class StructureToPython:
|
|
|
537
611
|
)
|
|
538
612
|
|
|
539
613
|
if write_file:
|
|
540
|
-
self.write_to_file(
|
|
614
|
+
self.write_to_file(package_name, class_name, map_definition)
|
|
541
615
|
|
|
542
616
|
self.generated_types[python_qualified_name] = 'map'
|
|
543
617
|
return python_qualified_name
|
|
@@ -623,7 +697,8 @@ class StructureToPython:
|
|
|
623
697
|
import_types: Set[str]) -> None:
|
|
624
698
|
"""Generates a unit test class for a Python dataclass"""
|
|
625
699
|
test_class_name = f"Test_{class_name}"
|
|
626
|
-
|
|
700
|
+
# Use a simpler file naming scheme based on class name only
|
|
701
|
+
test_file_name = f"test_{class_name.lower()}"
|
|
627
702
|
test_class_definition = process_template(
|
|
628
703
|
"structuretopython/test_class.jinja",
|
|
629
704
|
package_name=package_name,
|
|
@@ -636,7 +711,7 @@ class StructureToPython:
|
|
|
636
711
|
)
|
|
637
712
|
|
|
638
713
|
base_dir = os.path.join(self.output_dir, "tests")
|
|
639
|
-
test_file_path = os.path.join(base_dir, f"{
|
|
714
|
+
test_file_path = os.path.join(base_dir, f"{test_file_name}.py")
|
|
640
715
|
if not os.path.exists(os.path.dirname(test_file_path)):
|
|
641
716
|
os.makedirs(os.path.dirname(test_file_path), exist_ok=True)
|
|
642
717
|
with open(test_file_path, 'w', encoding='utf-8') as file:
|
|
@@ -645,7 +720,8 @@ class StructureToPython:
|
|
|
645
720
|
def generate_test_enum(self, package_name: str, class_name: str, symbols: List[str]) -> None:
|
|
646
721
|
"""Generates a unit test class for a Python enum"""
|
|
647
722
|
test_class_name = f"Test_{class_name}"
|
|
648
|
-
|
|
723
|
+
# Use a simpler file naming scheme based on class name only
|
|
724
|
+
test_file_name = f"test_{class_name.lower()}"
|
|
649
725
|
test_class_definition = process_template(
|
|
650
726
|
"structuretopython/test_enum.jinja",
|
|
651
727
|
package_name=package_name,
|
|
@@ -654,7 +730,7 @@ class StructureToPython:
|
|
|
654
730
|
symbols=symbols
|
|
655
731
|
)
|
|
656
732
|
base_dir = os.path.join(self.output_dir, "tests")
|
|
657
|
-
test_file_path = os.path.join(base_dir, f"{
|
|
733
|
+
test_file_path = os.path.join(base_dir, f"{test_file_name}.py")
|
|
658
734
|
if not os.path.exists(os.path.dirname(test_file_path)):
|
|
659
735
|
os.makedirs(os.path.dirname(test_file_path), exist_ok=True)
|
|
660
736
|
with open(test_file_path, 'w', encoding='utf-8') as file:
|
|
@@ -662,9 +738,8 @@ class StructureToPython:
|
|
|
662
738
|
|
|
663
739
|
def write_to_file(self, package: str, class_name: str, python_code: str):
|
|
664
740
|
"""Writes a Python class to a file"""
|
|
665
|
-
#
|
|
666
|
-
|
|
667
|
-
parent_package_name = '.'.join(full_package.split('.')[:-1])
|
|
741
|
+
# The containing directory is the parent package (matches avrotopython.py)
|
|
742
|
+
parent_package_name = '.'.join(package.split('.')[:-1])
|
|
668
743
|
parent_package_path = os.sep.join(parent_package_name.split('.')).lower()
|
|
669
744
|
directory_path = os.path.join(self.output_dir, "src", parent_package_path)
|
|
670
745
|
if not os.path.exists(directory_path):
|
|
@@ -777,7 +852,12 @@ class StructureToPython:
|
|
|
777
852
|
def convert_structure_to_python(structure_schema_path, py_file_path, package_name='', dataclasses_json_annotation=False, avro_annotation=False):
|
|
778
853
|
"""Converts JSON Structure schema to Python dataclasses"""
|
|
779
854
|
if not package_name:
|
|
780
|
-
|
|
855
|
+
# Strip .json extension, then also strip .struct suffix if present (*.struct.json naming convention)
|
|
856
|
+
base_name = os.path.splitext(os.path.basename(structure_schema_path))[0]
|
|
857
|
+
if base_name.endswith('.struct'):
|
|
858
|
+
base_name = base_name[:-7] # Remove '.struct' suffix
|
|
859
|
+
package_name = base_name.lower().replace('-', '_')
|
|
860
|
+
package_name = safe_package_name(package_name)
|
|
781
861
|
|
|
782
862
|
structure_to_python = StructureToPython(package_name, dataclasses_json_annotation=dataclasses_json_annotation, avro_annotation=avro_annotation)
|
|
783
863
|
structure_to_python.convert(structure_schema_path, py_file_path)
|
|
@@ -785,6 +865,7 @@ def convert_structure_to_python(structure_schema_path, py_file_path, package_nam
|
|
|
785
865
|
|
|
786
866
|
def convert_structure_schema_to_python(structure_schema, py_file_path, package_name='', dataclasses_json_annotation=False):
|
|
787
867
|
"""Converts JSON Structure schema to Python dataclasses"""
|
|
868
|
+
package_name = safe_package_name(package_name) if package_name else package_name
|
|
788
869
|
structure_to_python = StructureToPython(package_name, dataclasses_json_annotation=dataclasses_json_annotation)
|
|
789
870
|
if isinstance(structure_schema, dict):
|
|
790
871
|
structure_schema = [structure_schema]
|
avrotize/structuretots.py
CHANGED
|
@@ -329,7 +329,7 @@ class StructureToTypeScript:
|
|
|
329
329
|
fields = []
|
|
330
330
|
for prop_name, prop_schema in properties.items():
|
|
331
331
|
field_type = self.convert_structure_type_to_typescript(
|
|
332
|
-
class_name, prop_name, prop_schema,
|
|
332
|
+
class_name, prop_name, prop_schema, schema_namespace, import_types)
|
|
333
333
|
is_required = prop_name in required_props
|
|
334
334
|
is_optional = not is_required
|
|
335
335
|
field_type_no_null = self.strip_nullable(field_type)
|
|
@@ -400,8 +400,10 @@ class StructureToTypeScript:
|
|
|
400
400
|
write_file: bool = True) -> str:
|
|
401
401
|
""" Generates a TypeScript enum from JSON Structure enum """
|
|
402
402
|
enum_name = pascal(structure_schema.get('name', field_name + 'Enum'))
|
|
403
|
-
|
|
404
|
-
|
|
403
|
+
schema_namespace = structure_schema.get('namespace', parent_namespace)
|
|
404
|
+
namespace = self.concat_namespace(self.base_package, schema_namespace).lower()
|
|
405
|
+
# Use schema_namespace (not parent_namespace) to match the file location
|
|
406
|
+
typescript_qualified_name = self.typescript_fully_qualified_name_from_structure_type(schema_namespace, enum_name)
|
|
405
407
|
|
|
406
408
|
if typescript_qualified_name in self.generated_types:
|
|
407
409
|
return typescript_qualified_name
|
|
@@ -477,6 +479,7 @@ class StructureToTypeScript:
|
|
|
477
479
|
""" Generates a TypeScript tuple type from JSON Structure tuple type """
|
|
478
480
|
tuple_name = pascal(explicit_name if explicit_name else structure_schema.get('name', 'Tuple'))
|
|
479
481
|
namespace = self.concat_namespace(self.base_package, structure_schema.get('namespace', parent_namespace)).lower()
|
|
482
|
+
schema_namespace = structure_schema.get('namespace', parent_namespace)
|
|
480
483
|
typescript_qualified_name = self.typescript_fully_qualified_name_from_structure_type(parent_namespace, tuple_name)
|
|
481
484
|
|
|
482
485
|
if typescript_qualified_name in self.generated_types:
|
|
@@ -487,7 +490,7 @@ class StructureToTypeScript:
|
|
|
487
490
|
item_types = []
|
|
488
491
|
for idx, item in enumerate(tuple_items):
|
|
489
492
|
item_type = self.convert_structure_type_to_typescript(
|
|
490
|
-
tuple_name, f'item{idx}', item,
|
|
493
|
+
tuple_name, f'item{idx}', item, schema_namespace, import_types)
|
|
491
494
|
item_types.append(item_type)
|
|
492
495
|
|
|
493
496
|
# TypeScript tuples are just arrays with fixed length and types
|
|
@@ -735,4 +738,4 @@ def convert_structure_schema_to_typescript(structure_schema: JsonNode, output_di
|
|
|
735
738
|
avro_annotation: Whether to include Avro annotations
|
|
736
739
|
"""
|
|
737
740
|
converter = StructureToTypeScript(package_name, typedjson_annotation, avro_annotation)
|
|
738
|
-
converter.convert_schema(structure_schema, output_dir, package_name)
|
|
741
|
+
converter.convert_schema(structure_schema, output_dir, package_name)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
avrotize/__init__.py,sha256=t5h5wkHXr6M0mmHAB5rhjZ3Gxy9xutGTGIfojfao9rI,3820
|
|
2
2
|
avrotize/__main__.py,sha256=5pY8dYAURcOnFRvgb6fgaOIa_SOzPLIWbU8-ZTQ0jG4,88
|
|
3
|
-
avrotize/_version.py,sha256=
|
|
3
|
+
avrotize/_version.py,sha256=Lz3YaEDxgU9K9pMHrjQaxnWiYLkcYeae4-H-EdHDdz4,706
|
|
4
4
|
avrotize/asn1toavro.py,sha256=QDNwfBfXMxSH-k487CA3CaGCGDzOLs4PpVbbENm5uF0,8386
|
|
5
5
|
avrotize/avrotize.py,sha256=VHFpBltMVBpyt0ju3ZWW725BKjQ4Fk-nrAy8udW-X44,5713
|
|
6
6
|
avrotize/avrotocpp.py,sha256=hRZV247_TDD7Sm6_8sFx-UH5SueLLx2Wg6TvAVUX0iE,25693
|
|
@@ -8,10 +8,10 @@ avrotize/avrotocsharp.py,sha256=k-tBex_vT-79yKZNetP9pKF63206NlT7KKBIXies9Cg,7140
|
|
|
8
8
|
avrotize/avrotocsv.py,sha256=PaDEW2aGRFVNLwewWhJ3OwxbKFI3PBg_mTgtT4uLMko,3689
|
|
9
9
|
avrotize/avrotodatapackage.py,sha256=zSCphLvCYiBKRAUCdccsr-4JysH3PyAS6fSgwa65Tss,7259
|
|
10
10
|
avrotize/avrotodb.py,sha256=5fNJgz00VMimyOl7eI0lIxlcaN_JnN0mb2Q9lzCRecw,46989
|
|
11
|
-
avrotize/avrotogo.py,sha256=
|
|
11
|
+
avrotize/avrotogo.py,sha256=H4jxdO7laRWKJuU6mytz2sgUa_20hZUlsBrUGrCe_UU,22405
|
|
12
12
|
avrotize/avrotographql.py,sha256=i6G7xWjH_Lsn_CLiM4BCPb8OyZuCCpsYjXwXNTRMwEE,7394
|
|
13
13
|
avrotize/avrotoiceberg.py,sha256=plVHGWkED1YDLcMDxL7NMdJl2f8G32hwlNWFrBLcsD8,9057
|
|
14
|
-
avrotize/avrotojava.py,sha256=
|
|
14
|
+
avrotize/avrotojava.py,sha256=NZZ7mUFVzvp7HBsU0XPiCwl4GVXE1RtS86pfNFJsIq8,135427
|
|
15
15
|
avrotize/avrotojs.py,sha256=QjB6XjFnDrpZBZrrWqS0TN8fQfRXBfhHabfG73FOIo8,12249
|
|
16
16
|
avrotize/avrotojsons.py,sha256=WXWniQqwcl8eU35VibDv7qJJwbiLV_yoWZ4JxiZ8mHA,21588
|
|
17
17
|
avrotize/avrotojstruct.py,sha256=-Hs4Ta958bRKmOfSTzRFENABCZ6lQPSPbIBEXvOQD1M,14660
|
|
@@ -20,8 +20,8 @@ avrotize/avrotomd.py,sha256=WHPHnfmkI3xDNIHKZ3ReYxj6tib1eCny3JOznNSN6r8,5348
|
|
|
20
20
|
avrotize/avrotools.py,sha256=dTbGgWQyKdSuvCf4yuoymwhYO5gX9ywPu-klIXYwKZM,6052
|
|
21
21
|
avrotize/avrotoparquet.py,sha256=qm5hfia5elW1Yn4KACG8bbudLAqQSwGk3fIkTvdT5Rg,9088
|
|
22
22
|
avrotize/avrotoproto.py,sha256=STqbdGjVrgKrlKXt-6dZlekW_Oq0W0StRx80St1XqIc,22486
|
|
23
|
-
avrotize/avrotopython.py,sha256=
|
|
24
|
-
avrotize/avrotorust.py,sha256=
|
|
23
|
+
avrotize/avrotopython.py,sha256=7s73rKyaQDu5-uLnF4mK7Jat9F4jipQ-lLapPXg6aPI,34168
|
|
24
|
+
avrotize/avrotorust.py,sha256=HEcDirRBCbXQNNs_FmkT-sp1dWQgZ8A23qkQYUxVuXE,24255
|
|
25
25
|
avrotize/avrotots.py,sha256=u_XLjlHN0Gof5QYlpqK4X9WoX9rL30TjQMPg4TiyYnI,33241
|
|
26
26
|
avrotize/avrotoxsd.py,sha256=iGQq_8kC0kfKsqvqS6s_mO-kJ8N5G8vXOwqRI_DZUxc,17744
|
|
27
27
|
avrotize/cddltostructure.py,sha256=MA2c-P3CIEAxEaBX-FF299gR55xcLEV3FrfTr2QfayM,74491
|
|
@@ -44,22 +44,22 @@ avrotize/proto3parser.py,sha256=MfE84c-oAWWuzYmKlEZ5g5LUF7YzZaASFh2trX3UCaw,1560
|
|
|
44
44
|
avrotize/prototoavro.py,sha256=hqXBGRxYojaEbEgoHZxXwMG4R1nWC7UMl_XNLWfqH38,17346
|
|
45
45
|
avrotize/structuretocddl.py,sha256=RK_dTJf0oAo6BIBM48NHRcWC96OtUjlgUC6HzXs5Lkk,21234
|
|
46
46
|
avrotize/structuretocpp.py,sha256=tBWOvyZPYQ1CHN6RgDnWlmzJ1giOyQ9SlHBHWvhPyiw,35898
|
|
47
|
-
avrotize/structuretocsharp.py,sha256=
|
|
47
|
+
avrotize/structuretocsharp.py,sha256=Hi6C2HAIB3DxKZ4s8Q2_rK9QOqI_cLmObLkpwI3iO1o,123681
|
|
48
48
|
avrotize/structuretocsv.py,sha256=w9cwXAnnakKaeTtXsLWWO8KwYnXUxyXvC7a-ZKs-E94,13851
|
|
49
49
|
avrotize/structuretodatapackage.py,sha256=NEHRt30KfVDWH1EQakvuMdRZTtfVXx8fsaYud0ofb2g,29768
|
|
50
|
-
avrotize/structuretodb.py,sha256=
|
|
51
|
-
avrotize/structuretogo.py,sha256=
|
|
50
|
+
avrotize/structuretodb.py,sha256=uk4hKSRNw1JwOsWSZGECjSwvmTFUipRvMgTGlKnviCo,44860
|
|
51
|
+
avrotize/structuretogo.py,sha256=EtU7C5IqKzPrYaxKUQJMDMpk-rlc8eRwFzHe489jHp4,34100
|
|
52
52
|
avrotize/structuretographql.py,sha256=wcGXnrup5v5saRa1BhR6o-X8q8ujsQMVqrFHQTBPjww,20468
|
|
53
53
|
avrotize/structuretoiceberg.py,sha256=itKb33Kj-7-udk4eHTLmTEasIeh1ggpZ3e_bwCxLABM,15344
|
|
54
|
-
avrotize/structuretojava.py,sha256=
|
|
54
|
+
avrotize/structuretojava.py,sha256=r6YfI-_HtdeGqotL5W31WR5sz-TE1VLdDegctpjeiC4,47886
|
|
55
55
|
avrotize/structuretojs.py,sha256=TJuhUGqn0F2omjPVcrPeFPHY2KynRceFg9gMGvEenxA,29608
|
|
56
56
|
avrotize/structuretojsons.py,sha256=PJrQBaf6yQHu5eFkePxbjPBEmL-fYfX2wj6OmH1jsWw,22495
|
|
57
57
|
avrotize/structuretokusto.py,sha256=rOKgYIcm7ZK8RS-VvMFPNzPzwtv7c4dIKU-fKjrJLyM,30618
|
|
58
58
|
avrotize/structuretomd.py,sha256=exfCldYbieVdduhotSoLrxsbphmyJQyeQso9qv4qyUw,13642
|
|
59
59
|
avrotize/structuretoproto.py,sha256=Aq0-fwMXSjjAxgZ5mq1kpo_TauigMRrJK9LNyoN-YGs,42679
|
|
60
|
-
avrotize/structuretopython.py,sha256=
|
|
60
|
+
avrotize/structuretopython.py,sha256=d9EZVDHq7r-x0ZYZIRYfCP6kub7MkEROuvzjTJfNVv0,43958
|
|
61
61
|
avrotize/structuretorust.py,sha256=ChRmO7uzU-pMdDdS0Vtg-MVUaOaNhNUPwH-ZKKOHglU,35134
|
|
62
|
-
avrotize/structuretots.py,sha256=
|
|
62
|
+
avrotize/structuretots.py,sha256=7jKoMOWwSJG_T_uZuEcPu-4d0dMuydAHvUhE86QSEJU,35274
|
|
63
63
|
avrotize/structuretoxsd.py,sha256=01VpasyWSMOx04sILHLP7H-WkhGdXAEGKohUUfgrNf0,32797
|
|
64
64
|
avrotize/xsdtoavro.py,sha256=nQtNH_3pEZBp67oUCPqzhvItEExHTe-8obsIfNRXt8Y,19064
|
|
65
65
|
avrotize/avrotocpp/CMakeLists.txt.jinja,sha256=t2ADvvi3o20xfVrsRBaUvZlpVCDR4h6Szsf0GcuSkH0,3015
|
|
@@ -81,18 +81,18 @@ avrotize/avrotogo/go_helpers.jinja,sha256=WSjLIqkrYLUKdQBejEpOnNiENCaU8HQvm4gshy
|
|
|
81
81
|
avrotize/avrotogo/go_struct.jinja,sha256=vI-xGVC1O7uAFYoY0T0kbT2Be5gFDkgc_UdFUbbpHZk,4272
|
|
82
82
|
avrotize/avrotogo/go_test.jinja,sha256=r1tGQqHP5MiSRj3yQhPSQLNSx1ihfsl6MnUU7xbHAgM,1206
|
|
83
83
|
avrotize/avrotogo/go_union.jinja,sha256=OcRVPWI-1OvYthh7cB-8RMT9nJEOStAQMfbW3b5hpUU,890
|
|
84
|
-
avrotize/avrotojava/class_test.java.jinja,sha256=
|
|
84
|
+
avrotize/avrotojava/class_test.java.jinja,sha256=H950i6RlEoOoJadgUbEWOaeLIR3M9NHEF_hm4wFwbJs,9225
|
|
85
85
|
avrotize/avrotojava/enum_test.java.jinja,sha256=INIKtiKrZwSFXVXgv8ouvzGv8vzjWouRq3DAPqxRs8k,545
|
|
86
86
|
avrotize/avrotojava/testproject.pom.jinja,sha256=qRKGs9cCfex0hNgryyIJLae-pSpP4LMpPYcn8H8bBvk,2072
|
|
87
87
|
avrotize/avrotomd/README.md.jinja,sha256=efG9ly41AjNMuOOnq9U7LXEhGylfHhVTzqe_COM4cRM,999
|
|
88
|
-
avrotize/avrotopython/dataclass_core.jinja,sha256=
|
|
88
|
+
avrotize/avrotopython/dataclass_core.jinja,sha256=hvLtsN67dlPDmTIHScrUE0X1z3KxKMDPmIg80ziKCAk,10616
|
|
89
89
|
avrotize/avrotopython/enum_core.jinja,sha256=QP5FDkMg5Si6xSHCr6L-nMe_94RH2mJdcAmFJH69BiY,2779
|
|
90
90
|
avrotize/avrotopython/pyproject_toml.jinja,sha256=fEtJrk4pTrHCcvwpGf1KYoORA90HeJZdmeusx_WVAeo,462
|
|
91
|
-
avrotize/avrotopython/test_class.jinja,sha256=
|
|
91
|
+
avrotize/avrotopython/test_class.jinja,sha256=h_8pyvrTRa9DTRzUP5tjnzXF4bMjbovqjNqDdx1CZYM,3203
|
|
92
92
|
avrotize/avrotopython/test_enum.jinja,sha256=PeVxzC-gV5bizVnRs58RPoUDbXGI696B-VO4g-qB2lc,528
|
|
93
|
-
avrotize/avrotorust/dataclass_enum.rs.jinja,sha256
|
|
94
|
-
avrotize/avrotorust/dataclass_struct.rs.jinja,sha256=
|
|
95
|
-
avrotize/avrotorust/dataclass_union.rs.jinja,sha256=
|
|
93
|
+
avrotize/avrotorust/dataclass_enum.rs.jinja,sha256=g4aYp0a7Yk8jO6aIiTXU8Obm48Qv63zxbzGREsWBBK8,2102
|
|
94
|
+
avrotize/avrotorust/dataclass_struct.rs.jinja,sha256=_FAKZG9VSRhn5enJScH8Y3t5KJ0aXTRqzGbMTjO6-dk,8463
|
|
95
|
+
avrotize/avrotorust/dataclass_union.rs.jinja,sha256=Ye4zVqpHgFNMUuvULCqN1aCWqezbWHppF_N_0hU0W2U,4640
|
|
96
96
|
avrotize/avrotots/class_core.ts.jinja,sha256=KEKSXsjPVTXP_LTOIUVjsTWfT3g1ZVSrGjy0UMkEj0g,5081
|
|
97
97
|
avrotize/avrotots/class_test.ts.jinja,sha256=zm3wXaSJ225y7knLj6I9zjrkPTEROLHYmBr8eDo7pCo,2752
|
|
98
98
|
avrotize/avrotots/enum_core.ts.jinja,sha256=6NN_nF2y9us2saM7Wag8IN73BdIF0vxhPxq83NQEnm8,1522
|
|
@@ -139,7 +139,7 @@ avrotize/structuretojava/choice_core.jinja,sha256=H-VhQzIIwgu9myuw3j9WxFx01maTOl
|
|
|
139
139
|
avrotize/structuretojava/class_core.jinja,sha256=mn3KVnvIxHIUB1Tep_YeISnM7k6ytQdOynQ4sUGrCAc,981
|
|
140
140
|
avrotize/structuretojava/enum_core.jinja,sha256=yXnXQbr3IEudUj5OOFqDUJT7TfGqAJMy6O6K5DQ1lUQ,487
|
|
141
141
|
avrotize/structuretojava/equals_hashcode.jinja,sha256=m_6EBJdRfQWnP8dmEJ2vkosyFaNkVyYDtyb9RKQCZtQ,946
|
|
142
|
-
avrotize/structuretojava/pom.xml.jinja,sha256=
|
|
142
|
+
avrotize/structuretojava/pom.xml.jinja,sha256=DxGdDXa3XgdD5vMp498Fzf-nSEX3Fx4grKG09-g32Bg,1305
|
|
143
143
|
avrotize/structuretojava/tuple_core.jinja,sha256=IZl3s_olYhwasA21uFqSZCyq4tLZ_jtQVD6ZQgUKmkk,1731
|
|
144
144
|
avrotize/structuretojs/class_core.js.jinja,sha256=-DiN6dHxiEAc3bWCV6EAH1TpEdO2Fhs6d3tgYzxdLM4,779
|
|
145
145
|
avrotize/structuretojs/enum_core.js.jinja,sha256=iMDePiuj4d7s7VuUOv3MnkFLKV9XBzReMR4TudZ3MbQ,205
|
|
@@ -148,7 +148,7 @@ avrotize/structuretojs/test_class.js.jinja,sha256=XTQEtuFRgQb0ixrA_E9uK3tM4OJCf3
|
|
|
148
148
|
avrotize/structuretojs/test_enum.js.jinja,sha256=5vGrqUigmSFx_wFQQD-nE7P6o_HAyZEnmWpW0ScAkfw,1393
|
|
149
149
|
avrotize/structuretojs/test_runner.js.jinja,sha256=RH-wqqBTVjiFzp0k5id5vtMGVllHTQbihnRRgsM5C7k,1185
|
|
150
150
|
avrotize/structuretomd/README.md.jinja,sha256=UBBkspRnVI9E3RLRWPbxKSvoU9y4tKi1iqzn2iGJbDQ,4824
|
|
151
|
-
avrotize/structuretopython/dataclass_core.jinja,sha256=
|
|
151
|
+
avrotize/structuretopython/dataclass_core.jinja,sha256=fNcGjBx4rgJZQ1rNqoJ5npWZwr8j75R61W3-kSskJqk,15793
|
|
152
152
|
avrotize/structuretopython/enum_core.jinja,sha256=DDE7Mw9M2hjb0x1ErY9IvwASgAkI1hzFWjKbHsTfDRs,1253
|
|
153
153
|
avrotize/structuretopython/map_alias.jinja,sha256=lq1vh37yrMTlOKQXhcu5xxkZg8kCDnskw1DUqW06aq0,567
|
|
154
154
|
avrotize/structuretopython/pyproject_toml.jinja,sha256=IuMr-XjXVmTx1R91DGLJ6y3LskCBcwt-xxJNi5hR1qA,587
|
|
@@ -164,8 +164,8 @@ avrotize/structuretots/index.ts.jinja,sha256=-R4R_En1N4W_BEN3z3bLts9Xi4KnBTDLrYM
|
|
|
164
164
|
avrotize/structuretots/package.json.jinja,sha256=OfJn4g68VhBP-yvJCdsWm_1RHx1kphsmdWpxu_Fst1E,819
|
|
165
165
|
avrotize/structuretots/test_class.ts.jinja,sha256=7tJ6hPo3A9zToTkwolVyXYhmZ_E4uI_OnnYsUUzUEdQ,1180
|
|
166
166
|
avrotize/structuretots/tsconfig.json.jinja,sha256=8Pl65JW8uOMEexxkteobo0ZEqsJBO31HegNRUrf8XGQ,515
|
|
167
|
-
avrotize-2.
|
|
168
|
-
avrotize-2.
|
|
169
|
-
avrotize-2.
|
|
170
|
-
avrotize-2.
|
|
171
|
-
avrotize-2.
|
|
167
|
+
avrotize-2.22.0.dist-info/entry_points.txt,sha256=m8J2TWiqbZh7SBQezc1CNrM_GVPWf01zOFcAKhzCC0U,51
|
|
168
|
+
avrotize-2.22.0.dist-info/licenses/LICENSE,sha256=xGtQGygTETTtDQJafZCUbpsed3GxO6grmqig-jGEuSk,11348
|
|
169
|
+
avrotize-2.22.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
170
|
+
avrotize-2.22.0.dist-info/METADATA,sha256=nLTy8xDdjStpgRxX2cOBQ8WSgA_EDF6uHgnk-AQFij8,80208
|
|
171
|
+
avrotize-2.22.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|