JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB pSe0@sddlZddlZddlZddlZddlmZmZmZGdddeZGddde Z ddZ dd d Z d d Z ddZddZddZddZddZddZe e fddZddZdS)N)MutableMapping str_typesurlsplitc@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS)URIDictz8 Dictionary which uses normalized URIs as keys. cCs t|S)N)rgeturl)selfurir B/opt/alt/python37/lib/python3.7/site-packages/jsonschema/_utils.py normalizeszURIDict.normalizecOst|_|jj||dS)N)dictstoreupdate)rargskwargsr r r __init__szURIDict.__init__cCs|j||S)N)r r )rrr r r __getitem__szURIDict.__getitem__cCs||j||<dS)N)r r )rrvaluer r r __setitem__szURIDict.__setitem__cCs|j||=dS)N)r r )rrr r r __delitem__szURIDict.__delitem__cCs t|jS)N)iterr )rr r r __iter__szURIDict.__iter__cCs t|jS)N)lenr )rr r r __len__!szURIDict.__len__cCs t|jS)N)reprr )rr r r __repr__$szURIDict.__repr__N) __name__ __module__ __qualname____doc__r rrrrrrrr r r r r src@seZdZdZddZdS)UnsetzG An as-of-yet unset attribute or unprovided default parameter. cCsdS)Nzr )rr r r r-szUnset.__repr__N)rrrrrr r r r r (sr cCs"tdd|}t|dS)zC Load a schema from ./schemas/``name``.json and return it. Z jsonschemazschemas/{0}.jsonzutf-8)pkgutilget_dataformatjsonloadsdecode)namedatar r r load_schema1sr)csdfdd|DS)z> A dumb version of `textwrap.indent` from Python 3.3.  c3s|]}dd|VqdS) Nr ).0line)timesr r ?szindent..)join splitlines)stringr0r )r0r indent:sr5cCs |sdSdddd|DS)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.indexr r r r1Qsz"format_as_index..)r2)indicesr r r format_as_indexBs r9ccsP|di}d|di}x,|D]$}||kr$|rBt||rBq$|Vq$WdS)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)getr2research)instanceZschemar:patternspropertyr r r find_additional_propertiesTs  rBcCs.t|dkrd}nd}ddd|D|fS)z@ Create an error message for extra items or properties. r*waswerez, css|]}t|VqdS)N)r)r.extrar r r r1pszextras_msg..)rr2)extrasZverbr r r extras_msggs rGc Cs^g}xF|D]>}y|t|dWq tk rF|t|Yq Xq Wd|d|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 Exceptionr2)r?typesZreprstyper r r types_msgss  rLcCsPt}t|ts|f}x0|D](}t|tr:|t|q||qWt|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 isinstancetuplerflattenadd)Zsuitable_for_isinstancerJthingr r r rPs    rPcCst|tr|gS|S)z] Wrap ``thing`` in a list if it's a single str. Otherwise, return it unchanged. )rNr)rRr r r ensure_lists rScCst|t|kS)zQ Check if two things are equal, but evade booleans and ints being equal. )unbool)oneZtwor r r equalsrVcCs|dkr |S|dkr|S|S)zH A hack to make True and 1 and False and 0 unique for ``uniq``. TFr )elementtruefalser r r rTs rTc Csyttdd|Dt|kStk ryHtdd|D}t|dd}x"t||D]\}}||kr\dSq\WWnHttfk rg}x*|D]"}t|}||krdS| |qWYnXYnXdS)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)rT)r.ir r r r1szuniq..css|]}t|VqdS)N)rT)r.rZr r r r1sr*NFT) rrM TypeErrorsorted itertoolsislicezipNotImplementedErrorrTrH)Z containersortslicedrZjseener r r uniqs"   rf)r*)r]r$r!r=Zjsonschema.compatrrrrobjectr r)r5r9rBrGrLrPrSrVrTrfr r r r s"