o
    Šågq  ã                   @  sÔ   d dl mZ d dlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ	 dd
l
mZ ddlmZ ddgZi Zd dd„Zdd„ Zdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdd„ Zdd„ ZdS )!é    )ÚannotationsNé   )Úconfig)Ú
exclusionsé   )Úevent)Úschema)Útypes)Úmapped_column)ÚOrderedDictÚTableÚColumnÚreturnúschema.Tablec                    sÂ   ‡ fdd„t ˆ ƒD ƒ}ˆ  t¡ t tjd¡r5dˆ vr4dˆ vr4dˆ vr4d|v s+d|v r0d	ˆ d< n)d
ˆ d< n$t tjd¡rYdˆ vrYdˆ vrYdˆ vrYd|v sPd|v rUd	ˆ d< nd
ˆ d< tj| i ˆ ¤ŽS )z8A schema.Table wrapper/hook for dialect-specific tweaks.c                   ó"   i | ]}|  d ¡r|ˆ  |¡“qS ©Útest_©Ú
startswithÚpop©Ú.0Úk©Úkw© úU/var/www/html/flaskapp/venv/lib/python3.10/site-packages/sqlalchemy/testing/schema.pyÚ
<dictcomp>   ó   " zTable.<locals>.<dictcomp>ÚmysqlÚmysql_engineÚ
mysql_typeÚautoload_withÚtest_needs_fkÚtest_needs_acidÚInnoDBÚMyISAMÚmariadbÚmariadb_engineÚmariadb_type)	ÚlistÚupdateÚtable_optionsr   Úagainstr   Ú_currentr   r   )Úargsr   Ú	test_optsr   r   r   r      s$   

€
c                  O  s   t t| |ƒS )z>An orm.mapped_column wrapper/hook for dialect-specific tweaks.)Ú_schema_columnÚ_orm_mapped_column©r/   r   r   r   r   r
   ?   s   r
   c                  O  s   t tj| |ƒS )z9A schema.Column wrapper/hook for dialect-specific tweaks.)r1   r   r   r3   r   r   r   r   E   s   c                   s¾   ‡ fdd„t ˆ ƒD ƒ}tjj t¡sdd„ |D ƒ}| |i ˆ ¤Ž}| tju r(|}n|j}| dd¡r]ˆ  dd¡r]|j	d u rD|j
d u rDd|_d|jd< t tjd	¡r]d
d„ }tj|d|dd� |S )Nc                   r   r   r   r   r   r   r   r   L   r   z"_schema_column.<locals>.<dictcomp>c                 S  s   g | ]
}t |tjƒs|‘qS r   )Ú
isinstancer   Ú
ForeignKey)r   Úargr   r   r   Ú
<listcomp>O   s    z"_schema_column.<locals>.<listcomp>Útest_needs_autoincrementFÚprimary_keyTÚoraclec                 S  s2   |   tjttjj|jd | j d ƒdd�¡ d S )NÚ_Ú_seqT)Úoptional)Ú_init_itemsr   ÚSequenceÚ_truncate_namer   ÚdbÚdialectÚname)ÚcÚtblr   r   r   Úadd_seqe   s   ÿüÿz_schema_column.<locals>.add_seqÚafter_parent_attach)Ú	propagate)r*   r   ÚrequirementsÚforeign_key_ddlÚenabled_for_configr   r   ÚcolumnÚgetÚdefaultÚserver_defaultÚautoincrementÚinfor   r-   r.   r   Úlisten)Úfactoryr/   r   r0   Ú	constructÚcolrF   r   r   r   r1   K   s"   
ÿ

r1   c                   @  ó(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Úeq_type_affinityaÎ  Helper to compare types inside of datastructures based on affinity.

    E.g.::

        eq_(
            inspect(connection).get_columns("foo"),
            [
                {
                    "name": "id",
                    "type": testing.eq_type_affinity(sqltypes.INTEGER),
                    "nullable": False,
                    "default": None,
                    "autoincrement": False,
                },
                {
                    "name": "data",
                    "type": testing.eq_type_affinity(sqltypes.NullType),
                    "nullable": True,
                    "default": None,
                    "autoincrement": False,
                },
            ],
        )

    c                 C  s   t  |¡| _d S ©N)ÚsqltypesÚto_instanceÚtarget©Úselfr[   r   r   r   Ú__init__Ž   s   zeq_type_affinity.__init__c                 C  s   | j j|ju S rX   ©r[   Ú_type_affinity©r]   Úotherr   r   r   Ú__eq__‘   ó   zeq_type_affinity.__eq__c                 C  s   | j j|juS rX   r_   ra   r   r   r   Ú__ne__”   rd   zeq_type_affinity.__ne__N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r^   rc   re   r   r   r   r   rW   s   s
    rW   c                   @  rV   )	Úeq_compile_typez,similar to eq_type_affinity but uses compilec                 C  ó
   || _ d S rX   ©r[   r\   r   r   r   r^   ›   ó   
zeq_compile_type.__init__c                 C  s   | j | ¡ kS rX   ©r[   Úcompilera   r   r   r   rc   ž   rd   zeq_compile_type.__eq__c                 C  s   | j | ¡ kS rX   ro   ra   r   r   r   re   ¡   rd   zeq_compile_type.__ne__Nrf   r   r   r   r   rk   ˜   ó
    rk   c                   @  rV   )	Úeq_clause_elementz3Helper to compare SQL structures based on compare()c                 C  rl   rX   rm   r\   r   r   r   r^   ¨   rn   zeq_clause_element.__init__c                 C  s   | j  |¡S rX   ©r[   Úcomparera   r   r   r   rc   «   s   zeq_clause_element.__eq__c                 C  s   | j  |¡ S rX   rs   ra   r   r   r   re   ®   rd   zeq_clause_element.__ne__Nrf   r   r   r   r   rr   ¥   rq   rr   c                 C  sF   t |ƒ| jkr!|dt| jd dƒ… d tt|ƒd ƒdd …  S |S )Nr   é   r;   é@   r   )ÚlenÚmax_identifier_lengthÚmaxÚhexÚhash)rB   rC   r   r   r   r@   ²   s   ÿþÿr@   c              	     s€   t ƒ }d	‡ fdd„	}i ‰ t‡ fdd„ƒ}t| tf|||dœƒ}zt d¡j dd¡}W n tt	fy6   Y nw |d ur>||_
|S )
Nc                   sP   || _ || _| | j|< | ˆ |< t| j|| ƒ |r&| | j|< t| j|| ƒ d S d S rX   )rC   ÚvalueÚ__members__ÚsetattrÚ	__class__)r]   rC   r|   Úalias©Úvalue_to_memberr   r   r^   Á   s   

þzpep435_enum.<locals>.__init__c                   s   ˆ | S rX   r   )Úclsr|   r�   r   r   rM   Í   s   zpep435_enum.<locals>.get)r}   r^   rM   r   rg   Ú__main__rX   )r   ÚclassmethodÚtypeÚobjectÚsysÚ	_getframeÚ	f_globalsrM   ÚAttributeErrorÚ
ValueErrorrh   )rC   r}   r^   rM   ÚsomeenumÚmoduler   r�   r   Úpep435_enum½   s$   

ýÿr�   )r   r   )Ú
__future__r   rˆ   Ú r   r   r   r   r	   rY   Úormr
   r2   Úutilr   Ú__all__r,   r   r   r1   rW   rk   rr   r@   r�   r   r   r   r   Ú<module>   s(   
%(%