
    %
i0=                     v   d Z ddlZddl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mZmZmZ ddlmZ dZdZd Zd	 Zd
 Z G d dej                  Z G d d          Z G d d          Z G d dej                  Z G d dej                  Zd ZefdZ e!dk    r e              dS dS )zPython ActiveX Scripting Implementation

This module implements the Python ActiveX Scripting client.

To register the implementation, simply "run" this Python program - ie
either double-click on it, or run "python.exe pyscript.py" from the
command line.
    N)axscript)	frameworkscriptdispatch)SCRIPTTEXT_FORCEEXECUTIONSCRIPTTEXT_ISEXPRESSIONSCRIPTTEXT_ISPERSISTENTtrace)COMExceptionz&{DF630910-1C1D-11d0-AE36-8C0F5E000000}c                  *    t           rt          |   d S d S N)debugging_attrr	   )argss    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/axscript/client/pyscript.pydebug_attr_printr   !   s!     t     c                 .    t          j        dd|           S )Nz\tz    resubtexts    r   
ExpandTabsr   &       6%&&&r   c                 .    t          j        dd|           S )Nz\nz
r   r   s    r   AddCRr   *   r   r   c                       e Zd Zd ZdS )AXScriptCodeBlockc                 F    dt           j                            |           z   S )NzPyScript - )r   r   GetDisplayNameselfs    r   r   z AXScriptCodeBlock.GetDisplayName/   s    y:II$OOOOr   N)__name__
__module____qualname__r    r   r   r   r   .   s(        P P P P Pr   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )AXScriptAttributez$An attribute in a scripts namespace.c                     || j         d<   d S N_scriptEngine___dict__)r!   engines     r   __init__zAXScriptAttribute.__init__<   s    *0&'''r   c                     |d         dk    r|d d         dk    rt          |          |                     |          }|t          |          |S )N   _)AttributeError_FindAttribute_)r!   attrrcs      r   __getattr__zAXScriptAttribute.__getattr__?   sZ    7c>>d3B3i3.. &&&!!$'': &&&	r   c                     d | j         d<   d S r)   r+   r    s    r   _Close_zAXScriptAttribute._Close_G   s    *.&'''r   c                    	 |j         |                                         j        S # t          $ r Y nw xY w|j                                         D ]*}	 |                     ||          c S # t          $ r Y 'w xY wt          |          r   )subItemslowerattributeObjectKeyErrorvalues_DoFindAttribute_r3   )r!   objr5   items       r   r@   z#AXScriptAttribute._DoFindAttribute_J   s    	<

-== 	 	 	D	 L'')) 	 	D--dD99999!   T"""s   #& 
33A**
A76A7c                     | j         j                                        D ]*}	 |                     ||          c S # t          $ r Y 'w xY wt          | j         j        |          S r   )r*   r;   r?   r@   r3   getattrglobalNameSpaceModule)r!   r5   rB   s      r   r4   z!AXScriptAttribute._FindAttribute_W   s|    '07799 	 	D--dD99999!    t*@$GGGs   :
AAN)	r"   r#   r$   __doc__r.   r7   r9   r@   r4   r%   r   r   r'   r'   9   sj        **1 1 1  / / /# # #H H H H Hr   r'   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )NamedScriptAttributez2An explicitly named object in an objects namespacec                     || j         d<   d S N_scriptItem_r+   )r!   
scriptItems     r   r.   zNamedScriptAttribute.__init__l   s    (2n%%%r   c                 0    | j         j         d| j        dS )N())	__class__r"   rK   r    s    r   __repr__zNamedScriptAttribute.__repr__o   s!    .)BBD,=BBBBr   c                     	 | j         j        |                                         j        S # t          $ r+ | j         j        rt          | j         j        |          cY S Y nw xY wt          |          r   )rK   r;   r<   r=   r>   dispatchContainerrD   r3   )r!   r5   s     r   r7   z NamedScriptAttribute.__getattr__r   s    	J$-djjll;KK 	J 	J 	J 2 Jt0BDIIIIIJ J	J T"""s   (+ 0A A c                     |                                 }| j        j        r,	 t          | j        j        ||          S # t          $ r Y nw xY wt	          |          r   )r<   rK   rS   setattrr3   )r!   r5   values      r   __setattr__z NamedScriptAttribute.__setattr__|   sj     zz||. 	t0BD%PPP!   T"""s   = 
A
	A
