
    /hh                     T   S SK r S SKrS SKJr  S SKJrJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrSrSrSrSr\" SS	S
S9rSr/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/// SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ S Q/ S!Q/ S"Q// S#Q/ S$Q/ S%Q/ S&Q/ S'Q/// SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ S(Q// S)Q/ S*Q/ S+Q/ S,Q/ S-Q/// S.Q/ S/Q/ S0Q/ S1Q/ S2Q// SQ/ SQ/ SQ/ SQ/ S3Q// S)Q/ S*Q/ S+Q/ S,Q/ S4Q///r/ S5Q/ S6Q/ S7Q// S8Q/ S9Q/ S:Q// S;Q/ S<Q/ S=Q// S>Q/ S?Q/ S@Q//r " SA SB\R.                  5      r " SC SD\R.                  5      r " SE SF\R.                  5      r " SG SH\5      r " SI SJ\5      r " SK SL\R.                  5      r " SM SN\R.                  5      r " SO SP\R.                  5      rSQ r  " SR SS\R.                  5      r! " ST SU\R.                  5      r" " SV SW\R.                  5      r#\$SX:X  a  \RJ                  " 5         gg)Y    N)support)assert_python_okassert_python_failurez     February 0
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29
a                                     0

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6             1  2  3  4  5
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       6  7  8  9 10 11 12
10 11 12 13 14 15 16      14 15 16 17 18 19 20      13 14 15 16 17 18 19
17 18 19 20 21 22 23      21 22 23 24 25 26 27      20 21 22 23 24 25 26
24 25 26 27 28 29 30      28 29                     27 28 29 30 31
31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                1  2          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   1             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31
z    January 2004
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
a!                                    2004

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1       1  2  3  4  5  6  7
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       8  9 10 11 12 13 14
12 13 14 15 16 17 18       9 10 11 12 13 14 15      15 16 17 18 19 20 21
19 20 21 22 23 24 25      16 17 18 19 20 21 22      22 23 24 25 26 27 28
26 27 28 29 30 31         23 24 25 26 27 28 29      29 30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                      1  2          1  2  3  4  5  6
 5  6  7  8  9 10 11       3  4  5  6  7  8  9       7  8  9 10 11 12 13
