We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Theano deprecation warning
I have started running my code with warnings as errors.  Theano trips the deprecation warning:

```
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/configparser.py", line 1209, in __init__
    DeprecationWarning, stacklevel=2
DeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in future versions. Use ConfigParser directly instead.
```

Please use:

```
theano_cfg =  (ConfigParser.ConfigParser if six.PY3 else ConfigParser.SafeConfigParser)(…
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `theano/misc/windows.py`
Content:
```
1 from __future__ import absolute_import, print_function, division
2 import os
3 import subprocess
4 
5 
6 def subprocess_Popen(command, **params):
7     """
8     Utility function to work around windows behavior that open windows.
9 
10     :see: call_subprocess_Popen and output_subprocess_Popen
11     """
12     startupinfo = None
13     if os.name == 'nt':
14         startupinfo = subprocess.STARTUPINFO()
15         try:
16             startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
17         except AttributeError:
18             startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW
19 
20         # Anaconda for Windows does not always provide .exe files
21         # in the PATH, they also have .bat files that call the corresponding
22         # executable. For instance, "g++.bat" is in the PATH, not "g++.exe"
23         # Unless "shell=True", "g++.bat" is not executed when trying to
24         # execute "g++" without extensions.
25         # (Executing "g++.bat" explicitly would also work.)
26         params['shell'] = True
27         # "If shell is True, it is recommended to pass args as a string rather than as a sequence." (cite taken from https://docs.python.org/2/library/subprocess.html#frequently-used-arguments)
28         # In case when command arguments have spaces, passing a command as a list will result in incorrect arguments break down, and consequently
29         # in "The filename, directory name, or volume label syntax is incorrect" error message.
30         # Passing the command as a single string solves this problem.
31         if isinstance(command, list):
32             command = ' '.join(command)
33 
34     # Using the dummy file descriptors below is a workaround for a
35     # crash experienced in an unusual Python 2.4.4 Windows environment
36     # with the default None values.
37     stdin = None
38     if "stdin" not in params:
39         stdin = open(os.devnull)
40         params['stdin'] = stdin.fileno()
41 
42     try:
43         proc = subprocess.Popen(command, startupinfo=startupinfo, **params)
44     finally:
45         if stdin is not None:
46             del stdin
47     return proc
48 
49 
50 def call_subprocess_Popen(command, **params):
51     """
52     Calls subprocess_Popen and discards the output, returning only the
53     exit code.
54     """
55     if 'stdout' in params or 'stderr' in params:
56         raise TypeError("don't use stderr or stdout with call_subprocess_Popen")
57     with open(os.devnull, 'wb') as null:
58         # stdin to devnull is a workaround for a crash in a weird Windows
59         # environment where sys.stdin was None
60         params.setdefault('stdin', null)
61         params['stdout'] = null
62         params['stderr'] = null
63         p = subprocess_Popen(command, **params)
64         returncode = p.wait()
65     return returncode
66 
67 
68 def output_subprocess_Popen(command, **params):
69     """
70     Calls subprocess_Popen, returning the output, error and exit code
71     in a tuple.
72     """
73     if 'stdout' in params or 'stderr' in params:
74         raise TypeError("don't use stderr or stdout with output_subprocess_Popen")
75     # stdin to devnull is a workaround for a crash in a weird Windows
76     # environement where sys.stdin was None
77     if not hasattr(params, 'stdin'):
78         null = open(os.devnull, 'wb')
79         params['stdin'] = null
80     params['stdout'] = subprocess.PIPE
81     params['stderr'] = subprocess.PIPE
82     p = subprocess_Popen(command, **params)
83     # we need to use communicate to make sure we don't deadlock around
84     # the stdour/stderr pipe.
85     out = p.communicate()
86     return out + (p.returncode,)
87
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/theano/misc/windows.py b/theano/misc/windows.py
--- a/theano/misc/windows.py
+++ b/theano/misc/windows.py
@@ -43,7 +43,7 @@
         proc = subprocess.Popen(command, startupinfo=startupinfo, **params)
     finally:
         if stdin is not None:
-            del stdin
+            stdin.close()
     return proc
 
 
