o 6at @sdZddlmZddlZddlmZmZmZmZddl Z ddl Z ddl mZ z ddlmZmZdZWn ey=dZYnwGdd d eZejd krVee je jje jZnee jd dZee je jjeee je jjeee jd ded Ze jjd ee de jj!eddd ddZ"e jjd ee de jj!eddd ddZ#e jjd ee dd ddZ$e jjd ee dd ddZ%d!ddZ&dS)"z)Test the runtime usage of `numpy.typing`.) annotationsN)get_type_hintsUnionTuple NamedTuple)get_args get_originFTc@s&eZdZUded<ded<ded<dS)TypeTuptypetypzTuple[type, ...]argsz None | typeoriginN)__name__ __module__ __qualname____annotations__rrA/usr/lib/python3/dist-packages/numpy/typing/tests/test_runtime.pyr s  r ) r) ArrayLike DTypeLikeNBitBaseNDArrayzname,tup)idszrequires typing-extensions)reasonnamer tupreturnNonecC&|j|j}}t|}||ksJdS)zTest `typing.get_args`.N)r r rrrr refoutrrr test_get_args&r$cCr )zTest `typing.get_origin`.N)r r rr!rrrtest_get_origin/r%r&cCs@|j}dd}|dd|_t|}|tdd}||ksJdS)zTest `typing.get_type_hints`.cSdSNrarrrfunc?z!test_get_type_hints..funcNr*rr rrr )rrr r+r#r"rrrtest_get_type_hints8s  r/cCsLd||j}}dd}|dd|_t|}|tdd}||ks$JdS)zATest `typing.get_type_hints` with string-representation of types.znpt.cSr'r(rr)rrrr+Nr,z%test_get_type_hints_str..funcNr-r.)rrtyp_strr r+r#r"rrrtest_get_type_hints_strGs  r1cCs"t}ttj}||ksJdS)zCTest that ``TYPES.keys()`` and ``numpy.typing.__all__`` are synced.N)TYPESkeyssetnpt__all__)r3r"rrr test_keysVs r7)rr rr rr)rr)'__doc__ __future__rsystypingrrrrpytestnumpynp numpy.typingr5typing_extensionsrrSKIP ImportErrorr version_infor__args__ndarray NDArrayTuprrrr2mark parametrizeitemsr3skipifr$r&r/r1r7rrrrsB