/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/utils
NameSizeModeActions
auto_gil.h10340644editdlrm
byte_order.h24840644editdlrm
crash_handler.h11460644editdlrm
cuda_enabled.h1540644editdlrm
cuda_lazy_init.h9740644editdlrm
disable_torch_function.h8630644editdlrm
disallow_copy.h1030644editdlrm
init.h3240644editdlrm
invalid_arguments.h3020644editdlrm
memory.h11730644editdlrm
numpy_stub.h3990644editdlrm
object_ptr.h13290644editdlrm
out_types.h2940644editdlrm
pybind.h79660644editdlrm
pycfunction_helpers.h2090644editdlrm
python_arg_parser.h307530644editdlrm
python_compat.h29040644editdlrm
python_dispatch.h1740644editdlrm
python_numbers.h50640644editdlrm
python_scalars.h29280644editdlrm
python_strings.h45920644editdlrm
python_stub.h560644editdlrm
python_tuples.h6840644editdlrm
six.h14250644editdlrm
structseq.h1530644editdlrm
tensor_apply.h4310644editdlrm
tensor_dtypes.h2440644editdlrm
tensor_flatten.h27800644editdlrm
tensor_layouts.h1070644editdlrm
tensor_list.h1960644editdlrm
tensor_memoryformats.h1130644editdlrm
tensor_new.h18070644editdlrm
tensor_numpy.h5420644editdlrm
tensor_qschemes.h1860644editdlrm
tensor_types.h4910644editdlrm
throughput_benchmark-inl.h52100644editdlrm
throughput_benchmark.h68680644editdlrm
variadic.h43940644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/utils/six.h (1425B)
#pragma once #include #include #include namespace six { // Usually instances of PyStructSequence is also an instance of tuple // but in some py2 environment it is not, so we have to manually check // the name of the type to determine if it is a namedtupled returned // by a pytorch operator. inline bool isStructSeq(pybind11::handle input) { return pybind11::cast(input.get_type().attr("__module__")) == "torch.return_types"; } inline bool isStructSeq(PyObject* obj) { return isStructSeq(pybind11::handle(obj)); } inline bool isTuple(pybind11::handle input) { if (PyTuple_Check(input.ptr())) { return true; } return false; } inline bool isTuple(PyObject* obj) { return isTuple(pybind11::handle(obj)); } // maybeAsTuple: if the input is a structseq, then convert it to a tuple // // On Python 3, structseq is a subtype of tuple, so these APIs could be used directly. // But on Python 2, structseq is not a subtype of tuple, so we need to manually create a // new tuple object from structseq. inline THPObjectPtr maybeAsTuple(PyStructSequence *obj) { Py_INCREF(obj); return THPObjectPtr((PyObject *)obj); } inline THPObjectPtr maybeAsTuple(PyObject *obj) { if (isStructSeq(obj)) return maybeAsTuple((PyStructSequence *)obj); Py_INCREF(obj); return THPObjectPtr(obj); } } // namespace six