c                     d | j         d<   d S rJ   r+   r    s    r   r9   zNamedScriptAttribute._Close_   s    (,n%%%r   N)	r"   r#   r$   rF   r.   rQ   r7   rW   r9   r%   r   r   rH   rH   e   sh        883 3 3C C C# # #	# 	# 	#- - - - -r   rH   c                   &    e Zd Zd Zd Zd Zd ZdS )
ScriptItemc                 h    t           j                            | ||||           i | _        d | _        d S r   )r   rZ   r.   
scriptletsr=   )r!   
parentItemnamedispatchflagss        r   r.   zScriptItem.__init__   s6    %%dJhNNN#r   c                     t           j                            |            | j        r| j                                         d | _        d S r   )r   rZ   Resetr=   r9   r    s    r   rb   zScriptItem.Reset   sG    ""4((( 	+ ((***#r   c                 `    t           j                            |            d | _        i | _        d S r   )r   rZ   CloserS   r\   r    s    r   rd   zScriptItem.Close   s,    ""4(((!%r   c                 V   t           j                            |            t          |           | _        | j        rd x}}	 |                                 }| j                                        }|                                d         }|j	        
                    |          }n# t          j        $ r d }Y nw xY w|7t          j        j                            | j        |d           }|
||j	        |<   t          j        j                            | j        || j                  | _        d S d S Nr   )r   rZ   RegisterrH   r=   r_   	GetEngineGetTypeInfoGetTypeAttrmapKnownCOMTypesget	pythoncom	com_errorwin32comclientdynamicMakeOleRepr	CDispatchr^   rS   )r!   olereprclsidr-   typeinfos        r   rg   zScriptItem.Register   s.   %%d+++3D99= 	""Ge ))=4466 ,,..q1 155e<<&       "/1==M8T  $5<F+E2%-_%<%F%Fw	& &D"""!	 	s    A!B" "B65B6N)r"   r#   r$   r.   rb   rd   rg   r%   r   r   rZ   rZ      sP        $ $ $
$ $ $  
    r   rZ   c                       e Zd ZdZdZej        ej        gZdZ	e
ZdZdd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S )PyScriptzPython.AXScript.2PythonzPython ActiveX Scripting Enginez*win32com.axscript.client.pyscript.PyScript).pys)pysFilebothc                 n    t           j                            |            d | _        g | _        d | _        d S r   )r   	COMScriptr.   rE   
codeBlocksscriptDispatchr    s    r   r.   zPyScript.__init__   s6    $$T***%)""r   c                     t           j                            |            d | _        t	          j        d          | _        t          |           | j        j        d<   g | _	        g | _
        i | _        d| _        d S )N__ax_main__axr   )r   r~   InitNewr   types
ModuleTyperE   r'   r,   r   persistedCodeBlocksrk   codeBlockCounterr    s    r   r   zPyScript.InitNew   sq    ##D)))"%*%5m%D%D"4Ed4K4K"+D1#%  " !r   c                 b    | j         D ]	}d|_        
t          j                            |           S Nr0   )r   beenExecutedr   r~   Stop)r!   bs     r   r   zPyScript.Stop   s3     	 	AANN"''---r   c                     | j         d d          }g | _         |D ]2}|j        t          z  r!d|_        | j                             |           3t
          j                            |           S rf   )r   r`   r   r   appendr   r~   rb   )r!   oldCodeBlocksr   s      r   rb   zPyScript.Reset   sm    * 	* 	*Aw00 *!"&&q)))"((...r   c                 0    | xj         dz  c_         | j         S r   )r   r    s    r   _GetNextCodeBlockNumberz PyScript._GetNextCodeBlockNumber   s    "$$r   c                    |j         }t          j                            | |           |s|                                r|j        | j        j        |j        <   |	                                r|j
                                        D ]}|j        | j        j        |j        <   |j        j        j                                        D ]2\  }}|j        s"t#          |j        |          | j        j        |<   /d S d S d S r   )isRegisteredr   r~   RegisterNamedItem	IsVisibler=   rE   r,   r^   IsGlobalr;   r?   rS   	_olerepr_mapFuncsitemshiddenrD   )r!   rB   wasRegsubitemr^   entrys         r   r   zPyScript.RegisterNamedItem   s   "--dD999 	 ~~ VAEAU*3DI>}} #}3355  G/ .7EE $(#9#C#L#R#R#T#T  KD% < DK 2DE E2;DA	 	
  r   c                     	 | j         j        }| j        D ]5}|j        s,|                     |d          r|                     ||           6	 d S # w xY w)Nexec)rE   r,   r   r   CompileInScriptedSectionExecInScriptedSection)r!   globs	codeBlocks      r   DoExecutePendingScriptsz PyScript.DoExecutePendingScripts  sw    	.7E!_ E E	 - E44YGG E229eDDDE
 DDDDDs   A	A Ac                     d S r   r%   r    s    r   DoRunzPyScript.DoRun  s    r   c                     |                                   d | _        g | _        d | _        t          j                            |            d S r   )ResetNamespacerE   r   r   r   r~   rd   r    s    r   rd   zPyScript.Close  sH    %)""!!$'''''r   c                 \    | j         t          j        | | j                  | _         | j         S r   )r   r   MakeScriptDispatchrE   )r!   r^   s     r   GetScriptDispatchzPyScript.GetScriptDispatch  s5     &"0"Cd0# #D ""r   c                     |d                                          |dd          z   dz   |d                                          z   |dd          z   S )Nr   r0   r1   )upper)r!   subItemName	eventNames      r   MakeEventMethodNamezPyScript.MakeEventMethodName!  s^    N  ""!""o l  ""# m		
r   c	                    |                      |          }	||k    r|	}
n|	                    |	|d d           }
|                     ||          }t          d|z  |||d          }|                     |           ||
j        |<   d S )NzScript Event %sr   )GetNamedItemGetCreateSubItemr   r   _AddScriptCodeBlockr\   )r!   defaultNamecodeitemNamer   r   	delimitersourceContextCookiestartLineNumberrB   subItemfuncNamer   s                r   DoAddScriptletzPyScript.DoAddScriptlet*  s       **##GG++D+tTJJG++KCC%($0C_VW
 
	 	  +++'08$$$r   c                 B   |                      |j        |j                  }d x}}	 |j        |         }t          |t                    r|}d }n# t
          $ r Y nw xY w|d|z  }	t          j        |j                  	                    d          D ]}
|	d|
z   dz   z  }	|	dz  }	| 
                    |d|	          sd S i }|                     || j        j        |           ||         }||j        |<   |{	 | j        j        |         }ng# t
          $ rZ |                                }| j        j        D ]6}||                                k    r| j        j        |         }||j        |<   7Y nw xY w|t          t           j                  |                     |||          S )Nz
def %s():

	r   )scode)r   r^   r\   
isinstancerx   r>   r   RemoveCRcodeTextsplitr   r   rE   r,   r<   r
   winerrorDISP_E_MEMBERNOTFOUNDApplyInScriptedSection)r!   rB   eventlcidwFlagsr   r   r   functionrealCodelinedictfuncNameLookr5   s                 r   DoProcessScriptItemEventz!PyScript.DoProcessScriptItemEventE  s   ++DIuzBB##	H	x0H(H--  $	 	 	 	D	 $x/H!*9+=>>DDTJJ / /D4K$..H00FHMM D&&45>   H~H(0DOH%	=5>xH = = ='~~// 6? = =D#tzz||33#'#=#Ft#L4<1	= == X%CDDDD**9hEEEs$   &A 
AA4D A!E+*E+c                 R   t          j        |          dz   }|t          z  rd}d}nd}d}|                                 }|dk    rd}|d| z  }t	          |||||          }	|                     |	           | j        j        }
|rN|                     |	|          r6|t          z  r| 	                    |	|
          S | 
                    |	|
          S d S |t          z  r0|                     |	|          r| 
                    |	|
           d S d S | j                            |	           d S )	Nr   zScript ExpressionevalzScript Blockr   r0     )r   r   r   r   r   r   rE   r,   r   EvalInScriptedSectionr   r   r   r   )r!   r   r   r   bWantResultr`   r^   	exec_typenumr   r   s              r   DoParseScriptTextzPyScript.DoParseScriptTexto  s    !$''$.** 	&DII!DI**,,!88C	C		%$+_e
 
	 	  +++*3 	2,,Y	BB H22 H55iGGG55iGGG	H H 00 200IFF A..y%@@@@@A A &&y11111r   c                     t           S r   )rZ   r    s    r   GetNamedItemClasszPyScript.GetNamedItemClass  s    r   c                 |    | j         4	 | j         j                                         n# t          $ r Y nw xY wd }d S d S r   )rE   r   _Reset_r3   )r!   rE   s     r   r   zPyScript.ResetNamespace  s_    %1*-557777!   $(!!! 21s   ( 
