
    ^j                         U d dl mZ d dlmZ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ed<   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Type)Drawing)	DXFEntity)ExtendedTags)	register_entityENTITY_CLASSESreplace_entitynewclsis_boundcreate_db_entryloadbindzdict[str, Type[DXFEntity]]r   Nc                
    | a | S N)DEFAULT_CLASS)r   s    O/opt/ringagent/.cad-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$   xdictr9   s       r   r   r   O   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   )r1   
is_virtualr$   r8   r"   layoutsget_layout_for_entityunlink_entityKeyErrorgetattrr2   discard)r)   r$   layoutr?   s       r   rA   rA   j   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`.Fr0   )r1   rD   r$   r2   r8   r!   )r)   r$   s     r   r   r      sN    ??FJJc1<<333<::,,r   )NN)r(   strr$   Optional[Drawing]returnr   )r$   r   rO   r   r   )r,   r	   r$   rN   rO   r   )r(   rM   rO   r   )r)   r   r$   r   rO   None)r)   r   )r)   r   r$   r   rO   bool)
__future__r   typingr   r   r   ezdxf.documentr   ezdxf.entitiesr   ezdxf.lldxf.extendedtagsr	   __all__r   __annotations__r   r   r   r
   r   r   r   r   r   rA   r    r   r   <module>rZ      s    # 0 0&(5
 .0* / =A
@
@(9
@
@@
6 60-r   