File: class.jinja2

package info (click to toggle)
python-xsdata 24.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,936 kB
  • sloc: python: 29,257; xml: 404; makefile: 27; sh: 6
file content (57 lines) | stat: -rw-r--r-- 2,480 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
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
{% set level = level|default(0) -%}
{% set help | format_docstring(level + 1) %}
    {%- include "docstrings." + docstring_name + ".jinja2" -%}
{% endset -%}
{% set parent_namespace = obj.namespace if obj.namespace is not none else parent_namespace|default(None) -%}
{% set parents = parents|default([obj.name]) -%}
{% set class_name =  obj.name|class_name -%}
{% set class_annotations =  obj | class_annotations(class_name) -%}
{% set global_type = level == 0 and not obj.local_type -%}
{% set local_name =  obj.meta_name or obj.name -%}
{% set local_name = None if class_name == local_name or not global_type else local_name -%}
{% set base_classes = obj | class_bases(class_name) | join(', ')-%}
{% set post_meta_output = obj | post_meta_hook -%}
{% set target_namespace = obj.target_namespace if global_type and module_namespace != obj.target_namespace else None %}

{{ class_annotations | join('\n') }}
class {{ class_name }}{{"({})".format(base_classes) if base_classes }}:
{%- if help %}
{{ help|indent(4, first=True) }}
{%- endif -%}
{%- if local_name or obj.is_nillable or obj.namespace is not none or target_namespace or obj.local_type %}
    class Meta:
        {%- if obj.local_type %}
        global_type = False
        {%- endif -%}
        {%- if local_name %}
        name = "{{ local_name }}"
        {%- endif -%}
        {%- if obj.is_nillable %}
        nillable = True
        {%- endif -%}
        {%- if obj.namespace is not none %}
        namespace = "{{ obj.namespace }}"
        {%- endif %}
        {%- if target_namespace and target_namespace != obj.namespace %}
        target_namespace = "{{ target_namespace }}"
        {%- endif %}
{% elif obj.attrs|length == 0 and not help and not extra_output %}
    pass
{%- endif -%}
{%- if post_meta_output %}
{{ post_meta_output|indent(4, first=True) }}
{%- endif -%}
{%- for attr in obj.attrs %}
    {%- set field_typing = attr|field_type(parents) %}
    {%- set field_definition = attr|field_definition(obj.ns_map, parent_namespace, parents) %}
    {{ attr.name|field_name(obj.name) }}: {{ field_typing }} = {{ field_definition }}
{%- endfor -%}
{%- for inner in obj.inner %}
    {%- set tpl = "enum.jinja2" if inner.is_enumeration else "class.jinja2" -%}
    {%- set inner_parents = parents + [inner.name] -%}
    {%- filter indent(4) -%}
        {%- with obj=inner, parents=inner_parents, level=(level + 1) -%}
            {% include tpl %}
        {%- endwith -%}
    {%- endfilter -%}
{%- endfor -%}