12 13 14 15 16 17 18      10 11 12 13 14 15 16      14 15 16 17 18 19 20
19 20 21 22 23 24 25      17 18 19 20 21 22 23      21 22 23 24 25 26 27
26 27 28 29 30            24 25 26 27 28 29 30      28 29 30
                          31

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1             1  2  3  4  5
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       6  7  8  9 10 11 12
12 13 14 15 16 17 18       9 10 11 12 13 14 15      13 14 15 16 17 18 19
19 20 21 22 23 24 25      16 17 18 19 20 21 22      20 21 22 23 24 25 26
26 27 28 29 30 31         23 24 25 26 27 28 29      27 28 29 30
                          30 31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7             1  2  3  4  5
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       6  7  8  9 10 11 12
11 12 13 14 15 16 17      15 16 17 18 19 20 21      13 14 15 16 17 18 19
18 19 20 21 22 23 24      22 23 24 25 26 27 28      20 21 22 23 24 25 26
25 26 27 28 29 30 31      29 30                     27 28 29 30 31
yearmonthascii)r   r   encodingax;  <?xml version="1.0" encoding="{encoding}"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={encoding}" />
<link rel="stylesheet" type="text/css" href="calendar.css" />
<title>Calendar for 2004</title>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" class="{year}">
<tr><th colspan="3" class="{year}">2004</th></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">January</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="sat">31</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">February</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sun">1</td></tr>
<tr><td class="mon">2</td><td class="tue">3</td><td class="wed">4</td><td class="thu">5</td><td class="fri">6</td><td class="sat">7</td><td class="sun">8</td></tr>
<tr><td class="mon">9</td><td class="tue">10</td><td class="wed">11</td><td class="thu">12</td><td class="fri">13</td><td class="sat">14</td><td class="sun">15</td></tr>
<tr><td class="mon">16</td><td class="tue">17</td><td class="wed">18</td><td class="thu">19</td><td class="fri">20</td><td class="sat">21</td><td class="sun">22</td></tr>
<tr><td class="mon">23</td><td class="tue">24</td><td class="wed">25</td><td class="thu">26</td><td class="fri">27</td><td class="sat">28</td><td class="sun">29</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">March</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="mon">1</td><td class="tue">2</td><td class="wed">3</td><td class="thu">4</td><td class="fri">5</td><td class="sat">6</td><td class="sun">7</td></tr>
<tr><td class="mon">8</td><td class="tue">9</td><td class="wed">10</td><td class="thu">11</td><td class="fri">12</td><td class="sat">13</td><td class="sun">14</td></tr>
<tr><td class="mon">15</td><td class="tue">16</td><td class="wed">17</td><td class="thu">18</td><td class="fri">19</td><td class="sat">20</td><td class="sun">21</td></tr>
<tr><td class="mon">22</td><td class="tue">23</td><td class="wed">24</td><td class="thu">25</td><td class="fri">26</td><td class="sat">27</td><td class="sun">28</td></tr>
<tr><td class="mon">29</td><td class="tue">30</td><td class="wed">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">April</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">May</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sat">1</td><td class="sun">2</td></tr>
<tr><td class="mon">3</td><td class="tue">4</td><td class="wed">5</td><td class="thu">6</td><td class="fri">7</td><td class="sat">8</td><td class="sun">9</td></tr>
<tr><td class="mon">10</td><td class="tue">11</td><td class="wed">12</td><td class="thu">13</td><td class="fri">14</td><td class="sat">15</td><td class="sun">16</td></tr>
<tr><td class="mon">17</td><td class="tue">18</td><td class="wed">19</td><td class="thu">20</td><td class="fri">21</td><td class="sat">22</td><td class="sun">23</td></tr>
<tr><td class="mon">24</td><td class="tue">25</td><td class="wed">26</td><td class="thu">27</td><td class="fri">28</td><td class="sat">29</td><td class="sun">30</td></tr>
<tr><td class="mon">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">June</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="tue">1</td><td class="wed">2</td><td class="thu">3</td><td class="fri">4</td><td class="sat">5</td><td class="sun">6</td></tr>
<tr><td class="mon">7</td><td class="tue">8</td><td class="wed">9</td><td class="thu">10</td><td class="fri">11</td><td class="sat">12</td><td class="sun">13</td></tr>
<tr><td class="mon">14</td><td class="tue">15</td><td class="wed">16</td><td class="thu">17</td><td class="fri">18</td><td class="sat">19</td><td class="sun">20</td></tr>
<tr><td class="mon">21</td><td class="tue">22</td><td class="wed">23</td><td class="thu">24</td><td class="fri">25</td><td class="sat">26</td><td class="sun">27</td></tr>
<tr><td class="mon">28</td><td class="tue">29</td><td class="wed">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">July</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="sat">31</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">August</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sun">1</td></tr>
<tr><td class="mon">2</td><td class="tue">3</td><td class="wed">4</td><td class="thu">5</td><td class="fri">6</td><td class="sat">7</td><td class="sun">8</td></tr>
<tr><td class="mon">9</td><td class="tue">10</td><td class="wed">11</td><td class="thu">12</td><td class="fri">13</td><td class="sat">14</td><td class="sun">15</td></tr>
<tr><td class="mon">16</td><td class="tue">17</td><td class="wed">18</td><td class="thu">19</td><td class="fri">20</td><td class="sat">21</td><td class="sun">22</td></tr>
<tr><td class="mon">23</td><td class="tue">24</td><td class="wed">25</td><td class="thu">26</td><td class="fri">27</td><td class="sat">28</td><td class="sun">29</td></tr>
<tr><td class="mon">30</td><td class="tue">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">September</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr>
<tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr>
<tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr>
<tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr>
<tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">October</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="fri">1</td><td class="sat">2</td><td class="sun">3</td></tr>
<tr><td class="mon">4</td><td class="tue">5</td><td class="wed">6</td><td class="thu">7</td><td class="fri">8</td><td class="sat">9</td><td class="sun">10</td></tr>
<tr><td class="mon">11</td><td class="tue">12</td><td class="wed">13</td><td class="thu">14</td><td class="fri">15</td><td class="sat">16</td><td class="sun">17</td></tr>
<tr><td class="mon">18</td><td class="tue">19</td><td class="wed">20</td><td class="thu">21</td><td class="fri">22</td><td class="sat">23</td><td class="sun">24</td></tr>
<tr><td class="mon">25</td><td class="tue">26</td><td class="wed">27</td><td class="thu">28</td><td class="fri">29</td><td class="sat">30</td><td class="sun">31</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">November</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="mon">1</td><td class="tue">2</td><td class="wed">3</td><td class="thu">4</td><td class="fri">5</td><td class="sat">6</td><td class="sun">7</td></tr>
<tr><td class="mon">8</td><td class="tue">9</td><td class="wed">10</td><td class="thu">11</td><td class="fri">12</td><td class="sat">13</td><td class="sun">14</td></tr>
<tr><td class="mon">15</td><td class="tue">16</td><td class="wed">17</td><td class="thu">18</td><td class="fri">19</td><td class="sat">20</td><td class="sun">21</td></tr>
<tr><td class="mon">22</td><td class="tue">23</td><td class="wed">24</td><td class="thu">25</td><td class="fri">26</td><td class="sat">27</td><td class="sun">28</td></tr>
<tr><td class="mon">29</td><td class="tue">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td><td><table border="0" cellpadding="0" cellspacing="0" class="{month}">
<tr><th colspan="7" class="{month}">December</th></tr>
<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr>
<tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr>
<tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr>
<tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr>
<tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="fri">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
</table>
</td></tr></table></body>
</html>
)r   r   r               )            	   
      )                     )                     )                  r   )r   r   r   r   r   r   r
   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r    r!   r"   r#   r$   r%   r&   )r
   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r    r!   r"   r#   r$   r%   )r&   r'   r(   r   r   r   r   )r#   r$   r%   r&   r'   r   r   )r   r   r   r   r   r
   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r    )r!   r"   r#   r$   r%   r&   r'   )r(   r   r   r   r   r   r   )r   r
   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r    r!   r"   r#   r$   )r%   r&   r'   r   r   r   r   )r'   r(   r   r   r   r   r   )r   r   r
   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r    r!   r"   r#   )r$   r%   r&   r'   r   r   r   )r   r   r   r   r
   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r    r!   )r"   r#   r$   r%   r&   r'   r(   )r&   r'   r   r   r   r   r   )r$   r%   r&   r'   r(   r   r   )z>12/29/03 12/30/03 12/31/03 01/01/04 01/02/04 01/03/04 01/04/04z>01/05/04 01/06/04 01/07/04 01/08/04 01/09/04 01/10/04 01/11/04z>01/12/04 01/13/04 01/14/04 01/15/04 01/16/04 01/17/04 01/18/04z>01/19/04 01/20/04 01/21/04 01/22/04 01/23/04 01/24/04 01/25/04>01/26/04 01/27/04 01/28/04 01/29/04 01/30/04 01/31/04 02/01/04)r)   z>02/02/04 02/03/04 02/04/04 02/05/04 02/06/04 02/07/04 02/08/04z>02/09/04 02/10/04 02/11/04 02/12/04 02/13/04 02/14/04 02/15/04z>02/16/04 02/17/04 02/18/04 02/19/04 02/20/04 02/21/04 02/22/04z>02/23/04 02/24/04 02/25/04 02/26/04 02/27/04 02/28/04 02/29/04)z>03/01/04 03/02/04 03/03/04 03/04/04 03/05/04 03/06/04 03/07/04z>03/08/04 03/09/04 03/10/04 03/11/04 03/12/04 03/13/04 03/14/04z>03/15/04 03/16/04 03/17/04 03/18/04 03/19/04 03/20/04 03/21/04z>03/22/04 03/23/04 03/24/04 03/25/04 03/26/04 03/27/04 03/28/04>03/29/04 03/30/04 03/31/04 04/01/04 04/02/04 04/03/04 04/04/04)r*   z>04/05/04 04/06/04 04/07/04 04/08/04 04/09/04 04/10/04 04/11/04z>04/12/04 04/13/04 04/14/04 04/15/04 04/16/04 04/17/04 04/18/04z>04/19/04 04/20/04 04/21/04 04/22/04 04/23/04 04/24/04 04/25/04>04/26/04 04/27/04 04/28/04 04/29/04 04/30/04 05/01/04 05/02/04)r+   z>05/03/04 05/04/04 05/05/04 05/06/04 05/07/04 05/08/04 05/09/04z>05/10/04 05/11/04 05/12/04 05/13/04 05/14/04 05/15/04 05/16/04z>05/17/04 05/18/04 05/19/04 05/20/04 05/21/04 05/22/04 05/23/04z>05/24/04 05/25/04 05/26/04 05/27/04 05/28/04 05/29/04 05/30/04>05/31/04 06/01/04 06/02/04 06/03/04 06/04/04 06/05/04 06/06/04)r,   z>06/07/04 06/08/04 06/09/04 06/10/04 06/11/04 06/12/04 06/13/04z>06/14/04 06/15/04 06/16/04 06/17/04 06/18/04 06/19/04 06/20/04z>06/21/04 06/22/04 06/23/04 06/24/04 06/25/04 06/26/04 06/27/04>06/28/04 06/29/04 06/30/04 07/01/04 07/02/04 07/03/04 07/04/04)r-   z>07/05/04 07/06/04 07/07/04 07/08/04 07/09/04 07/10/04 07/11/04z>07/12/04 07/13/04 07/14/04 07/15/04 07/16/04 07/17/04 07/18/04z>07/19/04 07/20/04 07/21/04 07/22/04 07/23/04 07/24/04 07/25/04>07/26/04 07/27/04 07/28/04 07/29/04 07/30/04 07/31/04 08/01/04)r.   z>08/02/04 08/03/04 08/04/04 08/05/04 08/06/04 08/07/04 08/08/04z>08/09/04 08/10/04 08/11/04 08/12/04 08/13/04 08/14/04 08/15/04z>08/16/04 08/17/04 08/18/04 08/19/04 08/20/04 08/21/04 08/22/04z>08/23/04 08/24/04 08/25/04 08/26/04 08/27/04 08/28/04 08/29/04>08/30/04 08/31/04 09/01/04 09/02/04 09/03/04 09/04/04 09/05/04)r/   z>09/06/04 09/07/04 09/08/04 09/09/04 09/10/04 09/11/04 09/12/04z>09/13/04 09/14/04 09/15/04 09/16/04 09/17/04 09/18/04 09/19/04z>09/20/04 09/21/04 09/22/04 09/23/04 09/24/04 09/25/04 09/26/04>09/27/04 09/28/04 09/29/04 09/30/04 10/01/04 10/02/04 10/03/04)r0   z>10/04/04 10/05/04 10/06/04 10/07/04 10/08/04 10/09/04 10/10/04z>10/11/04 10/12/04 10/13/04 10/14/04 10/15/04 10/16/04 10/17/04z>10/18/04 10/19/04 10/20/04 10/21/04 10/22/04 10/23/04 10/24/04z>10/25/04 10/26/04 10/27/04 10/28/04 10/29/04 10/30/04 10/31/04)z>11/01/04 11/02/04 11/03/04 11/04/04 11/05/04 11/06/04 11/07/04z>11/08/04 11/09/04 11/10/04 11/11/04 11/12/04 11/13/04 11/14/04z>11/15/04 11/16/04 11/17/04 11/18/04 11/19/04 11/20/04 11/21/04z>11/22/04 11/23/04 11/24/04 11/25/04 11/26/04 11/27/04 11/28/04>11/29/04 11/30/04 12/01/04 12/02/04 12/03/04 12/04/04 12/05/04)r1   z>12/06/04 12/07/04 12/08/04 12/09/04 12/10/04 12/11/04 12/12/04z>12/13/04 12/14/04 12/15/04 12/16/04 12/17/04 12/18/04 12/19/04z>12/20/04 12/21/04 12/22/04 12/23/04 12/24/04 12/25/04 12/26/04z>12/27/04 12/28/04 12/29/04 12/30/04 12/31/04 01/01/05 01/02/05c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)OutputTestCaseir  c                     S n/ nUR                  SS9 H/  nU(       d  M  [        X$5      (       a  M  UR                  U5        M1     U$ )Nc                 d    U R                  5       (       + =(       a    U R                  5       (       + $ N)isspaceisdigit)cs    ;/opt/python-3.13.8/usr/lib/python3.13/test/test_calendar.pyneitherspacenordigit?OutputTestCase.normalize_calendar.<locals>.neitherspacenordigitu  s    yy{?6199;6    F)keepends)
