
    Og                        d dl mZ d dlmZmZ erd dlmZ d dlmZ d dl	m
Z
 g dZi Zdad Zd	 Zd
 Z	 d	 	 	 	 	 ddZddZdddZddZddZddZddZy)    )annotations)TYPE_CHECKINGOptional)Drawing)	DXFEntity)ExtendedTags)	register_entityENTITY_CLASSESreplace_entitynewclsis_boundcreate_db_entryloadbindNc                
    | a | S N)DEFAULT_CLASS)r   s    [/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/factory.pyset_default_classr      s    MJ    c                0    | j                   }| t        |<   | S r   )DXFTYPEr
   r   names     r   r   r   #   s    ;;DN4Jr   c                ^    | j                   }|t        v rt        d| d      | t        |<   | S )Nz!Double registration for DXF type .)r   r
   	TypeErrorr   s     r   r	   r	   )   s7    ;;D~;D6CDDN4Jr   c                z    t        |       j                  dd||      }t        |d      r|j                         S |S )zCCreate a new entity, does not require an instantiated DXF document.N)handleowner
dxfattribsdoccast)r   r   hasattrr$   dxftyper"   r#   entitys       r   r   r   1   sE     \	  F $FF36;;=??r   c                8    t        | |      }t        ||       |S )N)r'   r"   )r   r   r&   s       r   r   r   >   s    Z8FMr   c                    t        | j                               j                  | |      }t        |d      r|j	                         S |S )Nr$   )r   r'   r   r%   r$   )tagsr#   r(   s      r   r   r   D   s9     %%dC0F#FF36;;=??r   c                6    t         j                  | t              S )z'Returns registered class for `dxftype`.)r
   getr   )r'   s    r   r   r   I   s    g}55r   c                   | j                   sJ d       |j                  J d       || _        |j                  j                  |        |j                  s| j
                  || j
                  }|j                  rd|j                  | j                  j                         |j                  }t        ||      s't        ||       |j                  j                  |       | j                          yy)zBind `entity` to the DXF document `doc`.

    The bind process stores the DXF `entity` in the entity database of the DXF
    document.

    zCan not bind destroyed entity.NMissing entity database.)is_aliveentitydbr#   add
is_loadingextension_dicthas_valid_dictionaryupdate_ownerdxfr    
dictionaryr   r   objects
add_objectpost_bind_hook)r(   r#   xdictr8   s       r   r   r   N   s     ??<<<?<<#?%??#FJLLV >>  ,))E))""6::#4#45"--

C0S)KK**:6 r   c                h   | j                   r| j                  s| j                  }| j                  j                  -	 |j
                  j                  |       }|j                  |        t        | dd      }|r	 |d        |j                  j                  |        d| _        yyy# t        $ r Y Hw xY w)zUnbind `entity` from document and layout, but does not destroy the
    entity.

    Turns `entity` into a virtual entity: no handle, no owner, no document.
    Nprocess_sub_entitiesc                    t        |       S r   )unbind)es    r   <lambda>zunbind.<locals>.<lambda>{   s
    6!9 r   )r0   
is_virtualr#   r7   r!   layoutsget_layout_for_entityunlink_entityKeyErrorgetattrr1   discard)r(   r#   layoutr>   s       r   r@   r@   i   s     v00jj::'-::6B $$V,&v/EtL !45V$
  1
  s   B% %	B10B1c                    | j                   sy| j                  s| j                  |ury|j                  sJ d       | j                  j
                  |j                  v S )z;Returns ``True`` if `entity`is bound to DXF document `doc`.Fr/   )r0   rC   r#   r1   r7   r    )r(   r#   s     r   r   r      sN    ??FJJc1<<333<::,,r   )NN)r'   strr#   Optional[Drawing]returnr   )r#   r   rN   r   r   )r+   r   r#   rM   rN   r   )r'   rL   rN   r   )r(   r   r#   r   rN   None)r(   r   )r(   r   r#   r   rN   bool)
__future__r   typingr   r   ezdxf.documentr   ezdxf.entitiesr   ezdxf.lldxf.extendedtagsr   __all__r
   r   r   r   r	   r   r   r   r   r   r@   r    r   r   <module>rX      s    # *&(5
  =A
@
@(9
@
@@
6
 60-r   