£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    pSe0                 @   s   d dl Z d dlZd dlZd dlZd dlmZmZmZ G dd deZG dd de	Z
dd Zdd
dZdd Zdd Zdd Zdd Zdd Zdd Zdd Ze	 e	 fddZdd ZdS )    N)MutableMapping	str_typesurlsplitc               @   sP   e Zd Z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 )URIDictz8
    Dictionary which uses normalized URIs as keys.
    c             C   s   t | S )N)r   geturl)selfuri r	   B/opt/alt/python37/lib/python3.7/site-packages/jsonschema/_utils.py	normalize   s    zURIDict.normalizec             O   s   t  | _| jj|| d S )N)dictstoreupdate)r   argskwargsr	   r	   r
   __init__   s    zURIDict.__init__c             C   s   | j | | S )N)r   r   )r   r   r	   r	   r
   __getitem__   s    zURIDict.__getitem__c             C   s   || j | |< d S )N)r   r   )r   r   valuer	   r	   r
   __setitem__   s    zURIDict.__setitem__c             C   s   | j | |= d S )N)r   r   )r   r   r	   r	   r
   __delitem__   s    zURIDict.__delitem__c             C   s
   t | jS )N)iterr   )r   r	   r	   r
   __iter__   s    zURIDict.__iter__c             C   s
   t | jS )N)lenr   )r   r	   r	   r
   __len__!   s    zURIDict.__len__c             C   s
   t | jS )N)reprr   )r   r	   r	   r
   __repr__$   s    zURIDict.__repr__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   	   s   r   c               @   s   e Zd ZdZdd ZdS )UnsetzG
    An as-of-yet unset attribute or unprovided default parameter.
    c             C   s   dS )Nz<unset>r	   )r   r	   r	   r
   r   -   s    zUnset.__repr__N)r   r   r   r   r   r	   r	   r	   r
   r    (   s   r    c             C   s"   t dd| }t|dS )zC
    Load a schema from ./schemas/``name``.json and return it.
    Z
jsonschemazschemas/{0}.jsonzutf-8)pkgutilget_dataformatjsonloadsdecode)namedatar	   r	   r
   load_schema1   s    r)      c                s   d  fdd|  D S )z>
    A dumb version of `textwrap.indent` from Python 3.3.
    
c             3   s   | ]}d d   | V  qdS )    Nr	   ).0line)timesr	   r
   	<genexpr>?   s    zindent.<locals>.<genexpr>)join
splitlines)stringr0   r	   )r0   r
   indent:   s    r5   c             C   s    | sdS dd dd | D  S )z
    Construct a single string containing indexing operations for the indices.

    For example, [1, 2, "foo"] -> [1][2]["foo"]

    Arguments:

        indices (sequence):

            The indices to format.
     z[%s]z][c             s   s   | ]}t |V  qd S )N)r   )r.   indexr	   r	   r
   r1   Q   s    z"format_as_index.<locals>.<genexpr>)r2   )indicesr	   r	   r
   format_as_indexB   s    r9   c             c   sP   | di }d| di }x,| D ]$}||kr$|rBt||rBq$|V  q$W dS )z
    Return the set of additional properties for the given ``instance``.

    Weeds out properties that should have been validated by ``properties`` and
    / or ``patternProperties``.

    Assumes ``instance`` is dict-like already.
    
properties|ZpatternPropertiesN)getr2   research)instanceZschemar:   patternspropertyr	   r	   r
   find_additional_propertiesT   s    

rB   c             C   s.   t | dkrd}nd}ddd | D |fS )z@
    Create an error message for extra items or properties.
    r*   waswerez, c             s   s   | ]}t |V  qd S )N)r   )r.   extrar	   r	   r
   r1   p   s    zextras_msg.<locals>.<genexpr>)r   r2   )extrasZverbr	   r	   r
   
extras_msgg   s    rG   c          	   C   s^   g }xF|D ]>}y| t|d  W q
 tk
rF   | t| Y q
X q
W d| d|f S )a+  
    Create an error message for a failure to match the given types.

    If the ``instance`` is an object and contains a ``name`` property, it will
    be considered to be a description of that object and used as its type.

    Otherwise the message is simply the reprs of the given ``types``.
    r'   z%r is not of type %sz, )appendr   	Exceptionr2   )r?   typesZreprstyper	   r	   r
   	types_msgs   s    

rL   c             C   sP   t  }t| ts| f} x0| D ](}t|tr:|t| q|| qW t|S )z
    isinstance() can accept a bunch of really annoying different types:
        * a single type
        * a tuple of types
        * an arbitrary nested tree of tuples

    Return a flattened tuple of the given argument.
    )set
isinstancetupler   flattenadd)Zsuitable_for_isinstancerJ   thingr	   r	   r
   rP      s    



rP   c             C   s   t | tr| gS | S )z]
    Wrap ``thing`` in a list if it's a single str.

    Otherwise, return it unchanged.
    )rN   r   )rR   r	   r	   r
   ensure_list   s    
rS   c             C   s   t | t |kS )zQ
    Check if two things are equal, but evade booleans and ints being equal.
    )unbool)oneZtwor	   r	   r
   equal   s    rV   c             C   s   | dkr|S | dkr|S | S )zH
    A hack to make True and 1 and False and 0 unique for ``uniq``.
    TFr	   )elementtruefalser	   r	   r
   rT      s
    rT   c             C   s   yt tdd | D t | kS  tk
r   yHtdd | D }t|dd}x"t||D ]\}}||kr\dS q\W W nH ttfk
r   g }x*| D ]"}t|}||krdS |	| qW Y nX Y nX dS )z
    Check if all of a container's elements are unique.

    Successively tries first to rely that the elements are hashable, then
    falls back on them being sortable, and finally falls back on brute
    force.
    c             s   s   | ]}t |V  qd S )N)rT   )r.   ir	   r	   r
   r1      s    zuniq.<locals>.<genexpr>c             s   s   | ]}t |V  qd S )N)rT   )r.   rZ   r	   r	   r
   r1      s    r*   NFT)
r   rM   	TypeErrorsorted	itertoolsislicezipNotImplementedErrorrT   rH   )Z	containersortslicedrZ   jseener	   r	   r
   uniq   s"    	
rf   )r*   )r]   r$   r!   r=   Zjsonschema.compatr   r   r   r   objectr    r)   r5   r9   rB   rG   rL   rP   rS   rV   rT   rf   r	   r	   r	   r
   <module>   s"   		
