
    %
i                       d Z ddlmZ ddlZddlZddlmZ ddlZddlZddl	Z
ddlZ
ddlZddlmZ ddlmZmZ ddlmZ d	 Zd
ZdZdZej        dej        dej        dej        dej        dej        diZd Z G d d          Z d Z!d Z"d-dZ# G d d          Z$ G d d          Z% G d d           Z& G d! d"          Z'g d#Z(g d$Z)d%d&gZ*d'gZ+ G d( d)          Z,e-d*k    r e.d+           d, Z/dS ).a  AXScript Client Framework

This module provides a core framework for an ActiveX Scripting client.
Derived classes actually implement the AX Client itself, including the
scoping rules, etc.

There are classes defined for the engine itself, and for ScriptItems
    )annotationsN)NoReturn)axscript)COMExceptionIsCOMServerException   )errorc                .    t          j        dd|           S )Nz(\r\n)|\r|(\n\r)
)resub)texts    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/axscript/client/framework.pyRemoveCRr      s     6%tT222    i       @   SCRIPTSTATE_UNINITIALIZEDSCRIPTSTATE_INITIALIZEDSCRIPTSTATE_STARTEDSCRIPTSTATE_CONNECTEDSCRIPTSTATE_DISCONNECTEDSCRIPTSTATE_CLOSEDc                   dd l }|                                }	  |j        | f|z    dd l}|                    |                                                              d                                           S # dd l}|                    |                                                              d                                           w xY w)Nr   time)profileProfileruncallpstatsStats
strip_dirs
sort_statsprint_stats)fnargsr   profr   s        r   r   r   1   s    NNN??D	I t|bUT\* 	T%%''226::FFHHHH	 	 	T%%''226::FFHHHHs   A8 8AC
c                  ,    e Zd ZdZddZd Zd Zd ZdS )
SafeOutputr   Nc                0    |t           j        }|| _        d S N)sysstdoutredir)selfr-   s     r   __init__zSafeOutput.__init__D   s    =JE


r   c                t    	 | j                             |           d S #  t          j        |           Y d S xY wr*   )r-   writewin32apiOutputDebugString)r.   messages     r   r1   zSafeOutput.writeI   sF    	0JW%%%%%	0&w//////s    7c                    d S r*    r.   s    r   flushzSafeOutput.flushO       r   c                    d S r*   r6   r7   s    r   closezSafeOutput.closeR   r9   r   r*   )__name__
__module____qualname__	softspacer/   r1   r8   r;   r6   r   r   r(   r(   A   sZ        I   
0 0 0      r   r(   c                 B   t          t          j        t                    s}t                      xt          _        t          _        dd l} d }|                     | j                  | j        k    r1	 |                     | j        |           d S # t          $ r Y d S w xY wd S d S )Nr   c                $    t          d           d S )Nz@WARNING: Ignoring keyboard interrupt from ActiveScripting engineprint)abs     r   noOpzMakeValidSysOuts.<locals>.noOp_   s     TUUUUUr   )

isinstancer+   r,   r(   stderrsignal	getsignalSIGINTdefault_int_handler
ValueError)rI   rF   s     r   MakeValidSysOutsrN   X   s    cj*-- ",,,.
SZ 		V 	V 	V FM**f.HHHfmT22222     IHs   /B 
BBc                 N    | D ]}t          |d           t                       dS )z8A function used instead of "print" for debugging output. )endNrB   )r%   args     r   tracerS   m   s4      cs	GGGGGr   returnr   c                ^    t          d           t          |           t          ||           )zHA debugging function that raises an exception considered an "Assertion".z5**************** ASSERTION FAILED *******************)rC   r   scodedescs     r   RaiseAssertrY   t   s,    	
ABBB	$KKK
tU
#
##r   c                  .    e Zd ZdZddZd	 Zd
 ZddZdS )AXScriptCodeBlockz:An object which represents a chunk of code in an AX ScriptnamestrcodeTextsourceContextCookieintstartLineNumberc                h    || _         || _        d | _        || _        || _        || _        d| _        d S Nr   )r\   r^   
