summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/calendar.py11
-rw-r--r--Lib/test/test_calendar.py7
-rw-r--r--Misc/NEWS2
3 files changed, 16 insertions, 4 deletions
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 84aa3a4..0301d6b 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -636,7 +636,7 @@ def main(args):
parser.add_option(
"-e", "--encoding",
dest="encoding", default=None,
- help="Encoding to use for output"
+ help="Encoding to use for output."
)
parser.add_option(
"-t", "--type",
@@ -662,10 +662,11 @@ def main(args):
if encoding is None:
encoding = sys.getdefaultencoding()
optdict = dict(encoding=encoding, css=options.css)
+ write = sys.stdout.buffer.write
if len(args) == 1:
- print(cal.formatyearpage(datetime.date.today().year, **optdict))
+ write(cal.formatyearpage(datetime.date.today().year, **optdict))
elif len(args) == 2:
- print(cal.formatyearpage(int(args[1]), **optdict))
+ write(cal.formatyearpage(int(args[1]), **optdict))
else:
parser.error("incorrect number of arguments")
sys.exit(1)
@@ -687,9 +688,11 @@ def main(args):
else:
parser.error("incorrect number of arguments")
sys.exit(1)
+ write = sys.stdout.write
if options.encoding:
result = result.encode(options.encoding)
- print(result)
+ write = sys.stdout.buffer.write
+ write(result)
if __name__ == "__main__":
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 4bd758b..d3093ac 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -2,6 +2,7 @@ import calendar
import unittest
from test import support
+from test.script_helper import assert_python_ok
import time
import locale
@@ -451,6 +452,11 @@ class LeapdaysTestCase(unittest.TestCase):
self.assertEqual(calendar.leapdays(1997,2020), 5)
+class ConsoleOutputTestCase(unittest.TestCase):
+ def test_outputs_bytes(self):
+ (return_code, stdout, stderr) = assert_python_ok('-m', 'calendar', '--type=html', '2010')
+ self.assertEqual(stdout[:6], b'<?xml ')
+
def test_main():
support.run_unittest(
OutputTestCase,
@@ -460,6 +466,7 @@ def test_main():
TimegmTestCase,
MonthRangeTestCase,
LeapdaysTestCase,
+ ConsoleOutputTestCase
)
diff --git a/Misc/NEWS b/Misc/NEWS
index aaeb1b2..109b4a4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -251,6 +251,8 @@ Core and Builtins
Library
-------
+- Issue #10087: Fix the html output format of the calendar module.
+
- Issue #12540: Prevent zombie IDLE processes on Windows due to changes
in os.kill().