
    }f              	           d dl Z d dlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ dZ ed	d
dg      Zdej                  fdej                   dededz  defdZ G d de      Zy)    N)
namedtuple   )grammarsobjectmodel)IndentPrintMixin)compress_seq	safe_name)topsorta      #!/usr/bin/env python3

    # WARNING: CAVEAT UTILITOR
    #
    # This file was automatically generated by TatSu.
    #
    #    https://pypi.python.org/pypi/tatsu/
    #
    # Any changes you make to it will be overwritten the next time
    # the file is generated.

    from __future__ import annotations

    from typing import Any
    from dataclasses import dataclass

    from tatsu.semantics import ModelBuilderSemantics
    {base_type_import}


    class {name}ModelBuilderSemantics(ModelBuilderSemantics):
        def __init__(self, context=None, types=None):
            types = [
                t for t in globals().values()
                if type(t) is type and issubclass(t, ModelBase)
            ] + (types or [])
            super().__init__(context=context, types=types)
BaseClassSpec
class_namebase modelname	base_typereturnc                 f    |xs t         j                  }t        ||      }|j                  |       S )N)r   r   )r   NodePythonModelGeneratorgenerate_model)r   r   r   	generators       Z/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/ngcodegen/objectmodel.pymodelgenr   +   s/    -[--I$$)DI##E**    c                        e Zd Zdej                  fdedef fdZdej                  fdZ
ed        Zded	ed
z  fdZdej                  dee   fdZdej                  dee   fdZ xZS )r   r   r   r   c                 F    t         |           || _        |xs d | _        y )N)super__init__r   r   )selfr   r   	__class__s      r   r   zPythonModelGenerator.__init__3   s     "LD	r   grammarc                 *   | j                   }|j                  j                  d      d   }d|j                   d| }| j                  xs |j                  | _        | j                  t        j                  | j                  | j                   j                  |             |j                  D ci c]  }|j                  | }}|j                  D ci c]  }|j                  | j                  |        }}|j                         D 	ci c]  \  }}	|	s	||	 }}}	|j                         D 	
ci c]   }	|	D ]  }
|
j                  |
j                   " }}	}
| j                         }|||<   |j                         D 	
ch c]!  }	|	D ]  }
|
j                  |
j                  f # }}	}
t        t!        |      |      }|j                         D ci c]  \  }}||v r||   d   j                  | }}}|D ]h  }|t#        t$              v r|j'                  |      x}r | j)                  |||j                            H| j+                  ||j'                  |             j | j-                         S c c}w c c}w c c}	}w c c}
}	w c c}
}	w c c}}w )N.zfrom z import )r   r   base_type_importr   )r   __name__split
__module__r   printHEADERformatrules_base_class_specsitemsvaluesr   r   _model_base_namer
   reversedvarsbuiltinsget_gen_rule_class_gen_base_classprinted_text)r   r!   r   base_type_namer%   rule
rule_index
rule_specsr   specssspecs_by_namer   	all_specsmodel_namesmodel_to_rule
model_names                    r   r   z#PythonModelGenerator.generate_model8   s   NN	"++11#6r:"9#7#7"8@PQII-	

MMYY..11!1  	
 3:--@$diio@
@  
 IIt--d33

 
 6@5E5E5GQkdE5dEkQ
Q $**,

  LL!&& 

 

 $$&,d $**,

  \\166"
"
	 

 h}5yA )..0
dz! tQ**D0
 
 & 	PJT(^+$((44t4$$T:dii+@A$$Z1B1B:1NO	P   ""I A
 R


s*   /I3#I8
I=I=1%J&J	!Jc                       y)N	ModelBase rE   r   r   r0   z%PythonModelGenerator._model_base_namel   s    r   r   r   Nc                 2   | j                          | j                          | j                  d       |r| j                  d| d| d       n| j                  d| d       | j                         5  | j                  d       d d d        y # 1 sw Y   y xY w)N@dataclass(eq=False)class ()::pass)r)   indent)r   r   r   s      r   r6   z$PythonModelGenerator._gen_base_classp   s    





)*JJ
|1TF"56 JJ
|1-.[[] 	JJv	 	 	s   2BBr9   r<   c           	         |sy |d   }t        t        |j                               D ch c]  \  }}t        |       c}}      }| j	                          | j	                          | j	                  d       | j	                  d|j
                   d|j                   d       | j                         5  |s| j	                  d       |D ]  }| j	                  | d        	 d d d        y c c}}w # 1 sw Y   y xY w)Nr   rG   rH   rI   rJ   rL   z: Any = None)sortedr   definesr	   r)   r   r   rM   )r   r9   r<   specd_	argumentsargs           r   r5   z$PythonModelGenerator._gen_rule_class|   s    Qx\$,,.5QRTQIaLRS	





)*

VDOO,Adii[;<[[] 	1

6"  1

cU,/01	1 	1 S	1 	1s   C-
4/C33C<r   c           
      f   |j                   rt        |j                   d   t              sg S |j                   d   j                  d      }| j	                         g}|D cg c]  }t        |       c}|z   }t        |d d       D cg c]  \  }}t        |||dz             c}}S c c}w c c}}w )Nr   z::r$      )params
isinstancestrr'   r0   r	   	enumerater   )r   r9   rQ   r   nclass_namesir   s           r   r-   z&PythonModelGenerator._base_class_specs   s    {{*T[[^S"AI{{1~##D)%%'(-12y|2T9 "+;s+;!<
: *k!a%&89
 	
 3
s   B(B-)r&   r(   __qualname__r   r   rZ   typer   r   Grammarr   staticmethodr0   r6   Rulelistr   r5   r-   __classcell__)r    s   @r   r   r   1   s    #%9I9I !S !$ !
2#h&6&6 2#h  
# 
S4Z 
1HMM 1$}:M 1 	
hmm 	
]8K 	
r   r   )r3   collectionsr   r   r   r   mixins.indentr   utilr   r	   	util.miscr
   r*   r   r   ra   rZ   r`   r   r   rE   r   r   <module>rj      sy     " $ , * 
> ?\6,BC 35{O_O_ +H$$ +C + +dg +d
+ d
r   