bpo-46266:  Add calendar day of week constants to __all__  (GH-30412) (GH-30424)

(cherry picked from commit e5894ca8fd05e6a6df1033025b9093b68baa718d)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
diff --git a/Doc/library/calendar.rst b/Doc/library/calendar.rst
index c3c04db..f641760 100644
--- a/Doc/library/calendar.rst
+++ b/Doc/library/calendar.rst
@@ -31,7 +31,7 @@
 .. class:: Calendar(firstweekday=0)
 
    Creates a :class:`Calendar` object. *firstweekday* is an integer specifying the
-   first day of the week. ``0`` is Monday (the default), ``6`` is Sunday.
+   first day of the week. :const:`MONDAY` is ``0`` (the default), :const:`SUNDAY` is ``6``.
 
    A :class:`Calendar` object provides several methods that can be used for
    preparing the calendar data for formatting. This class doesn't do any formatting
@@ -409,6 +409,15 @@
    locale.  This follows normal convention of January being month number 1, so it
    has a length of 13 and  ``month_abbr[0]`` is the empty string.
 
+.. data:: MONDAY
+          TUESDAY
+          WEDNESDAY
+          THURSDAY
+          FRIDAY
+          SATURDAY
+          SUNDAY
+
+   Aliases for day numbers, where ``MONDAY`` is ``0`` and ``SUNDAY`` is ``6``.
 
 .. seealso::
 
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 7311a01..cbea9ec 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -15,7 +15,9 @@
            "monthcalendar", "prmonth", "month", "prcal", "calendar",
            "timegm", "month_name", "month_abbr", "day_name", "day_abbr",
            "Calendar", "TextCalendar", "HTMLCalendar", "LocaleTextCalendar",
-           "LocaleHTMLCalendar", "weekheader"]
+           "LocaleHTMLCalendar", "weekheader",
+           "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY",
+           "SATURDAY", "SUNDAY"]
 
 # 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 c641e8c..39094ad 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -935,8 +935,7 @@ def test_html_output_year_css(self):
 class MiscTestCase(unittest.TestCase):
     def test__all__(self):
         not_exported = {
-            'mdays', 'January', 'February', 'EPOCH', 'MONDAY', 'TUESDAY',
-            'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY',
+            'mdays', 'January', 'February', 'EPOCH',
             'different_locale', 'c', 'prweek', 'week', 'format',
             'formatstring', 'main', 'monthlen', 'prevmonth', 'nextmonth'}
         support.check__all__(self, calendar, not_exported=not_exported)
diff --git a/Misc/NEWS.d/next/Library/2022-01-05-12-48-18.bpo-46266.ACQCgX.rst b/Misc/NEWS.d/next/Library/2022-01-05-12-48-18.bpo-46266.ACQCgX.rst
new file mode 100644
index 0000000..354dcb0
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-01-05-12-48-18.bpo-46266.ACQCgX.rst
@@ -0,0 +1,4 @@
+Improve day constants in :mod:`calendar`.
+
+Now all constants (`MONDAY` ... `SUNDAY`) are documented, tested, and added
+to ``__all__``.