typing.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. class FunMeta(type):
  2. def __getitem__(cls, item):
  3. return Fun(tuple(item[0]) + (item[1],))
  4. class DictMeta(type):
  5. def __getitem__(cls, item):
  6. return Dict(item)
  7. class UnionMeta(type):
  8. def __getitem__(cls, item):
  9. return Union(item)
  10. class SetMeta(type):
  11. def __getitem__(cls, item):
  12. return Set(item)
  13. class ListMeta(type):
  14. def __getitem__(cls, item):
  15. return List(item)
  16. class IterableMeta(type):
  17. def __getitem__(cls, item):
  18. return Iterable(item)
  19. class GeneratorMeta(type):
  20. def __getitem__(cls, item):
  21. return Generator(item)
  22. class TupleMeta(type):
  23. def __getitem__(cls, item):
  24. return Tuple(item)
  25. class OptionalMeta(type):
  26. def __getitem__(cls, item):
  27. return Optional(item)
  28. class NDArrayMeta(type):
  29. def __getitem__(cls, item):
  30. return NDArray(item)
  31. class PointerMeta(type):
  32. def __getitem__(cls, item):
  33. return Pointer(item)
  34. class Type(type):
  35. def __new__(cls, args):
  36. return type.__new__(
  37. cls,
  38. cls.__name__,
  39. (object,),
  40. {'__args__': args if isinstance(args, tuple) else (args,)}
  41. )
  42. def __init__(self, *args, **kwargs):
  43. pass
  44. class Fun(Type, metaclass=FunMeta):
  45. pass
  46. class Dict(Type, metaclass=DictMeta):
  47. pass
  48. class Union(Type, metaclass=UnionMeta):
  49. pass
  50. class Set(Type, metaclass=SetMeta):
  51. pass
  52. class List(Type, metaclass=ListMeta):
  53. pass
  54. class Iterable(Type, metaclass=IterableMeta):
  55. pass
  56. class Generator(Type, metaclass=GeneratorMeta):
  57. pass
  58. class Tuple(Type, metaclass=TupleMeta):
  59. pass
  60. class Optional(Type, metaclass=OptionalMeta):
  61. pass
  62. class NDArray(Type, metaclass=NDArrayMeta):
  63. pass
  64. class Pointer(Type, metaclass=PointerMeta):
  65. pass
  66. class TypeVar(object):
  67. def __init__(self, name):
  68. self.__name__ = name
  69. class Sized(object):
  70. pass
  71. class Any(object):
  72. pass
  73. class File(object):
  74. pass