codeObjectr_   ra   flagsbeenExecuted)r.   r\   r^   r_   ra   re   s         r   r/   zAXScriptCodeBlock.__init__~   s>     	 #6 .
r   c                    d| j         z  S )Nz<%s>r\   r7   s    r   GetFileNamezAXScriptCodeBlock.GetFileName   s     	!!r   c                    | j         S r*   rh   r7   s    r   GetDisplayNamez AXScriptCodeBlock.GetDisplayName   s
    yr   noc                X   d}t          |dz
            D ]:}| j                            d|dz             }|dk    rt          | j                  };| j                            d|dz             }|dk    rt          | j                  }| j        |dz   |                                         S )Nr   r   )ranger^   findlenstrip)r.   rl   posieposs        r   	GetLineNozAXScriptCodeBlock.GetLineNo   s    rAv 	) 	)A-$$T3733Cbyy$-((}!!$a002::t}%%D}S1Wt^,22444r   N)r\   r]   r^   r]   r_   r`   ra   r`   )rl   r`   )r<   r=   r>   __doc__r/   ri   rk   rv   r6   r   r   r[   r[   {   s`        DD    " " "
  	5 	5 	5 	5 	5 	5r   r[   c                  0    e Zd ZdZd Zd Zd Zd Zd ZdS )Eventz*A single event for a ActiveX named object.c                    d| _         d S )Nz<None>rh   r7   s    r   r/   zEvent.__init__   s    			r   c                J    d| j         j        t          |           | j        fz  S )Nz<%s at %d: %s>)	__class__r<   idr\   r7   s    r   __repr__zEvent.__repr__   s!    4>#:BtHHdi"PPPr   c                    d S r*   r6   r7   s    r   ResetzEvent.Reset   r9   r   c                    d S r*   r6   r7   s    r   ClosezEvent.Close   r9   r   c                j    |d         | _         |                    | j                   d         | _        d S rc   )dispidGetNamesr\   )r.   typeinfofuncdescs      r   BuildzEvent.Build   s-    qk%%dk2215			r   N)	r<   r=   r>   rw   r/   r~   r   r   r   r6   r   r   ry   ry      sh        44  Q Q Q    6 6 6 6 6r   ry   c                  X    e Zd ZU dZg Zded<   d Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )	EventSinkzRA set of events against an item.  Note this is a COM client for connection points.z	list[str]_public_methods_c                    i | _         d | _        || _        || _        |                                j        | _        d | _        d S r*   )events
connection
coDispatchmyScriptItem	GetEngineProcessScriptItemEventmyInvokeMethodiid)r.   myItemr   s      r   r/   zEventSink.__init__   sA    $"$..00Gr   c                .    |                                   d S r*   )
Disconnectr7   s    r   r   zEventSink.Reset   s    r   c                    d | _         d | _        d | _        d | _        | j                                        D ]}|                                 i | _        |                                  d S r*   )r   r   r   r   r   valuesr   r   )r.   events     r   r   zEventSink.Close   si     "['')) 	 	EKKMMMMr   c                d    || j         k    r$t          j        j                            |           S d S r*   )r   win32comserverutilwrapr.   r   s     r   _query_interface_zEventSink._query_interface_   s-    $(???',,T222 ?r   c                    	 | j         |         }n#  t          t          j                  xY w|                     | j        ||||          S NrW   )r   r   winerrorDISP_E_MEMBERNOTFOUNDr   r   )r.   r   lcidwFlagsr%   r   s         r   _invoke_zEventSink._invoke_   sS    	EK'EE	EX%CDDDD""4#4eT64PPPs    ,c                   |                                 }|d         }|d         }|t          j        t          j        fvrt	          t
          j        d           |d         }t          |          D ]r}|                    |          }t          j	        t          j
        z  }||t          j        z  z  |k    r,|                    |          }	|                    |	          c S sdS )z?Gets the typeinfo for the Source Events for the passed typeinfo      (The typeKind of the object is unexpected   N)GetTypeAttr	pythoncomTKIND_COCLASSTKIND_INTERFACErY   r   E_UNEXPECTEDro   GetImplTypeFlagsIMPLTYPEFLAG_FDEFAULTIMPLTYPEFLAG_FSOURCEIMPLTYPEFLAG_FRESTRICTEDGetRefTypeOfImplTypeGetRefTypeInfo)
r.   r   attrcFuncstypeKind	cImplTypert   re   flagsNeededhrefs
             r   GetSourceTypeInfozEventSink.GetSourceTypeInfo   s    ##%%a7I3Y5NOOO%'Q   G	y!! 	5 	5A --a00E/)2PP  y'IIJ   44Q77..t44444	5 	5r   c                   	 | j                             t          j                  }d}|                                }nV# t
          j        $ rD d}d}	 | j                             t
          j                  }n# t
          j        $ r d}Y nw xY wY nw xY wt          |          D ]}|r$|	                    |t          j
                  \  }}n|                                }|                     |          }d}|r|                                }	|	d         | _        |	d         }t          |          D ]J}
|                    |
          }t!                      }|                    ||           || j        |j        <   Kd S )Nr   r   r   )r   QueryInterfacer   IID_IProvideMultipleClassInfoGetMultiTypeInfoCountr   	com_errorIID_IProvideClassInforo   GetInfoOfIndexMULTICLASSINFO_GETTYPEINFOGetClassInfor   r   r   GetFuncDescry   r   r   r   )r.   mainTypeInfoisMultinumTypeInfositemr   re   
sourceTyper   r   rt   r   r   s                r   BuildEventszEventSink.BuildEvents   s   	!?996 L G'==??LL" 	! 	! 	!GL!#==3    & ! ! ! !	! ,'' 	6 	6D 7"."="=(=# #%% (4466//99JF 6!--//7av 6 6A)55a88H!GGEKK
H55505DK--#	6 	6s3   := B$A65B6B
B	B

