
    'jg                       U d dl mZ d dlmZmZmZ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lmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, er$d dl-m.Z. d dl/m0Z0 d dl
m1Z1 d dl2m3Z3 d dl4m5Z5 d dlm6Z6 g dZ7h dZ8 ed eddej9                   edddej:                   edd dej;        e!           ed"d dej<        e!           ed#d$edej=        ej>        %           ed&d'edej?        e%           ed(d ed)           ed*ed+           ed,ed+           ed-edej@        .           ed/ed+           ed0ed+           ed1ed+           ed2edd3           ed4ed+          d5          ZAd6eBd7<    eeA          ZCdPd<ZD G d= d>e)          ZEejF         G d? d@eE                      ZGdQdFZHdRdIZIdSdLZJdTdNZKdOS )U    )annotations)TYPE_CHECKINGOptionalIterableAny)Self	TypeGuard)factory)options)	validator)DXFAttrDXFAttributesDefSubclassRETURN_DEFAULTgroup_code_mapping)colors)const)DXF12DXF2000DXF2004DXF2007DXF2013SUBCLASS_MARKERTRANSPARENCY_BYBLOCK)OCSMatrix44UVec)load_proxy_graphicexport_proxy_graphic   )	DXFEntity
base_classSubclassProcessorDXFTagStorage)Auditor)Drawing)DXFNamespace)
BaseLayout)AbstractTagWriter)xref)	
DXFGraphicacdb_entityacdb_entity_group_codesSeqEnd
add_entityreplace_entityelevation_to_z_axisis_graphic_entityget_font_name>   colorlayerltscalelinetype
color_name
lineweight
true_colortransparency
AcDbEntity   0)defaultr      BYLAYERT)r?   optionalr   >      )r?   rB   r   fixerC   ir  )r?   
dxfversionrB   r   rE   0   g      ?<   )r?   rH   rB   i  )rH   rB   i  i  )rH   rB   r   i  i[  i\  i|  )rH   r?   rB   i  )r5   r7   r4   
paperspacer9   r6   	invisibler:   r8   r;   shadow_modematerial_handlevisualstyle_handleplotstyle_enumplotstyle_handler   r,   dxfr'   namesIterable[str]c                   |                      d          ru| j        }|                     d           |dk    rd S |D ]P}|                     |          }|5|j        dk    r*|                     ||                    |                     Od S d S )N	elevationr   )z)hasattrrV   discardgetrW   setreplace)rR   rS   rV   namevs        O/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/dxfgfx.pyr1   r1      s     {{; 6M	K   >>F 	6 	6DA
 }aii)i445556 6	6 	6    c                  4    e Zd ZU dZdZddiZded<    eee	          Z
	 dcdd fdZdedZedfd            Zej        dgd            Zej        ded            Zedhd            Zej        did            Zedjd            Zedjd            ZdkdZdldZdmdnd%Zdod(Zdpd+Zdpd,Zdqd.Zded/Z	 dcdrd3Zdsd5Zdt fd8Zdud;Zdvd<Z edjd=            Z!dwdAZ"dxdEZ#dydGZ$dzdKZ%d{dLZ&d{dMZ'd{dNZ(djdOZ)	 	 d|d}dTZ*d~dVZ+dcd fdYZ,dd[Z-d fd^Z.d fdbZ/ xZ0S )r+   zCommon base class for all graphic entities, a subclass of
    :class:`~ezdxf.entities.dxfentity.DXFEntity`. These entities resides in
    entity spaces like modelspace, paperspace or block.
    DXFGFXr5   r>   zdict[str, Any]DEFAULT_ATTRIBSN	processorOptional[SubclassProcessor]returnr'   c                Z   t                                          |          }||S |j        }|                                 t          j        rA|j        r|j        t          k     rd}nd}t          |j	        |rdnd         |          | _
        |                    |t          d           |S )zAdds subclass processing for 'AcDbEntity', requires previous base
        class processing by parent class.

        (internal API)
        N\      r   r    )length_code)superload_dxf_attribsr12 append_base_class_to_acdb_entityr   load_proxy_graphicsrH   r   r   
subclassesproxy_graphicfast_load_dxfattribsr-   )selfrd   rR   rm   code	__class__s        r_   rl   zDXFGraphic.load_dxf_attribs   s     gg&&y11Jm22444 & 		# 	(<w(F(F!3$#_QQ15 " " "D 	&&s,CQGGG
r`   Nonec                    | j         r:| j        j        | j         j        vr$t	          j        d| j        j         d          dS dS )z`Post-processing and integrity validation after entity creation.

        (internal API)
        z
