o
    tBh                     @   s:   d dl Z d dlZdd ZG dd deZG dd dZdS )    Nc                   C   s   t jd dk r	tS tS )Nr      )sysversion_info
basestringstr r   r   i/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/shopify/api_access.pybasestring_type   s   r	   c                   @   s   e Zd ZdS )ApiAccessErrorN)__name__
__module____qualname__r   r   r   r   r
      s    r
   c                   @   sd   e Zd ZdZed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S )	ApiAccess,zG\A(?P<unauthenticated>unauthenticated_)?(write|read)_(?P<resource>.*)\Zz@\A(?P<unauthenticated>unauthenticated_)?write_(?P<resource>.*)\Zc                 C   s&   t |t r|| j}| | d S N)
isinstancer	   splitSCOPE_DELIMITER_ApiAccess__store_scopes)selfscopesr   r   r   __init__   s   zApiAccess.__init__c                 C   s   |j | jkS r   )_compressed_scopes_expanded_scopes)r   
api_accessr   r   r   covers   s   zApiAccess.coversc                 C   s   | j | jS r   )r   joinr   r   r   r   r   __str__   s   zApiAccess.__str__c                 C   s
   t | jS r   )iterr   r   r   r   r   __iter__"   s   
zApiAccess.__iter__c                 C   s   t | t |ko| j|jkS r   )typer   )r   otherr   r   r   __eq__%   s   zApiAccess.__eq__c                    sR   t td dd |D } | t  fdd|D }||  _|| _d S )Nc                 S   s   g | ]}|  qS r   )strip.0scoper   r   r   
<listcomp>)   s    z,ApiAccess.__store_scopes.<locals>.<listcomp>c                 3   s    | ]}  |V  qd S r   )_ApiAccess__implied_scoper%   r   r   r   	<genexpr>+   s    z+ApiAccess.__store_scopes.<locals>.<genexpr>)	frozensetfilter_ApiAccess__validate_scopesr   unionr   )r   r   sanitized_scopesimplied_scopesr   r   r   __store_scopes(   s
   

zApiAccess.__store_scopesc                 C   s.   |D ]}| j |sdj|d}t|qd S )Nz!'{s}' is not a valid access scope)s)SCOPE_REmatchformatr
   )r   r   r'   error_messager   r   r   __validate_scopes/   s   zApiAccess.__validate_scopesc                 C   s2   | j |}|rdj|dpd|ddS d S )Nz {unauthenticated}read_{resource}unauthenticated resource)r8   r:   )IMPLIED_SCOPE_REr4   r5   group)r   r'   r4   r   r   r   __implied_scope5   s   zApiAccess.__implied_scopeN)r   r   r   r   recompiler3   r;   r   r   r   r    r#   r   r-   r)   r   r   r   r   r      s    

r   )r>   r   r	   	Exceptionr
   r   r   r   r   r   <module>   s
    