55N)r"   r#   r$   _reg_verprogid__reg_progid_r   CATID_ActiveScriptCATID_ActiveScriptParse_reg_catids_
_reg_desc_PyScript_CLSID_reg_clsid__reg_class_spec__reg_remove_keys__reg_threading_r.   r   r   rb   r   r   r   r   rd   r   r   r   r   r   r   r   r%   r   r   rx   rx      sC       )OL/1QRL2J KC"L1O# # #
" 
" 
". . ./ / /% % %  *    ( ( (# # #
 
 
1 1 16(F (F (FT 2  2  2D  ) ) ) ) )r   rx   c                     t           } t          j        j                            | j        dz   i            t          j        j                            dd           t          j        j                            d| j                   d}t          j        j                            d|           t          j        j                            d|           d S )Nz
\OLEScriptrz   r{   zpysFile\ScriptEnginez&{60254CA5-953B-11CF-8C96-00AA00B8708C}zpysFile\ShellEx\DropHandlerz.pysFile\ShellEx\PropertySheetHandlers\WSHProps)rx   ro   serverregister_set_subkeysr   _set_string)klassguid_wsh_shellexs     r   DllRegisterServerr     s    EO))]*B   O((;;;O(()@%BTUUU?O((')9   O((;=M    r   c                 \    t           j        j                            | t                    }|S )N)finalize_register)ro   r   r   UseCommandLiner   )r   rets     r   rg   rg     s.    
/
"
1
1!2 2  C Jr   __main__)"rF   r   r   rm   ro   win32com.client.dynamicwin32com.server.registerr   win32com.axscriptr   win32com.axscript.clientr   r   "win32com.axscript.client.frameworkr   r   r   r	   win32com.server.exceptionr
   r   r   r   r   r   r   r'   rH   rZ   r~   rx   r   rg   r"   r%   r   r   <module>r      sI    
			                & & & & & & > > > > > > > >            3 2 2 2 2 29  
' ' '' ' 'P P P P P	3 P P P&H &H &H &H &H &H &H &HX#- #- #- #- #- #- #- #-L& & & & &% & & &d]) ]) ]) ]) ])y" ]) ]) ])@  "      zHJJJJJ r   