Linetype "z" not defined.N)docrR   r7   	linetypesr   DXFInvalidLineTypers   s    r_   post_new_hookzDXFGraphic.post_new_hook   s[    
 8 	x (:::.B!2BBB  	 	::r`   tuple[int, int, int] | Nonec                    | j                             d          r,t          j        | j                             d                    S dS )zKReturns RGB true color as (r, g, b) tuple or None if true_color is not set.r:   N)rR   rX   clrint2rgbrZ   r{   s    r_   rgbzDXFGraphic.rgb   s?     8L)) 	;;tx||L99:::tr`   r   clr.RGB | tuple[int, int, int]c                `    | j                             dt          j        |                     dS )zSet RGB true color as (r, g , b) tuple e.g. (12, 34, 56).

        Raises:
            TypeError: input value `rgb` has invalid type
        r:   N)rR   r[   r   rgb2int)rs   r   s     r_   r   zDXFGraphic.rgb   s*     	\3;s#3#344444r`   c                :    | j                             d           dS )zDelete RGB true color value.r:   N)rR   rY   r{   s    r_   r   zDXFGraphic.rgb   s      	&&&&&r`   floatc                    | j                             d          rN| j                             d          }t          j        |          r |t
          z  rdS t          j        |          S dS )zGet transparency as float value between 0 and 1, 0 is opaque and 1
        is 100% transparent (invisible). Transparency by block returns always 0.
        r;   g        )rR   rX   rZ   r   is_transparencyr   r   transparency2float)rs   values     r_   r;   zDXFGraphic.transparency   sk    
 8N++ 	5HLL00E(// 5// 3-e444sr`   r;   c                `    | j                             dt          j        |                     dS )ztSet transparency as float value between 0 and 1, 0 is opaque and 1
        is 100% transparent (invisible).
        r;   N)rR   r[   r   float2transparency)rs   r;   s     r_   r;   zDXFGraphic.transparency  s+    
 	^S%;L%I%IJJJJJr`   boolc                8    | j                             d           S )z<Returns ``True`` if entity inherits transparency from layer.r;   )rR   rX   r{   s    r_   is_transparency_by_layerz#DXFGraphic.is_transparency_by_layer  s     8##N3333r`   c                J    | j                             dd          t          k    S )z<Returns ``True`` if entity inherits transparency from block.r;   r   )rR   rZ   r   r{   s    r_   is_transparency_by_blockz#DXFGraphic.is_transparency_by_block  s      x||NA..2FFFr`   dictc                    t                      }t          D ]9}| j                            |          r| j                            |          ||<   :|S )zReturns the important common properties layer, color, linetype,
        lineweight, ltscale, true_color and color_name as `dxfattribs` dict.
        )r   GRAPHIC_PROPERTIESrR   rX   rZ   )rs   attribskeys      r_   graphic_propertieszDXFGraphic.graphic_properties  sQ     &&% 	1 	1Cx$$ 1#x||C00r`   r   c                    | j                             d          r+| j                             dd          }t          |          S t                      S )zReturns object coordinate system (:ref:`ocs`) for 2D entities like
        :class:`Text` or :class:`Circle`, returns a pass-through OCS for
        entities without OCS support.
        	extrusion)r   r   r    )r?   )rR   is_supportedrZ   r   )rs   r   s     r_   ocszDXFGraphic.ocs"  sH     8  -- 	[)DDIy>>!55Lr`   r   ownerOptional[str]rK   intc                r    || j         _        |r|| j         _        dS | j                             d           dS )z7Set owner attribute and paperspace flag. (internal API)rK   N)rR   r   rK   rY   )rs   r   rK   s      r_   	set_ownerzDXFGraphic.set_owner.  s?     	+",DHH\*****r`   entityr!   c                    dS )zStore linked or attached entities. Same API for both types of
        appended data, because entities with linked entities (POLYLINE, INSERT)
        have no attached entities and vice versa.

        (internal API)
        N )rs   r   s     r_   link_entityzDXFGraphic.link_entity6  s	     	r`   	tagwriterr)   c                0    |                      |           dS )z7Export entity specific data as DXF tags. (internal API)N)export_acdb_entity)rs   r   s     r_   export_entityzDXFGraphic.export_entity?  s     		*****r`   c                6   |j         t          k    }|r%|                    t          t          j                   | j                            |g d           | j        r9|r9t          j
        r/t          | j        ||j         t          k     rdnd           dS dS dS dS )z8Export subclass 'AcDbEntity' as DXF tags. (internal API))rK   r5   r7   rN   r4   r9   r6   rL   r:   r8   r;   rP   rQ   rM   rO   rh   ri   )r   rj   N)rH   r   
write_tag2r   r,   r]   rR   export_dxf_attribsrq   r   store_proxy_graphicsr   r   )rs   r   not_r12s      r_   r   zDXFGraphic.export_acdb_entityE  s     &. 	D  +2BCCC##  	
 	
 	
*  	' 	g.J 	 "##,#7'#A#ARRs     	 	 	 	 	 	r`   Optional[BaseLayout]c                *   | j         j        | j        dS 	 | j        j                            | j         j                  S # t
          j        $ r Y nw xY w	 | j        j                            | j         j                  S # t
          j	        $ r Y dS w xY w)zfReturns the owner layout or returns ``None`` if entity is not
        assigned to any layout.
        N)
