polyxml 0.29.0__tar.gz → 0.30.0__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.
- {polyxml-0.29.0 → polyxml-0.30.0}/Cargo.lock +6 -6
- {polyxml-0.29.0 → polyxml-0.30.0}/Cargo.toml +1 -1
- {polyxml-0.29.0 → polyxml-0.30.0}/PKG-INFO +1 -1
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/cpp/mod.rs +8 -6
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/csharp/mod.rs +7 -7
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/go/mod.rs +7 -7
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/java/codec.rs +2 -2
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/java/mod.rs +3 -3
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/mod.rs +3 -1
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/python/mod.rs +4 -1
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/rust/mod.rs +3 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/typescript/mod.rs +3 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/ir/mod.rs +13 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/pyproject.toml +1 -1
- {polyxml-0.29.0 → polyxml-0.30.0}/README.md +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/Cargo.toml +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/README.md +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/benches/core_benchmarks.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/benches/support/tag_dispatch_fixtures.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/benches/tag_dispatch.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/java/models.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/codegen/python/aot.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/converters.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/error.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/ir/tarjan.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/json.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/lib.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/parser.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/schema.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/schema_parser/mod.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/serializer.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/transcoder.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/src/value.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/fixtures/lexical_union.xsd +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/fixtures/mixed_content.xsd +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_adversarial_identifiers.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_conformance.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_core.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_cpp_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_csharp_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_go_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_java_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_json.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_lexical_union_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_mixed_content.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_pattern_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_python_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_rust_codecs.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_rust_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_schema_audit.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_schema_ir.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_security.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_transcoder.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_ts_codegen.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_unbounded_choice.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/tests/test_xsi_type.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/Cargo.toml +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/README.md +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/benches/aot_vs_dataclass.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/src/lib.rs +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_conformance.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_generated_models.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_json.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_mixed_content.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_polyxml.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-python/tests/test_xsi_type.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/python/polyxml/AGENT_GUIDE.md +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/python/polyxml/__init__.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/python/polyxml/compat/__init__.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/python/polyxml/compat/xsdata.py +0 -0
- {polyxml-0.29.0 → polyxml-0.30.0}/python/polyxml/py.typed +0 -0
|
@@ -608,7 +608,7 @@ dependencies = [
|
|
|
608
608
|
|
|
609
609
|
[[package]]
|
|
610
610
|
name = "polyxml"
|
|
611
|
-
version = "0.
|
|
611
|
+
version = "0.30.0"
|
|
612
612
|
dependencies = [
|
|
613
613
|
"criterion",
|
|
614
614
|
"heck",
|
|
@@ -629,14 +629,14 @@ dependencies = [
|
|
|
629
629
|
|
|
630
630
|
[[package]]
|
|
631
631
|
name = "polyxml-c"
|
|
632
|
-
version = "0.
|
|
632
|
+
version = "0.30.0"
|
|
633
633
|
dependencies = [
|
|
634
634
|
"polyxml",
|
|
635
635
|
]
|
|
636
636
|
|
|
637
637
|
[[package]]
|
|
638
638
|
name = "polyxml-cli"
|
|
639
|
-
version = "0.
|
|
639
|
+
version = "0.30.0"
|
|
640
640
|
dependencies = [
|
|
641
641
|
"clap",
|
|
642
642
|
"glob",
|
|
@@ -650,7 +650,7 @@ dependencies = [
|
|
|
650
650
|
|
|
651
651
|
[[package]]
|
|
652
652
|
name = "polyxml-js"
|
|
653
|
-
version = "0.
|
|
653
|
+
version = "0.30.0"
|
|
654
654
|
dependencies = [
|
|
655
655
|
"napi",
|
|
656
656
|
"napi-build",
|
|
@@ -660,7 +660,7 @@ dependencies = [
|
|
|
660
660
|
|
|
661
661
|
[[package]]
|
|
662
662
|
name = "polyxml-python"
|
|
663
|
-
version = "0.
|
|
663
|
+
version = "0.30.0"
|
|
664
664
|
dependencies = [
|
|
665
665
|
"lexical-core",
|
|
666
666
|
"polyxml",
|
|
@@ -670,7 +670,7 @@ dependencies = [
|
|
|
670
670
|
|
|
671
671
|
[[package]]
|
|
672
672
|
name = "polyxml-wasm"
|
|
673
|
-
version = "0.
|
|
673
|
+
version = "0.30.0"
|
|
674
674
|
dependencies = [
|
|
675
675
|
"polyxml",
|
|
676
676
|
"quick-xml",
|
|
@@ -497,7 +497,7 @@ endif()
|
|
|
497
497
|
|
|
498
498
|
fn emit_includes(&self, out: &mut String, ir: &SchemaIR) {
|
|
499
499
|
if self.options.validate_facets
|
|
500
|
-
&& ir.
|
|
500
|
+
&& ir.emitted_types().any(|t| match t {
|
|
501
501
|
TypeDef::Simple(s) => !s.facets.patterns.is_empty(),
|
|
502
502
|
TypeDef::Struct(s) => s
|
|
503
503
|
.fields
|
|
@@ -528,7 +528,7 @@ endif()
|
|
|
528
528
|
writeln!(out, "\n// Glaze compile-time reflection metadata\n").unwrap();
|
|
529
529
|
|
|
530
530
|
// 1. Enums
|
|
531
|
-
for type_def in ir.
|
|
531
|
+
for type_def in ir.emitted_types() {
|
|
532
532
|
if let TypeDef::Enum(enum_def) = type_def {
|
|
533
533
|
let enum_name = type_ident(&enum_def.qname);
|
|
534
534
|
let full_type = format!("{}::{}", ns, enum_name);
|
|
@@ -635,8 +635,7 @@ concept XmlModel = requires(T a) {{
|
|
|
635
635
|
|
|
636
636
|
fn emit_forward_declarations(&self, out: &mut String, ir: &SchemaIR) {
|
|
637
637
|
let mut structs: Vec<String> = ir
|
|
638
|
-
.
|
|
639
|
-
.values()
|
|
638
|
+
.emitted_types()
|
|
640
639
|
.filter_map(|t| {
|
|
641
640
|
if let TypeDef::Struct(s) = t {
|
|
642
641
|
Some(type_ident(&s.qname))
|
|
@@ -658,14 +657,14 @@ concept XmlModel = requires(T a) {{
|
|
|
658
657
|
|
|
659
658
|
fn emit_types(&self, out: &mut String, ir: &SchemaIR) {
|
|
660
659
|
// Emit simple type aliases first
|
|
661
|
-
for type_def in ir.
|
|
660
|
+
for type_def in ir.emitted_types() {
|
|
662
661
|
if let TypeDef::Simple(simple) = type_def {
|
|
663
662
|
self.emit_simple_type(out, simple, ir);
|
|
664
663
|
}
|
|
665
664
|
}
|
|
666
665
|
|
|
667
666
|
// Emit enums next
|
|
668
|
-
for type_def in ir.
|
|
667
|
+
for type_def in ir.emitted_types() {
|
|
669
668
|
if let TypeDef::Enum(enum_def) = type_def {
|
|
670
669
|
self.emit_enum(out, enum_def);
|
|
671
670
|
}
|
|
@@ -675,6 +674,9 @@ concept XmlModel = requires(T a) {{
|
|
|
675
674
|
let sorted_qnames = self.topological_sort_types(ir);
|
|
676
675
|
|
|
677
676
|
for qname in sorted_qnames {
|
|
677
|
+
if ir.is_external_type(&qname) {
|
|
678
|
+
continue;
|
|
679
|
+
}
|
|
678
680
|
if let Some(type_def) = ir.types.get(&qname) {
|
|
679
681
|
match type_def {
|
|
680
682
|
TypeDef::Union(u) => self.emit_union(out, u),
|
|
@@ -307,7 +307,7 @@ impl CSharpCodegen {
|
|
|
307
307
|
};
|
|
308
308
|
|
|
309
309
|
// Emit SimpleTypes / Enums
|
|
310
|
-
for def in ir.
|
|
310
|
+
for def in ir.emitted_types() {
|
|
311
311
|
if let TypeDef::Enum(e) = def {
|
|
312
312
|
self.emit_enum(&mut out, e, indent);
|
|
313
313
|
} else if let TypeDef::Simple(s) = def {
|
|
@@ -320,14 +320,14 @@ impl CSharpCodegen {
|
|
|
320
320
|
}
|
|
321
321
|
|
|
322
322
|
// Emit Unions (Choices)
|
|
323
|
-
for def in ir.
|
|
323
|
+
for def in ir.emitted_types() {
|
|
324
324
|
if let TypeDef::Union(u) = def {
|
|
325
325
|
self.emit_union(&mut out, u, ir, indent);
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
// Emit Structs (ComplexTypes)
|
|
330
|
-
for def in ir.
|
|
330
|
+
for def in ir.emitted_types() {
|
|
331
331
|
if let TypeDef::Struct(s) = def {
|
|
332
332
|
self.emit_struct(&mut out, s, ir, indent);
|
|
333
333
|
}
|
|
@@ -373,7 +373,7 @@ impl CSharpCodegen {
|
|
|
373
373
|
.unwrap();
|
|
374
374
|
|
|
375
375
|
// Enums
|
|
376
|
-
for def in ir.
|
|
376
|
+
for def in ir.emitted_types() {
|
|
377
377
|
if let TypeDef::Enum(e) = def {
|
|
378
378
|
let name = type_ident(&e.qname);
|
|
379
379
|
writeln!(out, "{}[JsonSerializable(typeof({}))]", indent, name).unwrap();
|
|
@@ -381,7 +381,7 @@ impl CSharpCodegen {
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
// Simple types
|
|
384
|
-
for def in ir.
|
|
384
|
+
for def in ir.emitted_types() {
|
|
385
385
|
if let TypeDef::Simple(s) = def {
|
|
386
386
|
let name = type_ident(&s.qname);
|
|
387
387
|
writeln!(out, "{}[JsonSerializable(typeof({}))]", indent, name).unwrap();
|
|
@@ -389,7 +389,7 @@ impl CSharpCodegen {
|
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
// Unions
|
|
392
|
-
for def in ir.
|
|
392
|
+
for def in ir.emitted_types() {
|
|
393
393
|
if let TypeDef::Union(u) = def {
|
|
394
394
|
let name = type_ident(&u.qname);
|
|
395
395
|
writeln!(out, "{}[JsonSerializable(typeof({}))]", indent, name).unwrap();
|
|
@@ -398,7 +398,7 @@ impl CSharpCodegen {
|
|
|
398
398
|
}
|
|
399
399
|
|
|
400
400
|
// Structs
|
|
401
|
-
for def in ir.
|
|
401
|
+
for def in ir.emitted_types() {
|
|
402
402
|
if let TypeDef::Struct(s) = def {
|
|
403
403
|
let name = type_ident(&s.qname);
|
|
404
404
|
writeln!(out, "{}[JsonSerializable(typeof({}))]", indent, name).unwrap();
|
|
@@ -255,7 +255,7 @@ impl GoCodegen {
|
|
|
255
255
|
set_type_name_map(build_type_name_map(ir, to_go_type_name));
|
|
256
256
|
let mut body = String::new();
|
|
257
257
|
let mut has_time = false;
|
|
258
|
-
let lexical_patterns = ir.
|
|
258
|
+
let lexical_patterns = ir.emitted_types().any(|def| match def {
|
|
259
259
|
TypeDef::Union(u) if u.is_lexical() => u.branches.iter().any(|branch| {
|
|
260
260
|
matches!(&branch.type_ref, TypeRef::Named(q) if matches!(ir.types.get(q), Some(TypeDef::Simple(s)) if !s.facets.patterns.is_empty()))
|
|
261
261
|
}),
|
|
@@ -263,7 +263,7 @@ impl GoCodegen {
|
|
|
263
263
|
});
|
|
264
264
|
let has_patterns = lexical_patterns
|
|
265
265
|
|| (self.options.validate_facets
|
|
266
|
-
&& ir.
|
|
266
|
+
&& ir.emitted_types().any(|t| match t {
|
|
267
267
|
TypeDef::Simple(s) => !s.facets.patterns.is_empty(),
|
|
268
268
|
TypeDef::Struct(s) => s
|
|
269
269
|
.fields
|
|
@@ -276,7 +276,7 @@ impl GoCodegen {
|
|
|
276
276
|
let mut has_xml = self.options.emit_xml_tags;
|
|
277
277
|
|
|
278
278
|
// Check types for time.Time
|
|
279
|
-
for type_def in ir.
|
|
279
|
+
for type_def in ir.emitted_types() {
|
|
280
280
|
match type_def {
|
|
281
281
|
TypeDef::Struct(s) => {
|
|
282
282
|
if s.is_mixed && self.options.emit_xml_tags {
|
|
@@ -421,28 +421,28 @@ impl GoCodegen {
|
|
|
421
421
|
|
|
422
422
|
fn emit_types(&self, out: &mut String, ir: &SchemaIR) {
|
|
423
423
|
// Emit simple types
|
|
424
|
-
for type_def in ir.
|
|
424
|
+
for type_def in ir.emitted_types() {
|
|
425
425
|
if let TypeDef::Simple(simple) = type_def {
|
|
426
426
|
self.emit_simple_type(out, simple, ir);
|
|
427
427
|
}
|
|
428
428
|
}
|
|
429
429
|
|
|
430
430
|
// Emit enums
|
|
431
|
-
for type_def in ir.
|
|
431
|
+
for type_def in ir.emitted_types() {
|
|
432
432
|
if let TypeDef::Enum(enum_def) = type_def {
|
|
433
433
|
self.emit_enum(out, enum_def);
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
436
|
|
|
437
437
|
// Emit choices (unions)
|
|
438
|
-
for type_def in ir.
|
|
438
|
+
for type_def in ir.emitted_types() {
|
|
439
439
|
if let TypeDef::Union(u) = type_def {
|
|
440
440
|
self.emit_union(out, u, ir);
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
// Emit structs
|
|
445
|
-
for type_def in ir.
|
|
445
|
+
for type_def in ir.emitted_types() {
|
|
446
446
|
if let TypeDef::Struct(s) = type_def {
|
|
447
447
|
self.emit_struct(out, s, ir);
|
|
448
448
|
}
|
|
@@ -20,8 +20,8 @@ impl JavaCodegen {
|
|
|
20
20
|
_ => Ok(()),
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
let names: HashSet<_> = ir.
|
|
24
|
-
for def in ir.
|
|
23
|
+
let names: HashSet<_> = ir.emitted_types().map(|d| type_ident(d.qname())).collect();
|
|
24
|
+
for def in ir.emitted_types() {
|
|
25
25
|
let name = type_ident(def.qname());
|
|
26
26
|
if names.contains(&format!("{name}Codec")) {
|
|
27
27
|
return Err(format!(
|
|
@@ -260,7 +260,7 @@ impl JavaCodegen {
|
|
|
260
260
|
set_type_name_map(build_type_name_map(ir, to_java_type_name));
|
|
261
261
|
let mut files = Vec::new();
|
|
262
262
|
|
|
263
|
-
for type_def in ir.
|
|
263
|
+
for type_def in ir.emitted_types() {
|
|
264
264
|
let (type_name, content) = self.generate_single_type(type_def, false, ir);
|
|
265
265
|
let filename = format!("{}.java", type_name);
|
|
266
266
|
files.push((filename, content));
|
|
@@ -285,7 +285,7 @@ impl JavaCodegen {
|
|
|
285
285
|
let _ = writeln!(out, "public final class {} {{", outer_class_name);
|
|
286
286
|
let _ = writeln!(out, " private {}() {{}}\n", outer_class_name);
|
|
287
287
|
|
|
288
|
-
for type_def in ir.
|
|
288
|
+
for type_def in ir.emitted_types() {
|
|
289
289
|
let (_, body) = self.generate_type_body(type_def, " ", ir);
|
|
290
290
|
out.push_str(&body);
|
|
291
291
|
out.push('\n');
|
|
@@ -316,7 +316,7 @@ impl JavaCodegen {
|
|
|
316
316
|
}
|
|
317
317
|
|
|
318
318
|
if self.options.emit_direct_codec {
|
|
319
|
-
for def in ir.
|
|
319
|
+
for def in ir.emitted_types() {
|
|
320
320
|
let codec = self.generate_codec(def, ir);
|
|
321
321
|
let body = &codec[codec.find("public final class ").unwrap()..];
|
|
322
322
|
out.push_str(&body.replacen(
|
|
@@ -85,7 +85,9 @@ pub fn build_type_name_map<F: Fn(&str) -> String>(
|
|
|
85
85
|
) -> HashMap<QName, String> {
|
|
86
86
|
let mut taken: HashSet<String> = HashSet::new();
|
|
87
87
|
let mut map = HashMap::new();
|
|
88
|
-
|
|
88
|
+
let mut keys: Vec<&QName> = ir.types.keys().collect();
|
|
89
|
+
keys.sort_by_key(|q| (ir.is_external_type(q), *q));
|
|
90
|
+
for qname in keys {
|
|
89
91
|
let base = name_of(&qname.local);
|
|
90
92
|
let mut name = base.clone();
|
|
91
93
|
let mut n = 2u32;
|
|
@@ -276,6 +276,9 @@ impl PythonCodegen {
|
|
|
276
276
|
let sorted_types = self.order_types(ir);
|
|
277
277
|
|
|
278
278
|
for type_def in sorted_types {
|
|
279
|
+
if ir.is_external_type(type_def.qname()) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
279
282
|
out.push('\n');
|
|
280
283
|
match type_def {
|
|
281
284
|
TypeDef::Simple(s) => self.emit_simple_type(&mut out, s),
|
|
@@ -298,7 +301,7 @@ impl PythonCodegen {
|
|
|
298
301
|
let mut has_decimal = false;
|
|
299
302
|
let mut has_annotated = false;
|
|
300
303
|
|
|
301
|
-
for type_def in ir.
|
|
304
|
+
for type_def in ir.emitted_types() {
|
|
302
305
|
match type_def {
|
|
303
306
|
TypeDef::Struct(_) => has_structs = true,
|
|
304
307
|
TypeDef::Enum(_) => has_enums = true,
|
|
@@ -259,6 +259,9 @@ impl RustCodegen {
|
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
for type_def in &sorted_types {
|
|
262
|
+
if ir.is_external_type(type_def.qname()) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
262
265
|
out.push('\n');
|
|
263
266
|
match type_def {
|
|
264
267
|
TypeDef::Simple(s) => self.emit_simple_type(&mut out, s, &types_with_lifetime),
|
|
@@ -457,9 +457,22 @@ pub struct SchemaIR {
|
|
|
457
457
|
pub types: BTreeMap<QName, TypeDef>,
|
|
458
458
|
pub elements: BTreeMap<QName, ElementDef>,
|
|
459
459
|
pub substitution_groups: HashMap<QName, Vec<QName>>,
|
|
460
|
+
/// Type owners outside the module currently being emitted. Definitions
|
|
461
|
+
/// remain in `types` so generators can resolve their field semantics.
|
|
462
|
+
#[serde(default)]
|
|
463
|
+
pub external_types: BTreeMap<QName, String>,
|
|
460
464
|
}
|
|
461
465
|
|
|
462
466
|
impl SchemaIR {
|
|
467
|
+
pub fn is_external_type(&self, qname: &QName) -> bool {
|
|
468
|
+
self.external_types.contains_key(qname)
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
pub fn emitted_types(&self) -> impl Iterator<Item = &TypeDef> {
|
|
472
|
+
self.types
|
|
473
|
+
.values()
|
|
474
|
+
.filter(|ty| !self.is_external_type(ty.qname()))
|
|
475
|
+
}
|
|
463
476
|
pub fn new() -> Self {
|
|
464
477
|
Self::default()
|
|
465
478
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{polyxml-0.29.0 → polyxml-0.30.0}/crates/polyxml-core/benches/support/tag_dispatch_fixtures.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|