a
    Døg  ã                   @   s    d dl mZ dd„ Zdd„ ZdS )é    )ÚMappingc                 C   sL   |  ¡ D ]>\}}t|tƒr:|r:t|  |i ¡|ƒ}|| |< q|| | |< q| S )zTUpdate a nested dictionary or similar mapping.

    Modify ``source`` in place.
    )ÚitemsÚ
isinstancer   Údeep_updateÚget)ÚsourceZ	overridesÚkeyÚvalueZreturned© r
   úR/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/utils/utils.pyr      s    
r   c                 C   sŒ   i }t | tƒr|  ¡ n| }|D ]h\}}t |ttfƒrP|D ]\}}||t|ƒ< q8qt |tƒrz| ¡ D ]\}}||t|ƒ< qbq||t|ƒ< q|S )a9  
    Convert potentially grouped choices into a flat dict of choices.

    flatten_choices([(1, '1st'), (2, '2nd')]) -> {1: '1st', 2: '2nd'}
    flatten_choices([('Group', [(1, '1st'), (2, '2nd')])]) -> {1: '1st', 2: '2nd'}
    flatten_choices({'Group': {'1': '1st', '2': '2nd'}}) -> {'1': '1st', '2': '2nd'}
    )r   Údictr   ÚlistÚtupleÚstr)ÚchoicesÚretZ	to_unpackr   r	   Zsub_keyZ	sub_valuer
   r
   r   Úflatten_choices   s    
r   N)Úcollections.abcr   r   r   r
   r
   r
   r   Ú<module>   s   