U C^@sddlmZzddlmZmZmZmZWn,ek rTddlmZmZmZmZYnXddl m Z ddl m Z ddl mZddlmZmZddlmZmZdd lmZd d Zd d ZddZddZddZddZddZddZddZddZddZd d!Z d"d#Z!d$S)%)unicode_literals)SequenceSizedIterableCallable)ndarray) integer_types)wrapt)UndefinedOperatorErrorDifferentLengthError)ExpectedTypeErrorShapeMismatchError)OutsideRangeErrorcCsTddlm}||}t|ts.tt|dgt|d|sPtt|ddgdS)Nr)Docrzspacy.tokens.doc.Doc)Zspacy.tokens.docr isinstancerr type)arg_idargskwargsrZdocsr./tmp/pip-install-6_kvzl1k/thinc/thinc/check.pyis_docss   rcGsRt|D]D\}}t|ts&t|dg|dkrt|t|dkrt||qdS)z/Check that arguments have the same length. rrrN) enumeraterrr lenr )riargrrr equal_lengths   rcsddt|D]\}}t|ts2t|dgdkr^d|jkr^t|jg|dkr|j|djkrfdd|D}t||qdS) zCCheck that elements have the same dimension on specified axis. axisrrrcsg|]}|jqSrshape).0arrr 1szequal_axis..N)getrrrr r!rr )rrrrlengthsrr$r equal_axis's    r(csfdd}|S)zCheck that a particular argument is an array with a given shape. The shape may contain string attributes, which will be fetched from arg0 to the function (usually self). cs|d}||}t|ds&t|dgg}D]$}t|tsHt||d}||q.tt|jkrxt|jt |t |D],\}}|dk r|j||krt|j|qdS)Nrr!array) hasattrr rr getattrappendrr!rtupler)rrrselfrZ shape_valuesZdimrr rrhas_shape_inner;s     z"has_shape..has_shape_innerr)r!r/rr r has_shape5s r0cKsJ||}t|tst|dg|D]"}t|tr8|dkr"t|dgq"dS)Niterablerzvalid shape (positive ints))rrr r )rr func_kwargsrrvaluerrris_shapeOs   r4cCs,||}t|ts(t|ds(t|dgdS)N __getitem__r1)rrr*r )rrrrrrr is_sequenceXsr6cKsj||}t|tst|dgd|krB||dkrBt||ddd|krf||dkrft||dddS)Nfloatmin>=max<=)rr7r rrrr2rrrrris_float^s  r=cKsj||}t|tst|dgd|krB||dkrBt||ddd|krf||dkrft||dddS)Nintr8r9r:r;)rr r rr<rrris_inths  r?cKs"||}t|tst|dgdS)Nr)rrr r<rrris_arrayrs r@cKs.||}t|trd|jjkr*t|dgdS)Nrz ndarray[int])rrZdtypekindr r<rrr is_int_arrayxsrBcstjfdd}|S)NcsR|dkr|d}|dkr$t|dg|jkrDt||d|jn |||SdS)NrZModel)r _operatorsr )wrappedinstancerroprrcheckers  z$operator_is_defined..checkerr Z decorator)rGrHrrFroperator_is_defined~s rJcs"tjddfdd}|S)NcSs~t|ds|||S|dk r,|gt|}nt|}|jD]4\}}|D]&}t|tsdt|dg||||qJq>|||S)Nchecksr)r*listrKitemsrrr )rDrErrZfix_argsrrKcheckrrrchecked_functions    zarg..checked_functioncs@t|dr"|jg|S|}ti|_|SdS)NrK)r*rK setdefaultextendrL)funcrDrrO constraintsrrarg_check_adders  zarg..arg_check_adderrI)rrTrUrrSrrs  rcstjfdd}|S)Ncs2D]"}t|tst|dg||q|||S)Nr)rrr )rDrErrrNrTrrrUs    zargs..arg_check_adderrI)rTrUrrVrrsrN)" __future__rcollections.abcrrrr ImportError collectionsZnumpyrcompatr extrar exceptionsr r r rrrrr(r0r4r6r=r?r@rBrJrrrrrrs.