@@ -329,7 +329,7 @@ static Py_ssize_t get_attr_length(PyObject *obj, char *attr) {
329
329
return ret ;
330
330
}
331
331
332
- npy_int64 get_long_attr (PyObject * o , const char * attr ) {
332
+ static npy_int64 get_long_attr (PyObject * o , const char * attr ) {
333
333
npy_int64 long_val ;
334
334
PyObject * value = PyObject_GetAttrString (o , attr );
335
335
long_val = (PyLong_Check (value ) ?
@@ -338,15 +338,12 @@ npy_int64 get_long_attr(PyObject *o, const char *attr) {
338
338
return long_val ;
339
339
}
340
340
341
- npy_float64 total_seconds (PyObject * td ) {
342
- // Python 2.6 compat
343
- // TODO(anyone): remove this legacy workaround with a more
344
- // direct td.total_seconds()
345
- npy_int64 microseconds = get_long_attr (td , "microseconds" );
346
- npy_int64 seconds = get_long_attr (td , "seconds" );
347
- npy_int64 days = get_long_attr (td , "days" );
348
- npy_int64 days_in_seconds = days * 24LL * 3600LL ;
349
- return (microseconds + (seconds + days_in_seconds ) * 1000000.0 ) / 1000000.0 ;
341
+ static npy_float64 total_seconds (PyObject * td ) {
342
+ npy_float64 double_val ;
343
+ PyObject * value = PyObject_CallMethod (td , "total_seconds" , NULL );
344
+ double_val = PyFloat_AS_DOUBLE (value );
345
+ Py_DECREF (value );
346
+ return double_val ;
350
347
}
351
348
352
349
static PyObject * get_item (PyObject * obj , Py_ssize_t i ) {
0 commit comments