]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
This checkin backport two checkins by Skip.
authorMichael W. Hudson <mwh@python.net>
Sat, 16 Mar 2002 18:01:05 +0000 (18:01 +0000)
committerMichael W. Hudson <mwh@python.net>
Sat, 16 Mar 2002 18:01:05 +0000 (18:01 +0000)
backport montanaro's checkin of
    revision 1.24 of calendar.py

make _localized_name instances work more like the tuples they replaced.  In
particular, negative indexes work and they are limited by the actual length
of the names they represent (weekday and month names).  This closes bug
#503202.

[and then]

Corrected _localized_name.__getitem__ based on code in patch 503202 (which I
thought was just a bug report, so didn't notice - doh!).  This handles
slicing, which v 1.23 didn't.

Lib/calendar.py

index 0fc60bea56deadcb17922b8c634b906ca22a0360..9af2c933f1abc4b20a976ac3a5a963d256706636 100644 (file)
@@ -25,18 +25,27 @@ February = 2
 mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 
 class _localized_name:
-    def __init__(self, format):
+    def __init__(self, format, len):
         self.format = format
+        self.len = len
     def __getitem__(self, item):
-        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
 
 # Full and abbreviated names of weekdays
-day_name = _localized_name('%A')
-day_abbr = _localized_name('%a')
+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')
-month_abbr = _localized_name('%b')
+month_name = _localized_name('%B', 13)
+month_abbr = _localized_name('%b', 13)
 
 # Constants for weekdays
 (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)