[Scipy-svn] r2875 - trunk/Lib/sandbox/timeseries/src
scipy-svn at scipy.org
scipy-svn at scipy.org
Tue Mar 27 14:10:06 EDT 2007
Author: mattknox_ca
Date: 2007-03-27 13:10:02 -0500 (Tue, 27 Mar 2007)
New Revision: 2875
Modified:
trunk/Lib/sandbox/timeseries/src/cseries.c
Log:
fixed some error handling bugs during Date initialization
Modified: trunk/Lib/sandbox/timeseries/src/cseries.c
===================================================================
--- trunk/Lib/sandbox/timeseries/src/cseries.c 2007-03-27 06:38:36 UTC (rev 2874)
+++ trunk/Lib/sandbox/timeseries/src/cseries.c 2007-03-27 18:10:02 UTC (rev 2875)
@@ -242,11 +242,10 @@
#define Py_AssertWithArg(x,errortype,errorstr,a1) {if (!(x)) {PyErr_Format(errortype,errorstr,a1);goto onError;}}
#define Py_Error(errortype,errorstr) {PyErr_SetString(errortype,errorstr);goto onError;}
-static PyObject *DateCalc_Error; /* Error Exception object */
-static PyObject *DateCalc_RangeError; /* Error Exception object */
+ /* Error Exception objects */
+static PyObject *DateCalc_Error;
+static PyObject *DateCalc_RangeError;
-
-
#define GREGORIAN_CALENDAR 0
#define JULIAN_CALENDAR 1
@@ -410,7 +409,7 @@
day);
yearoffset = dInfoCalc_YearOffset(year,calendar);
- if (yearoffset == -1 && PyErr_Occurred()) goto onError;
+ if (PyErr_Occurred()) goto onError;
absdate = day + month_offset[leap][month - 1] + yearoffset;
@@ -487,7 +486,7 @@
while (1) {
/* Calculate the year offset */
yearoffset = dInfoCalc_YearOffset(year,calendar);
- if (yearoffset == -1 && PyErr_Occurred())
+ if (PyErr_Occurred())
goto onError;
/* Backward correction: absdate must be greater than the
@@ -1817,23 +1816,22 @@
self->value = (int)(delta*1440 + hour*60 + minute + 1);
} else if (self->freq == FR_HR) {
long absdays, delta;
- absdays = absdate_from_ymd(year, month, day);
+ if((absdays = absdate_from_ymd(year, month, day)) == INT_ERR_CODE) return -1;
delta = (absdays - HIGHFREQ_ORIG);
self->value = (int)(delta*24 + hour + 1);
} else if (self->freq == FR_DAY) {
- self->value = (int)absdate_from_ymd(year, month, day);
+ if((self->value = (int)absdate_from_ymd(year, month, day)) == INT_ERR_CODE) return -1;
} else if (self->freq == FR_UND) {
- self->value = (int)absdate_from_ymd(year, month, day);
+ if((self->value = (int)absdate_from_ymd(year, month, day)) == INT_ERR_CODE) return -1;
} else if (self->freq == FR_BUS) {
long weeks, days;
- days = absdate_from_ymd(year, month, day);
+ if((days = absdate_from_ymd(year, month, day)) == INT_ERR_CODE) return -1;
weeks = days/7;
self->value = (int)(days - weeks*2);
} else if (freq_group == FR_WK) {
- int adj_ordinal;
- int ordinal = (int)absdate_from_ymd(year, month, day);
- int day_adj = (7 - (self->freq - FR_WK)) % 7;
-
+ int adj_ordinal, ordinal, day_adj;
+ if((ordinal = (int)absdate_from_ymd(year, month, day)) == INT_ERR_CODE) return -1;
+ day_adj = (7 - (self->freq - FR_WK)) % 7;
adj_ordinal = ordinal + ((7 - day_adj) - ordinal % 7) % 7;
self->value = adj_ordinal/7;
} else if (self->freq == FR_MTH) {
@@ -3049,6 +3047,11 @@
if (PyType_Ready(&DateType) < 0) return;
+ DateCalc_Error =
+ PyErr_NewException("cseries.DateCalc_Error", NULL, NULL);
+ DateCalc_RangeError =
+ PyErr_NewException("cseries.DateCalc_RangeError", NULL, NULL);
+
m = Py_InitModule3("cseries", cseries_methods, cseries_doc);
if (m == NULL)
return;
@@ -3069,4 +3072,8 @@
PyModule_AddObject(m, "freq_dict", freq_dict);
PyModule_AddObject(m, "freq_dict_rev", freq_dict_rev);
PyModule_AddObject(m, "freq_constants", freq_constants);
+
+ PyModule_AddObject(m, "DateCalc_Error", DateCalc_Error);
+ PyModule_AddObject(m, "DateCalc_RangeError", DateCalc_RangeError);
+
}
\ No newline at end of file
More information about the Scipy-svn
mailing list