splitlinesfilterappend)selfsr;   lineslines        r:   normalize_calendar!OutputTestCase.normalize_calendars  sF    	7 LL%L0DtF#7>>T" 1 r=   c                     [         R                  " 5       n[        R                  5       nU=(       d    SUS'   UR	                  SUS9nU R                  U[        R                  " S0 UD6R                  U5      5        g )Nutf-8r	     )r	    )	calendarHTMLCalendardefault_formatcopyformatyearpageassertEqualresult_2004_htmlformatencode)rB   reqrescalformat_outputs         r:   check_htmlcalendar_encoding*OutputTestCase.check_htmlcalendar_encoding  sn    ##% %%'!nW
##D3#7##.g.55c:	
r=   c                 $   U R                  U R                  [        R                  " S5      5      U R                  [        5      5        U R                  U R                  [        R                  " S5      5      U R                  [        5      5        g NrJ   r   )rQ   rF   rL   result_2004_textresult_0_textrB   s    r:   test_outputOutputTestCase.test_output  so    ##H$5$5d$;<##$45	
 	##H$5$5a$89##M2	
r=   c                     U R                  [        R                  " 5       R                  S5      [        5        U R                  [        R                  " 5       R                  S5      [
        5        g r]   )rQ   rL   TextCalendar
formatyearr^   r_   r`   s    r:   test_output_textcalendar'OutputTestCase.test_output_textcalendar  sT    !!#..t4	
 	!!#..q1	
r=   c                 (    U R                  SS5        g )Nr   rZ   r`   s    r:   'test_output_htmlcalendar_encoding_ascii6OutputTestCase.test_output_htmlcalendar_encoding_ascii      ((':r=   c                 (    U R                  SS5        g )NrI   ri   r`   s    r:   &test_output_htmlcalendar_encoding_utf85OutputTestCase.test_output_htmlcalendar_encoding_utf8  rl   r=   c                 N    U R                  S [        R                  " 5       5        g r6   )rZ   sysgetdefaultencodingr`   s    r:   )test_output_htmlcalendar_encoding_default8OutputTestCase.test_output_htmlcalendar_encoding_default  s    ((s/E/E/GHr=   c                     S nU R                  U" [        R                  " 5       R                  S5      5      [        5        g )Nc                     U  VVVs/ s H=  o VVs/ s H+  o" Vs/ s H  nSR                  S U 5       5      PM     snPM-     snnPM?     snnn$ s  snf s  snnf s  snnnf )N c              3      #    U  HB  nS R                  UR                  UR                  [        UR                  5      SS 5      v   MD     g7f)z{:02d}/{:02d}/{}N)rS   r   daystrr   ).0ds     r:   	<genexpr>HOutputTestCase.test_yeardatescalendar.<locals>.shrink.<locals>.<genexpr>  sH      NKLa  288 !AFFBC0@ B  BKLs   A
A)join)rW   xyzs       r:   shrink5OutputTestCase.test_yeardatescalendar.<locals>.shrink  s{     >AB=@412AQ(%& hh NKLN N%&(124=@B B ( 4 Bs&   
A	A"AAAAArJ   )rQ   rL   Calendaryeardatescalendarresult_2004_dates)rB   r   s     r:   test_yeardatescalendar%OutputTestCase.test_yeardatescalendar  s7    	B 	8$$&88>?	
r=   c                 t    U R                  [        R                  " 5       R                  S5      [        5        g NrJ   )rQ   rL   r   yeardayscalendarresult_2004_daysr`   s    r:   test_yeardayscalendar$OutputTestCase.test_yeardayscalendar  s*    006	
r=   c                 l    U R                  [        R                  " 5       R                  S5      S5        g )Nr   zMo Tu We Th Fr Sa SurQ   rL   rd   formatweekheaderr`   s    r:   test_formatweekheader_short*OutputTestCase.test_formatweekheader_short  s*    !!#44Q7"	
r=   c                 l    U R                  [        R                  " 5       R                  S5      S5        g )Nr   zE  Monday   Tuesday  Wednesday  Thursday   Friday   Saturday   Sunday r   r`   s    r:   test_formatweekheader_long)OutputTestCase.test_formatweekheader_long  s,    !!#44Q7,	
r=   c                     U R                  [        R                  " 5       R                  SS5      [        5        U R                  [        R                  " 5       R                  SS5      [
        5        g )NrJ   r
   r   r   )rQ   rL   rd   formatmonthresult_2004_01_textresult_0_02_textr`   s    r:   test_formatmonthOutputTestCase.test_formatmonth  sX    !!#//a8	
 	!!#//15	
r=   c                 |   U R                  [        R                  5         [        R                  " 5       R	                  SS5        S S S 5        U R                  [        R                  5         [        R                  " 5       R	                  SS5        S S S 5        g ! , (       d  f       N\= f! , (       d  f       g = fN  r   )assertRaisesrL   IllegalMonthErrorrd   r   r`   s    r:   #test_formatmonth_with_invalid_month2OutputTestCase.test_formatmonth_with_invalid_month  sy    x99:!!#//b9 ;x99:!!#//b9 ;: ;:::s   &B-&B-
B*-
B;c                 l    U R                  [        R                  " 5       R                  SSSS9S5        g )NrJ   r
   Twithyearz8<tr><th colspan="7" class="month">January 2004</th></tr>rQ   rL   rM   formatmonthnamer`   s    r:   test_formatmonthname_with_year-OutputTestCase.test_formatmonthname_with_year  s1    !!#33D!d3KF	
r=   c                 l    U R                  [        R                  " 5       R                  SSSS9S5        g )NrJ   r
   Fr   z3<tr><th colspan="7" class="month">January</th></tr>r   r`   s    r:   !test_formatmonthname_without_year0OutputTestCase.test_formatmonthname_without_year  s1    !!#33D!e3LA	
r=   c                     [         R                  " 5        n/ SQn[        R                  " 5       R	                  US5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)N))r
   r   )r   r
   )r   r   )r   r   )r   r   )r   r   )r   r   r
   z 1  2  3  4  5  6  7)r   captured_stdoutrL   rd   prweekrQ   getvalue)rB   outweeks      r:   test_prweekOutputTestCase.test_prweek  sQ    $$&#DD!!#**43S\\^-CD '&&   A
