[Python-checkins] python/dist/src/Lib calendar.py,1.34,1.35
tim_one at users.sourceforge.net
tim_one at users.sourceforge.net
Sat Nov 13 17:18:34 CET 2004
Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1137/Lib
Modified Files:
calendar.py
Log Message:
SF bug 1065388: calendar day/month name lookup too slow
__getitem__() methods: compute only the new spellings needed to satisfy
the given indexing object. This is purely an optimization (it should
have no effect on visible semantics).
Index: calendar.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/calendar.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- calendar.py 7 Jun 2004 03:47:06 -0000 1.34
+++ calendar.py 13 Nov 2004 16:18:31 -0000 1.35
@@ -28,27 +28,37 @@
# fresh on each call, in case the user changes locale between calls.
class _localized_month:
+
+ _months = [datetime.date(2001, i+1, 1).strftime for i in range(12)]
+ _months.insert(0, lambda x: "")
+
def __init__(self, format):
self.format = format
def __getitem__(self, i):
- data = [datetime.date(2001, j, 1).strftime(self.format)
- for j in range(1, 13)]
- data.insert(0, "")
- return data[i]
+ funcs = self._months[i]
+ if isinstance(i, slice):
+ return [f(self.format) for f in funcs]
+ else:
+ return funcs(self.format)
def __len__(self):
return 13
class _localized_day:
+
+ # January 1, 2001, was a Monday.
+ _days = [datetime.date(2001, 1, i+1).strftime for i in range(7)]
+
def __init__(self, format):
self.format = format
def __getitem__(self, i):
- # January 1, 2001, was a Monday.
- data = [datetime.date(2001, 1, j+1).strftime(self.format)
- for j in range(7)]
- return data[i]
+ funcs = self._days[i]
+ if isinstance(i, slice):
+ return [f(self.format) for f in funcs]
+ else:
+ return funcs(self.format)
def __len__(self):
return 7
More information about the Python-checkins
mailing list