@@ -72,15 +72,10 @@
     """
     if 'stdout' in params or 'stderr' in params:
         raise TypeError("don't use stderr or stdout with output_subprocess_Popen")
-    # stdin to devnull is a workaround for a crash in a weird Windows
-    # environement where sys.stdin was None
-    if not hasattr(params, 'stdin'):
-        null = open(os.devnull, 'wb')
-        params['stdin'] = null
     params['stdout'] = subprocess.PIPE
     params['stderr'] = subprocess.PIPE
     p = subprocess_Popen(command, **params)
     # we need to use communicate to make sure we don't deadlock around
-    # the stdour/stderr pipe.
+    # the stdout/stderr pipe.
     out = p.communicate()
     return out + (p.returncode,)

{"golden_diff": "diff --git a/theano/misc/windows.py b/theano/misc/windows.py\n--- a/theano/misc/windows.py\n+++ b/theano/misc/windows.py\n@@ -43,7 +43,7 @@\n         proc = subprocess.Popen(command, startupinfo=startupinfo, **params)\n     finally:\n         if stdin is not None:\n-            del stdin\n+            stdin.close()\n     return proc\n \n \n@@ -72,15 +72,10 @@\n     \"\"\"\n     if 'stdout' in params or 'stderr' in params:\n         raise TypeError(\"don't use stderr or stdout with output_subprocess_Popen\")\n-    # stdin to devnull is a workaround for a crash in a weird Windows\n-    # environement where sys.stdin was None\n-    if not hasattr(params, 'stdin'):\n-        null = open(os.devnull, 'wb')\n-        params['stdin'] = null\n     params['stdout'] = subprocess.PIPE\n     params['stderr'] = subprocess.PIPE\n     p = subprocess_Popen(command, **params)\n     # we need to use communicate to make sure we don't deadlock around\n-    # the stdour/stderr pipe.\n+    # the stdout/stderr pipe.\n     out = p.communicate()\n     return out + (p.returncode,)\n", "issue": "Theano deprecation warning\nI have started running my code with warnings as errors.  Theano trips the deprecation warning:\n\n```\n  File \"/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/configparser.py\", line 1209, in __init__\n    DeprecationWarning, stacklevel=2\nDeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in future versions. Use ConfigParser directly instead.\n```\n\nPlease use:\n\n```\ntheano_cfg =  (ConfigParser.ConfigParser if six.PY3 else ConfigParser.SafeConfigParser)(\u2026\n```\n\n", "before_files": [{"content": "from __future__ import absolute_import, print_function, division\nimport os\nimport subprocess\n\n\ndef subprocess_Popen(command, **params):\n    \"\"\"\n    Utility function to work around windows behavior that open windows.\n\n    :see: call_subprocess_Popen and output_subprocess_Popen\n    \"\"\"\n    startupinfo = None\n    if os.name == 'nt':\n        startupinfo = subprocess.STARTUPINFO()\n        try:\n            startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW\n        except AttributeError:\n            startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW\n\n        # Anaconda for Windows does not always provide .exe files\n        # in the PATH, they also have .bat files that call the corresponding\n        # executable. For instance, \"g++.bat\" is in the PATH, not \"g++.exe\"\n        # Unless \"shell=True\", \"g++.bat\" is not executed when trying to\n        # execute \"g++\" without extensions.\n        # (Executing \"g++.bat\" explicitly would also work.)\n        params['shell'] = True\n        # \"If shell is True, it is recommended to pass args as a string rather than as a sequence.\" (cite taken from https://docs.python.org/2/library/subprocess.html#frequently-used-arguments)\n        # In case when command arguments have spaces, passing a command as a list will result in incorrect arguments break down, and consequently\n        # in \"The filename, directory name, or volume label syntax is incorrect\" error message.\n        # Passing the command as a single string solves this problem.\n        if isinstance(command, list):\n            command = ' '.join(command)\n\n    # Using the dummy file descriptors below is a workaround for a\n    # crash experienced in an unusual Python 2.4.4 Windows environment\n    # with the default None values.\n    stdin = None\n    if \"stdin\" not in params:\n        stdin = open(os.devnull)\n        params['stdin'] = stdin.fileno()\n\n    try:\n        proc = subprocess.Popen(command, startupinfo=startupinfo, **params)\n    finally:\n        if stdin is not None:\n            del stdin\n    return proc\n\n\ndef call_subprocess_Popen(command, **params):\n    \"\"\"\n    Calls subprocess_Popen and discards the output, returning only the\n    exit code.\n    \"\"\"\n    if 'stdout' in params or 'stderr' in params:\n        raise TypeError(\"don't use stderr or stdout with call_subprocess_Popen\")\n    with open(os.devnull, 'wb') as null:\n        # stdin to devnull is a workaround for a crash in a weird Windows\n        # environment where sys.stdin was None\n        params.setdefault('stdin', null)\n        params['stdout'] = null\n        params['stderr'] = null\n        p = subprocess_Popen(command, **params)\n        returncode = p.wait()\n    return returncode\n\n\ndef output_subprocess_Popen(command, **params):\n    \"\"\"\n    Calls subprocess_Popen, returning the output, error and exit code\n    in a tuple.\n    \"\"\"\n    if 'stdout' in params or 'stderr' in params:\n        raise TypeError(\"don't use stderr or stdout with output_subprocess_Popen\")\n    # stdin to devnull is a workaround for a crash in a weird Windows\n    # environement where sys.stdin was None\n    if not hasattr(params, 'stdin'):\n        null = open(os.devnull, 'wb')\n        params['stdin'] = null\n    params['stdout'] = subprocess.PIPE\n    params['stderr'] = subprocess.PIPE\n    p = subprocess_Popen(command, **params)\n    # we need to use communicate to make sure we don't deadlock around\n    # the stdour/stderr pipe.\n    out = p.communicate()\n    return out + (p.returncode,)\n", "path": "theano/misc/windows.py"}], "after_files": [{"content": "from __future__ import absolute_import, print_function, division\nimport os\nimport subprocess\n\n\ndef subprocess_Popen(command, **params):\n    \"\"\"\n    Utility function to work around windows behavior that open windows.\n\n    :see: call_subprocess_Popen and output_subprocess_Popen\n    \"\"\"\n    startupinfo = None\n    if os.name == 'nt':\n        startupinfo = subprocess.STARTUPINFO()\n        try:\n            startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW\n        except AttributeError:\n            startupinfo.dwFlags |= subprocess._subprocess.STARTF_USESHOWWINDOW\n\n        # Anaconda for Windows does not always provide .exe files\n        # in the PATH, they also have .bat files that call the corresponding\n        # executable. For instance, \"g++.bat\" is in the PATH, not \"g++.exe\"\n        # Unless \"shell=True\", \"g++.bat\" is not executed when trying to\n        # execute \"g++\" without extensions.\n        # (Executing \"g++.bat\" explicitly would also work.)\n        params['shell'] = True\n        # \"If shell is True, it is recommended to pass args as a string rather than as a sequence.\" (cite taken from https://docs.python.org/2/library/subprocess.html#frequently-used-arguments)\n        # In case when command arguments have spaces, passing a command as a list will result in incorrect arguments break down, and consequently\n        # in \"The filename, directory name, or volume label syntax is incorrect\" error message.\n        # Passing the command as a single string solves this problem.\n        if isinstance(command, list):\n            command = ' '.join(command)\n\n    # Using the dummy file descriptors below is a workaround for a\n    # crash experienced in an unusual Python 2.4.4 Windows environment\n    # with the default None values.\n    stdin = None\n    if \"stdin\" not in params:\n        stdin = open(os.devnull)\n        params['stdin'] = stdin.fileno()\n\n    try:\n        proc = subprocess.Popen(command, startupinfo=startupinfo, **params)\n    finally:\n        if stdin is not None:\n            stdin.close()\n    return proc\n\n\ndef call_subprocess_Popen(command, **params):\n    \"\"\"\n    Calls subprocess_Popen and discards the output, returning only the\n    exit code.\n    \"\"\"\n    if 'stdout' in params or 'stderr' in params:\n        raise TypeError(\"don't use stderr or stdout with call_subprocess_Popen\")\n    with open(os.devnull, 'wb') as null:\n        # stdin to devnull is a workaround for a crash in a weird Windows\n        # environment where sys.stdin was None\n        params.setdefault('stdin', null)\n        params['stdout'] = null\n        params['stderr'] = null\n        p = subprocess_Popen(command, **params)\n        returncode = p.wait()\n    return returncode\n\n\ndef output_subprocess_Popen(command, **params):\n    \"\"\"\n    Calls subprocess_Popen, returning the output, error and exit code\n    in a tuple.\n    \"\"\"\n    if 'stdout' in params or 'stderr' in params:\n        raise TypeError(\"don't use stderr or stdout with output_subprocess_Popen\")\n    params['stdout'] = subprocess.PIPE\n    params['stderr'] = subprocess.PIPE\n    p = subprocess_Popen(command, **params)\n    # we need to use communicate to make sure we don't deadlock around\n    # the stdout/stderr pipe.\n    out = p.communicate()\n    return out + (p.returncode,)\n", "path": "theano/misc/windows.py"}]}