BBc                    | j         | j        d S t          j        j                            | j        | | j                  | _         d S r*   )r   r   r   clientconnectSimpleConnectionr   r7   s    r   ConnectzEventSink.Connect  sA    ?&$(*:F"/1BBOT48
 
r   c                    | j         r9	 | j                                          n# t          j        $ r Y nw xY wd | _         d S d S r*   )r   r   r   r   r7   s    r   r   zEventSink.Disconnect%  s`    ? 	#**,,,,&   "DOOO	# 	#s   # 55N)r<   r=   r>   rw   r   __annotations__r/   r   r   r   r   r   r   r   r   r6   r   r   r   r      s         \\"$$$$$      3 3 3Q Q Q5 5 50#6 #6 #6J
 
 
# # # # #r   r   c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
ScriptItemz:An item (or subitem) that is exposed to the ActiveX scriptc                v    || _         || _        || _        || _        d | _        i | _        d| _        d| _        d S rc   )
parentItemdispatchr\   re   	eventSinksubItemscreatedConnectionsisRegistered)r.   r   r\   r   re   s        r   r/   zScriptItem.__init__1  sB    $ 	
"#r   c                    d}| j         | j         t          j        z  rd}d| j        j        t          |           | j        |fz  S )N z/Globalz<%s at %d: %s%s>)re   r   SCRIPTITEM_GLOBALMEMBERSr|   r<   r}   r\   )r.   	flagsDescs     r   r~   zScriptItem.__repr__=  sN    	:!dj83T&T!!I!N#tHHI	%
 
 	
r   c           	     X   g }| j         )| j         t          j        z  r|                    d           | j         | j         t          j        z  dk    r|                    d           | j         )| j         t          j        z  r|                    d           | j         )| j         t          j        z  r|                    d           t          d|z  d| j        dd		                    |          |            | j
                                        D ]}|                    |d
z              d S )NzGLOBAL!r   zNOT VISIBLEz
EVENT SINKz	CODE ONLYrP   zName=z, flags=/r   )re   r   r   appendSCRIPTITEM_ISVISIBLESCRIPTITEM_ISSOURCESCRIPTITEM_CODEONLYrC   r\   joinr   r   _dump_)r.   level	flagDescssubItems       r   r   zScriptItem._dump_H  s#   	:!dj83T&T!Y''':h.K!Kq!P!P]+++:!dj83O&O!\***:!dj83O&O![)))cEk7DIz388I;N;NPTUUU}++-- 	& 	&GNN519%%%%	& 	&r   c                    |                                   | j        r| j                                         d| _        | j                                        D ]}|                                 d S rc   )r   r   r   r   r   r   r.   r   s     r   r   zScriptItem.ResetV  sn    > 	#N  """}++-- 	 	GMMOOOO	 	r   c                   |                                   d | _        d | _        | j        r | j                                         d | _        | j                                        D ]}|                                 g | _        d| _        d S rc   )r   r   r   r   r   r   r   r   r   s     r   r   zScriptItem.Close^  s    

> 	"N  """!DN}++-- 	 	GMMOOOO"#r   c                    | j         rd S d| _         | j                                        D ]}|j         s|                                 d S Nr   )r   r   r   Registerr.   r   s     r   r   zScriptItem.Registerj  s\     	F M((** 	  	 D$  	  	 r   c                *    | j         t          j        z  S r*   )re   r   r   r7   s    r   IsGlobalzScriptItem.IsGlobal~  s    zH===r   c                L    | j         t          j        t          j        z  z  dk    S rc   )re   r   r   r   r7   s    r   	IsVisiblezScriptItem.IsVisible  s$    J(7(:VVW 	r   c                v    | }|j         j        | j        k    r|j         }|j         j        | j        k    |j         S r*   )r   r|   r   s     r   r   zScriptItem.GetEngine  s<    o'4>99?D o'4>99r   c                    | j         }| j        r1	 | j                                        dz   |z   }n# t          $ r Y nw xY w|S )N.)r\   r   _GetFullItemNameAttributeError)r.   rets     r   r   zScriptItem._GetFullItemName  s\    i? 	o66883>D!   
s   0 
==c                    | j         S r*   )r|   r7   s    r   GetSubItemClasszScriptItem.GetSubItemClass  s
    ~r   c                @    | j         |                                         S r*   )r   lowerr.   r\   s     r   
GetSubItemzScriptItem.GetSubItem  s    }TZZ\\**r   c                ~   |                                 }	 | j        |         }|j        '|%|j        |k    rt          t          j                  |j        |t          t          j                  ||_        ||_        n:# t          $ r-  |                                 ||||          x}| j        |<   Y nw xY w|S r   )	r  r   re   r   r   E_INVALIDARGr   KeyErrorr  )r.   r   r\   r   re   keyNamercs          r   GetCreateSubItemzScriptItem.GetCreateSubItem  s    **,,	w'B8#EMbh%>O>O")>????;&x/?")>????BH"BKK 	 	 	*@$*>*>*@*@D(E+ + Bw'''	 	s   A,B 4B:9B:c                    | j         rd S d| _         | j        t          j        z  r*|                                  |                                  d S d S r   )r   re   r   r   r   FindBuildSubItemEventsr7   s    r   CreateConnectionszScriptItem.CreateConnections  sb    " 	F"# :44 	*'')))))	* 	*r   c                    | j         r| j                                          | j                                        D ]}|                                 d S r*   )r   r   r   r   r   s     r   r   zScriptItem.Connect  sZ    > 	%N""$$$}++-- 	 	GOO	 	r   c                    | j         r| j                                          | j                                        D ]}|                                 d S r*   )r   r   r   r   r   s     r   r   zScriptItem.Disconnect  s\    > 	(N%%'''}++-- 	! 	!G    	! 	!r   c                    | j         | j        t          t          j        d           t          | | j                  | _         | j                                          d S )Nz8Item already has built events, or no dispatch available?)r   r   rY   r   r   r   r   r7   s    r   r   zScriptItem.BuildEvents  s[    >%)>%J   #477""$$$$$r   c                   	 | j                             t          j                  }|                                }n# t
          j        $ r Y d S w xY wt          |          D ]}|                    |t          j	                  \  }}| 
                    |          }d}	 	 |                    |          }n# t
          j        $ r Y n}w xY w|dz  }|d         }	|d         }
