avrotize 2.20.5__py3-none-any.whl → 2.21.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 CHANGED
@@ -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.20.5'
32
- __version_tuple__ = version_tuple = (2, 20, 5)
31
+ __version__ = version = '2.21.0'
32
+ __version_tuple__ = version_tuple = (2, 21, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -2072,8 +2072,8 @@ class StructureToCSharp:
2072
2072
  if enum_values:
2073
2073
  for value in enum_values:
2074
2074
  if isinstance(value, str):
2075
- # Convert to PascalCase enum member name
2076
- symbol_name = ''.join(word.capitalize() for word in re.split(r'[_\-\s]+', value))
2075
+ # Convert to PascalCase enum member name - must match generate_enum logic
2076
+ symbol_name = pascal(str(value).replace('-', '_').replace(' ', '_'))
2077
2077
  symbols.append(symbol_name)
2078
2078
  else:
2079
2079
  # For numeric enums, use Value1, Value2, etc.
@@ -1,5 +1,10 @@
1
1
  package {{ base_package }}
2
2
 
3
+ {%- if needs_time_import %}
4
+
5
+ import "time"
6
+ {%- endif %}
7
+
3
8
  {%- for struct in structs %}
4
9
 
5
10
  // CreateInstance{{ struct.name }} creates a new instance of {{ struct.name }} with sample data
@@ -2,16 +2,16 @@ package {{ base_package }}
2
2
 
3
3
  import (
4
4
  "testing"
5
- {%- if json_annotation %}
5
+ {%- if json_annotation and kind == 'struct' %}
6
6
  "encoding/json"
7
7
  {%- endif %}
8
8
  )
9
9
 
10
10
  func Test{{ struct_name }}(t *testing.T) {
11
11
  {%- if kind == 'struct' %}
12
+ {%- if json_annotation %}
12
13
  instance := CreateInstance{{ struct_name }}()
13
14
 
14
- {%- if json_annotation %}
15
15
  // Test JSON marshaling
16
16
  data, err := json.Marshal(&instance)
17
17
  if err != nil {
@@ -56,6 +56,10 @@ func Test{{ struct_name }}(t *testing.T) {
56
56
  if fromDataGzip == nil {
57
57
  t.Fatal("FromData with gzip returned nil")
58
58
  }
59
+ {%- else %}
60
+ // Basic instance creation test (no JSON serialization without json annotation)
61
+ instance := CreateInstance{{ struct_name }}()
62
+ _ = instance // Verify instance creation works
59
63
  {%- endif %}
60
64
  {%- elif kind == 'enum' %}
61
65
  // Test enum values
avrotize/structuretogo.py CHANGED
@@ -523,6 +523,10 @@ class StructureToGo:
523
523
  v = f'float64({random.uniform(-100, 100)})'
524
524
  elif go_type == '[]byte':
525
525
  v = '[]byte("' + ''.join(random.choices(string.ascii_letters + string.digits, k=10)) + '")'
526
+ elif go_type == 'time.Time':
527
+ v = 'time.Now()'
528
+ elif go_type == 'time.Duration':
529
+ v = 'time.Hour'
526
530
  elif go_type.startswith('[]'):
527
531
  inner_type = go_type[2:]
528
532
  v = f'{go_type}{{{self.random_value(inner_type)}}}'
@@ -549,10 +553,15 @@ class StructureToGo:
549
553
  'enums': self.enums,
550
554
  'base_package': self.base_package,
551
555
  }
556
+ needs_time_import = False
552
557
  for struct in context['structs']:
553
558
  for field in struct['fields']:
554
559
  if 'value' not in field:
555
560
  field['value'] = self.random_value(field['type'])
561
+ # Check if time package is needed
562
+ if 'time.Time' in field['type'] or 'time.Duration' in field['type']:
563
+ needs_time_import = True
564
+ context['needs_time_import'] = needs_time_import
556
565
  helpers_file_name = os.path.join(self.output_dir, 'pkg', self.base_package, f"{self.base_package}_helpers.go")
557
566
  render_template('structuretogo/go_helpers.jinja', helpers_file_name, **context)
558
567
 
@@ -11,12 +11,9 @@ sys.path.append(os.path.realpath(os.path.join(os.path.dirname(__file__), '../src
11
11
  from {{ package_name | lower }} import {{ class_name }}
12
12
 
13
13
  {%- for import_type in import_types if import_type not in ['decimal.Decimal', 'datetime.datetime', 'datetime.date', 'datetime.time', 'datetime.timedelta', 'uuid.UUID'] %}
14
- {%- set import_type_name = 'Test_'+import_type.split('.')[-1] %}
15
- {%- set import_package_name = 'test_'+'_'.join(import_type.split('.')[:-1]) | lower %}
16
-
17
- {%- if import_type.startswith('.') %}
18
- from .{{ import_package_name }} import {{ import_type_name }}
19
- {%- else %}
14
+ {%- set import_type_name = import_type.split('.')[-1] %}
15
+ {%- set import_package_name = '.'.join(import_type.split('.')[:-1]) | lower %}
16
+ {%- if import_package_name %}
20
17
  from {{ import_package_name }} import {{ import_type_name }}
21
18
  {%- endif -%}
22
19
  {%- endfor %}
@@ -39,6 +39,7 @@ class StructureToPython:
39
39
  self.schema_doc: JsonNode = None
40
40
  self.generated_types: Dict[str, str] = {}
41
41
  self.generated_structure_types: Dict[str, Dict[str, Union[str, Dict, List]]] = {}
42
+ self.generated_enum_symbols: Dict[str, List[str]] = {}
42
43
  self.type_dict: Dict[str, Dict] = {}
43
44
  self.definitions: Dict[str, Any] = {}
44
45
  self.schema_registry: Dict[str, Dict] = {}
@@ -445,6 +446,7 @@ class StructureToPython:
445
446
  self.generate_test_enum(namespace, class_name, symbols)
446
447
 
447
448
  self.generated_types[python_qualified_name] = 'enum'
449
+ self.generated_enum_symbols[python_qualified_name] = symbols
448
450
  return python_qualified_name
449
451
 
450
452
  def generate_choice(self, structure_schema: Dict, parent_namespace: str,
@@ -596,7 +598,24 @@ class StructureToPython:
596
598
  elif field_type.startswith('typing.Union['):
597
599
  field_type = resolve(field_type)
598
600
  return generate_value(field_type)
599
- return test_values.get(field_type, 'Test_' + field_type + '.create_instance()')
601
+ if field_type in test_values:
602
+ return test_values[field_type]
603
+ # Check if this is an enum type - use first symbol value
604
+ # Look up by fully qualified name or by short name (class name only)
605
+ enum_symbols = None
606
+ if field_type in self.generated_enum_symbols:
607
+ enum_symbols = self.generated_enum_symbols[field_type]
608
+ else:
609
+ # Try to find by short name (the field type might be just the class name)
610
+ for qualified_name, symbols in self.generated_enum_symbols.items():
611
+ if qualified_name.endswith('.' + field_type) or qualified_name == field_type:
612
+ enum_symbols = symbols
613
+ break
614
+ if enum_symbols:
615
+ return f"{field_type.split('.')[-1]}.{enum_symbols[0]}"
616
+ # For complex types, use None since fields are typically optional
617
+ # This avoids needing to construct nested objects with required args
618
+ return 'None'
600
619
 
601
620
  return generate_value(field_type)
602
621
 
@@ -19,7 +19,7 @@ export {% if is_abstract %}abstract {% endif %}class {{ class_name }}{% if base_
19
19
  /** {{ field.docstring }} */
20
20
  {%- if typedjson_annotation %}
21
21
  {%- set field_type = field.type_no_null %}
22
- @jsonMember({{ field_type if not field.is_primitive else 'String' if field_type == 'Date' else field_type | capitalize }})
22
+ @jsonMember({{ 'String' if field.is_enum else (field_type if not field.is_primitive else 'String' if field_type == 'Date' else field_type | capitalize) }})
23
23
  {%- endif %}
24
24
  public {{ field.name }}{% if field.is_optional %}?{% endif %}: {{ field.type_no_null }};
25
25
  {%- endfor %}
@@ -63,4 +63,16 @@ export {% if is_abstract %}abstract {% endif %}class {{ class_name }}{% if base_
63
63
  return result;
64
64
  }
65
65
  {%- endif %}
66
+
67
+ /**
68
+ * Creates an instance of {{ class_name }} with sample data for testing.
69
+ * @returns A new {{ class_name }} instance with sample values.
70
+ */
71
+ public static createInstance(): {{ class_name }} {
72
+ return new {{ class_name }}(
73
+ {%- for field in required_fields %}
74
+ {{ field.test_value }}{% if not loop.last %},{% endif %} // {{ field.name }}
75
+ {%- endfor %}
76
+ );
77
+ }
66
78
  }
@@ -31,6 +31,9 @@
31
31
  ],
32
32
  "testMatch": [
33
33
  "**/*.test.ts"
34
- ]
34
+ ],
35
+ "moduleNameMapper": {
36
+ "^(\\.{1,2}/.*)\\.js$": "$1"
37
+ }
35
38
  }
36
39
  }
@@ -3,6 +3,9 @@
3
3
  */
4
4
 
5
5
  import { {{ class_name }} } from '../src/{{ relative_path }}';
6
+ {%- for enum_type, enum_path in enum_imports.items() %}
7
+ import { {{ enum_type }} } from '{{ enum_path }}';
8
+ {%- endfor %}
6
9
 
7
10
  describe('{{ class_name }}', () => {
8
11
  it('should create an instance with required fields', () => {
avrotize/structuretots.py CHANGED
@@ -332,15 +332,25 @@ class StructureToTypeScript:
332
332
  class_name, prop_name, prop_schema, namespace, import_types)
333
333
  is_required = prop_name in required_props
334
334
  is_optional = not is_required
335
+ field_type_no_null = self.strip_nullable(field_type)
336
+
337
+ # Check if the field type is an enum
338
+ is_enum = False
339
+ for import_type in import_types:
340
+ if import_type.endswith('.' + field_type_no_null) or import_type == field_type_no_null:
341
+ if import_type in self.generated_types and self.generated_types[import_type] == 'enum':
342
+ is_enum = True
343
+ break
335
344
 
336
345
  fields.append({
337
346
  'name': self.safe_name(prop_name),
338
347
  'original_name': prop_name,
339
348
  'type': field_type,
340
- 'type_no_null': self.strip_nullable(field_type),
349
+ 'type_no_null': field_type_no_null,
341
350
  'is_required': is_required,
342
351
  'is_optional': is_optional,
343
- 'is_primitive': self.is_typescript_primitive(self.strip_nullable(field_type).replace('[]', '')),
352
+ 'is_primitive': self.is_typescript_primitive(field_type_no_null.replace('[]', '')),
353
+ 'is_enum': is_enum,
344
354
  'docstring': prop_schema.get('description', '') if isinstance(prop_schema, dict) else ''
345
355
  })
346
356
 
@@ -359,6 +369,11 @@ class StructureToTypeScript:
359
369
  relative_import_path = f'./{relative_import_path}'
360
370
  imports_with_paths[import_type_name] = relative_import_path + '.js'
361
371
 
372
+ # Prepare required fields with test values for createInstance()
373
+ required_fields = [f for f in fields if f.get('is_required', not f.get('is_optional', False))]
374
+ for field in required_fields:
375
+ field['test_value'] = self.generate_test_value(field)
376
+
362
377
  # Generate class definition using template
363
378
  class_definition = process_template(
364
379
  "structuretots/class_core.ts.jinja",
@@ -368,6 +383,7 @@ class StructureToTypeScript:
368
383
  is_abstract=is_abstract,
369
384
  docstring=structure_schema.get('description', '').strip() if 'description' in structure_schema else f'A {class_name} class.',
370
385
  fields=fields,
386
+ required_fields=required_fields,
371
387
  imports=imports_with_paths,
372
388
  typedjson_annotation=self.typedjson_annotation,
373
389
  )
@@ -522,17 +538,36 @@ class StructureToTypeScript:
522
538
  if field_type.startswith('{ [key: string]:'):
523
539
  return '{}'
524
540
 
525
- # Return test value or construct object for custom types
526
- return test_values.get(field_type, f'{{}} as {field_type}')
541
+ # Handle enums - use first value with Object.values()
542
+ if field.get('is_enum', False):
543
+ return f'Object.values({field_type})[0] as {field_type}'
544
+
545
+ # Return test value for primitives, or call createInstance() for complex types (classes)
546
+ return test_values.get(field_type, f'{field_type}.createInstance()')
527
547
 
528
548
  def generate_test_class(self, namespace: str, class_name: str, fields: List[Dict[str, Any]]) -> None:
529
549
  """Generates a unit test class for a TypeScript class"""
530
550
  # Get only required fields for the test
531
551
  required_fields = [f for f in fields if f['is_required']]
532
552
 
553
+ # Collect enum imports needed for test file
554
+ enum_imports: Dict[str, str] = {}
555
+
533
556
  # Generate test values for required fields
534
557
  for field in required_fields:
535
558
  field['test_value'] = self.generate_test_value(field)
559
+ # Check if this field is an enum and needs an import
560
+ if field.get('is_enum', False):
561
+ enum_type = field['type_no_null']
562
+ # Find the enum in generated_types to get its full path
563
+ for qualified_name, type_kind in self.generated_types.items():
564
+ if type_kind == 'enum' and qualified_name.endswith('.' + enum_type):
565
+ # Build import path - lowercase namespace like write_to_file does
566
+ parts = qualified_name.split('.')
567
+ enum_namespace = '.'.join(parts[:-1]).lower()
568
+ enum_import_path = enum_namespace.replace('.', '/') + '/' + enum_type
569
+ enum_imports[enum_type] = f'../src/{enum_import_path}'
570
+ break
536
571
 
537
572
  # Determine relative path from test directory to src
538
573
  namespace_path = namespace.replace('.', '/') if namespace else ''
@@ -545,7 +580,8 @@ class StructureToTypeScript:
545
580
  "structuretots/test_class.ts.jinja",
546
581
  class_name=class_name,
547
582
  required_fields=required_fields,
548
- relative_path=relative_path
583
+ relative_path=relative_path,
584
+ enum_imports=enum_imports
549
585
  )
550
586
 
551
587
  # Write test file
@@ -589,17 +625,30 @@ class StructureToTypeScript:
589
625
  f.write(gitignore)
590
626
 
591
627
  def generate_index(self) -> None:
592
- """ Generates index.ts that exports all generated types """
628
+ """ Generates index.ts that exports all generated types with aliased exports """
593
629
  exports = []
594
630
  for qualified_name, type_kind in self.generated_types.items():
595
- type_name = qualified_name.split('.')[-1]
596
- namespace = '.'.join(qualified_name.split('.')[:-1])
631
+ # Split the qualified_name into parts
632
+ parts = qualified_name.split('.')
633
+ type_name = parts[-1] # The actual type name
634
+ namespace = '.'.join(parts[:-1]) # The namespace excluding the type
635
+
636
+ # Construct the relative path to the .js file
597
637
  if namespace:
598
638
  # Lowercase the namespace to match the directory structure created by write_to_file
599
639
  relative_path = namespace.lower().replace('.', '/') + '/' + type_name
600
640
  else:
601
641
  relative_path = type_name
602
- exports.append(f"export * from './{relative_path}.js';")
642
+
643
+ if not relative_path.startswith('./'):
644
+ relative_path = './' + relative_path
645
+
646
+ # Construct the alias name by joining all parts with underscores (PascalCase)
647
+ alias_parts = [pascal(part) for part in parts]
648
+ alias_name = '_'.join(alias_parts)
649
+
650
+ # Generate the export statement with alias (like avrotots does)
651
+ exports.append(f"export {{ {type_name} as {alias_name} }} from '{relative_path}.js';")
603
652
 
604
653
  index_content = '\n'.join(exports) + '\n' if exports else ''
605
654
 
@@ -619,23 +668,34 @@ class StructureToTypeScript:
619
668
  self.convert_schema(schema, output_dir, package_name)
620
669
 
621
670
  def convert_schema(self, schema: JsonNode, output_dir: str, package_name: str = '') -> None:
622
- """ Converts a JSON Structure schema to TypeScript classes """
671
+ """ Converts a JSON Structure schema (or list of schemas) to TypeScript classes """
672
+ # Normalize to list
673
+ if not isinstance(schema, list):
674
+ schema = [schema]
675
+
623
676
  self.output_dir = output_dir
624
677
  self.schema_doc = schema
625
678
 
626
- # Register schema IDs
627
- self.register_schema_ids(self.schema_doc)
679
+ # Register schema IDs for all schemas
680
+ for s in schema:
681
+ if isinstance(s, dict):
682
+ self.register_schema_ids(s)
628
683
 
629
- # Process definitions
630
- if 'definitions' in self.schema_doc:
631
- for def_name, def_schema in self.schema_doc['definitions'].items():
632
- if isinstance(def_schema, dict):
633
- self.generate_class_or_choice(def_schema, '', write_file=True, explicit_name=def_name)
634
-
635
- # Process root schema if it's an object or choice
636
- if 'type' in self.schema_doc:
637
- root_namespace = self.schema_doc.get('namespace', '')
638
- self.generate_class_or_choice(self.schema_doc, root_namespace, write_file=True)
684
+ # Process each schema
685
+ for s in schema:
686
+ if not isinstance(s, dict):
687
+ continue
688
+
689
+ # Process definitions
690
+ if 'definitions' in s:
691
+ for def_name, def_schema in s['definitions'].items():
692
+ if isinstance(def_schema, dict):
693
+ self.generate_class_or_choice(def_schema, '', write_file=True, explicit_name=def_name)
694
+
695
+ # Process root schema if it's an object or choice
696
+ if 'type' in s:
697
+ root_namespace = s.get('namespace', '')
698
+ self.generate_class_or_choice(s, root_namespace, write_file=True)
639
699
 
640
700
  # Generate project files
641
701
  self.generate_package_json(package_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: avrotize
3
- Version: 2.20.5
3
+ Version: 2.21.0
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
@@ -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=Tb8qbJxGNJ4RppXbnEAb2Lw5OeBX6K5TYQKxOq4_vZw,706
3
+ avrotize/_version.py,sha256=bf4KNcBF9L-a9QOdPA5vh1kn4plN-XZsFCOsYIbiS1c,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
@@ -44,11 +44,11 @@ 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=Y5TLMxUA0yt9QlXb8L9mSKFhLGmJkanwsg0yo0QfugI,122209
47
+ avrotize/structuretocsharp.py,sha256=qYYAV6M8I2xv-VUzOobPT1_FYAoBBe0VRTMe9eY8r1g,122229
48
48
  avrotize/structuretocsv.py,sha256=w9cwXAnnakKaeTtXsLWWO8KwYnXUxyXvC7a-ZKs-E94,13851
49
49
  avrotize/structuretodatapackage.py,sha256=NEHRt30KfVDWH1EQakvuMdRZTtfVXx8fsaYud0ofb2g,29768
50
50
  avrotize/structuretodb.py,sha256=3QE_TCdNklGH5ymzGsEnX1sI4OhvX2AYKPH7xtR5tHk,43926
51
- avrotize/structuretogo.py,sha256=VCEUz-5J8uRqX1hWaTimtfVzEsIB-gs4wxa308rYD0s,32470
51
+ avrotize/structuretogo.py,sha256=FNL5et5xxAoS0YSPJWGliWAFZPH_p8Nmu9pSEAT4J0U,32876
52
52
  avrotize/structuretographql.py,sha256=wcGXnrup5v5saRa1BhR6o-X8q8ujsQMVqrFHQTBPjww,20468
53
53
  avrotize/structuretoiceberg.py,sha256=itKb33Kj-7-udk4eHTLmTEasIeh1ggpZ3e_bwCxLABM,15344
54
54
  avrotize/structuretojava.py,sha256=jG2Vcf1KdezWrZo5lsecxLnmnMw1rA96uOxVWJQ4Rso,43372
@@ -57,9 +57,9 @@ avrotize/structuretojsons.py,sha256=PJrQBaf6yQHu5eFkePxbjPBEmL-fYfX2wj6OmH1jsWw,
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=ePlXrwbqA9r63Vw6xL-Gq3hBUScdcF9aqCQSi_xtaGo,37980
60
+ avrotize/structuretopython.py,sha256=Ub7gRtsMXGmWVN1qbBiHuYXa9Qo2CqsVQKrg9vpX7h4,39073
61
61
  avrotize/structuretorust.py,sha256=ChRmO7uzU-pMdDdS0Vtg-MVUaOaNhNUPwH-ZKKOHglU,35134
62
- avrotize/structuretots.py,sha256=bMBz9onD48nnFehg47x4wf8rUTghu_CucstkrZivqLk,32098
62
+ avrotize/structuretots.py,sha256=CcxY2EYf4QOG9-yC8TxStBWpk-QdhXKzL1zNHjVOBbw,35057
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
@@ -131,10 +131,10 @@ avrotize/structuretocsharp/project.sln.jinja,sha256=QKNG10hUo3sPCajx213TEUfZIMft
131
131
  avrotize/structuretocsharp/testproject.csproj.jinja,sha256=7SDzEM0wNV4a7JfCWG5AYiZT7KyJA-9gq_57tHqifRI,756
132
132
  avrotize/structuretocsharp/tuple_converter.cs.jinja,sha256=b2dsU7-5HcYdUMb1xpDAogBnKvKp7H86euT6EDrwLdc,3975
133
133
  avrotize/structuretogo/go_enum.jinja,sha256=2oXejDK4o5ALKhn9nb1YYYJJ1L696giwwT5xuosm51E,293
134
- avrotize/structuretogo/go_helpers.jinja,sha256=CwxHH0uh2JsGoj6-OViH0qk223gVekfKLrYZP00Z1-o,597
134
+ avrotize/structuretogo/go_helpers.jinja,sha256=yYJrkxYU3Ho4IBpCo8yJdip5XrZ1sYHguWlEjihuPg0,654
135
135
  avrotize/structuretogo/go_interface.jinja,sha256=5kQpjTXmQ-llzok75cjcRNaoJ32sIgDDXDYLeNdQqdY,514
136
136
  avrotize/structuretogo/go_struct.jinja,sha256=jCsHTnwizX6MAS3c0iP5QZ-lxnsxKOCbXMRlIaZAgbo,5411
137
- avrotize/structuretogo/go_test.jinja,sha256=h4GHxr6MhN04Ct9sjSyp-SJlx25wI_OUrgarKXi2wCo,1799
137
+ avrotize/structuretogo/go_test.jinja,sha256=KyEUrHOxf4O0A6S69o0vH29hKDQOL2k8lvljavDeIc0,2021
138
138
  avrotize/structuretojava/choice_core.jinja,sha256=H-VhQzIIwgu9myuw3j9WxFx01maTOlm2YiHaHEWhsyw,1069
139
139
  avrotize/structuretojava/class_core.jinja,sha256=mn3KVnvIxHIUB1Tep_YeISnM7k6ytQdOynQ4sUGrCAc,981
140
140
  avrotize/structuretojava/enum_core.jinja,sha256=yXnXQbr3IEudUj5OOFqDUJT7TfGqAJMy6O6K5DQ1lUQ,487
@@ -152,20 +152,20 @@ avrotize/structuretopython/dataclass_core.jinja,sha256=fUTLjlRjkH0P-1lK91o4IKGFa
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
155
- avrotize/structuretopython/test_class.jinja,sha256=i3aFsWlBjIAmnplAe4jW4E0dXYBY-LfnptOK9jV6tQY,3353
155
+ avrotize/structuretopython/test_class.jinja,sha256=2X39h1z3BHltRRK8WJt4vGqZuUbhzsdSfH7aWmijjSM,3254
156
156
  avrotize/structuretopython/test_enum.jinja,sha256=MruAUhAZRCMPcZBBZDJ5XzUwdp5XEZnv7UicMKkFaU4,834
157
157
  avrotize/structuretorust/dataclass_enum.rs.jinja,sha256=X3Fv3sqqX5USMK2eC_XQevE4BGClHS4nws5SeO1PZB8,1667
158
158
  avrotize/structuretorust/dataclass_struct.rs.jinja,sha256=US3tt5nb-2PKwlIIj4P7ABVDVfWMRp2BBrXKv50qVeo,4743
159
159
  avrotize/structuretorust/dataclass_union.rs.jinja,sha256=FFVQcHDT_2zhYxGWJVRA_5_UsdW_h0ZJINyIxZ_wyBo,2418
160
- avrotize/structuretots/class_core.ts.jinja,sha256=Tpopmsa2f9CRpU8HD3be7D2ZqXh9qJRqLjMkkvuUl_Y,2415
160
+ avrotize/structuretots/class_core.ts.jinja,sha256=OHc36PuGBybCqtcJKv96jBsCf4C3o4v0RYzxe2IlJ6k,2883
161
161
  avrotize/structuretots/enum_core.ts.jinja,sha256=9PQg5jNhIGU-M-0PFM9Dm62cSu6b1bpOugdefb6Iv4c,176
162
162
  avrotize/structuretots/gitignore.jinja,sha256=lM5D9egdAJGZ9khvspxQmmUda3F9SvHWZ8JTxEw_mYM,76
163
163
  avrotize/structuretots/index.ts.jinja,sha256=-R4R_En1N4W_BEN3z3bLts9Xi4KnBTDLrYMvBPisaJk,29
164
- avrotize/structuretots/package.json.jinja,sha256=fYC2mguywpYf1-poALreCK4kH_OGWMUF6-7KWBzTprk,751
165
- avrotize/structuretots/test_class.ts.jinja,sha256=GHNzFdv3V-gYnk-rAnGS74JZD_3hSdiWzp3i_pPyGsQ,1059
164
+ avrotize/structuretots/package.json.jinja,sha256=OfJn4g68VhBP-yvJCdsWm_1RHx1kphsmdWpxu_Fst1E,819
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.20.5.dist-info/entry_points.txt,sha256=m8J2TWiqbZh7SBQezc1CNrM_GVPWf01zOFcAKhzCC0U,51
168
- avrotize-2.20.5.dist-info/licenses/LICENSE,sha256=xGtQGygTETTtDQJafZCUbpsed3GxO6grmqig-jGEuSk,11348
169
- avrotize-2.20.5.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
170
- avrotize-2.20.5.dist-info/METADATA,sha256=e73VGgny-HJBo9KbLs_RgM5nabpS_9lvNsD0O4bKW9A,80208
171
- avrotize-2.20.5.dist-info/RECORD,,
167
+ avrotize-2.21.0.dist-info/entry_points.txt,sha256=m8J2TWiqbZh7SBQezc1CNrM_GVPWf01zOFcAKhzCC0U,51
168
+ avrotize-2.21.0.dist-info/licenses/LICENSE,sha256=xGtQGygTETTtDQJafZCUbpsed3GxO6grmqig-jGEuSk,11348
169
+ avrotize-2.21.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
170
+ avrotize-2.21.0.dist-info/METADATA,sha256=RN5Bzebf6IsPXbPK4bUjg_WB3aMtJSb9b9OenEA1g9I,80208
171
+ avrotize-2.21.0.dist-info/RECORD,,