Ë
    £èhW@  ã                  óD  — d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlZd dlmZmZ d dlmZmZmZmZmZ d dlmZ dd	lmZmZmZ dd
lmZ ddlmZ 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(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ ddgZ0 ejb                  d«      Z2 ed edd¬«       eddejf                  e¬«       eddejf                  e¬«      dœ«      Z4 ee4«      Z5dZ6e G d „ de«      «       Z7	 d'	 	 	 	 	 	 	 d(d!„Z8d)d"„Z9d*d#„Z:d+d$„Z; G d%„ de e7   «      Z<d,d&„Z=y)-é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚIteratorÚcastÚUnionÚOptional)ÚcontextmanagerN)Ú	validatorÚconst)ÚDXFAttrÚDXFAttributesÚDefSubclassÚRETURN_DEFAULTÚgroup_code_mapping)Ú
AuditErroré   )Ú
base_classÚSubclassProcessorÚ	DXFEntity)Ú	DXFObject)Úregister_entity)ÚObjectCollection)Údefault_copyÚCopyNotSupported)ÚAuditor)ÚDrawing)ÚDXFNamespaceÚ
Dictionary)ÚEntityDB)ÚLayouts)ÚAbstractTagWriterÚDXFGroupÚGroupCollectionÚezdxfÚ	AcDbGroupi,  Ú )ÚdefaultéF   )r(   r   ÚfixeréG   ©ÚdescriptionÚunnamedÚ
selectableiT  c                  ó   ‡ — e Zd ZdZdZ eee«      Zdˆ fd„Z	e
fd„Z	 d	 	 	 dˆ fd„Zd„ Zdd„Zdˆ fd„Zdd	„Zdd
„Zd d„Zd„ Zd!d„Zd"d„Zd#ˆ fd„Zed$d„«       Zd%d„Zd&d„Zd&d„Zdd„Zd'd„Zd'd„Zd(d„Zd)d„Z ˆ xZ!S )*r#   z”Groups are not allowed in block definitions, and each entity can only
    reside in one group, so cloning of groups creates also new entities.

    ÚGROUPc                óN   •— t         ‰| �  «        t        «       | _        g | _        y ©N)ÚsuperÚ__init__ÚsetÚ_handlesÚ_data)ÚselfÚ	__class__s    €ú8lib/python3.12/site-packages/ezdxf/entities/dxfgroups.pyr5   zDXFGroup.__init__N   s   ø€ Ü‰ÑÔÜ"%£%ˆŒØ&(ˆ�
ó    c                ó   — t        d«      ‚)NzCopying of GROUP not supported.)r   )r9   Úcopy_strategys     r;   ÚcopyzDXFGroup.copyS   s   € ÜÐ@ÓAÐAr<   c                ó~   •— t         ‰| �  |«      }|r*|j                  |t        dd¬«      }| j	                  |«       |S )Nr   F)Úlog)r4   Úload_dxf_attribsÚfast_load_dxfattribsÚacdb_group_group_codesÚ
load_group)r9   Ú	processorÚdxfÚtagsr:   s       €r;   rB   zDXFGroup.load_dxf_attribsV   sI   ø€ ô ‰gÑ& yÓ1ˆÙØ×1Ñ1ØÔ+¨Q°Eð 2ó ˆDð �O‰O˜DÔ!Øˆ
r<   c                ób   — |D ]*  \  }}|t         k(  sŒ| j                  j                  |«       Œ, y r3   )ÚGROUP_ITEM_CODEr7   Úadd)r9   rH   ÚcodeÚvalues       r;   rE   zDXFGroup.load_groupa   s,   € Û‰KˆD�%Ø”Ó&ð —‘×!Ñ! %Õ(ñ	  r<   c                óª   — | j                   €J ‚| j                  | j                   «       t        | j                  «      st	        j
                  d«      ‚y)NúWAll entities have to be in the same layout and are not allowed to be in a block layout.T)ÚdocÚpurgeÚall_entities_on_same_layoutr8   r   ÚDXFStructureError)r9   Ú	tagwriters     r;   Úpreprocess_exportzDXFGroup.preprocess_exporth   sK   € à�x‰xÐ#Ð#Ð#Ø�
‰
�4—8‘8Ôä*¨4¯:©:Ô6Ü×)Ñ)ð,óð ð r<   c                óÞ   •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |g d¢«       | j                  |«       y)z(Export entity specific data as DXF tags.r,   N)
r4   Úexport_entityÚ
write_tag2r   ÚSUBCLASS_MARKERÚ
acdb_groupÚnamerG   Úexport_dxf_attribsÚexport_group)r9   rT   r:   s     €r;   rW   zDXFGroup.export_entityt   sM   ø€ ä‰Ñ˜iÔ(Ø×ÑœU×2Ñ2´J·O±OÔDØ�‰×#Ñ# IÒ/WÔXØ×Ñ˜)Õ$r<   c                óz   — | j                   D ],  }|j                  t        |j                  j                  «       Œ. y r3   )r8   rX   rJ   rG   Úhandle)r9   rT   Úentitys      r;   r]   zDXFGroup.export_group{   s*   € Ø—j”jˆFØ× Ñ ¤°&·*±*×2CÑ2CÕDñ !r<   c                ó(   — d„ | j                   D «       S )zŠIterate over all DXF entities in :class:`DXFGroup` as instances of
        :class:`DXFGraphic` or inherited (LINE, CIRCLE, ...).

        c              3  ó:   K  — | ]  }|j                   sŒ|–— Œ y ­wr3   )Úis_alive)Ú.0Úes     r;   Ú	<genexpr>z$DXFGroup.__iter__.<locals>.<genexpr>„   s   è ø€ Ð4™:�a¨¯«”™:ùs   ‚”©r8   ©r9   s    r;   Ú__iter__zDXFGroup.__iter__   s   € ñ
 5˜4Ÿ:š:Ó4Ð4r<   c                ó,   — t        | j                  «      S )z7Returns the count of DXF entities in :class:`DXFGroup`.)Úlenr8   rh   s    r;   Ú__len__zDXFGroup.__len__†   s   € ä�4—:‘:‹Ðr<   c                ó    — | j                   |   S )z9Returns entities by standard Python indexing and slicing.rg   )r9   Úitems     r;   Ú__getitem__zDXFGroup.__getitem__Š   s   € à�z‰z˜$ÑÐr<   c                óˆ   — t        |t        «      r|n|j                  j                  }|t	        | j                  «       «      v S )zšReturns ``True`` if item is in :class:`DXFGroup`. `item` has to be
        a handle string or an object of type :class:`DXFEntity` or inherited.

        )Ú
isinstanceÚstrrG   r_   r6   Úhandles)r9   rn   r_   s      r;   Ú__contains__zDXFGroup.__contains__Ž   s2   € ô
 $ D¬#Ô.‘°D·H±H·O±OˆØœ˜TŸ\™\›^Ó,Ð,Ð,r<   c                ó   — d„ | D «       S )z=Iterable of handles of all DXF entities in :class:`DXFGroup`.c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wr3   )rG   r_   ©rd   r`   s     r;   rf   z#DXFGroup.handles.<locals>.<genexpr>˜   s   è ø€ Ð5± f�—
‘
×!Õ!±ùó   ‚ "© rh   s    r;   rs   zDXFGroup.handles–   s   € á5±Ó5Ð5r<   c                óš   •‡ ‡— t         ‰‰ �  |«       |j                  j                  Šˆ fd„}ˆˆ fd„}t	         |«       «      ‰ _        ‰ `|S )Nc                 óÖ   •— t        ‰«      } t        ‰j                  ‰j                  | «      }t	        |«      s*‰j                  «        t        j                  d| › d�«       y |‰_        y )NúCleared z&, had entities from different layouts.)rr   Úfilter_invalid_entitiesr8   rP   rR   ÚclearÚloggerÚdebug)r[   Úentitiesr9   s     €r;   Úset_group_entitiesz3DXFGroup.post_load_hook.<locals>.set_group_entitiesž   sP   ø€ Ü�t“9ˆDÜ.¨t¯z©z¸4¿8¹8ÀTÓJˆHÜ.¨xÔ8Ø—
‘
”Ü—‘˜x¨ vÐ-SÐTÕUà%�•
r<   c               3  óh   •K  — ‰j                   D ]  }  ‰| «      }|sŒ|j                  sŒ|–— Œ  y ­wr3   )r7   rc   )r_   r`   Údb_getr9   s     €€r;   r�   z)DXFGroup.post_load_hook.<locals>.entities§   s,   øè ø€ ØŸ-œ-�Ù ›�Ú˜fŸo›oØ “Lñ (ùs   ƒ2ž2«2)r4   Úpost_load_hookÚentitydbÚgetÚlistr8   r7   )r9   rP   r‚   r�   r„   r:   s   `   @€r;   r…   zDXFGroup.post_load_hookš   sD   ú€ Ü‰Ñ˜sÔ#Ø—‘×!Ñ!ˆô	&õ	!ô ™(›*Ó%ˆŒ
ØˆMØ!Ð!r<   c              #  óL   K  — t        | «      }|–— | j                  |«       y­w)aD  Context manager which yields all the group entities as
        standard Python list::

            with group.edit_data() as data:
               # add new entities to a group
               data.append(modelspace.add_line((0, 0), (3, 0)))
               # remove last entity from a group
               data.pop()

        N)rˆ   Úset_data)r9   Údatas     r;   Ú	edit_datazDXFGroup.edit_data³   s"   è ø€ ô �D‹zˆØŠ