|d         }|d         }|d         }	 |t
          j        z   o]|
t
          j        k    oM|t
          j        k    o=|d         d         t
          j        k    o!|d         d         d         t
          j        k    }n	#  d}Y nxY w|r	 |                    |	          }| j                             |	dt
          j        d          }t)          |t
          j        t
          j                           rR|d         }|                     | ||t          j                  }|                                 |                                 n# t
          j        $ r Y nw xY wd S )Nr   r         r   	   )r   r   r   r   r   r   r   ro   r   r   GetDefaultSourceTypeInfor   FUNCFLAG_FRESTRICTEDFUNC_DISPATCHINVOKE_PROPERTYGETVT_PTRVT_USERDEFINEDr   InvokeDISPATCH_PROPERTYGETrG   TypeIIDsIID_IDispatchr  r   r   r   )r.   multiTypeInfor   r   r   re   defaultTypeindexfdescr   funckindinvkindelemdesc	funcflagsisSubObjectnamesresultr\   subObjs                      r   r  z!ScriptItem.FindBuildSubItemEvents  s   	 M886 M )>>@@LL" 	 	 	FF	,'' B	 B	D+::h9 OHe 77AAKE<'33E::EE *   E
q 8( 8!!H		$&)GGH J$	(??J#y'CCJ %QKNi.>>J %QKN1-1II  K$"#KKK '& ( 1 1& 9 9!%!5!5"C)G" " &"I$6y7N$O  . $)8D%)%:%: $dFH4Q& &F #..000"OO---$.   w< B	 B	sA   8; AAB55CC9A.E((E.4B8H--H?>H?c                   |                                 }|d         }|d         }|t          j        t          j        fvrt	          t
          j        d           |d         }t          |          D ]}|                    |          }|t          j	        t          j
        z  t          j        z  z  t          j	        k    r|                    |          }|                    |          }	|	                                 }|d         }|d         }
|t          j        k    r;|
t          j        z  r,|                    d          }|	                    |          c S |	c S dS )zBGets the typeinfo for the Default Dispatch for the passed typeinfor   r   r   r      rn   N)r   r   r   r   rY   r   r   ro   r   r   r   r   r   r   TYPEFLAG_FDUAL)r.   r   r   r   r   r   rt   re   r   defTypeInfo	typeFlagss              r   r  z#ScriptItem.GetDefaultSourceTypeInfo#  sv   ##%%a7I3Y5NOOO%'Q   G	y!! 	' 	'A --a00E34589 01 1  44Q77&55d;;"..007 H		 999!I$<< :
 $88<<D&55d;;;;;&&&&/1		' 	'r   N)r<   r=   r>   rw   r/   r~   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   r  r  r6   r   r   r   r   .  s;       DD  	
 	
 	
& & &  
$ 
$ 
$     (> > >  
      + + +  *	* 	* 	*  ! ! !	% 	% 	%M M M^%' %' %' %' %'r   r   )SetScriptSiteGetScriptSiteSetScriptStateGetScriptStater   AddNamedItem
AddTypeLibGetScriptDispatchGetCurrentScriptThreadIDGetScriptThreadIDGetScriptThreadStateInterruptScriptThreadClone)InitNewAddScriptletParseScriptTextGetInterfaceSafetyOptionsSetInterfaceSafetyOptionsParseProcedureTextc                     e Zd ZdZeez   ez   ez   Ze	j
        e	j        e	j        gZd Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.d# Z/d$ Z0d% Z1d& Z2d' Z3d( Z4d>d+Z5d, Z6	 d?d@d/Z7d?d0Z8d?d@d1Z9d?d2Z:d?d3Z;dAd6Z<d7 Z=d8 Z>d9 Z?d: Z@d; ZAd< ZBd= ZCd-S )B	COMScriptzzAn ActiveX Scripting engine base class.

    This class implements the required COM interfaces for ActiveX scripting.
    c                    t                       d| _        d | _        t          j        | _        t          j        | _        d | _        d| _	        d| _
        i | _        i | _        d S Nrn   r   )rN   baseThreadIddebugManagerr   SCRIPTTHREADSTATE_NOTINSCRIPTthreadStater   scriptState
