]> granicus.if.org Git - python/commitdiff
Corrected _localized_name.__getitem__ based on code in patch 503202 (which I
authorSkip Montanaro <skip@pobox.com>
Fri, 15 Mar 2002 13:52:43 +0000 (13:52 +0000)
committerSkip Montanaro <skip@pobox.com>
Fri, 15 Mar 2002 13:52:43 +0000 (13:52 +0000)
thought was just a bug report, so didn't notice - doh!).  This handles
slicing, which v 1.23 didn't.

Lib/calendar.py

index 477f59553ed51960a974195486683caad8d7f20b..9af2c933f1abc4b20a976ac3a5a963d256706636 100644 (file)
@@ -29,11 +29,13 @@ class _localized_name:
         self.format = format
         self.len = len
     def __getitem__(self, item):
-        if item > self.len-1 or item < -self.len:
-            raise IndexError
-        if item < 0:
-            item += self.len
-        return strftime(self.format, (item,)*9).capitalize()
+        if isinstance(item, int):
+            if item < 0: item += self.len
+            if not 0 <= item < self.len:
+                raise IndexError, "out of range"
+            return strftime(self.format, (item,)*9).capitalize()
+        elif isinstance(item, type(slice(0))):
+            return [self[e] for e in range(self.len)].__getslice__(item.start, item.stop)
     def __len__(self):
         return self.len
 
@@ -42,8 +44,8 @@ day_name = _localized_name('%A', 7)
 day_abbr = _localized_name('%a', 7)
 
 # Full and abbreviated names of months (1-based arrays!!!)
-month_name = _localized_name('%B', 12)
-month_abbr = _localized_name('%b', 12)
+month_name = _localized_name('%B', 13)
+month_abbr = _localized_name('%b', 13)
 
 # Constants for weekdays
 (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)