o
    tBh                     @   s   d dl mZ d dlmZ d dlmZ d dlZd dlZedZ	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZG dd deZG d d! d!eZdS )"    timestampNow)DefaultTable)reduceNzfontTools.mergec                    s>   t | } t| }t| t fdd|D sJ d|   S )Nc                 3   s    | ]}| kV  qd S N .0itemfirstr   k/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/fontTools/merge/util.py	<genexpr>       zequal.<locals>.<genexpr>z"Expected all items to be equal: %s)listiternextall)lsttr   r   r   equal   s
   "r   c                 C   s   t t| S r   )r   r   r   r   r   r   r         r   c                 C   s   t S r   NotImplementedr   r   r   r   recalculate   s   r   c                 C   s   t  S r   r   r   r   r   r   current_time   s   r   c                 C      t tj| S r   )r   operatorand_r   r   r   r   bitwise_and!   r   r    c                 C   r   r   )r   r   or_r   r   r   r   
bitwise_or$   r   r"   c                 C   s   t | } t| t|  S r   )r   sumlenr   r   r   r   avg_int'   s   r%   c                        fdd}|S )zReturns a filter func that when called with a list,
	only calls func on the non-NotImplemented items of the list,
	and only so if there's at least one item remaining.
	Otherwise returns NotImplemented.c                    s   dd | D }|r |S t S )Nc                 S   s   g | ]}|t ur|qS r   r   r   r   r   r   
<listcomp>2   s    z1onlyExisting.<locals>.wrapper.<locals>.<listcomp>r   )r   itemsfuncr   r   wrapper1   s   zonlyExisting.<locals>.wrapperr   )r*   r+   r   r)   r   onlyExisting+   s   r,   c                 C   s   g }| D ]}| | q|S r   )extend)r   lr
   r   r   r   sumLists7      r/   c                 C   s   i }| D ]}| | q|S r   )update)r   dr
   r   r   r   sumDicts=   r0   r3   c                    r&   )Nc                    s   t | } d}td D ];}z| }W n ty1   zd }W n ty.   td| w Y nw d|>  | fdd| D }|||> O }q|S )Nr   size*zDon't know how to merge bit %s   c                 3   s    | ]	}t | @ V  qd S r   )boolr   
shiftedBitr   r   r   Q   s    z-mergeBits.<locals>.wrapper.<locals>.<genexpr>)r   rangeKeyError	Exception)r   returnValue	bitNumber
mergeLogicmergedValuebitmapr8   r   r+   E   s"   zmergeBits.<locals>.wrapperr   )rB   r+   r   rA   r   	mergeBitsC   s   rC   c                   @       e Zd ZdZdd Zdd ZdS )AttendanceRecordingIdentityDictzVA dictionary-like object that records indices of items actually accessed
	from a list.c                 C   s&   || _ dd t|D | _t | _d S )Nc                 S      i | ]	\}}t ||qS r   idr	   ivr   r   r   
<dictcomp>^       z<AttendanceRecordingIdentityDict.__init__.<locals>.<dictcomp>)r.   	enumerater2   setsselfr   r   r   r   __init__\   s   z(AttendanceRecordingIdentityDict.__init__c                 C   s   | j | jt|  |S r   )rP   addr2   rH   rR   rK   r   r   r   __getitem__a   s   z+AttendanceRecordingIdentityDict.__getitem__N__name__
__module____qualname____doc__rS   rV   r   r   r   r   rE   X   s    rE   c                   @   rD   )GregariousIdentityDictzoA dictionary-like object that welcomes guests without reservations and
	adds them to the end of the guest list.c                 C   s   || _ tdd |D | _d S )Nc                 s   s    | ]}t |V  qd S r   rG   )r	   rK   r   r   r   r   k   r   z2GregariousIdentityDict.__init__.<locals>.<genexpr>)r.   rO   rP   rQ   r   r   r   rS   i   s   zGregariousIdentityDict.__init__c                 C   s.   t || jvr| jt | | j| |S r   )rH   rP   rT   r.   appendrU   r   r   r   rV   m   s   z"GregariousIdentityDict.__getitem__NrW   r   r   r   r   r\   e   s    r\   c                   @   s2   e Zd ZdZdddZdd Zdd Zd	d
 ZdS )NonhashableDictz3A dictionary-like object mapping objects to values.Nc                 C   s:   |d u rdd t |D | _d S dd t||D | _d S )Nc                 S   rF   r   rG   rI   r   r   r   rL   x   rM   z,NonhashableDict.__init__.<locals>.<dictcomp>c                 S   s   i | ]	\}}t ||qS r   rG   )r	   krK   r   r   r   rL   z   rM   )rN   r2   zip)rR   keysvaluesr   r   r   rS   v   s   zNonhashableDict.__init__c                 C   s   | j t| S r   r2   rH   rR   r_   r   r   r   rV   |   s   zNonhashableDict.__getitem__c                 C   s   || j t|< d S r   rc   )rR   r_   rK   r   r   r   __setitem__   s   zNonhashableDict.__setitem__c                 C   s   | j t|= d S r   rc   rd   r   r   r   __delitem__   s   zNonhashableDict.__delitem__r   )rX   rY   rZ   r[   rS   rV   re   rf   r   r   r   r   r^   s   s    
r^   )fontTools.misc.timeToolsr   #fontTools.ttLib.tables.DefaultTabler   	functoolsr   r   logging	getLoggerlogr   r   r   r   r    r"   r%   r,   r/   r3   rC   objectrE   r\   r^   r   r   r   r   <module>   s(   