Ø�‰�dÕùs   ‚"$c                ó  — | j                   €J ‚t        |«      }t        || j                   t        | «      «      }t	        |«      t	        |«      k7  rt        j                  d«      ‚t        |«      st        j                  d«      ‚|S )Nzinvalid entities foundrO   )rP   rˆ   r}   rr   rk   r   rS   rR   ©r9   r�   Úvalid_entitiess      r;   Ú_validate_entitieszDXFGroup._validate_entitiesÃ   s|   € Ø�x‰xÐ#Ð#Ð#Ü˜“>ˆÜ0°¸4¿8¹8ÄSÈÃYÓOˆÜˆ~Ó¤# h£-Ò/Ü×)Ñ)Ð*BÓCÐCÜ*¨>Ô:Ü×)Ñ)ð,óð ð Ðr<   c                óv   — | j                  |«      }| j                  «        | j                  |«       || _        y)a!  Set `entities` as new group content, entities should be an iterable of
        :class:`DXFGraphic` (LINE, CIRCLE, ...).

        Raises:
            DXFValueError: not all entities are located on the same layout (modelspace
                or any paperspace layout but not block)

        N)r�   r~   Ú_add_group_reactorr8   rŽ   s      r;   rŠ   zDXFGroup.set_dataÐ   s2   € ð ×0Ñ0°Ó:ˆØ�
‰
ŒØ×Ñ Ô/Ø#ˆ�
r<   c                ó
  — | j                  |«      }t        | j                  «       «      }|D �cg c]  }|j                  j                  |vsŒ|‘Œ }}| j                  |«       | j                  j                  |«       yc c}w )a!  Add `entities` to :class:`DXFGroup`, entities should be an iterable of
        :class:`DXFGraphic` (LINE, CIRCLE, ...).

        Raises:
            DXFValueError: not all entities are located on the same layout (modelspace
                or any paperspace layout but not block)

        N)r�   r6   rs   rG   r_   r’   r8   Úextend)r9   r�   r�   rs   re   s        r;   r”   zDXFGroup.extendÞ   sm   € ð ×0Ñ0°Ó:ˆÜ�d—l‘l“nÓ%ˆÙ%3ÓS¡^ °q·u±u·|±|È7Ò7Rš! ^ˆÐSØ×Ñ Ô/Ø�
‰
×Ñ˜.Õ)ùò Ts   ¯B ÁB c                óH   — | j                  | j                  «       g | _        y)z|Remove all entities from :class:`DXFGroup`, does not delete any
        drawing entities referenced by this group.

        N)Ú_remove_group_reactorr8   rh   s    r;   r~   zDXFGroup.clearí   s   € ð 	×"Ñ" 4§:¡:Ô.Øˆ�
r<   c                ó`   — | j                   j                  }|D ]  }|j                  |«       Œ y r3   )rG   r_   Úappend_reactor_handle©r9   r�   Úgroup_handler`   s       r;   r’   zDXFGroup._add_group_reactorö   s'   € Ø—x‘x—‘ˆÛˆFØ×(Ñ(¨Õ6ñ r<   c                ó`   — | j                   j                  }|D ]  }|j                  |«       Œ y r3   )rG   r_   Údiscard_reactor_handler™   s       r;   r–   zDXFGroup._remove_group_reactorû   s'   € Ø—x‘x—‘ˆÛˆFØ×)Ñ)¨,Õ7ñ r<   c           	     ó”  — t        | «      }|j                  €J ‚| j                  |j                  «       |t        | «      z
  }|dkD  r0|j                  t        j
                  d|› dt        | «      › �¬«       t        | j                  «      s>|j                  t        j                  dt        | «      › d�¬«       | j                  «        | j                  j                  }|sy| j                  D ]V  }|j                  �||j                  vsŒ|j                  t        j                  d|› d	|› d
�¬«       |j                  |«       ŒX y)zøRemove invalid entities from :class:`DXFGroup`.

        Invalid entities are:

        - deleted entities
        - all entities which do not reside in model- or paper space
        - all entities if they do not reside in the same layout

        Nr   zRemoved z invalid entities from ©rL   Úmessager|   z2, not all entities are located in the same layout.zEntity z in group #z* does not have group as persistent reactor)rk   rP   rQ   Úfixed_errorr   ÚINVALID_GROUP_ENTITIESrr   rR   r8   Ú#GROUP_ENTITIES_IN_DIFFERENT_LAYOUTSr~   rG   r_   ÚreactorsÚMISSING_PERSISTENT_REACTORr˜   )r9   ÚauditorÚentity_countÚremoved_entity_countrš   r`   s         r;   ÚauditzDXFGroup.audit   s>  € ô ˜4“yˆØ�{‰{Ð&Ð&Ð&à�
‰
�7—;‘;ÔØ+¬c°$«iÑ7ÐØ !Ò#Ø×ÑÜ×6Ñ6Ø"Ð#7Ð"8Ð8OÔPSÐTXÓPYÈ{Ð[ð  ô ô +¨4¯:©:Ô6Ø×ÑÜ×CÑCØ"¤3 t£9 +ð .#ð $ð  ô ð
 �J‰JŒLà—x‘x—‘ˆÙØØ—j”jˆFØ�‰Ð&¨,¸f¿o¹oÒ*MØ×#Ñ#Ü#×>Ñ>Ø% f X¨[¸¸ð G2ð 3ð $ô ð
 ×,Ñ,¨\Õ:ñ !r<   c                óP   — t        | j                  |t        | «      ¬«      | _        y)zRemove invalid group entities.)r�   rP   Ú
group_nameN)r}   r8   rr   )r9   rP   s     r;   rQ   zDXFGroup.purge(  s   € ä,Ø—Z‘Z S´S¸³Yô
ˆ�
r<   )ÚreturnÚNoner3   )rF   zOptional[SubclassProcessor]r«   r   )rT   r"   r«   Úbool)rT   r"   r«   r¬   )rT   r"   )r«   zIterator[DXFEntity])r«   Úint)rn   zUnion[str, DXFEntity]r«   r­   )r«   zIterable[str])rP   z	'Drawing')r«   úlist[DXFEntity])r�   úIterable[DXFEntity]r«   r¯   )r�   r°   r«   r¬   )r�   r¯   r«   r¬   ©r¥   r   r«   r¬   )rP   r   r«   r¬   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r   rZ   Ú
DXFATTRIBSr5   r   r?   rB   rE   rU   rW   r]   ri   rl   ro   rt   rs   r…   r
   rŒ   r�   rŠ   r”   r~   r’   r–   r¨   rQ   Ú__classcell__©r:   s   @r;   r#   r#   D   sµ   ø„ ñð
 €GÙ˜z¨:Ó6€Jõ)ð
 ".ó Bð 8<ð	Ø4ð	à	õ	ò)ó
