o
    in                     @   s  d dl mZ d dlZd dlZejejdZejejdZ	ej
ZejZeej_eej_eej_eegej_ejZdd Zdd Zd	d
 ZdZdZdZdZdeB Zee @ ZdZdZd!ddZdd Z da!dd Z"dd Z#dd Z$eedfddZ%g d Z&dS )"    )contextmanagerNobjc
Foundationc                 C   s   t | ts
| d} | S )zensure utf8 bytesutf8)
isinstancebytesencode)s r
   H/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/appnope/_nope.py_utf8   s   

r   c                 C   s   t t| S )z$create a selector name (for methods))r   sel_registerNamer   )namer
   r
   r   n!   s   r   c                 C   s&   t t| }|dusJ d|  |S )zget an ObjC Class by nameNzCouldn't find Class %s)r   objc_getClassr   )	classnameretr
   r
   r   C&   s   r   l        i   i @  i   i    l        c                 C   sz   t d}t d}tttgtj_t|tdt|}ttgtj_t|td}ttttgtj_t|tdt| t|}|S )zWrapper for:

    [ [ NSProcessInfo processInfo]
        beginActivityWithOptions: (uint64)options
                          reason: (str)reason
    ]
    NSProcessInfoNSStringzstringWithUTF8String:processInfoz beginActivityWithOptions:reason:)	r   void_pr   objc_msgSendargtypesmsgr   r   ull)optionsreasonr   r   infoactivityr
   r
   r   beginActivityWithOptions;   s   r"   c                 C   sH   t d}ttgtj_t|td}tttgtj_t|tdt|  dS )z end a process activity assertionr   r   zendActivity:N)r   r   r   r   r   r   r   )r!   r   r    r
   r
   r   endActivityQ   s
   r#   c                   C   s   t tdadS )zIdisable App Nap by setting NSActivityUserInitiatedAllowingIdleSystemSleepBecause ReasonsN)r"   .NSActivityUserInitiatedAllowingIdleSystemSleep_theactivityr
   r
   r
   r   nope]   s   r'   c                   C   s   t durtt  da dS dS )z+end the caffeinated state started by `nope`N)r&   r#   r
   r
   r
   r   nape   s   r(   c                   C   s   t du S )zis napping allowed?N)r&   r
   r
   r
   r   napping_allowedm   s   r)   r$   c                 c   s,    t | |}z
dV  W t| dS t| w )zfcontext manager for beginActivityWithOptions.

    Within this context, App Nap will be disabled.
    N)r"   r#   )r   r   r!   r
   r
   r   
nope_scoper   s
   
r*   )"NSActivityIdleDisplaySleepDisabled!NSActivityIdleSystemSleepDisabled#NSActivitySuddenTerminationDisabled&NSActivityAutomaticTerminationDisabledNSActivityUserInitiatedr%   NSActivityBackgroundNSActivityLatencyCriticalr"   r#   r'   r(   r)   r*   )r   )'
contextlibr   ctypesctypes.utilcdllLoadLibraryutilfind_libraryr   _c_void_pr   c_uint64r   r   restyper   r   r   r   r   r   r   r+   r,   r-   r.   r/   r%   r0   r1   r"   r#   r&   r'   r(   r)   r*   __all__r
   r
   r
   r   <module>   sD   	
	