Your IP : 216.73.217.152


Current Path : /opt/alt/python35/lib/python3.5/site-packages/jsonschema/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/jsonschema/__pycache__/_utils.cpython-35.opt-1.pyc



�$�]��@sddlZddlZddlZddlZddlmZmZmZGdd�de�ZGdd�de	�Z
dd�Zd	d
d�Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Ze	�e	�dd�Zdd�ZdS)�N)�MutableMapping�	str_types�urlsplitc@sveZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�URIDictz9
    Dictionary which uses normalized URIs as keys.

    cCst|�j�S)N)rZgeturl)�self�uri�r�B/opt/alt/python35/lib/python3.5/site-packages/jsonschema/_utils.py�	normalizeszURIDict.normalizecOs#t�|_|jj||�dS)N)�dict�store�update)r�args�kwargsrrr	�__init__szURIDict.__init__cCs|j|j|�S)N)rr
)rrrrr	�__getitem__szURIDict.__getitem__cCs||j|j|�<dS)N)rr
)rr�valuerrr	�__setitem__szURIDict.__setitem__cCs|j|j|�=dS)N)rr
)rrrrr	�__delitem__szURIDict.__delitem__cCs
t|j�S)N)�iterr)rrrr	�__iter__szURIDict.__iter__cCs
t|j�S)N)�lenr)rrrr	�__len__"szURIDict.__len__cCs
t|j�S)N)�reprr)rrrr	�__repr__%szURIDict.__repr__N)�__name__�
__module__�__qualname__�__doc__r
rrrrrrrrrrr	r	src@s"eZdZdZdd�ZdS)�UnsetzH
    An as-of-yet unset attribute or unprovided default parameter.

    cCsdS)Nz<unset>r)rrrr	r/szUnset.__repr__N)rrrrrrrrr	r)srcCs1tjddj|��}tj|jd��S)zD
    Load a schema from ./schemas/``name``.json and return it.

    Z
jsonschemazschemas/{0}.jsonzutf-8)�pkgutil�get_data�format�json�loads�decode)�name�datarrr	�load_schema3sr(�cs&dj�fdd�|j�D��S)z?
    A dumb version of `textwrap.indent` from Python 3.3.

    �
c3s!|]}dd�|VqdS)� �Nr)�.0�line)�timesrr	�	<genexpr>Cszindent.<locals>.<genexpr>)�join�
splitlines)�stringr/r)r/r	�indent=sr4cCs(|s
dSddjdd�|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][css|]}t|�VqdS)N)r)r-�indexrrr	r0Vsz"format_as_index.<locals>.<genexpr>)r1)�indicesrrr	�format_as_indexFsr8ccsn|jdi�}dj|jdi��}x:|D]2}||kr4|ratj||�raq4|Vq4WdS)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�|ZpatternPropertiesN)�getr1�re�search)�instanceZschemar9Zpatterns�propertyrrr	�find_additional_propertiesYs
r@cCsAt|�dkrd}nd}djdd�|D��|fS)zA
    Create an error message for extra items or properties.

    r)ZwasZwerez, css|]}t|�VqdS)N)r)r-Zextrarrr	r0wszextras_msg.<locals>.<genexpr>)rr1)ZextrasZverbrrr	�
extras_msgms	rAcCsqg}xQ|D]I}y|jt|d��Wq
tk
rU|jt|��Yq
Xq
Wd|dj|�fS)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�	Exceptionr1)r>�typesZreprs�typerrr	�	types_msgzs

rFcCsnt�}t|t�s!|f}x@|D]8}t|t�rS|jt|��q(|j|�q(Wt|�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)Zsuitable_for_isinstancerD�thingrrr	rJ�s		
rJcCst|t�r|gS|S)z^
    Wrap ``thing`` in a list if it's a single str.

    Otherwise, return it unchanged.

    )rHr)rLrrr	�ensure_list�srMcCs$|dkr|S|dkr |S|S)zI
    A hack to make True and 1 and False and 0 unique for ``uniq``.

    TFr)�element�true�falserrr	�unbool�s
rQcCsy-ttdd�|D���t|�kSWn�tk
r�ybtdd�|D��}tj|dd�}x-t||�D]\}}||kr~dSq~WWnXttfk
r�g}x7|D]/}t|�}||kr�dS|j	|�q�WYnXYnXdS)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.

    css|]}t|�VqdS)N)rQ)r-�irrr	r0�szuniq.<locals>.<genexpr>css|]}t|�VqdS)N)rQ)r-rRrrr	r0�sr)NFT)
rrG�	TypeError�sorted�	itertools�islice�zip�NotImplementedErrorrQrB)Z	container�sortZslicedrR�j�seen�errr	�uniq�s"
-

r])rUr#r r<Zjsonschema.compatrrrr�objectrr(r4r8r@rArFrJrMrQr]rrrr	�<module>s