from typing import Optional, List
from kodexa.dataclasses import LLMDataAttribute, LLMDataObject

{%- for taxon in taxons %}

class {{ taxon_to_class_name(taxon) }}(LLMDataObject):

    {%- for child_taxon in taxon.children %}{%- if child_taxon.group %}
    {{ taxon_to_property_name(child_taxon) }}: Optional[List[{{ taxon_to_class_name(child_taxon) }}]] = None
    {%- else %}
    {{ taxon_to_property_name(child_taxon) }}: Optional[LLMDataAttribute] = LLMDataAttribute(taxon_path='{{ child_taxon.path }}', data_type='{{ child_taxon.taxon_type.title() }}', value_path='{{ child_taxon.value_path.title() }}')
    {%- endif %}
    {%- endfor %}

{%- endfor %}