scriptSitesafetyOptionsr   r   scriptCodeBlocksr7   s    r   r/   zCOMScript.__init__s  s_     #A#=	>@r   c                H    | j         r| j                             |          S dS rc   )rI  _query_interface_for_debugger_r   s     r   r   zCOMScript._query_interface_  s*     	I$CCCHHHqr   c                V    | j         !|                     t          j                   d S d S r*   )rM  r4  r   r   r7   s    r   r>  zCOMScript.InitNew  s/    ?& @AAAAA '&r   c	           
     >    |                      ||||||||           d S r*   )DoAddScriptlet)	r.   defaultNamecodeitemNamesubItemName	eventName	delimiterr_   ra   s	            r   r?  zCOMScript.AddScriptlet  s>     			
 		
 		
 		
 		
r   c	                   |s?| j         t          j        k    s*| j         t          j        k    s| j         t          j        k    r|t
          z  }n|t
           z  }|t
          z  r|                                  |                     |||||          S r*   )rL  r   r   r   r   SCRIPTTEXT_FORCEEXECUTIONRegisterNewNamedItemsDoParseScriptText)	r.   rV  rW  contextrZ  r_   ra   re   bWantResults	            r   r@  zCOMScript.ParseScriptText  s     	08#???8#AAA8#DDD..EE///E,, 	)&&(((%%%U
 
 	
r   c
                6    t          d|||||||||	
  
         d S )NrC  )rS   )
r.   rV  formalParamsprocNamerW  
unkContextrZ  contextCookiestartingLineNumberre   s
             r   rC  zCOMScript.ParseProcedureText  s;     	 	
 	
 	
* tr   c                   || _         | j        | j                                         dd l}	 dd l}ddlm} |                    |           | _        n# t          j	        $ r t          d           d | _        Y nt          $ r t          d           d | _        Y nr |                                 t          d                    t          j                    d         t          j                    d                              d | _        Y nxY w	 |                                | _        n-# t          j	        $ r t%          j                    | _        Y nw xY w|                                  d S )Nr   r   )debugz<Debugging interfaces not available - debugging is disabled..zNDebugging extensions (axdebug) module does not exist - debugging is disabled..z2*** Debugger Manager could not initialize - {}: {})rM  rI  r   	tracebackwin32com.axdebug.axdebugr   rh  DebugManagerr   r   rS   ImportError	print_excformatr+   exc_infoGetLCIDr   r2   GetUserDefaultLCIDr   )r.   siteri  r   rh  s        r   r2  zCOMScript.SetScriptSite  s   (##%%%	%++++ % 2 24 8 8D" 	% 	% 	% PQQQ $D 	% 	% 	%`   !%D	%!!!DKKLNN1%s|~~a'8   
 !%D	6DII" 	6 	6 	6 355DIII	6

s*   $A %D	9D	A-D	D' ''EEc                x    | j         t          t          j                  | j                             |          S r   )rM  r   r   S_FALSEr   r   s     r   r3  zCOMScript.GetScriptSite  s4    ?"X%56666--c222r   c                   || j         k    rd S | j         t          j        k    rt          t          j                  |t          j        k    r7| j         t          j        t          j        fv r| 	                                 d S d S |t          j        k    r| j         t          j        k    r| 
                                 | j         t          j        k    r|                                  |                                  |                     t          j                   d S |t          j        k    r| j         t          j        t          j        fv r3|                     t          j                   |                                  | j         t          j        k    r+|                                  |                     |           d S d S |t          j        k    r-| j         t          j        k    r| 
                                 d S d S |t          j        k    r|                                  d S |t          j        k    r| j         t          j        k    r| 	                                 | j         t          j        k    r| 
                                 | j         t          j        k    r|                                  |                     |           d S t          t          j                  r   )rL  r   r   r   r   r  r   r   r   Stopr   r   r   RunChangeScriptStater   r   r   )r.   states     r   r4  zCOMScript.SetScriptState  s   D$$$Fx:::X%:;;;;H444.,$   			 
 h2228#AAA!!!8#DDD

HHJJJ""8#?@@@@@h44420$   &&0   


8#???&&u----- @? h7778#AAA!!!!! BAh111JJLLLLLh8888#???		8#AAA!!!8#DDD

