#pragma once #include #include #include namespace torch { namespace autograd { struct PyAnomalyMetadata : public AnomalyMetadata { static constexpr char* ANOMALY_TRACE_KEY = "traceback_"; PyAnomalyMetadata() { AutoGIL gil; dict_ = PyDict_New(); } ~PyAnomalyMetadata() override { AutoGIL gil; Py_DECREF(dict_); } void store_stack() override; void print_stack() override; PyObject* dict() { return dict_; } private: PyObject* dict_; }; }}