a :jg @sUdZddlmZddlmZmZmZmZmZm Z ddl Z ddl Z ddl mZddlmZGdddeZeejejje jZeejejjeeejejjeeejddedZe jjd eed d dd d ddZe jjd eed d dd d ddZ e jjd eed d dd d ddZ!e jjd eed d dd d ddZ"d dddZ#ej$e %dfej&e 'dfej(e 'dfej)dgfdZ*de+d<e jjde*,e*d Gdd d Z-dS)!z)Test the runtime usage of `numpy.typing`.) annotations)get_type_hintsUnion NamedTupleget_args get_originAnyNc@s&eZdZUded<ded<ded<dS)TypeTuptypetypztuple[type, ...]argsz None | typeoriginN)__name__ __module__ __qualname____annotations__rrI/usr/local/lib/python3.9/site-packages/numpy/typing/tests/test_runtime.pyr s r r) ArrayLike DTypeLikeNBitBaseNDArrayzname,tup)Zidsr None)nametupreturncCs&|j|j}}t|}||ks"JdS)zTest `typing.get_args`.N)r r rrrr refoutrrr test_get_args$srcCs&|j|j}}t|}||ks"JdS)zTest `typing.get_origin`.N)r r rrrrrtest_get_origin,sr cCs@|j}dd}|dd|_t|}|tdd}||ks.funcNr#rr rrr )rrr r$rrrrrtest_get_type_hints4s  r(cCsLd||j}}dd}|dd|_t|}|tdd}||ksHJdS)zATest `typing.get_type_hints` with string-representation of types.znpt.cSsdSr!rr"rrrr$Jr%z%test_get_type_hints_str..funcNr&r')rrZtyp_strr r$rrrrrtest_get_type_hints_strCs  r))rcCs"t}ttj}||ksJdS)zCTest that ``TYPES.keys()`` and ``numpy.typing.__all__`` are synced.N)TYPESkeyssetnpt__all__)r+rrrr test_keysRs r/ )_SupportsDType_SupportsArray_SupportsArrayFunc_NestedSequencez#dict[str, tuple[type[Any], object]] PROTOCOLSzcls,objc@s0eZdZddddddZddddddZd S) TestRuntimeProtocolz type[Any]objectr)clsobjrcCs t||sJtd|rJdSr!) isinstanceselfr9r:rrrtest_isinstancecsz#TestRuntimeProtocol.test_isinstancecCs<|tjurtdtt||s&Jttd|r8JdS)NzrBrrrrr7asr7).__doc__ __future__rtypingrrrrrrr@numpynpZ numpy.typingr-Z numpy._typingZ_typingr?r r__args__ZndarrayZ NDArrayTuprrrr*markZ parametrizeitemsr+rr r(r)r/r2Zint64r3Zaranger4r5r6rvaluesr7rrrrs: