We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Compiling with USE_LAPACK in v2.0 is broken 
Reported by @fabienalet 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 import os
2 import platform
3 import re
4 import shlex
5 import subprocess
6 import sys
7 
8 from distutils import log
9 from setuptools import setup, Extension
10 from setuptools.command.build_ext import build_ext
11 
12 
13 # Poor man's command-line options parsing
14 def steal_cmake_flags(args):
15     """
16     Extracts CMake-related arguments from ``args``. ``args`` is a list of
17     strings usually equal to ``sys.argv``. All arguments of the form
18     ``--cmake-args=...`` are extracted (i.e. removed from ``args``!) and
19     accumulated. If there are no arguments of the specified form,
20     ``NETKET_CMAKE_FLAGS`` environment variable is used instead.
21     """
22     _ARG_PREFIX = "--cmake-args="
23 
24     def _unquote(x):
25         m = re.match(r"'(.*)'", x)
26         if m:
27             return m.group(1)
28         m = re.match(r'"(.*)"', x)
29         if m:
30             return m.group(1)
31         return x
32 
33     stolen_args = [x for x in args if x.startswith(_ARG_PREFIX)]
34     for x in stolen_args:
35         args.remove(x)
36 
37     if len(stolen_args) > 0:
38         cmake_args = sum(
39             (shlex.split(_unquote(x[len(_ARG_PREFIX) :])) for x in stolen_args), []
40         )
41     else:
42         try:
43             cmake_args = shlex.split(os.environ["NETKET_CMAKE_FLAGS"])
44         except KeyError:
45             cmake_args = []
46     return cmake_args
47 
48 
49 """
50 A list of arguments to be passed to the configuration step of CMake.
51 """
52 _CMAKE_FLAGS = steal_cmake_flags(sys.argv)
53 
54 
55 class CMakeExtension(Extension):
56     def __init__(self, name, sourcedir=""):
57         Extension.__init__(self, name, sources=[])
58         self.sourcedir = os.path.abspath(sourcedir)
59 
60 
61 class CMakeBuild(build_ext):
62     """
63     We extend setuptools to support building extensions with CMake. An extension
64     is built with CMake if it inherits from ``CMakeExtension``.
65     """
66 
67     def build_extension(self, ext):
68         if isinstance(ext, CMakeExtension):  # Building with CMake
69             cwd = os.getcwd()
70             # Create a directory for building out-of-source
71             if not os.path.exists(self.build_temp):
72                 os.makedirs(self.build_temp)
73             # lib_dir is the directory, where the shared libraries will be
74             # stored (it will probably be different from the build_temp
75             # directory so that setuptools find the libraries)
76             lib_dir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name)))
77             if not os.path.exists(lib_dir):
78                 os.makedirs(lib_dir)
79             # Options to pass to CMake during configuration
80             cmake_args = _CMAKE_FLAGS
81             cmake_args.append(
82                 "-DNETKET_PYTHON_VERSION={}.{}.{}".format(*sys.version_info[:3])
83             )
84             cmake_args.append("-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}".format(lib_dir))
85 
86             def _decode(x):
87                 if sys.version_info >= (3, 0):
88                     return x.decode()
89                 else:
90                     return x
91 
92             # Building
93             os.chdir(self.build_temp)
94             try:
95                 # Configuration step
96                 output = subprocess.check_output(
97                     ["cmake", ext.sourcedir] + cmake_args, stderr=subprocess.STDOUT
98                 )
99                 if self.distribution.verbose:
100                     log.info(_decode(output))
101                 if not self.distribution.dry_run:
102                     # Build step
103                     output = subprocess.check_output(
104                         ["cmake", "--build", "."], stderr=subprocess.STDOUT
105                     )
106                     if self.distribution.verbose:
107                         log.info(_decode(output))
108             except subprocess.CalledProcessError as e:
109                 if hasattr(ext, "optional"):
110                     if not ext.optional:
111                         self.warn(_decode(e.output))
112                         raise
113                     self.warn(
114                         'building extension "{}" failed:\n{}'.format(
115                             ext.name, _decode(e.output)
116                         )
117                     )
118                 else:
119                     self.warn(_decode(e.output))
120                     raise
121             os.chdir(cwd)
122         else:  # Fall back to the default method
123             if sys.version_info >= (3, 0):
124                 super().build_extension(ext)
125             else:
126                 super(build_ext, self).build_extension(ext)
127 
128 
129 setup(
130     name="netket",
131     version="2.0b3",
132     author="Giuseppe Carleo et al.",
133     url="http://github.com/netket/netket",
134     author_email="netket@netket.org",
135     license="Apache 2.0",
136     packages=["netket"],
137     ext_modules=[CMakeExtension("netket._C_netket")],
138     long_description="""NetKet is an open - source project delivering cutting - edge
139          methods for the study of many - body quantum systems with artificial
140          neural networks and machine learning techniques.""",
141     cmdclass=dict(build_ext=CMakeBuild),
142     zip_safe=False,
143 )
144
```
--- 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/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -58,6 +58,29 @@
         self.sourcedir = os.path.abspath(sourcedir)
 
 
+def _have_ninja():
+    """
+    Returns `True` if the [ninja](https://ninja-build.org/) build system is
+    available on the system.
+    """
+    with open(os.devnull, "wb") as devnull:
+        try:
+            subprocess.check_call("ninja --version".split(), stdout=devnull)
+        except OSError:
+            return False
+        else:
+            return True
+
+
+def _generator_specified(args):
+    """
+    Returns `True` if `-G` flag was given to CMake.
+    """
+    for _ in filter(lambda f: f.startswith("-G"), args):
+        return True
+    return False
+
+
 class CMakeBuild(build_ext):
     """
     We extend setuptools to support building extensions with CMake. An extension
@@ -82,6 +105,8 @@
                 "-DNETKET_PYTHON_VERSION={}.{}.{}".format(*sys.version_info[:3])
             )
             cmake_args.append("-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}".format(lib_dir))
+            if not _generator_specified(cmake_args) and _have_ninja():
+                cmake_args.append("-GNinja")
 
             def _decode(x):
                 if sys.version_info >= (3, 0):

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -58,6 +58,29 @@\n         self.sourcedir = os.path.abspath(sourcedir)\n \n \n+def _have_ninja():\n+    \"\"\"\n+    Returns `True` if the [ninja](https://ninja-build.org/) build system is\n+    available on the system.\n+    \"\"\"\n+    with open(os.devnull, \"wb\") as devnull:\n+        try:\n+            subprocess.check_call(\"ninja --version\".split(), stdout=devnull)\n+        except OSError:\n+            return False\n+        else:\n+            return True\n+\n+\n+def _generator_specified(args):\n+    \"\"\"\n+    Returns `True` if `-G` flag was given to CMake.\n+    \"\"\"\n+    for _ in filter(lambda f: f.startswith(\"-G\"), args):\n+        return True\n+    return False\n+\n+\n class CMakeBuild(build_ext):\n     \"\"\"\n     We extend setuptools to support building extensions with CMake. An extension\n@@ -82,6 +105,8 @@\n                 \"-DNETKET_PYTHON_VERSION={}.{}.{}\".format(*sys.version_info[:3])\n             )\n             cmake_args.append(\"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}\".format(lib_dir))\n+            if not _generator_specified(cmake_args) and _have_ninja():\n+                cmake_args.append(\"-GNinja\")\n \n             def _decode(x):\n                 if sys.version_info >= (3, 0):\n", "issue": "Compiling with USE_LAPACK in v2.0 is broken \nReported by @fabienalet \n", "before_files": [{"content": "import os\nimport platform\nimport re\nimport shlex\nimport subprocess\nimport sys\n\nfrom distutils import log\nfrom setuptools import setup, Extension\nfrom setuptools.command.build_ext import build_ext\n\n\n# Poor man's command-line options parsing\ndef steal_cmake_flags(args):\n    \"\"\"\n    Extracts CMake-related arguments from ``args``. ``args`` is a list of\n    strings usually equal to ``sys.argv``. All arguments of the form\n    ``--cmake-args=...`` are extracted (i.e. removed from ``args``!) and\n    accumulated. If there are no arguments of the specified form,\n    ``NETKET_CMAKE_FLAGS`` environment variable is used instead.\n    \"\"\"\n    _ARG_PREFIX = \"--cmake-args=\"\n\n    def _unquote(x):\n        m = re.match(r\"'(.*)'\", x)\n        if m:\n            return m.group(1)\n        m = re.match(r'\"(.*)\"', x)\n        if m:\n            return m.group(1)\n        return x\n\n    stolen_args = [x for x in args if x.startswith(_ARG_PREFIX)]\n    for x in stolen_args:\n        args.remove(x)\n\n    if len(stolen_args) > 0:\n        cmake_args = sum(\n            (shlex.split(_unquote(x[len(_ARG_PREFIX) :])) for x in stolen_args), []\n        )\n    else:\n        try:\n            cmake_args = shlex.split(os.environ[\"NETKET_CMAKE_FLAGS\"])\n        except KeyError:\n            cmake_args = []\n    return cmake_args\n\n\n\"\"\"\nA list of arguments to be passed to the configuration step of CMake.\n\"\"\"\n_CMAKE_FLAGS = steal_cmake_flags(sys.argv)\n\n\nclass CMakeExtension(Extension):\n    def __init__(self, name, sourcedir=\"\"):\n        Extension.__init__(self, name, sources=[])\n        self.sourcedir = os.path.abspath(sourcedir)\n\n\nclass CMakeBuild(build_ext):\n    \"\"\"\n    We extend setuptools to support building extensions with CMake. An extension\n    is built with CMake if it inherits from ``CMakeExtension``.\n    \"\"\"\n\n    def build_extension(self, ext):\n        if isinstance(ext, CMakeExtension):  # Building with CMake\n            cwd = os.getcwd()\n            # Create a directory for building out-of-source\n            if not os.path.exists(self.build_temp):\n                os.makedirs(self.build_temp)\n            # lib_dir is the directory, where the shared libraries will be\n            # stored (it will probably be different from the build_temp\n            # directory so that setuptools find the libraries)\n            lib_dir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name)))\n            if not os.path.exists(lib_dir):\n                os.makedirs(lib_dir)\n            # Options to pass to CMake during configuration\n            cmake_args = _CMAKE_FLAGS\n            cmake_args.append(\n                \"-DNETKET_PYTHON_VERSION={}.{}.{}\".format(*sys.version_info[:3])\n            )\n            cmake_args.append(\"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}\".format(lib_dir))\n\n            def _decode(x):\n                if sys.version_info >= (3, 0):\n                    return x.decode()\n                else:\n                    return x\n\n            # Building\n            os.chdir(self.build_temp)\n            try:\n                # Configuration step\n                output = subprocess.check_output(\n                    [\"cmake\", ext.sourcedir] + cmake_args, stderr=subprocess.STDOUT\n                )\n                if self.distribution.verbose:\n                    log.info(_decode(output))\n                if not self.distribution.dry_run:\n                    # Build step\n                    output = subprocess.check_output(\n                        [\"cmake\", \"--build\", \".\"], stderr=subprocess.STDOUT\n                    )\n                    if self.distribution.verbose:\n                        log.info(_decode(output))\n            except subprocess.CalledProcessError as e:\n                if hasattr(ext, \"optional\"):\n                    if not ext.optional:\n                        self.warn(_decode(e.output))\n                        raise\n                    self.warn(\n                        'building extension \"{}\" failed:\\n{}'.format(\n                            ext.name, _decode(e.output)\n                        )\n                    )\n                else:\n                    self.warn(_decode(e.output))\n                    raise\n            os.chdir(cwd)\n        else:  # Fall back to the default method\n            if sys.version_info >= (3, 0):\n                super().build_extension(ext)\n            else:\n                super(build_ext, self).build_extension(ext)\n\n\nsetup(\n    name=\"netket\",\n    version=\"2.0b3\",\n    author=\"Giuseppe Carleo et al.\",\n    url=\"http://github.com/netket/netket\",\n    author_email=\"netket@netket.org\",\n    license=\"Apache 2.0\",\n    packages=[\"netket\"],\n    ext_modules=[CMakeExtension(\"netket._C_netket\")],\n    long_description=\"\"\"NetKet is an open - source project delivering cutting - edge\n         methods for the study of many - body quantum systems with artificial\n         neural networks and machine learning techniques.\"\"\",\n    cmdclass=dict(build_ext=CMakeBuild),\n    zip_safe=False,\n)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport platform\nimport re\nimport shlex\nimport subprocess\nimport sys\n\nfrom distutils import log\nfrom setuptools import setup, Extension\nfrom setuptools.command.build_ext import build_ext\n\n\n# Poor man's command-line options parsing\ndef steal_cmake_flags(args):\n    \"\"\"\n    Extracts CMake-related arguments from ``args``. ``args`` is a list of\n    strings usually equal to ``sys.argv``. All arguments of the form\n    ``--cmake-args=...`` are extracted (i.e. removed from ``args``!) and\n    accumulated. If there are no arguments of the specified form,\n    ``NETKET_CMAKE_FLAGS`` environment variable is used instead.\n    \"\"\"\n    _ARG_PREFIX = \"--cmake-args=\"\n\n    def _unquote(x):\n        m = re.match(r\"'(.*)'\", x)\n        if m:\n            return m.group(1)\n        m = re.match(r'\"(.*)\"', x)\n        if m:\n            return m.group(1)\n        return x\n\n    stolen_args = [x for x in args if x.startswith(_ARG_PREFIX)]\n    for x in stolen_args:\n        args.remove(x)\n\n    if len(stolen_args) > 0:\n        cmake_args = sum(\n            (shlex.split(_unquote(x[len(_ARG_PREFIX) :])) for x in stolen_args), []\n        )\n    else:\n        try:\n            cmake_args = shlex.split(os.environ[\"NETKET_CMAKE_FLAGS\"])\n        except KeyError:\n            cmake_args = []\n    return cmake_args\n\n\n\"\"\"\nA list of arguments to be passed to the configuration step of CMake.\n\"\"\"\n_CMAKE_FLAGS = steal_cmake_flags(sys.argv)\n\n\nclass CMakeExtension(Extension):\n    def __init__(self, name, sourcedir=\"\"):\n        Extension.__init__(self, name, sources=[])\n        self.sourcedir = os.path.abspath(sourcedir)\n\n\ndef _have_ninja():\n    \"\"\"\n    Returns `True` if the [ninja](https://ninja-build.org/) build system is\n    available on the system.\n    \"\"\"\n    with open(os.devnull, \"wb\") as devnull:\n        try:\n            subprocess.check_call(\"ninja --version\".split(), stdout=devnull)\n        except OSError:\n            return False\n        else:\n            return True\n\n\ndef _generator_specified(args):\n    \"\"\"\n    Returns `True` if `-G` flag was given to CMake.\n    \"\"\"\n    for _ in filter(lambda f: f.startswith(\"-G\"), args):\n        return True\n    return False\n\n\nclass CMakeBuild(build_ext):\n    \"\"\"\n    We extend setuptools to support building extensions with CMake. An extension\n    is built with CMake if it inherits from ``CMakeExtension``.\n    \"\"\"\n\n    def build_extension(self, ext):\n        if isinstance(ext, CMakeExtension):  # Building with CMake\n            cwd = os.getcwd()\n            # Create a directory for building out-of-source\n            if not os.path.exists(self.build_temp):\n                os.makedirs(self.build_temp)\n            # lib_dir is the directory, where the shared libraries will be\n            # stored (it will probably be different from the build_temp\n            # directory so that setuptools find the libraries)\n            lib_dir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name)))\n            if not os.path.exists(lib_dir):\n                os.makedirs(lib_dir)\n            # Options to pass to CMake during configuration\n            cmake_args = _CMAKE_FLAGS\n            cmake_args.append(\n                \"-DNETKET_PYTHON_VERSION={}.{}.{}\".format(*sys.version_info[:3])\n            )\n            cmake_args.append(\"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={}\".format(lib_dir))\n            if not _generator_specified(cmake_args) and _have_ninja():\n                cmake_args.append(\"-GNinja\")\n\n            def _decode(x):\n                if sys.version_info >= (3, 0):\n                    return x.decode()\n                else:\n                    return x\n\n            # Building\n            os.chdir(self.build_temp)\n            try:\n                # Configuration step\n                output = subprocess.check_output(\n                    [\"cmake\", ext.sourcedir] + cmake_args, stderr=subprocess.STDOUT\n                )\n                if self.distribution.verbose:\n                    log.info(_decode(output))\n                if not self.distribution.dry_run:\n                    # Build step\n                    output = subprocess.check_output(\n                        [\"cmake\", \"--build\", \".\"], stderr=subprocess.STDOUT\n                    )\n                    if self.distribution.verbose:\n                        log.info(_decode(output))\n            except subprocess.CalledProcessError as e:\n                if hasattr(ext, \"optional\"):\n                    if not ext.optional:\n                        self.warn(_decode(e.output))\n                        raise\n                    self.warn(\n                        'building extension \"{}\" failed:\\n{}'.format(\n                            ext.name, _decode(e.output)\n                        )\n                    )\n                else:\n                    self.warn(_decode(e.output))\n                    raise\n            os.chdir(cwd)\n        else:  # Fall back to the default method\n            if sys.version_info >= (3, 0):\n                super().build_extension(ext)\n            else:\n                super(build_ext, self).build_extension(ext)\n\n\nsetup(\n    name=\"netket\",\n    version=\"2.0b3\",\n    author=\"Giuseppe Carleo et al.\",\n    url=\"http://github.com/netket/netket\",\n    author_email=\"netket@netket.org\",\n    license=\"Apache 2.0\",\n    packages=[\"netket\"],\n    ext_modules=[CMakeExtension(\"netket._C_netket\")],\n    long_description=\"\"\"NetKet is an open - source project delivering cutting - edge\n         methods for the study of many - body quantum systems with artificial\n         neural networks and machine learning techniques.\"\"\",\n    cmdclass=dict(build_ext=CMakeBuild),\n    zip_safe=False,\n)\n", "path": "setup.py"}]}