rR   r   rx   layoutsget_layout_by_keyr   DXFKeyErrorblocksget_block_layout_by_handleDXFTableEntryErrorr{   s    r_   
get_layoutzDXFGraphic.get_layouti  s     8>!TX%54	8#55dhnEEE  	 	 	D		8?==dhnMMM' 	 	 	44	s#   (A   AA(A? ?BBc                    | j         st          d          | j        d| j        _        dS |                                 }|r|                    |            dS dS )a-  
        Unlink entity from associated layout. Does nothing if entity is already
        unlinked.

        It is more efficient to call the
        :meth:`~ezdxf.layouts.BaseLayout.unlink_entity` method of the associated
        layout, especially if you have to unlink more than one entity.
        z Can not unlink destroyed entity.N)is_alive	TypeErrorrx   rR   r   r   unlink_entity)rs   layouts     r_   unlink_from_layoutzDXFGraphic.unlink_from_layoutx  so     } 	@>???8!DHNF"" 	'  &&&&&	' 	'r`   r   r(   sourcec                    |*|                                  }|t          j        d          |                    | |           dS )a  
        Move entity from model space or a paper space layout to another layout.
        For block layout as source, the block layout has to be specified. Moving
        between different DXF drawings is not supported.

        Args:
            layout: any layout (model space, paper space, block)
            source: provide source layout, faster for DXF R12, if entity is
                    in a block layout

        Raises:
            DXFStructureError: for moving between different DXF drawings
        Nz#Source layout for entity not found.)r   r   DXFValueErrormove_to_layout)rs   r   r   s      r_   r   zDXFGraphic.move_to_layout  sK      >__&&F~)*OPPPdF+++++r`   r   c                    | j         |j         k    rt          j        d          |                                 }|                    |           |S )a_  
        Copy entity to another `layout`, returns new created entity as
        :class:`DXFEntity` object. Copying between different DXF drawings is
        not supported.

        Args:
            layout: any layout (model space, paper space, block)

        Raises:
            DXFStructureError: for copying between different DXF drawings
        z8Copying between different DXF drawings is not supported.)rx   r   DXFStructureErrorcopyr/   )rs   r   
