resolver
xsdata.codegen.resolver
DependenciesResolver
The dependencies resolver class.
Calculate what classes need to be imported per package, with aliases support.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
registry | dict[str, str] | The full class qname-module map. | required |
Attributes:
Name | Type | Description |
---|---|---|
aliases | dict[str, str] | The generated aliases dictionary |
imports | list[Import] | The list of generated imports |
class_list | list[str] | The topo-sorted list of class qnames |
class_map | dict[str, Class] | A qname-class map |
Source code in xsdata/codegen/resolver.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
|
__init__(registry)
Initialize the resolver.
Source code in xsdata/codegen/resolver.py
32 33 34 35 36 37 38 |
|
process(classes)
Resolve the dependencies for the given class list.
Reset previously resolved imports and aliases.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
classes | list[Class] | A list of classes that belong to the same target module | required |
Source code in xsdata/codegen/resolver.py
40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
sorted_imports()
Return a new sorted by name list of import instances.
Source code in xsdata/codegen/resolver.py
54 55 56 |
|
sorted_classes()
Apply aliases and return the sorted the generated class list.
Source code in xsdata/codegen/resolver.py
58 59 60 61 62 63 64 65 66 |
|
apply_aliases(target)
Apply import aliases to the target class.
Update attr and extension types to point to the new class aliases. Process inner classes too!
Parameters:
Name | Type | Description | Default |
---|---|---|---|
target | Class | The target class instance to process | required |
Source code in xsdata/codegen/resolver.py
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|
resolve_imports()
Build the list of class imports and set aliases if necessary.
Source code in xsdata/codegen/resolver.py
90 91 92 93 94 95 96 97 98 |
|
set_aliases()
Store generated aliases.
Source code in xsdata/codegen/resolver.py
100 101 102 |
|
resolve_conflicts(imports, protected)
classmethod
Find naming conflicts between imports and generate aliases.
Example
from foo.bar import MyType as BarMyType from bar.foo import MyType as FooMyType
Parameters:
Name | Type | Description | Default |
---|---|---|---|
imports | list[Import] | The list of class import instances | required |
protected | set | The set of protected class names from the module | required |
Source code in xsdata/codegen/resolver.py
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
|
get_class_module(qname)
Return the module for the given qualified class name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
qname | str | The namespace qualified name of the class | required |
Raises:
Type | Description |
---|---|
CodeGenerationError | if name doesn't exist. |
Source code in xsdata/codegen/resolver.py
132 133 134 135 136 137 138 139 140 141 142 143 |
|
import_classes()
Return a list of class qnames that need to be imported.
Source code in xsdata/codegen/resolver.py
145 146 147 |
|
create_class_list(classes)
staticmethod
Use topology sort to return a flat list for all the dependencies.
Source code in xsdata/codegen/resolver.py
149 150 151 152 |
|
create_class_map(classes)
staticmethod
Index the list of classes by their qualified names.
Raises:
Type | Description |
---|---|
CodeGenerationError | If two classes have the same qname. |
Returns:
Type | Description |
---|---|
dict[str, Class] | A qname-class map. |
Source code in xsdata/codegen/resolver.py
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
|