A))
A7c                     [         R                  " 5        n[        R                  " 5       R	                  SS5        U R                  UR                  5       [        5        S S S 5        g ! , (       d  f       g = f)NrJ   r
   )r   r   rL   rd   prmonthrQ   r   r   rB   r   s     r:   test_prmonthOutputTestCase.test_prmonth  sL    $$&#!!#++D!4S\\^-@A '&&r   c                     [         R                  " 5        n[        R                  " 5       R	                  S5        U R                  UR                  5       [        5        S S S 5        g ! , (       d  f       g = fr   )r   r   rL   rd   pryearrQ   r   r^   r   s     r:   test_pryearOutputTestCase.test_pryear  sJ    $$&#!!#**40S\\^-=> '&&s   A	A((
A6c                     [         R                  " 5        n[        R                  " / SQSSS9  U R	                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)N)123r   r
   )colwidthspacingz	1   2   3)r   r   rL   rS   rQ   r   stripr   s     r:   test_formatOutputTestCase.test_format  sK    $$&#OOOaCS\\^113[A '&&s   AA&&
A4rK   N)__name__
__module____qualname____firstlineno__rF   rZ   ra   rf   rj   rn   rs   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__rK   r=   r:   r3   r3   r  se    



;;I




:

EB
?
Br=   r3   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)CalendarTestCasei  c                     U R                  [        S5         [        R                    S S S 5        g ! , (       d  f       g = f)Nz<The 'January' attribute is deprecated, use 'JANUARY' instead)assertWarnsRegexDeprecationWarningrL   Januaryr`   s    r:   test_deprecation_warning)CalendarTestCase.test_deprecation_warning  s1    ""J
 	
 
 
s   1
?c                 4   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )Ni  r
     r   i  i  )rQ   rL   isleapr`   s    r:   test_isleapCalendarTestCase.test_isleap  sh    
 	.2.2.2.2r=   c                    U R                  [        [        R                  S5        U R                  [        [        R                  S5        U R                  [        [        R                  S5        [        R
                  " 5       n[        R                  " [        R                  5        U R                  [        R
                  " 5       [        R                  5        [        R                  " [        R                  5        U R                  [        R
                  " 5       [        R                  5        [        R                  " U5        g )Nflabberr      )	r   	TypeErrorrL   setfirstweekday
ValueErrorfirstweekdaySUNDAYrQ   MONDAY)rB   origs     r:   test_setfirstweekday%CalendarTestCase.test_setfirstweekday  s    )X%=%=yI*h&>&>C*h&>&>D$$&  1..0(//B  1..0(//B  &r=   c                     U R                  [        R                  S5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)N123{   )assertRaisesRegexrL   IllegalWeekdayErrorr   r`   s    r:   test_illegal_weekday_reported.CalendarTestCase.test_illegal_weekday_reported  s3    ##H$@$@%H$$S) IHHs   A
Ac                 <   U R                  [        [        R                  R                  S5        U R                  [        [        R
                  R                  S5        U R                  [        [        R                   Vs/ s H  oPM     sn5      S5        g s  snf )Nir   r   )r   
IndexErrorrL   day_abbr__getitem__day_namerQ   len)rB   r}   s     r:   test_enumerate_weekdays(CalendarTestCase.test_enumerate_weekdays  sm    *h&7&7&C&CSI*h&7&7&C&CRH):):;):Aa):;<a@;s   Bc           	      D   S H  n[        [        U5      nU R                  [        U5      S5        U R                  [        US S  5      S5        U R                  [        [	        U5      5      S5        U R                  US S S2   [        [        U5      5      5        M     g )N)r   r   r   r   getattrrL   rQ   r   setlistreversedrB   attrvalues      r:   	test_daysCalendarTestCase.test_days  s}    *DHd+ESZ+Sq]A.SU_a0U4R4[$x*?@ +r=   c           	      n   S H  n[        [        U5      nU R                  [        U5      S5        U R                  [        US S  5      S5        U R                  US   S5        U R                  [        [	        U5      5      S5        U R                  US S S2   [        [        U5      5      5        M     g )N)
month_name
month_abbrr   r    r   r   r   s      r:   test_monthsCalendarTestCase.test_months$  s    .DHd+ESZ,Sq]B/U1Xr*SU_b1U4R4[$x*?@ /r=   c                     [         R                  " SS9nUR                  SS5      nUR                  SS5      nUR                  SSS5      nU R                  U[        5        U R                  U[        5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        [         R                  " S S9nUR                  SS5      nUR                  SS5      nUR                  SSS5      nU R                  U[        5        U R                  U[        5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        [         R                  " SS9nUR                  SS5      nUR                  SS5      nUR                  SSS5      nU R                  U[        5        U R                  U[        5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        g ! [        R
                   a    [        R                  " S5      ef = f)	Nr  localer
   r   r     $cannot set the system default localeC)rL   LocaleTextCalendarformatweekdayr   r  ErrorunittestSkipTestassertIsInstancer{   rQ   r   assertGreaterEqual)rB   rW   local_weekdaylocal_weekday_abbrlocal_months        r:   test_locale_text_calendar*CalendarTestCase.test_locale_text_calendar/  sa   	L--R8C--a4M!$!2!21a!8--dB;K 	mS10#6k3/]+R0/0!4K 0"5))6))!R0 ..q!4))$B7mS10#6k3/]+R0/0!4K 0"5))5))!R0 ..q!4))$B7mS10#6k3/]+R0/0!4K 0"5= || 	L##$JKK	Ls   AJ +Kc                     [         R                  " SS9nUR                  S5      nUR                  SS5      nU R                  U[        5        U R                  U[        5        [         R                  " S S9nUR                  S5      nUR                  SS5      nU R                  U[        5        U R                  U[        5        [         R                  " SS9nUR                  S5      nUR                  SS5      nU R                  U[        5        U R                  U[        5        g ! [        R
                   a    [        R                  " S5      ef = f)Nr  r  r
   r  r   r  r  )
rL   LocaleHTMLCalendarr  r   r  r  r  r  r  r{   )rB   rW   r  r  s       r:   test_locale_html_calendar*CalendarTestCase.test_locale_html_calendarU  s)   	L--R8C--a0M--dB7K 	mS1k3/))6))!,))$3mS1k3/))5))!,))$3mS1k3/! || 	L##$JKK	Ls   7D, ,+Ec                    [         R                  " 5       R                  SSS5      n [         R                  " SS9nUR	                  SS5      nUR	                  SS5      nUR                  SSS5      nU R                  U[        5        U R                  U[        5        U R                  U[        5        U R                  [        U5      S5        U R                  [        U5      S5        U R                  [        U5      S5        [         R                  " SS9nUR	                  S5      nUR                  SS5      nU R                  U[        5        U R                  U[        5        [         R                  " 5       R                  SSS5      nU R                  X5        g ! [
        R                   a    [        R                  " S5      ef = f)Nr  r   r  r  r
   r   r  )rL   rd   r   r  r  r  r  r  r  r  r{   rQ   r   r  r  )rB   old_octoberrW   r  r  r  new_octobers          r:   +test_locale_calendars_reset_locale_properly<CalendarTestCase.test_locale_calendars_reset_locale_properlyl  s    ++-==dBK	L--R8C--a4M!$!2!21a!8--dB;K 	mS10#6k3/]+R0/0!4K 0"5))4))!,))$3mS1k3/++-==dBK2# || 	L##$JKK	Ls   AF! !+Gc                 f    [         R                  " SS9nU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S	5        U R                  UR                  SS
5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        g ! [        R
                   a    [        R                  " S5      ef = f)Nen_USr  r   r
   Mr   Mor   Monr   z Mon r   z  Mon   r   z	  Monday r   z
  Monday  cannot set the en_US locale)rL   r  rQ   r  r  r  r  r  rB   rW   s     r:   "test_locale_calendar_formatweekday3CalendarTestCase.test_locale_calendar_formatweekday  s
   	C--W=CS..q!4c:S..q!4d;S..q!4e<S..q!4g>S..q!4jAS..q!4kBS..q"5|D|| 	C##$ABB	Cs   DD +D0c           	      "    [         R                  " SS9nU R                  UR                  SSSSS9S5        U R                  UR                  SSSS	S9S
5        U R                  UR                  SSSSS9S5        U R                  UR                  SSSS	S9S
5        U R                  UR                  SSSSS9S5        U R                  UR                  SSSS	S9S5        g ! [        R
                   a    [        R                  " S5      ef = f)Nr&  r  i  r   r   Fr   JuneTz	June 2022r   r   z
   June   r   z   June 2022   r*  )rL   r  rQ   r   r  r  r  r  r+  s     r:   $test_locale_calendar_formatmonthname5CalendarTestCase.test_locale_calendar_formatmonthname  s   	C--W=CS00q!e0LfUS00q!d0K[YS00q!e0LfUS00q!d0K[YS00q"u0M|\S00q"t0LN_`|| 	C##$ABB	Cs   C C# #+Dc                 ,    [         R                  " SS9nUR                  SSS5      nU R                  SU5        SUl        UR                  SSS5      nU R                  SU5        g ! [        R                   a    [
        R                  " S5      ef = f)	Nr  r  r  r   r  zclass="month"text-center monthclass="text-center month")	rL   r  r   r  r  r  r  assertIncssclass_month_head)rB   rW   r  s      r:   5test_locale_html_calendar_custom_css_class_month_nameFCalendarTestCase.test_locale_html_calendar_custom_css_class_month_name  s    	L--R8C--dB;K 	o{3"5))$B71;? || 	L##$JKK	Ls   'A( (+Bc                 (    [         R                  " SS9nUR                  S5      nU R                  SU5        / SQUl        UR                  S5      nU R                  SU5        g ! [        R                   a    [
        R                  " S5      ef = f)Nr  r  r   r  zclass="sun")mon2tue2wed2thu2fri2sat2sun2zclass="sun2")	rL   r  r  r  r  r  r  r5  cssclasses_weekday_head)rB   rW   r  s      r:   2test_locale_html_calendar_custom_css_class_weekdayCCalendarTestCase.test_locale_html_calendar_custom_css_class_weekday  s    	L--R8C--a0M 	m]3&^#))!,nm4 || 	L##$JKK	Ls   %A& &+Bc                 |    [        [        R                  " 5       R                  [        R
                  S5      5        g )Nr   )r   rL   r   itermonthdays3datetimeMAXYEARr`   s    r:   test_itermonthdays3$CalendarTestCase.test_itermonthdays3  s&    X //0@0@"EFr=   c                     [         R                  " SS9n[        UR                  SS5      5      nU R	                  US   S5        U R	                  US   S5        g )	Nr   r   r   r   r   )r   r   r
   r   r   )r   r   r%   r   )rL   r   r   itermonthdays4rQ   )rB   rW   dayss      r:   test_itermonthdays4$CalendarTestCase.test_itermonthdays4  sR    Q/C&&tQ/0a/2b#34r=   c           	      |   [        S5       HY  n[        R                  " U5      nS H:  u  p4[        UR	                  X45      5      nU R                  [        U5      S5        M<     M[     [        R                  " SS9n[        UR	                  SS5      5      nU R                  U[        [        SS	5      5      5        g )
Nr   )r
   r
   )i'  r   )#   *   r   rK  r   r   r
   r&   )rangerL   r   r   itermonthdaysr5  r   rQ   rB   r   rW   r   mrM  s         r:   test_itermonthdays#CalendarTestCase.test_itermonthdays  s    !!HL##L1C,C--a34c$i2 - % Q/C%%dA./tE!RL12r=   c                 
   [        S5       Ht  n[        R                  " U5      nS HU  u  p4[        UR	                  X45      5      nU R                  US   S   U5        U R                  US   S   US-
  S-  5        MW     Mv     g )Nr   rQ  r   r
   r   )rT  rL   r   r   itermonthdays2rQ   rV  s         r:   test_itermonthdays2$CalendarTestCase.test_itermonthdays2  s{    !!HL##L1C,C..q45  a\:  b!|a/?1.DE - %r=   c                     [        [        S5      5      n[        S5       HM  n[        R                  " U5      n[        UR	                  5       5      nXS  US U -   nU R                  XE5        MO     g )Nr   )r   rT  rL   r   iterweekdaysrQ   )rB   week0r   rW   r   expecteds         r:   test_iterweekdays"CalendarTestCase.test_iterweekdays  sd    U1X!!HL##L1C((*+D]+eM\.BBHT,	 %r=   rK   N)r   r   r   r   r   r   r   r   r   r  r  r  r  r#  r,  r0  r7  rB  rH  rN  rX  r\  rb  r   rK   r=   r:   r   r     sj    3	'*A
A	A$6L0.38C"C
@
5G5
3F-r=   r   c                   &    \ rS rSrS rS rS rSrg)MonthCalendarTestCasei  c                 x    [         R                  " 5       U l        [         R                  " U R                  5        g r6   )rL   r   oldfirstweekdayr   r`   s    r:   setUpMonthCalendarTestCase.setUp  s'    '446  !2!23r=   c                 D    [         R                  " U R                  5        g r6   )rL   r   rg  r`   s    r:   tearDownMonthCalendarTestCase.tearDown  s      !5!56r=   c           	          [         R                  " X5      nU R                  [        U5      [        U5      5        [	        [        U5      5       H)  nU R                  X5   [        S XE    5       5      5        M+     g )Nc              3   *   #    U  H	  oS :g  v   M     g7f)r   NrK   )r|   rz   s     r:   r~   4MonthCalendarTestCase.check_weeks.<locals>.<genexpr>  s     *Fv!8vs   )rL   monthcalendarrQ   r   rT  sum)rB   r   r   weeksrW   is         r:   check_weeks!MonthCalendarTestCase.check_weeks  s\    $$T1S3u:.s5z"AUXs*Fsv*F'FG #r=   )rg  N)r   r   r   r   rh  rk  rt  r   rK   r=   r:   re  re    s    47Hr=   re  c                   >    \ rS rSr\R
                  rS rS rS r	Sr
g)MondayTestCasei  c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSS5        g )N  r   r   r   r   r   i  r   r   r   r   r
     r
   r   r   r   r     r   r   r   r   r
   i  r   r   r   r   r   rJ   r
   r   r   r   r   rt  r`   s    r:   test_februaryMondayTestCase.test_february  x    q,/ 	q/2 	q/2 	q/2 	q/2 	q/2r=   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        g )Ni  r   r   r   r   r   r   i  r   r   r   r   r   i  r
   r   r   r   r   r
     r   r   r   r   r   i  r   r   r   r   r   r  r`   s    r:   
test_aprilMondayTestCase.test_april  e    q/2 	q/2 	q"45 	q/2 	q/2r=   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSS5        g )Ni  r   r   r   r   r   r   r|  r   r   r   r   r   i  r
   r   r   r   r   r   r~  r   r   r   r   r   r   r   r   r   r   r   i  r   r   r   r   r   r
   r  r`   s    r:   test_decemberMondayTestCase.test_december  z    r?3 	r?3 	r#56 	r?3 	r?3 	r#56r=   rK   N)r   r   r   r   rL   r   r   r  r  r  r   rK   r=   r:   rw  rw        ??L3&3 7r=   rw  c                   >    \ rS rSr\R
                  rS rS rS r	Sr
g)SundayTestCasei1  c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSS5        g )Ni  r   rz  ry  r{    r}  rJ   r    r  i  r  r  r`   s    r:   r  SundayTestCase.test_february4  r  r=   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        g )N  r   r  i~  r  i  r  r  r  iu  r  r  r`   s    r:   r  SundayTestCase.test_aprilG  r  r=   c                     U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS	5        U R                  S
SS5        U R                  SSS5        g )Ni   r   r  i  r  r  r  i  r  i  r  r  r  r  r`   s    r:   r  SundayTestCase.test_decemberW  r  r=   rK   N)r   r   r   r   rL   r   r   r  r  r  r   rK   r=   r:   r  r  1  r  r=   r  c                   "    \ rS rSr/ SQrS rSrg)TimegmTestCaseij  )
r   r   d   i  i'  i i@B iIi ;=Ki
Lc                     U R                    H?  n[        R                  " U5      nU R                  U[        R
                  " U5      5        MA     g r6   )
TIMESTAMPStimegmtimerQ   rL   timegm)rB   secstuples      r:   test_timegmTimegmTestCase.test_timegmm  s7    OODKK%ET8??5#9: $r=   rK   N)r   r   r   r   r  r  r   rK   r=   r:   r  r  j  s    7J;r=   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)MonthRangeTestCaseir  c                 R    U R                  [        R                  " SS5      S5        g )NrJ   r
   )r   r(   rQ   rL   
monthranger`   s    r:   test_januaryMonthRangeTestCase.test_januarys      ,,T!4f=r=   c                 R    U R                  [        R                  " SS5      S5        g )NrJ   r   )r   r&   r  r`   s    r:   test_february_leap%MonthRangeTestCase.test_february_leapw  r  r=   c                 R    U R                  [        R                  " SS5      S5        g )Nr  r   )r   r%   r  r`   s    r:   test_february_nonleap(MonthRangeTestCase.test_february_nonleap{  r  r=   c                 R    U R                  [        R                  " SS5      S5        g )NrJ   r   )r   r(   r  r`   s    r:   r   MonthRangeTestCase.test_december  s    ,,T"5v>r=   c                     U R                  [        R                  5         [        R                  " SS5        S S S 5        g ! , (       d  f       g = fr]   r   rL   r   r  r`   s    r:   test_zeroth_month$MonthRangeTestCase.test_zeroth_month  s2    x99:a( ;::   A
Ac                     U R                  [        R                  5         [        R                  " SS5        S S S 5        g ! , (       d  f       g = f)NrJ   r   r  r`   s    r:   test_thirteenth_month(MonthRangeTestCase.test_thirteenth_month  s2    x99:b) ;::r  c                     U R                  [        R                  S5         [        R                  " SS5        S S S 5        g ! , (       d  f       g = f)N65rJ   A   )r   rL   r   r  r`   s    r:   test_illegal_month_reported.MonthRangeTestCase.test_illegal_month_reported  s5    ##H$>$>Eb) FEEs   A
ArK   N)r   r   r   r   r  r  r  r  r  r  r  r   rK   r=   r:   r  r  r  s%    >>>?)
*
*r=   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	LeapdaysTestCasei  c                 R    U R                  [        R                  " SS5      S5        g )Nr  r   rQ   rL   leapdaysr`   s    r:   test_no_rangeLeapdaysTestCase.test_no_range      **45q9r=   c                 R    U R                  [        R                  " SS5      S5        g )Nr  i  r   r  r`   s    r:   test_no_leapdays!LeapdaysTestCase.test_no_leapdays  r  r=   c                 R    U R                  [        R                  " SS5      S5        g )Nr    r   r  r`   s    r:   test_no_leapdays_upper_boundary0LeapdaysTestCase.test_no_leapdays_upper_boundary  r  r=   c                 R    U R                  [        R                  " SS5      S5        g )Nr  i  r
   r  r`   s    r:   test_one_leapday_lower_boundary0LeapdaysTestCase.test_one_leapday_lower_boundary  r  r=   c                 R    U R                  [        R                  " SS5      S5        g )Nr  i  r   r  r`   s    r:   test_several_leapyears_in_range0LeapdaysTestCase.test_several_leapyears_in_range  s    **45q9r=   rK   N)
r   r   r   r   r  r  r  r  r  r   rK   r=   r:   r  r    s    :::::r=   r  c                 ^    U R                  S[        R                  5      R                  5       $ )N
)replaceoslineseprT   )rC   s    r:   convr    s     99T2::&--//r=   c                       \ rS rSrS r\R                  S 5       r\R                  S 5       rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)CommandLineTestCasei  c                 >    U R                   U R                  /U l        g r6   )
run_cli_ok
run_cmd_okrunnersr`   s    r:   rh  CommandLineTestCase.setUp  s    9r=   c              #     #    [         R                  n[        R                  " 5       n[        R                  " U5      [         l         [         R                  v   [         R                  R                  5         [         R                  R                  R                  S5        U[         l        g ! [         R                  R                  5         [         R                  R                  R                  S5        U[         l        f = f7fNr   )rq   stdoutioBytesIOTextIOWrapperflushbufferseek)rB   orig_stdoutr  s      r:   captured_stdout_with_buffer/CommandLineTestCase.captured_stdout_with_buffer       jj%%f-
	%**JJJJ""1%$CJ JJJJ""1%$CJ    ADB- AD-ADDc              #     #    [         R                  n[        R                  " 5       n[        R                  " U5      [         l         [         R                  v   [         R                  R                  5         [         R                  R                  R                  S5        U[         l        g ! [         R                  R                  5         [         R                  R                  R                  S5        U[         l        f = f7fr  )rq   stderrr  r  r  r  r  r  )rB   orig_stderrr  s      r:   captured_stderr_with_buffer/CommandLineTestCase.captured_stderr_with_buffer  r  r  c                     U R                  5        n[        R                  " U5        S S S 5        WR                  R	                  5       $ ! , (       d  f       N(= fr6   )r  rL   mainr  read)rB   argsr  s      r:   r  CommandLineTestCase.run_cli_ok  s=    --/6MM$ 0}}!!## 0/s   A


Ac                 "    [        SS/UQ76 S   $ )N-mrL   r
   )r   rB   r  s     r:   r  CommandLineTestCase.run_cmd_ok  s    j848;;r=   c                     U R                  5        nU R                  [        [        R                  U5        S S S 5        WR
                  R                  5       nU R                  SU5        U$ ! , (       d  f       N<= f)N   usage:)r  r   
SystemExitrL   r  r  r  r5  )rB   r  r   s      r:   assertCLIFails"CommandLineTestCase.assertCLIFails  sY    --/6j(--> 0##%i(	 0/s   &A--
A;c                 r    [        SS/UQ76 u  p#nU R                  SU5        U R                  US5        X#U4$ )Nr
  rL   r  r   )r   r5  rQ   )rB   r  rcr  r   s        r:   assertCmdFails"CommandLineTestCase.assertCmdFails  sA    24KdKFi(Q6!!r=   c                 @    U R                   " U6   U R                  " U6   g r6   )r  r  r  s     r:   assertFailure!CommandLineTestCase.assertFailure  s    T"T"r=   c                    U R                  S5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  5        nU R                  [        [
        R                  S/5        S S S 5        WR                  R                  5       nU R                  SU5        U R                  SU5        g ! , (       d  f       NM= f)Nz-hr  s   calendar.pys   --help)	r  r5  r  r   r  rL   r  r  r  )rB   r  rY   s      r:   	test_helpCommandLineTestCase.test_help  s    &i(nf-i( --/6j(--$@ 0##%i(i(	 0/s   'C
Cc                    U R                  S5        U R                  S5        U R                  SS5        U R                  SSS5        U R                  SSS5        U R                  SSSS5        U R                  SSSS5        g )Nz-zspam2004r   -thtml)r  r`   s    r:   test_illegal_arguments*CommandLineTestCase.test_illegal_arguments  sz    4 6"66*63/63,63V445r=   c                    U R                    Ht  nU" 5       n[        R                  R                  5       R                  nU R	                  [        SU-  5      U5        U R	                  SU5        U R	                  SU5        Mv     g )Nz %ss   Januarys   Mo Tu We Th Fr Sa Su)r  rF  nowr   r5  r  rB   runrY   r   s       r:   test_output_current_year,CommandLineTestCase.test_output_current_year  se    <<CUF$$((*//DMM$ut|,f5MM*f-MM16:  r=   c                 x    U R                    H*  nU" S5      nU R                  U[        [        5      5        M,     g )Nr  )r  rQ   r  r^   rB   r&  rY   s      r:   test_output_year$CommandLineTestCase.test_output_year  s/    <<C[FVT*:%;<  r=   c                 z    U R                    H+  nU" SS5      nU R                  U[        [        5      5        M-     g )Nr  r   )r  rQ   r  r   r*  s      r:   test_output_month%CommandLineTestCase.test_output_month  s2    <<C%FVT*=%>?  r=   c                     U R                  S5        U R                  S5        U R                   H2  nU" SSS5      nU R                  U[        R	                  S5      5        M4     g )Nz-e
--encodingz	utf-16-ler  )r  r  rQ   r^   rT   r*  s      r:   test_option_encoding(CommandLineTestCase.test_option_encoding  sV    4 <(<<C{F;FV%5%<%<[%IJ  r=   c                    U R                  S5        U R                  S5        U R                  SS5        [        R                  " 5       u  pU=(       d    SnU=(       d    Sn [        R                  " [        R                  5      n [        R                  " [        R                  X45        [        R                  " [        R                  U5        U R                   H;  nS H2  nU" SUSUS	US
5      nU R                  S
R                  U5      U5        M4     M=     g ! [        R                  " [        R                  U5        f = f! [        R
                  [        4 a    U R                  S5         Nf = f)Nz-Lz--localeenr  zUTF-8r  )textr   --typer1  r  )r  r  	getlocaleLC_TIME	setlocaler  r   skipTestr  r5  rT   )rB   langenc	oldlocaler&  typerY   s          r:   test_option_locale&CommandLineTestCase.test_option_locale  s#   4 :&4&$$&	{snW	B((8I<  $=  ; <<C(dJlC fmmC0&9	 )     ;j) 	BMM@A	Bs*   #$E	 &D .%E	 'EE	 	+E76E7c                     U R                  S5        U R                  S5        U R                  SS5        U R                   H  nU" SSS5      nU R                  SU5        M!     g )Nz-wz--widthr  r   r  s   Mon Tue Wed Thu Fri Sat Sunr  r  r5  r*  s      r:   test_option_width%CommandLineTestCase.test_option_width$  sY    4 9%4(<<CC0FMM8&A  r=   c                     U R                  S5        U R                  S5        U R                  SS5        U R                   H(  nU" SSS5      nU R                  [        S5      U5        M*     g )Nz-lz--linesr  r   r  zDecember

Mo Tu Wer  r  r5  r  r*  s      r:   test_option_lines%CommandLineTestCase.test_option_lines,  s^    4 9%4(<<CC0FMM$56?  r=   c                     U R                  S5        U R                  S5        U R                  SS5        U R                   H  nU" SSS5      nU R                  SU5        M!     g )Nz-sz	--spacingr  8r  s   Su        MorC  r*  s      r:   test_option_spacing'CommandLineTestCase.test_option_spacing4  sX    4 ;'4(<<Cc62FMM/62  r=   c                     U R                  S5        U R                  S5        U R                  SS5        U R                   H(  nU" SSS5      nU R                  [        S5      U5        M*     g )Nr
  z--monthr  z--monthsr   r  z
Mo Tu We Th Fr Sa Su
rG  r*  s      r:   test_option_months&CommandLineTestCase.test_option_months<  s^    4 9%4(<<CS&1FMM$9:FC  r=   c                 F   U R                  S5        U R                  S5        U R                  SS5        U R                   H]  nU" SSS5      nU R                  U[        [        5      5        U" SSS5      nU R                  US S S5        U R                  S	U5        M_     g )
Nr  r7  r  r6  r  r   r   s   <?xml s    <title>Calendar for 2004</title>)r  r  rQ   r  r^   r5  r*  s      r:   test_option_type$CommandLineTestCase.test_option_typeD  s    4 8$4(<<C662FVT*:%;<662FVBQZ3MM=vF  r=   c                     U R                    Hi  nU" SS5      n[        R                  R                  5       R                  nU R	                  SU-  R                  5       U5        U R	                  SU5        Mk     g )Nr7  r   z<title>Calendar for %s</title>s3   <tr><th colspan="7" class="month">January</th></tr>)r  rF  r$  r   r5  rT   r%  s       r:   test_html_output_current_year1CommandLineTestCase.test_html_output_current_yearO  sc    <<C6*F$$((*//DMM;dBJJLfUMMPRXY	  r=   c           	          U R                    HH  nU" SSSSS5      nU R                  U[        R                  " S0 [        D6R                  S5      5        MJ     g )Nr  r   r1  r   r  rK   )r  rQ   rR   rS   rN   rT   r*  s      r:   test_html_output_year_encoding2CommandLineTestCase.test_html_output_year_encodingV  sM    <<Cv|WfEFV%5%<%<%N~%N%U%UV]%^_  r=   c                     U R                  SSS5        U R                  SSS5        U R                   H!  nU" SSSSS5      nU R                  SU5        M#     g )Nr  r   z-cz--cssz
custom.cssr  s;   <link rel="stylesheet" type="text/css" href="custom.css" />rC  r*  s      r:   test_html_output_year_css-CommandLineTestCase.test_html_output_year_css[  sZ    4.41<<CvwfEFMM 239;  r=   )r  N)r   r   r   r   rh  
contextlibcontextmanagerr  r  r  r  r  r  r  r  r!  r'  r+  r.  r2  r@  rD  rH  rL  rO  rR  rU  rX  r[  r   rK   r=   r:   r  r    s    : 	% 	% 	% 	%$
<"#)6;=
@
K:.B@3D	GZ`
;r=   r  c                       \ rS rSrS rSrg)MiscTestCaseid  c                 @    1 Skn[         R                  " U [        US9  g )N>   r  r9   r  r   EPOCHmdaysrS   r   r   Februarymonthlen	nextmonth	prevmonthformatstringdifferent_locale)not_exported)r   check__all__rL   )rB   rj  s     r:   test__all__MiscTestCase.test__all__e  s    N 	T8,Gr=   rK   N)r   r   r   r   rl  r   rK   r=   r:   r`  r`  d  s    Hr=   r`  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestSubClassingCaseim  c                 N     " S S[         R                  5      nU" 5       U l        g )Nc                       \ rS rSr\R
                  R                   V Vs/ s H  oS-   PM	     snn r/ SQrSrSr	Sr
SrSrg	s  snn f )
0TestSubClassingCase.setUp.<locals>.CustomHTMLCaliq  z text-nowrap)redbluegreenlilacyelloworangepinkztext-center month-headr3  ztext-italic zlead rK   N)r   r   r   r   rL   rM   
cssclassesrA  r6  cssclass_monthcssclass_yearcssclass_year_headr   )r|   styles   00r:   CustomHTMLCalrr  q  sR    "//::<: 6;.0:<J'C#":0N*M!(<s   Ar  )rL   rM   rW   )rB   r  s     r:   rh  TestSubClassingCase.setUpo  s    	)H11 	) !?r=   c                 \    U R                  SU R                  R                  SS5      5        g )Nzclass="text-center month-head"r   r   )r5  rW   r   r`   s    r:   test_formatmonthname(TestSubClassingCase.test_formatmonthname}  s%    6hh..tQ7	9r=   c                 \    U R                  SU R                  R                  SS5      5        g )Nr4  r   r   )r5  rW   r   r`   s    r:   r   $TestSubClassingCase.test_formatmonth  s%    1hh**43	5r=   c                 X   U R                  [        R                  5         U R                  R	                  SS5        S S S 5        U R                  [        R                  5         U R                  R	                  SS5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = fr   )r   rL   r   rW   r   r`   s    r:   r   7TestSubClassingCase.test_formatmonth_with_invalid_month  so    x99:HH  r* ;x99:HH  r* ;: ;:::s   B
$B

B
B)c                     U R                   R                  SS5      nU R                  SU R                   R                  US   5      5        g )Nr   r   zclass="wed text-nowrap"r   )rW   monthdays2calendarr5  
formatweek)rB   rr  s     r:   test_formatweek#TestSubClassingCase.test_formatweek  s:    ++D!4/1D1DU1X1NOr=   c                     U R                   R                  5       nU R                   R                   H  nU R                  SU-  U5        M     g )Nz<th class="%s">)rW   r   rA  r5  )rB   headercolors      r:   test_formatweek_head(TestSubClassingCase.test_formatweek_head  s<    **,XX55EMM+e3V< 6r=   c                     U R                  SU R                  R                  -  U R                  R                  S5      5        g )Nz=<table border="0" cellpadding="0" cellspacing="0" class="%s">r   )r5  rW   r|  re   r`   s    r:   test_format_year$TestSubClassingCase.test_format_year  s6    LXX##$&*hh&9&9$&?	Ar=   c                     U R                  SSU R                  R                  S4-  U R                  R                  S5      5        g )Nz,<tr><th colspan="%d" class="%s">%s</th></tr>r   r   )r5  rW   r}  re   r`   s    r:   test_format_year_head)TestSubClassingCase.test_format_year_head  s@    Dtxx**DH2 237883F3Ft3L	Nr=   )rW   N)r   r   r   r   rh  r  r   r   r  r  r  r  r   rK   r=   r:   ro  ro  m  s-    #95+P=
A
Nr=   ro  __main__)&rL   r  testr   test.support.script_helperr   r   r]  rF  r  r  r  rq   r  r   r_   r   r^   dictrN   rR   r   r   TestCaser3   r   re  rw  r  r  r  r  r  r  r`  ro  r   r  rK   r=   r:   <module>r     s      N   	  	 
  %N $ N 67C{ | ""!	#
 !""	$
  ""	 ! "" 	"
 """ ""	 !  ""!	#
 !"" ""	!"  """	$
  ""	
 "" 	"#a? DI
I
IJI
IIJ I
IIJ I
I
IJ_=K BBX&& BBr-x(( r-jHH-- H77* 77t77* 77r;X&& ;*** *>:x(( :*0x;(++ x;vH8$$ H/N(++ /Nb zMMO r=   