""5)))))X%:;;;;r   c                    | j         S r*   )rL  r7   s    r   r5  zCOMScript.GetScriptStateD  s    r   c                   | j         t          j        t          j        fv r|                                  | j         t          j        t          j        t          j        t          j        fv r	 | j         t          j        t          j        t          j        t          j        t          j        fv r]|                     t          j	                   | j
                                        D ]}|                                 i | _
        d| _        | j        r | j                                         d | _        d | _        i | _        d| _        d S rG  )rL  r   r   r   rv  r   r   r   rx  r   r   r   r   rH  rI  rM  rO  persistLoadedr   s     r   r   zCOMScript.CloseG  s0   *- 
 
 
 IIKKK*-,(	 
 
 
 .*-,( 
 
 
 ""8#>???,,..  

DM "D 	%##%%% $D "r   c                   | j         t          t          j                  	 | j                             |t
          j                  d         }|                    t          j	                  }n.# t          j
        $ r t          t          j        d          w xY w |                                 | |||          x}| j        |<   |                                r|                                 d S d S )Nr   r   z+Object has no dispatch interface available.rV   )rM  r   r   r  GetItemInfor   SCRIPTINFO_IUNKNOWNr   r   r   r   E_NOINTERFACEGetNamedItemClassr   r   r  )r.   r\   re   unknownr   newItems         r   r6  zCOMScript.AddNamedItemi  s   ?"X%:;;;;	o11$8TUUVWXG--i.EFFHH" 	 	 	,B   	
 )A(>(>(@(@$%)
 )
 	
$-%  	(%%'''''	( 	(s   A
A. .+Bc                6    t          t          j                  r   r   r   	E_NOTIMPLr  s     r   r8  zCOMScript.GetScriptDispatchz  s    !34444r   c                    | j         S r*   )rH  r7   s    r   r9  z"COMScript.GetCurrentScriptThreadID~  s      r   c                    | j         dk    rt          t          j                  | j         |k    rt          t          j                  | j         S Nrn   r   )rH  r   r   r   r  )r.   win32ThreadIds     r   r:  zCOMScript.GetScriptThreadID  sO    ""X%:;;;;--X%:;;;;  r   c                    | j         dk    rt          t          j                  || j         k    rt          t          j                  | j        S r  )rH  r   r   r   r  rK  )r.   scriptThreadIds     r   r;  zCOMScript.GetScriptThreadState  sO    ""X%:;;;;T...X%:;;;;r   c                P    ddl m} |                    || j        ||d           d S )Nr   )gencacher   )
bForDemand)win32com.clientr  EnsureModuler   )r.   uuidmajorminorre   r  s         r   r7  zCOMScript.AddTypeLib  s;    ,,,,,,dDIueJJJJJr   c                8    t          dt          j                  )NzNot Implementedr   r  r7   s    r   r=  zCOMScript.Clone  s    ,H4FGGGGr   c                   ||z  dk    rd S |t           j        t           j        t           j        t          j        t          j        fv r#|                                 }||z  |z  | _        d S t          t          j                  )Nr   r   r   IID_IPersistIID_IPersistStreamIID_IPersistStreamInitr   IID_IActiveScriptIID_IActiveScriptParse#_GetSupportedInterfaceSafetyOptionsrN  r   r   r  )r.   r   optionsMaskenabledOptions	supporteds        r   rB  z#COMScript.SetInterfaceSafetyOptions  s    '1,,F "(,&+
 
 
 @@BBI!*[!8>!IDX%;<<<<r   c                    dS rc   r6   r7   s    r   r  z-COMScript._GetSupportedInterfaceSafetyOptions  s    qr   c                    |t           j        t           j        t           j        t          j        t          j        fv r|                                 }|| j        fS t          t          j                  r   r  )r.   r   r  s      r   rA  z#COMScript.GetInterfaceSafetyOptions  sg    "(,&+
 
 
 @@BBId000X%;<<<<r   c                V    |                                   |                                  d S r*   )r]  DoExecutePendingScriptsr7   s    r   ExecutePendingScriptszCOMScript.ExecutePendingScripts  s,    ""$$$$$&&&&&r   c                \    |                                   |                     |||||          S r*   )r]  DoProcessScriptItemEvent)r.   r   r   r   r   r%   s         r   r   z COMScript.ProcessScriptItemEvent  s0    ""$$$,,T5$MMMr   c                h    | j                                         D ]}|                    d           d S rc   )r   r   r   r   s     r   _DumpNamedItems_zCOMScript._DumpNamedItems_  s:    M((** 	 	DKKNNNN	 	r   c                    | j         }i | _         |                                D ]J}|                                 |j        t          j        z  r |                     |j        |j                   Kd S r*   )r   r   r   re   r   SCRIPTITEM_ISPERSISTENTr6  r\   )r.   existingr   s      r   ResetNamedItemszCOMScript.ResetNamedItems  sm    =OO%% 	9 	9DJJLLLzH<< 9!!$)TZ888	9 	9r   c                    | j         S r*   )rN  r7   s    r   GetCurrentSafetyOptionsz!COMScript.GetCurrentSafetyOptions  s    !!r   c                t    | j                                         D ]}|j        s|                                 d S r*   )r   r   r   r  r   s     r   ProcessNewNamedItemsConnectionsz)COMScript.ProcessNewNamedItemsConnections  sG    M((** 	) 	)D* )&&(((	) 	)r   c                v    | j                                         D ]}|j        s|                     |           d S r*   )r   r   r   RegisterNamedItemr   s     r   r]  zCOMScript.RegisterNewNamedItems  sI    M((** 	- 	-D$ -&&t,,,	- 	-r   c                .    |                                  d S r*   )r   r   s     r   r  zCOMScript.RegisterNamedItem  s    r   c                    | j         t          j        t          j        fv rd S t	          t
          j        d| j         z             d S )Nz"Not connected or disconnected - %d)rL  r   r   r   rY   r   r   r7   s    r   CheckConnectedOrDisconnectedz&COMScript.CheckConnectedOrDisconnected  sW    *- 
 
 
 F!043CC	
 	
 	
 	
 	
r   c                ~    |                                   |                                  |                                  d S r*   )r  r]  ConnectEventHandlersr7   s    r   r   zCOMScript.Connect   s>    ,,...""$$$!!#####r   c                    | j         t          j        k    r/| j         t          j        k    rt	          t
          j                  |                                  |                                  d S r   )	rL  r   r   r   r   r   r   r  DoRunr7   s    r   rw  zCOMScript.Run  s]      @@@ H$@@@X%:;;;;""$$$

r   c                    | j         t          j        k    r|                                  |                                  d S r*   )rL  r   r   r   r   r7   s    r   rv  zCOMScript.Stop  s4    x===OO

r   c                    |                                   	 |                                  n# t          j        $ r Y nw xY w|                     t
          j                   d S r*   )r  DisconnectEventHandlersr   r   rx  r   r   r7   s    r   r   zCOMScript.Disconnect  sp    ))+++	((****" 	 	 	D	 	x@AAAAAs   + ==c                    | j                                         D ]}|                                 |                     t          j                   d S r*   )r   r   r   rx  r   r   r   s     r   r  zCOMScript.ConnectEventHandlers!  sK    M((** 	 	DLLNNNNx=>>>>>r   c                f    | j                                         D ]}|                                 d S r*   )r   r   r   r   s     r   r  z!COMScript.DisconnectEventHandlers'  s<    M((** 	 	DOO	 	r   c                l    |                                   |                     t          j                   d S r*   )r  rx  r   r   r7   s    r   r   zCOMScript.Reset,  s1    x?@@@@@r   c                .   |                                   	 || _        	 | j        r| j                            |           n(# t          j        $ r}|j        \  }}}}Y d }~nd }~ww xY w|                                  d S # |                                  w xY wr*   )DisableInterruptsrL  rM  OnStateChanger   r   r%   EnableInterrupts)r.   ry  xxx_todo_changemehrrX   excrR   s          r   rx  zCOMScript.ChangeScriptState1  s       	$$D>? 9O11%888& > > >'8'=$T3> !!#####D!!####s3   A> !A  A>  A%A A>  A%%A> >Bc                    | j         rG| j                                          | j         j        j        r | j         j        j        |g|R  S  || S  || S r*   )rI  OnEnterScriptadbappDebuggerr   )r.   r$   r%   s      r   _ApplyInScriptedSectionz!COMScript._ApplyInScriptedSection?  sl     	++--- $0 !4t(,4R?$????r4y 2t9r   	codeBlockAXScriptCodeBlock | Nonec                n   |                                   	 	 |                     ||          | j        r| j                                         |                                  S # | j        r| j                                         |                                  w xY w#  |                     |           Y d S xY wr*   )BeginScriptedSectionr  rI  OnLeaveScriptEndScriptedSectionHandleException)r.   r  r$   r%   s       r   ApplyInScriptedSectionz COMScript.ApplyInScriptedSectionI  s    !!###		,*33B==$ 6%33555'')))) $ 6%33555''))))	,  ++++++s   A! 4B !6BB B4c                d    | j         r| j                                          t          |||          S r*   )rI  r  compile)r.   rV  r\   types       r   _CompileInScriptedSectionz#COMScript._CompileInScriptedSectionW  s4     	.++---tT4(((r   Nr[   c                   |j         dS ||j        }n|}|                                }|                                  	 	 |                     t          |          ||          }||_         	 | j        r| j                                         |                                  dS # | j        r| j                                         |                                  w xY w#  | 	                    |           Y d S xY wr   )
rd   r^   ri   r  r  r   rI  r  r  r  )r.   r  r  realCoderV  r\   rd   s          r   CompileInScriptedSectionz"COMScript.CompileInScriptedSection\  s    +1%DDD$$&&!!###
	,*!;;HTNNDRVWW
'1	$$ 6%33555''))))) $ 6%33555''))))	,  ++++++s    +B" ,4C "6CC C5c                    | j         r^| j                                          | j         j        j        r!| j         j                            |||          S t          |||           d S t          |||           d S r*   )rI  r  r  r  runexec)r.   rd   globalslocalss       r   _ExecInScriptedSectionz COMScript._ExecInScriptedSectiont  s     	.++--- $0 2(,00WfMMMZ&11111Wf-----r   c                   ||}|j         r
J d            d|_         |                                  	 	 |                     |j        ||           | j        r| j                                         |                                  d S # | j        r| j                                         |                                  w xY w#  |                     |           Y d S xY wNz-This code block should not have been executedr   )rf   r  r  rd   rI  r  r  r  r.   r  r  r  s       r   ExecInScriptedSectionzCOMScript.ExecInScriptedSection~  s   >F) 	
 	
;	
 	
) "#	!!###	,*++I,@'6RRR$ 6%33555''))))) $ 6%33555''))))	,  ++++++s   B 4B> 6B;;B> >Cc                    | j         r\| j                                          | j         j        j        r!| j         j                            |||          S t          |||          S t          |||          S r*   )rI  r  r  r  runevalevalr  s       r   _EvalInScriptedSectionz COMScript._EvalInScriptedSection  su     	4++--- $0 8(,44YPPPIw777	7F333r   c                   ||}|j         r
J d            d|_         |                                  	 	 |                     |j        ||          | j        r| j                                         |                                  S # | j        r| j                                         |                                  w xY w#  |                     |           Y d S xY wr  )rf   r  r  rd   rI  r  r  r  r  s       r   EvalInScriptedSectionzCOMScript.EvalInScriptedSection  s   >F) 	
 	
;	
 	
) "#	!!###
	,*22('6  $ 6%33555'')))) $ 6%33555''))))	,  ++++++s   B 4B< 6B99B< <CrT   r   c                &   t          j                    ^}}}t          |          r t          |t          j                  r*|j        t          j        k    rt          |j                  t          j        | ||          }t          j        | j        | j        |          }|S	 | j                            d|           n# t          j        $ r Y nw xY w|                     t          j                   |t%          t&          j        d           dS )z%Never returns - raises a ComExceptionr   )	exc_valueNz/Don't have an exception to raise to the caller!)r+   ro  r   rG   r   r   hresultr   SCRIPT_E_REPORTEDr   r	   AXScriptExceptionProcessAXScriptExceptionrM  rI  OnScriptTerminater4  r   rY   r   r   )r.   r  exc_typer  _	exceptionresult_exceptions          r   r  zCOMScript.HandleException  s1   "%,..)a  )) 	 y)"566	8!X%??? Y%67777+D)yQQQ	 !9OT.	
 
 '11$8HIIII&     >???"" 	!#T	
 	
 	
 	
 	
s   %C CCc                z    | j         t          t          j                  | j                                          d S r   )rM  r   r   r   r  r7   s    r   r  zCOMScript.BeginScriptedSection  8    ?"X%:;;;;%%'''''r   c                z    | j         t          t          j                  | j                                          d S r   )rM  r   r   r   r  r7   s    r   r  zCOMScript.EndScriptedSection  r  r   c                    d S r*   r6   r7   s    r   r  zCOMScript.DisableInterrupts  r9   r   c                    d S r*   r6   r7   s    r   r  zCOMScript.EnableInterrupts  r9   r   c                n    	 | j         |         S # t          $ r t          t          j                  w xY wr   )r   r	  r   r   r  r  s     r   GetNamedItemzCOMScript.GetNamedItem  sC    	<=&& 	< 	< 	<X%:;;;;	<s    %4c                    t           S r*   )r   r7   s    r   r  zCOMScript.GetNamedItemClass  s    r   c                    || j         |                                <   | j        r| j                            |           d S d S r*   )rO  ri   rI  AddScriptBlock)r.   r  s     r   _AddScriptCodeBlockzCOMScript._AddScriptCodeBlock  sM    9Bi33556 	8,,Y77777	8 	8r   )r  r  r*   )r  r[   )r  r  rT   r   )Dr<   r=   r>   rw   IActiveScriptMethodsIActiveScriptParseMethodsIObjectSafetyMethods"IActiveScriptParseProcedureMethodsr   r   r  r  IID_IObjectSafety_com_interfaces_r/   r   r>  r?  r@  rC  r2  r3  r4  r5  r   r6  r8  r9  r:  r;  r7  r=  rB  r  rA  r  r   r  r  r  r  r]  r  r  r   rw  rv  r   r  r  r   rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r6   r   r   rE  rE  a  s         	
#	$
	 -	-  	"'"A A A  B B B
 
 
.
 
 
>! ! !J$ $ $L3 3 3
0< 0< 0<d          D( ( ("5 5 5! ! !! ! !     K K KH H H= = =.  = = =' ' 'N N N
  9 9 9" " ") ) )- - -  	
 	
 	
$ $ $
	 	 	  B B B? ? ?  
A A A
$ $ $  , , , ,) ) ) <@, , , , ,0. . . ., , , , ,$4 4 4 4, , , ,(#
 #
 #
 #
J( ( (
( ( (
    < < <  8 8 8 8 8r   rE  __main__z6This is a framework class - please use pyscript.py etcc                    d S r*   )
r   rC   ro   listr   r   r   	ole_errorGetDocumentation
GetVarDesc)r   r   jr$  r}   r*  docs          r   dumptypeinfor    s    
Fr   )rT   r   )0rw   
__future__r   r   r+   typingr   r   r2   win32com.client.connectr   win32com.server.utilr   win32com.axscriptr   win32com.server.exceptionr   r   r   r	   r   r\  SCRIPTTEXT_ISEXPRESSIONSCRIPTTEXT_ISPERSISTENTr   r   r   r   r   r   	state_mapr   r(   rN   rS   rY   r[   ry   r   r   r  r  r  r  rE  r<   rC   r  r6   r   r   <module>r     s    # " " " " " 				 



                     & & & & & & H H H H H H H H      3 3 3 ( $ $  &(C$&? "7"$;%'A!5	I I I        .  *  $ $ $ $$5 $5 $5 $5 $5 $5 $5 $5N6 6 6 6 6 6 6 6.r# r# r# r# r# r# r# r#jZ' Z' Z' Z' Z' Z' Z' Z'z    KJJ 35PQ  ';%; "N
8 N
8 N
8 N
8 N
8 N
8 N
8 N
8b z	E
BCCC- - - - -r   