MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / CastPyArg2Floats

Function CastPyArg2Floats

paddle/fluid/pybind/op_function_common.cc:786–852  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

784}
785
786std::vector<float> CastPyArg2Floats(PyObject* obj,
787 const std::string& op_type,
788 ssize_t arg_pos) {
789 std::vector<float> value;
790 if (PyList_Check(obj)) {
791 Py_ssize_t len = PyList_Size(obj);
792 PyObject* item = nullptr;
793 for (Py_ssize_t i = 0; i < len; i++) {
794 item = PyList_GetItem(obj, i);
795 if (PyObject_CheckFloat(item)) {
796 value.emplace_back(PyObject_ToDouble(item));
797 } else {
798 PADDLE_THROW(common::errors::InvalidType(
799 "%s(): argument (position %d) must be "
800 "list of float, but got %s at pos %d",
801 op_type,
802 arg_pos + 1,
803 ((PyTypeObject*)item->ob_type)->tp_name, // NOLINT
804 i));
805 }
806 }
807 } else if (PyTuple_Check(obj)) {
808 Py_ssize_t len = PyTuple_Size(obj);
809 PyObject* item = nullptr;
810 for (Py_ssize_t i = 0; i < len; i++) {
811 item = PyTuple_GetItem(obj, i);
812 if (PyObject_CheckFloat(item)) {
813 value.emplace_back(PyObject_ToDouble(item));
814 } else {
815 PADDLE_THROW(common::errors::InvalidType(
816 "%s(): argument (position %d) must be "
817 "list of float, but got %s at pos %d",
818 op_type,
819 arg_pos + 1,
820 ((PyTypeObject*)item->ob_type)->tp_name, // NOLINT
821 i));
822 }
823 }
824 } else if (PySequence_Check(obj) && !PyObject_TypeCheck(obj, p_tensor_type)) {
825 Py_ssize_t len = PySequence_Size(obj);
826 PyObject* item = nullptr;
827 for (Py_ssize_t i = 0; i < len; i++) {
828 item = PySequence_GetItem(obj, i);
829 if (PyObject_CheckFloat(item)) {
830 value.emplace_back(PyObject_ToDouble(item));
831 } else {
832 PADDLE_THROW(common::errors::InvalidType(
833 "%s(): argument (position %d) must be "
834 "list of float, but got %s at pos %d",
835 op_type,
836 arg_pos + 1,
837 ((PyTypeObject*)item->ob_type)->tp_name, // NOLINT
838 i));
839 }
840 Py_DECREF(item);
841 }
842 } else {
843 PADDLE_THROW(common::errors::InvalidType(

Callers 2

parse_attrsFunction · 0.85
CastPyArg2AttrFloatsFunction · 0.85

Calls 3

PyObject_CheckFloatFunction · 0.85
PyObject_ToDoubleFunction · 0.85
emplace_backMethod · 0.45

Tested by

no test coverage detected