add APIs to determine a class is a namedtuple or PyStructSequence (#113257)
Summary:
Changes in this PR:
1. Add `is_structseq` and `is_structseq_class` functions to determine a object or a class is PyStructSequence.
2. Add a generic class `structseq` which can be used as the registration key for PyStructSequence types like `namedtuple` for Named Tuple types.
3. Change `is_namedtuple` to accept subclasses of namedtuple to be namedtuple. Before this PR, only namedtuple class directly created by `collections.namedtuple` or `typing.NamedTuple` were namedtuple classes while their subclasses were not. This PR makes `is_namedtuple` return true for subclasses of namedtuple class.
Resolves #75982. New tests are included in this PR.
- #75982
X-link: https://github.com/pytorch/pytorch/pull/113257
Approved by: https://github.com/zou3519
Reviewed By: clee2000
Differential Revision: D72251158
fbshipit-source-id: cd57a40c0507ff7cb21fc42f42d42edf95379eef
Author
generatedunixname499836121