new_entitys      r_   copy_to_layoutzDXFGraphic.copy_to_layout  sT     8vz!!)J   YY[[
*%%%r`   auditorr%   c                   | j         |j         u s
J d            | j        sdS t                                          |           |                    |            | j        }|                    d          r|                    |            |                    d          r|                    |            |                    d          r|	                    |            |                    d          r|
                    |            |                    d          r|                    |            |                    d          r|                    |            dS dS )	aJ  Audit and repair graphical DXF entities.

        .. important::

            Do not delete entities while auditing process, because this
            would alter the entity database while iterating, instead use::

                auditor.trash(entity)

            to delete invalid entities after auditing automatically.
        z#Auditor for different DXF document.Nr5   r7   r4   r9   r   r;   )rx   r   rk   auditcheck_owner_existrR   rX   check_for_valid_layer_namecheck_entity_linetypecheck_entity_color_indexcheck_entity_lineweightcheck_extrusion_vectorcheck_transparency)rs   r   rR   ru   s      r_   r   zDXFGraphic.audit  sc    x7;&&&(M&&&} 	Fg!!$'''h;;w 	5..t444;;z"" 	0))$///;;w 	3,,T222;;|$$ 	2++D111;;{## 	1**4000;;~&& 	-&&t,,,,,	- 	-r`   mr   c                    t                      )zInplace transformation interface, returns `self` (floating interface).

        Args:
             m: 4x4 transformation matrix (:class:`ezdxf.math.Matrix44`)
        )NotImplementedErrorrs   r   s     r_   	transformzDXFGraphic.transform  s     "###r`   c                L    | j         | j                             |           dS dS )zBShould be called if the main entity transformation was successful.N)xdatar   r   s     r_   post_transformzDXFGraphic.post_transform  s.    :!J  ##### "!r`   c                    | j         duS )z)Check if post transform call is required.N)r   r{   s    r_   is_post_transform_requiredz%DXFGraphic.is_post_transform_required  s     z%%r`   dxdydzc                T    |                      t          j        |||                    S )zTranslate entity inplace about `dx` in x-axis, `dy` in y-axis and
        `dz` in z-axis, returns `self` (floating interface).

        Basic implementation uses the :meth:`transform` interface, subclasses
        may have faster implementations.
        )r   r   	translate)rs   r   r   r   s       r_   r   zDXFGraphic.translate  s%     ~~h0R<<===r`   sxsyszc                T    |                      t          j        |||                    S )zScale entity inplace about `dx` in x-axis, `dy` in y-axis and `dz`
        in z-axis, returns `self` (floating interface).
        r   r   scale)rs   r   r   r   s       r_   r   zDXFGraphic.scale  s$     ~~hnRR88999r`   sc                P    |                      t          j        |                    S )zzScale entity inplace uniform about `s` in x-axis, y-axis and z-axis,
        returns `self` (floating interface).
        r   )rs   r   s     r_   scale_uniformzDXFGraphic.scale_uniform  s      ~~hnQ//000r`   axisr   anglec                R    |                      t          j        ||                    S )zRotate entity inplace about vector `axis`, returns `self`
        (floating interface).

        Args:
            axis: rotation axis as tuple or :class:`Vec3`
            angle: rotation angle in radians
        )r   r   axis_rotate)rs   r   r   s      r_   rotate_axiszDXFGraphic.rotate_axis  s#     ~~h24??@@@r`   c                P    |                      t          j        |                    S )zRotate entity inplace about x-axis, returns `self`
        (floating interface).

        Args:
            angle: rotation angle in radians
        )r   r   x_rotaters   r   s     r_   rotate_xzDXFGraphic.rotate_x	  !     ~~h/66777r`   c                P    |                      t          j        |                    S )zRotate entity inplace about y-axis, returns `self`
        (floating interface).

        Args:
            angle: rotation angle in radians
        )r   r   y_rotater   s     r_   rotate_yzDXFGraphic.rotate_y  r   r`   c                P    |                      t          j        |                    S )zRotate entity inplace about z-axis, returns `self`
        (floating interface).

        Args:
            angle: rotation angle in radians
        )r   r   z_rotater   s     r_   rotate_zzDXFGraphic.rotate_z  r   r`   c                <    t          | j                  od| j        v S )z5Returns ``True`` if entity has an attached hyperlink.PE_URL)r   r   r{   s    r_   has_hyperlinkzDXFGraphic.has_hyperlink$  s    DJ<X%;<r`   linkstrdescriptionlocationc                   ddt          |          fg}|rt|                    d           |                    dt          |          f           |r$|                    dt          |          f           |                    d           |                     d           |                     d|           | j        r-d| j        j        vr| j        j                            d           | S )zSet hyperlink of an entity.)i  r     )  {)r  }r   )r   appenddiscard_xdata	set_xdatarx   appidsnewrs   r   r   r   r   s        r_   set_hyperlinkzDXFGraphic.set_hyperlink(  s     "D#d))#45 	&LL%%%LL$K 0 01222 4dCMM2333LL%%%8$$$x'''8 	*77HO)))r`   tuple[str, str, str]c                   d}d}d}| j         rud| j         v rld |                     d          D             }t          |          r|d         }t          |          dk    r|d         }t          |          dk    r|d         }|||fS )z,Returns hyperlink, description and location. r   c                2    g | ]}|j         d k    |j        S )r   )rt   r   ).0tags     r_   
<listcomp>z,DXFGraphic.get_hyperlink.<locals>.<listcomp>C  s'    WWW3chRVFVFVSYFVFVFVr`   r   r       )r   	get_xdatalenr	  s        r_   get_hyperlinkzDXFGraphic.get_hyperlink=  s    : 	$(dj00WW$..*B*BWWWE5zz  Qx5zzA~~#Ah5zzA~~ 8[(**r`   otherOptional[Drawing]c                v   | j         sdS t                                          |           |duo| j        j        |j        v }|sd| j        _        | j                            d           | j                            d           | j                            d           | j                            d           dS )zORemove all dependencies from current document.

        (internal API)
        NrA   rN   rO   rP   rQ   )r   rk   remove_dependenciesrR   r7   ry   rY   )rs   r  has_linetyperu   s      r_   r  zDXFGraphic.remove_dependenciesL  s    
 } 	F##E*** D(Sdh.?5?.R 	* )DH*+++-...)***+,,,,,r`   type_c                    |pi }d|vr| j         j        |d<   | j        rt          j        ||| j                  }nt          j        ||          }| j         j        |j         _        | j         j        |j         _        |S )zCreate and bind  new entity with same layout settings as `self`.

        Used by INSERT & POLYLINE to create appended DXF entities, don't use it
        to create new standalone entities.

        (internal API)
        r5   )rR   r5   rx   r
   create_db_entryr  r   rK   )rs   r  