õ%óEó5óò ó-ó6õ"ð2 òó ðóó$ó*óó7ó
8ó
&;÷P
r<   c                óx  — |€J ‚|j                   }t        |j                  «      }g }| D ]�  }|j                  r3t	        |j
                  j                  ||«      r|j                  |«       ŒB|sŒE|j                  r%t        j                  t        |«      › d|› d�«       Œvt        j                  d|› �«       Œ� |S )Nz in z has an invalid owner.zRemoved deleted entity in )r†   Úvalid_layout_handlesÚlayoutsrc   Ú_has_valid_ownerrG   ÚownerÚappendr   r€   rr   )r�   rP   rª   ÚdbÚvalid_owner_handlesr�   r`   s          r;   r}   r}   /  sª   € ð
 ˆ?Ðˆ?Ø	�‰€BÜ.¨s¯{©{Ó;ÐØ&(€NÛˆØ�?Š?Ô/Ø�J‰J×Ñ˜bÐ"5ô 
ð ×!Ñ! &Õ)ÚØ�ŠÜ—‘¤ F£˜}¨D°°Ð<RÐSÕTä—‘Ð9¸*¸ÐFÕGð ð Ðr<   c                óˆ   — | €y|r| |vry|j                  | «      }|�|j                  sy|j                  j                  dk7  S )NFÚ0)r‡   rc   rG   Úlayout)r¾   rÀ   rÁ   rÄ   s       r;   r½   r½   E  sJ   € à€}Øá˜uÐ,?Ñ?ØØ�V‰V�E‹]€Fà€~˜VŸ_š_Øð
 �:‰:×Ñ Ñ#Ð#r<   c                óB   — t        d„ | D «       «      }t        |«      dk  S )zgCheck if all entities are on the same layout (model space or any paper
    layout but not block).

    c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wr3   )rG   r¾   rw   s     r;   rf   z.all_entities_on_same_layout.<locals>.<genexpr>\  s   è ø€ Ð9± f�—‘×!Õ!±ùrx   é   )r6   rk   )r�   Úownerss     r;   rR   rR   W  s"   € ô
 Ñ9±Ó9Ó9€Fäˆv‹;˜‰?Ðr<   c                ó&   — t        d„ | D «       «      S )z-Returns valid layout keys for group entities.c              3  óN   K  — | ]  }|j                   sŒ|j                  –— Œ y ­wr3   )Úis_any_layoutÚ
layout_key)rd   rÄ   s     r;   rf   z'valid_layout_handles.<locals>.<genexpr>c  s   è ø€ ÐO©w V¸&×:NÓ:Nˆv× Õ ©wùs   ‚%”%)r6   )r¼   s    r;   r»   r»   a  s   € äÑO©wÓOÓOÐOr<   c                  ój   ‡ — e Zd Zdˆ fd„Zd	d„Zd
d„Zd
d„Z	 	 	 d	 	 	 	 	 	 	 dd„Zdˆ fd„Zdd„Z	ˆ xZ
S )r$   c                ó8   •— t         ‰| �  |dd¬«       d| _        y )NÚ
ACAD_GROUPr1   )Ú	dict_nameÚobject_typer   )r4   r5   Ú_next_unnamed_number)r9   rP   r:   s     €r;   r5   zGroupCollection.__init__g  s   ø€ Ü‰Ñ˜¨À'ÐÔJØ$%ˆÕ!r<   c              #  ó(   K  — | D ]	  \  }}|–— Œ y­w)z Iterable of all existing groups.Nry   )r9   r[   Úgroups      r;   ÚgroupszGroupCollection.groupsk  s   è ø€ ã‰KˆD�%Ø‹Kñ  ùs   ‚c                óX   — | j                  «       }|| v r| j                  «       }|| v rŒ|S r3   )Ú
_next_name)r9   r[   s     r;   Ú	next_namezGroupCollection.next_namep  s/   € Ø�‰Ó ˆØ�d‰lØ—?‘?Ó$ˆDð �dŠlàˆr<   c                óJ   — | xj                   dz  c_         d| j                   › �S )Nr   z*A)rÒ   rh   s    r;   r×   zGroupCollection._next_namev  s'   € Ø×!Ò! QÑ&Õ!Ø�D×-Ñ-Ð.Ð/Ð/r<   c                óÞ   — |�|| v rt        j                  d|› d�«      ‚|€| j                  «       }d}nd}||t        t	        |«      «      dœ}t        t        | j                  ||«      «      S )a`  Creates a new group. If `name` is ``None`` an unnamed group is
        created, which has an automatically generated name like "\*Annnn".
        Group names are case-insensitive.

        Args:
            name: group name as string
            description: group description as string
            selectable: group is selectable if ``True``

        zGROUP 'z' already exists.r   r   r,   )r   ÚDXFValueErrorrØ   r®   r­   r   r#   Ú_new)r9   r[   r-   r/   r.   Ú
