bpo-38723: Pdb._runscript should use io.open_code() instead of open() (GH-17127)

Co-Authored-By: Brandt Bucher <brandtbucher@gmail.com>
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 8639204..bf503f1 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -68,6 +68,7 @@
 # commands and is appended to __doc__ after the class has been defined.
 
 import os
+import io
 import re
 import sys
 import cmd
@@ -1565,7 +1566,7 @@
         self._wait_for_mainpyfile = True
         self.mainpyfile = self.canonic(filename)
         self._user_requested_quit = False
-        with open(filename, "rb") as fp:
+        with io.open_code(filename) as fp:
             statement = "exec(compile(%r, %r, 'exec'))" % \
                         (fp.read(), self.mainpyfile)
         self.run(statement)
diff --git a/Misc/NEWS.d/next/Library/2019-11-12-15-46-28.bpo-38723.gcdMFn.rst b/Misc/NEWS.d/next/Library/2019-11-12-15-46-28.bpo-38723.gcdMFn.rst
new file mode 100644
index 0000000..c84bb85
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-11-12-15-46-28.bpo-38723.gcdMFn.rst
@@ -0,0 +1 @@
+:mod:`pdb` now uses :meth:`io.open_code` to trigger auditing events.