A dateutil error has appeared, due to updates? How to fix?

T

tinnews

I have a python script which uses the dateutil module with the
following:-

import sys
import datetime
import icalendar
from dateutil.relativedelta import relativedelta

The section of code which uses relativedelta is as follows:-

#
#
# If the event is a repeating event with a start date in the
# past then we add the repeat interval until we find the next
# occurrence
#
if eventDate < datetime.date.today():
if event.has_key('RRULE'):
freq = event.decoded('RRULE')['FREQ'][0]
if event.decoded('RRULE').has_key('INTERVAL'):
interval = event.decoded('RRULE')['INTERVAL'][0]
else:
interval = 1;
if 'WEEKLY' == freq:
delta = relativedelta(weeks=+interval)
if 'MONTHLY' == freq:
delta = relativedelta(months=+interval)
if 'YEARLY' == freq:
delta = relativedelta(years=+interval)
while eventDate < datetime.date.today():
eventDate += delta
else:
continue # if it's a non-repeating event in the past


It used to work and all I have done meanwhile is to update my xubuntu
system as fixes are released. I'm now getting the error:-

Traceback (most recent call last):
File "/home/chris/bin/calics.py", line 62, in <module>
eventDate += delta
File "/usr/lib/python2.7/dist-packages/dateutil/relativedelta.py", line 261, in __radd__
day = min(calendar.monthrange(year, month)[1],
AttributeError: 'module' object has no attribute 'monthrange'

Have I lost a module somewhere in the updates or has something in
python changed such that my code no longer works as it used to?

Can anyone help diagnose this please.
 
P

Peter Otten

I have a python script which uses the dateutil module with the
following:-

import sys
import datetime
import icalendar
from dateutil.relativedelta import relativedelta

The section of code which uses relativedelta is as follows:-

#
#
# If the event is a repeating event with a start date in the
# past then we add the repeat interval until we find the next
# occurrence
#
if eventDate < datetime.date.today():
if event.has_key('RRULE'):
freq = event.decoded('RRULE')['FREQ'][0]
if event.decoded('RRULE').has_key('INTERVAL'):
interval = event.decoded('RRULE')['INTERVAL'][0]
else:
interval = 1;
if 'WEEKLY' == freq:
delta = relativedelta(weeks=+interval)
if 'MONTHLY' == freq:
delta = relativedelta(months=+interval)
if 'YEARLY' == freq:
delta = relativedelta(years=+interval)
while eventDate < datetime.date.today():
eventDate += delta
else:
continue # if it's a non-repeating event in the
past


It used to work and all I have done meanwhile is to update my xubuntu
system as fixes are released. I'm now getting the error:-

Traceback (most recent call last):
File "/home/chris/bin/calics.py", line 62, in <module>
eventDate += delta
File "/usr/lib/python2.7/dist-packages/dateutil/relativedelta.py",
line 261, in __radd__
day = min(calendar.monthrange(year, month)[1],
AttributeError: 'module' object has no attribute 'monthrange'

Have I lost a module somewhere in the updates or has something in
python changed such that my code no longer works as it used to?

Can anyone help diagnose this please.

You probably have a file named calendar.py in your working directory:

$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
/usr/lib/python2.7/calendar.pyc
$ touch calendar.py
$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
calendar.py

Rename calendar.py in your working directory (and don't forget to delete the
corresponding calendar.pyc) -- and dateutil should work again.
 
T

tinnews

Peter Otten said:
(e-mail address removed) wrote:
[snip description of problem]
You probably have a file named calendar.py in your working directory:

$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
/usr/lib/python2.7/calendar.pyc
$ touch calendar.py
$ python -c 'from dateutil.relativedelta import calendar; print
calendar.__file__'
calendar.py

Rename calendar.py in your working directory (and don't forget to delete the
corresponding calendar.pyc) -- and dateutil should work again.
Brilliant, you're absolutely right! Thank you! :)

I'd written calendar.py doing something else entirely. I must
remember not to use such 'obvious' names for things!
 

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top