dxfattribsr   s       r_   _new_compound_entityzDXFGraphic._new_compound_entity`  s~      %2

 *$$"&(.Jw8 	4,UJIIFF[
33F8>
 $ 3
r`   registryxref.Registryc                   t                                          |           | j        }|                    |j                   |                    |j                   |                    |                    d                     dS )z5Register required resources to the resource registry.rN   N)	rk   register_resourcesrR   	add_layerr5   add_linetyper7   
add_handlerZ   )rs   r   rR   ru   s      r_   r#  zDXFGraphic.register_resourcesw  su    ""8,,,h39%%%cl+++CGG$56677777r`   clonemappingxref.ResourceMapperc                   t                                          ||           |                    | j        j                  |j        _        | j        j        } |d          r)|                    | j        j                  |j        _         |d          r)|                    | j        j	                  |j        _	        |j        
                    d           |j        
                    d           dS )z3Translate resources from self to the copied entity.r7   rN   rO   rQ   N)rk   map_resources	get_layerrR   r5   rX   get_linetyper7   
get_handlerN   rY   )rs   r'  r(  attrib_existru   s       r_   r+  zDXFGraphic.map_resources  s    eW---!++DHN;;	x'<
## 	I!(!5!5dh6G!H!HEI<)** 	U(/(:(:48;S(T(TEI% 		.///	,-----r`   Nrd   re   rf   r'   )rf   rv   )rf   r}   )r   r   rf   rv   )rf   r   )r;   r   rf   rv   )rf   r   )rf   r   )rf   r   )r   )r   r   rK   r   rf   rv   )r   r!   rf   rv   )r   r)   rf   rv   )rf   r   )r   r(   r   r   rf   rv   )r   r(   rf   r   )r   r%   rf   rv   )r   r   rf   r   )r   r   rf   rv   )r   r   r   r   r   r   rf   r   )r   r   r   r   r   r   rf   r   )r   r   rf   r   )r   r   r   r   rf   r   )r   r   rf   r   )NN)r   r   r   r   r   r   )rf   r  )r  r  rf   rv   )r  r   rf   r   )r   r!  rf   rv   )r'  r   r(  r)  rf   rv   )1__name__
__module____qualname____doc__DXFTYPErc   __annotations__r   r"   r,   
DXFATTRIBSrl   r|   propertyr   setterdeleterr;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r#  r+  __classcell__ru   s   @r_   r+   r+      s         
 G'.nO4444z;77J 8<      <	 	 	 	    X 	Z5 5 5 Z5 	[' ' ' [' 
 
 
 X
 K K K K 4 4 4 X4 G G G XG   
 
 
 
+ + + + +   + + + +" " " "H   ' ' ' ', BF, , , , ,,   *- - - - - -@$ $ $ $$ $ $ $
 & & & X&> > > >: : : :1 1 1 1A A A A8 8 8 88 8 8 88 8 8 8= = = = &*"&	    *+ + + +- - - - - - -(   .8 8 8 8 8 8. . . . . . . . . .r`   r+   c                  (     e Zd ZdZ	 dd	 fdZ xZS )
r.   SEQENDNrd   re   rf   r'   c                    t          t          |                               |          }|r|                    |t                     |S )z!Loading interface. (internal API))rk   r+   rl   simple_dxfattribs_loaderr-   )rs   rd   rR   ru   s      r_   rl   zSeqEnd.load_dxf_attribs  sG    
 J%%66yAA 	M..s4KLLL
r`   r0  r1  )r2  r3  r4  r6  rl   r<  r=  s   @r_   r.   r.     sL        G 8<          r`   r.   r   r   r(   rf   rv   c                    | j         j        J |J |j        rt          j        | |j                   |                    |            dS )zEAdd `entity` entity to the entity database and to the given `layout`.N)rR   handlerx   r
   bindr/   )r   r   s     r_   r/   r/     sW    :$$$z )VVZ(((
fr`   r   targetc                    |j         j        J |J | j         j        |j         _        | |v rM|                    |            |j        rt	          j        ||j                   |                    |           dS |                                  dS )zAdd `target` entity to the entity database and to the given `layout`
    and replace the `source` entity by the `target` entity.
    N)rR   rC  delete_entityrx   r
   rD  r/   destroy)r   rE  r   s      r_   r0   r0     s     :$$$
)FJV$$$: 	-L,,,&!!!!!r`   r!   TypeGuard[DXFGraphic]c                p    t          | t                    rdS t          | t                    r	| j        rdS dS )zReturns ``True`` if the `entity` has a graphical representations and
    can reside in the model space, a paper space or a block layout,
    otherwise the entity is a table or class entry or a DXF object from the
    OBJECTS section.
    TF)
isinstancer+   r$   r2   )r   s    r_   r2   r2     sA     &*%% t&-(( V-E t5r`   r   c                (   t           j        }| j        }||S 	 | j                            dt           j                  }n# t           j        $ r |cY S w xY w	 |j                            |          }|j        j        S # t           j	        $ r |cY S w xY w)zReturns the font name of any DXF entity.

    This function always returns a font name even if the entity doesn't support text
    styles.  The default font name is "txt".
    Nstyle)
r   DEFAULT_TEXT_FONTrx   rR   rZ   DEFAULT_TEXT_STYLEDXFAttributeErrorstylesfontr   )r   	font_namerx   
style_namerM  s        r_   r3   r3     s     'I
*C
{Z^^GU-EFF

"   
z**y~#   s!   %? AA%A= =BBN)rR   r'   rS   rT   )r   r+   r   r(   rf   rv   )r   r+   rE  r+   r   r(   rf   rv   )r   r!   rf   rI  )r   r!   rf   r   )L
__future__r   typingr   r   r   r   typing_extensionsr   r	   ezdxf.entitiesr
   ezdxfr   ezdxf.lldxfr   ezdxf.lldxf.attributesr   r   r   r   r   r   r   r   ezdxf.lldxf.constr   r   r   r   r   r   r   
ezdxf.mathr   r   r   ezdxf.proxygraphicr   r   	dxfentityr!   r"   r#   r$   ezdxf.auditr%   ezdxf.documentr&   r'   ezdxf.layoutsr(   ezdxf.lldxf.tagwriterr)   r*   __all__r   is_valid_layer_nameis_valid_table_nameis_valid_aci_coloris_integer_boolis_valid_lineweightfix_lineweightis_positiver   r,   r7  r-   r1   r+   register_entityr.   r/   r0   r2   r3   r   r`   r_   <module>rm     s+   # " " " " " " 9 9 9 9 9 9 9 9 9 9 9 9 - - - - - - - - " " " " " "       ! ! ! ! ! !                                            + * * * * * * * * * G G G G G G G G N N N N N N N N N N N N ######&&&&&&++++++((((((777777
 
 
	 	 	  '; C93PQQQG3	
 
 
 2 
 
 
 g/ 
 
 
 g3*
 
 
 7+ 
 
 
 WRwNNN gcgEEEgcgEEE  /	
 
 
 wswFFF"737TJJJ%gcgMMM "'#'1tTTT $GCGdKKKWP PS S S S S Sh -,[99 6 6 6 68\. \. \. \. \. \. \. \.~ 	    Z          
 
 
 
     r`   