dxfattribss         r;   ÚnewzGroupCollection.newz  s|   € ð  Ð ¨¡Ü×%Ñ%¨°¨vÐ5FÐ&GÓHÐHàˆ<Ø—>‘>Ó#ˆDØ‰GàˆGð 'ØÜœd :Ó.Ó/ñ
ˆ
ô
 ”H˜dŸi™i¨¨jÓ9Ó:Ð:r<   c                ó"  •— | j                   j                  }|€J ‚t        |t        «      r|}n9|j	                  «       dk(  rt        ||«      }nt        |j	                  «       «      ‚|| v rt        ‰| �!  |«       yt        j                  d«      ‚)zoDelete `group`, `group` can be an object of type :class:`DXFGroup`
        or a group name as string.

        Nr1   z$GROUP not in group table registered.)rP   r†   rq   rr   ÚdxftypeÚget_group_nameÚ	TypeErrorr4   Údeleter   rÛ   )r9   rÔ   r†   r[   r:   s       €r;   rã   zGroupCollection.deleteš  s   ø€ ð
 —8‘8×$Ñ$ˆØÐ#Ð#Ð#ä�eœSÔ!Ø‰DØ�]‰]‹_ Ò'Ü! %¨Ó2‰Dä˜EŸM™M›OÓ,Ð,à�4‰<Ü‰G‰N˜4Õ ä×%Ñ%Ð&LÓMÐMr<   c                ó  — g }| D ]C  \  }}t        t        |«      }|j                  |«       t        |«      rŒ3|j	                  |«       ŒE |D ]8  }|j                  t        j                  d|› d�¬«       | j                  |«       Œ: y)z9Removes empty groups and invalid handles from all groups.zRemoved empty group "z".rž   N)	r   r#   r¨   rk   r¿   r    r   ÚREMOVE_EMPTY_GROUPrã   )r9   r¥   Útrashr[   rÔ   s        r;   r¨   zGroupCollection.audit®  s‚   € àˆÛ‰KˆD�%Üœ 5Ó)ˆEØ�K‰K˜Ô Ü�u•:à—‘˜TÕ"ð  ó ˆDØ×ÑÜ×2Ñ2Ø/°¨v°RÐ8ð  ô ð �K‰K˜Õñ r<   )rP   r   )r«   zIterator[DXFGroup])r«   rr   )Nr'   T)r[   zOptional[str]r-   rr   r/   r­   r«   r#   )rÔ   zUnion[DXFGroup, str]r«   r¬   r±   )r²   r³   r´   r5   rÕ   rØ   r×   rÞ   rã   r¨   r¸   r¹   s   @r;   r$   r$   f  sY   ø„ õ&óó
ó0ð #ØØð	;àð;ð ð;ð ð	;ð
 
ó;õ@N÷(r<   c                óŠ   — t        d|| j                  j                     «      }|j                  «       D ]  \  }}|| u sŒ|c S  y)zGet name of `group`.r   r'   )r   rG   r¾   Úitems)rÔ   rÀ   Úgroup_tabler[   r`   s        r;   rá   rá   Á  sC   € ä�| R¨¯	©	¯©Ñ%8Ó9€KØ#×)Ñ)Ö+‰ˆˆfØ�UŠ?ØŠKð ,ð r<   )r'   )r�   r°   rP   r   rª   rr   r«   r¯   )r¾   rr   rÀ   r    rÁ   úset[str]r«   r­   )r�   r°   )r¼   r!   r«   rê   )rÔ   r#   rÀ   r    r«   rr   )>Ú
__future__r   Útypingr   r   r   r   r   r	   Ú
contextlibr
   ÚloggingÚezdxf.lldxfr   r   Úezdxf.lldxf.attributesr   r   r   r   r   Úezdxf.auditr   Ú	dxfentityr   r   r   Údxfobjr   Úfactoryr   Úobjectcollectionr   r?   r   r   r   Úezdxf.documentr   Úezdxf.entitiesr   r   Úezdxf.entitydbr    Úezdxf.layoutsr!   Úezdxf.lldxf.tagwriterr"   Ú__all__Ú	getLoggerr   Úis_integer_boolrZ   rD   rJ   r#   r}   r½   rR   r»   r$   rá   ry   r<   r;   Ú<module>rþ      sQ  ðõ #÷÷ õ &Û ß (÷õ õ #ß ?Ñ ?Ý Ý $Ý .ß 0áÝ#Ý&ß7Ý'Ý%Ý7àÐ(Ð
)€Ø	ˆ×	Ñ	˜7Ó	#€áØñ ˜s¨BÔ/ñ ØØØ×/Ñ/Ø ô	
ñ ØØØ×/Ñ/Ø ô	
ñó€
ñ0 ,¨JÓ7Ð Ø€ð ôg
ˆyó g
ó ðg
ðZ ðØ!ðà	ðð ðð ó	ó,$ó$óPô
XÐ& xÑ0ô Xôvr<   