Issue #23883: Add missing APIs to calendar.__all__

Patch by Joel Taddei and Jacek KoƂodziej.
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 196a075..85baf2e 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -12,7 +12,9 @@
 __all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday",
            "firstweekday", "isleap", "leapdays", "weekday", "monthrange",
            "monthcalendar", "prmonth", "month", "prcal", "calendar",
-           "timegm", "month_name", "month_abbr", "day_name", "day_abbr"]
+           "timegm", "month_name", "month_abbr", "day_name", "day_abbr",
+           "Calendar", "TextCalendar", "HTMLCalendar", "LocaleTextCalendar",
+           "LocaleHTMLCalendar", "weekheader"]
 
 # Exception raised for bad input (with string parameter for details)
 error = ValueError
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index d9d3128..d95ad04 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -815,5 +815,14 @@
                       b'href="custom.css" />', stdout)
 
 
+class MiscTestCase(unittest.TestCase):
+    def test__all__(self):
+        blacklist = {'error', 'mdays', 'January', 'February', 'EPOCH',
+                     'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY',
+                     'SATURDAY', 'SUNDAY', 'different_locale', 'c',
+                     'prweek', 'week', 'format', 'formatstring', 'main'}
+        support.check__all__(self, calendar, blacklist=blacklist)
+
+
 if __name__ == "__main__":
     unittest.main()