bpo-29376: Fix assertion error in threading._DummyThread.is_alive() (GH-330)


diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 2c2914f..6b6c4d2 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -170,6 +170,9 @@
         mutex.acquire()
         self.assertIn(tid, threading._active)
         self.assertIsInstance(threading._active[tid], threading._DummyThread)
+        #Issue 29376
+        self.assertTrue(threading._active[tid].is_alive())
+        self.assertRegex(repr(threading._active[tid]), '_DummyThread')
         del threading._active[tid]
 
     # PyThreadState_SetAsyncExc() is a CPython-only gimmick, not (currently)
diff --git a/Lib/threading.py b/Lib/threading.py
index 4829ff4..95978d3 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -1217,6 +1217,10 @@
     def _stop(self):
         pass
 
+    def is_alive(self):
+        assert not self._is_stopped and self._started.is_set()
+        return True
+
     def join(self, timeout=None):
         assert False, "cannot join a dummy thread"