We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Biopython is not installable as a git repository with Poetry
### Setup

I am reporting a problem with Biopython version, Python version, and operating
system as follows:

```shell
❯ python -c 'import sys; print(sys.version)'
3.10.9 (main, Dec  7 2022, 01:12:00) [GCC 9.4.0]
```

```shell
❯ python -c 'import platform; print(platform.python_implementation()); print(platform.platform())'
CPython
Linux-5.15.90.1-microsoft-standard-WSL2-x86_64-with-glibc2.31
```

(This is an install issue, so certainly no install)
```shell
❯ python -c 'import Bio; print(Bio.__version__)'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'Bio'
```

### Expected behaviour

With the following in `pyproject.toml` under `[tool.poetry.dependencies]`:

```toml
biopython = { git = "https://github.com/biopython/biopython", rev="ca64586b1c6f6c8439c88e576fed091c923ad8f1" }
```

running `poetry lock` should update with the relevant biopython package.

### Actual behaviour

```shell
❯ poetry lock
Updating dependencies
Resolving dependencies... (0.0s)

Invalid version 'Undefined' on package biopython
```

### Steps to reproduce

Follow the above steps.

### Suggested Remediation

- Option A: Add a `setup.cfg` with version information as [here](https://packaging.python.org/en/latest/guides/single-sourcing-package-version/)
- Option B: Move to [PEP 518 pyproject.toml](https://peps.python.org/pep-0518/) 

--- 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 """setuptools based setup script for Biopython.
2 
3 This uses setuptools which is now the standard python mechanism for
4 installing packages. If you have downloaded and uncompressed the
5 Biopython source code, or fetched it from git, for the simplest
6 installation just type the command::
7 
8     python setup.py install
9 
10 However, you would normally install the latest Biopython release from
11 the PyPI archive with::
12 
13     pip install biopython
14 
15 For more in-depth instructions, see the installation section of the
16 Biopython manual, linked to from:
17 
18 http://biopython.org/wiki/Documentation
19 
20 Or, if all else fails, feel free to write to the sign up to the Biopython
21 mailing list and ask for help.  See:
22 
23 http://biopython.org/wiki/Mailing_lists
24 """
25 
26 import sys
27 import os
28 
29 try:
30     from setuptools import setup
31     from setuptools import Command
32     from setuptools import Extension
33 except ImportError:
34     sys.exit(
35         "We need the Python library setuptools to be installed. "
36         "Try running: python -m ensurepip"
37     )
38 
39 if "bdist_wheel" in sys.argv:
40     try:
41         import wheel  # noqa: F401
42     except ImportError:
43         sys.exit(
44             "We need both setuptools AND wheel packages installed "
45             "for bdist_wheel to work. Try running: pip install wheel"
46         )
47 
48 
49 # Make sure we have the right Python version.
50 MIN_PY_VER = (3, 8)
51 if sys.version_info[:2] < MIN_PY_VER:
52     sys.stderr.write(
53         ("ERROR: Biopython requires Python %i.%i or later. " % MIN_PY_VER)
54         + ("Python %d.%d detected.\n" % sys.version_info[:2])
55     )
56     sys.exit(1)
57 
58 
59 class test_biopython(Command):
60     """Run all of the tests for the package.
61 
62     This is a automatic test run class to make distutils kind of act like
63     perl. With this you can do:
64 
65     python setup.py build
66     python setup.py install
67     python setup.py test
68 
69     """
70 
71     description = "Automatically run the test suite for Biopython."
72     user_options = [("offline", None, "Don't run online tests")]
73 
74     def initialize_options(self):
75         """No-op, initialise options."""
76         self.offline = None
77 
78     def finalize_options(self):
79         """No-op, finalise options."""
80         pass
81 
82     def run(self):
83         """Run the tests."""
84         this_dir = os.getcwd()
85 
86         # change to the test dir and run the tests
87         os.chdir("Tests")
88         sys.path.insert(0, "")
89         import run_tests
90 
91         if self.offline:
92             run_tests.main(["--offline"])
93         else:
94             run_tests.main([])
95 
96         # change back to the current directory
97         os.chdir(this_dir)
98 
99 
100 def can_import(module_name):
101     """Check we can import the requested module."""
102     try:
103         return __import__(module_name)
104     except ImportError:
105         return None
106 
107 
108 # Using requirements.txt is preferred for an application
109 # (and likely will pin specific version numbers), using
110 # setup.py's install_requires is preferred for a library
111 # (and should try not to be overly narrow with versions).
112 REQUIRES = ["numpy"]
113 
114 # --- set up the packages we are going to install
115 # standard biopython packages
116 PACKAGES = [
117     "Bio",
118     "Bio.Affy",
119     "Bio.Align",
120     "Bio.Align.Applications",
121     "Bio.Align.substitution_matrices",
122     "Bio.AlignIO",
123     "Bio.Alphabet",
124     "Bio.Application",
125     "Bio.Blast",
126     "Bio.CAPS",
127     "Bio.Cluster",
128     "Bio.codonalign",
129     "Bio.Compass",
130     "Bio.Data",
131     "Bio.Emboss",
132     "Bio.Entrez",
133     "Bio.ExPASy",
134     "Bio.GenBank",
135     "Bio.Geo",
136     "Bio.Graphics",
137     "Bio.Graphics.GenomeDiagram",
138     "Bio.HMM",
139     "Bio.KEGG",
140     "Bio.KEGG.Compound",
141     "Bio.KEGG.Enzyme",
142     "Bio.KEGG.Gene",
143     "Bio.KEGG.Map",
144     "Bio.PDB.mmtf",
145     "Bio.KEGG.KGML",
146     "Bio.Medline",
147     "Bio.motifs",
148     "Bio.motifs.applications",
149     "Bio.motifs.jaspar",
150     "Bio.Nexus",
151     "Bio.NMR",
152     "Bio.Pathway",
153     "Bio.Pathway.Rep",
154     "Bio.PDB",
155     "Bio.phenotype",
156     "Bio.PopGen",
157     "Bio.PopGen.GenePop",
158     "Bio.Restriction",
159     "Bio.SCOP",
160     "Bio.SearchIO",
161     "Bio.SearchIO._legacy",
162     "Bio.SearchIO._model",
163     "Bio.SearchIO.BlastIO",
164     "Bio.SearchIO.HHsuiteIO",
165     "Bio.SearchIO.HmmerIO",
166     "Bio.SearchIO.ExonerateIO",
167     "Bio.SearchIO.InterproscanIO",
168     "Bio.SeqIO",
169     "Bio.SeqUtils",
170     "Bio.Sequencing",
171     "Bio.Sequencing.Applications",
172     "Bio.SVDSuperimposer",
173     "Bio.PDB.QCPSuperimposer",
174     "Bio.SwissProt",
175     "Bio.TogoWS",
176     "Bio.Phylo",
177     "Bio.Phylo.Applications",
178     "Bio.Phylo.PAML",
179     "Bio.UniGene",
180     "Bio.UniProt",
181     "Bio.Wise",
182     # Other top level packages,
183     "BioSQL",
184 ]
185 
186 EXTENSIONS = [
187     Extension("Bio.Align._aligners", ["Bio/Align/_aligners.c"]),
188     Extension("Bio.cpairwise2", ["Bio/cpairwise2module.c"]),
189     Extension("Bio.Nexus.cnexus", ["Bio/Nexus/cnexus.c"]),
190     Extension(
191         "Bio.PDB.QCPSuperimposer.qcprotmodule",
192         ["Bio/PDB/QCPSuperimposer/qcprotmodule.c"],
193     ),
194     Extension("Bio.motifs._pwm", ["Bio/motifs/_pwm.c"]),
195     Extension(
196         "Bio.Cluster._cluster", ["Bio/Cluster/cluster.c", "Bio/Cluster/clustermodule.c"]
197     ),
198     Extension("Bio.PDB.kdtrees", ["Bio/PDB/kdtrees.c"]),
199     Extension("Bio.PDB.ccealign", ["Bio/PDB/ccealignmodule.c"]),
200     Extension("Bio.SeqIO._twoBitIO", ["Bio/SeqIO/_twoBitIO.c"]),
201 ]
202 
203 # We now define the Biopython version number in Bio/__init__.py
204 # Here we can't use "import Bio" then "Bio.__version__" as that would
205 # tell us the version of Biopython already installed (if any).
206 __version__ = "Undefined"
207 for line in open("Bio/__init__.py"):
208     if line.startswith("__version__"):
209         exec(line.strip())
210 
211 # We now load in our reStructuredText README.rst file to pass explicitly in the
212 # metadata, since at time of writing PyPI did not do this for us.
213 #
214 # Must make encoding explicit to avoid any conflict with the local default.
215 # Currently keeping README as ASCII (might switch to UTF8 later if needed).
216 # If any invalid character does appear in README, this will fail and alert us.
217 with open("README.rst", encoding="ascii") as handle:
218     readme_rst = handle.read()
219 
220 setup(
221     name="biopython",
222     version=__version__,
223     author="The Biopython Contributors",
224     author_email="biopython@biopython.org",
225     url="https://biopython.org/",
226     description="Freely available tools for computational molecular biology.",
227     long_description=readme_rst,
228     project_urls={
229         "Documentation": "https://biopython.org/wiki/Documentation",
230         "Source": "https://github.com/biopython/biopython/",
231         "Tracker": "https://github.com/biopython/biopython/issues",
232     },
233     classifiers=[
234         "Development Status :: 5 - Production/Stable",
235         "Intended Audience :: Developers",
236         "Intended Audience :: Science/Research",
237         "License :: Freely Distributable",
238         # Technically the "Biopython License Agreement" is not OSI approved,
239         # but is almost https://opensource.org/licenses/HPND so might put:
240         # 'License :: OSI Approved',
241         # To resolve this we are moving to dual-licensing with 3-clause BSD:
242         # 'License :: OSI Approved :: BSD License',
243         "Operating System :: OS Independent",
244         "Programming Language :: Python",
245         "Programming Language :: Python :: 3",
246         "Programming Language :: Python :: 3.8",
247         "Programming Language :: Python :: 3.9",
248         "Programming Language :: Python :: 3.10",
249         "Programming Language :: Python :: 3.11",
250         "Topic :: Scientific/Engineering",
251         "Topic :: Scientific/Engineering :: Bio-Informatics",
252         "Topic :: Software Development :: Libraries :: Python Modules",
253     ],
254     cmdclass={"test": test_biopython},
255     packages=PACKAGES,
256     ext_modules=EXTENSIONS,
257     include_package_data=True,  # done via MANIFEST.in under setuptools
258     install_requires=REQUIRES,
259     python_requires=">=%i.%i" % MIN_PY_VER,
260 )
261
```
--- 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
@@ -25,6 +25,7 @@
 
 import sys
 import os
+import ast
 
 try:
     from setuptools import setup
@@ -200,13 +201,16 @@
     Extension("Bio.SeqIO._twoBitIO", ["Bio/SeqIO/_twoBitIO.c"]),
 ]
 
-# We now define the Biopython version number in Bio/__init__.py
-# Here we can't use "import Bio" then "Bio.__version__" as that would
-# tell us the version of Biopython already installed (if any).
-__version__ = "Undefined"
-for line in open("Bio/__init__.py"):
-    if line.startswith("__version__"):
-        exec(line.strip())
+
+def get_version():
+    """Get version number from __init__.py."""
+    for line in open("Bio/__init__.py"):
+        if line.startswith("__version__ = "):
+            return ast.literal_eval(line.split("=")[1].strip())
+    return "Undefined"
+
+
+__version__ = get_version()
 
 # We now load in our reStructuredText README.rst file to pass explicitly in the
 # metadata, since at time of writing PyPI did not do this for us.

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -25,6 +25,7 @@\n \n import sys\n import os\n+import ast\n \n try:\n     from setuptools import setup\n@@ -200,13 +201,16 @@\n     Extension(\"Bio.SeqIO._twoBitIO\", [\"Bio/SeqIO/_twoBitIO.c\"]),\n ]\n \n-# We now define the Biopython version number in Bio/__init__.py\n-# Here we can't use \"import Bio\" then \"Bio.__version__\" as that would\n-# tell us the version of Biopython already installed (if any).\n-__version__ = \"Undefined\"\n-for line in open(\"Bio/__init__.py\"):\n-    if line.startswith(\"__version__\"):\n-        exec(line.strip())\n+\n+def get_version():\n+    \"\"\"Get version number from __init__.py.\"\"\"\n+    for line in open(\"Bio/__init__.py\"):\n+        if line.startswith(\"__version__ = \"):\n+            return ast.literal_eval(line.split(\"=\")[1].strip())\n+    return \"Undefined\"\n+\n+\n+__version__ = get_version()\n \n # We now load in our reStructuredText README.rst file to pass explicitly in the\n # metadata, since at time of writing PyPI did not do this for us.\n", "issue": "Biopython is not installable as a git repository with Poetry\n### Setup\r\n\r\nI am reporting a problem with Biopython version, Python version, and operating\r\nsystem as follows:\r\n\r\n```shell\r\n\u276f python -c 'import sys; print(sys.version)'\r\n3.10.9 (main, Dec  7 2022, 01:12:00) [GCC 9.4.0]\r\n```\r\n\r\n```shell\r\n\u276f python -c 'import platform; print(platform.python_implementation()); print(platform.platform())'\r\nCPython\r\nLinux-5.15.90.1-microsoft-standard-WSL2-x86_64-with-glibc2.31\r\n```\r\n\r\n(This is an install issue, so certainly no install)\r\n```shell\r\n\u276f python -c 'import Bio; print(Bio.__version__)'\r\nTraceback (most recent call last):\r\n  File \"<string>\", line 1, in <module>\r\nModuleNotFoundError: No module named 'Bio'\r\n```\r\n\r\n### Expected behaviour\r\n\r\nWith the following in `pyproject.toml` under `[tool.poetry.dependencies]`:\r\n\r\n```toml\r\nbiopython = { git = \"https://github.com/biopython/biopython\", rev=\"ca64586b1c6f6c8439c88e576fed091c923ad8f1\" }\r\n```\r\n\r\nrunning `poetry lock` should update with the relevant biopython package.\r\n\r\n### Actual behaviour\r\n\r\n```shell\r\n\u276f poetry lock\r\nUpdating dependencies\r\nResolving dependencies... (0.0s)\r\n\r\nInvalid version 'Undefined' on package biopython\r\n```\r\n\r\n### Steps to reproduce\r\n\r\nFollow the above steps.\r\n\r\n### Suggested Remediation\r\n\r\n- Option A: Add a `setup.cfg` with version information as [here](https://packaging.python.org/en/latest/guides/single-sourcing-package-version/)\r\n- Option B: Move to [PEP 518 pyproject.toml](https://peps.python.org/pep-0518/) \n", "before_files": [{"content": "\"\"\"setuptools based setup script for Biopython.\n\nThis uses setuptools which is now the standard python mechanism for\ninstalling packages. If you have downloaded and uncompressed the\nBiopython source code, or fetched it from git, for the simplest\ninstallation just type the command::\n\n    python setup.py install\n\nHowever, you would normally install the latest Biopython release from\nthe PyPI archive with::\n\n    pip install biopython\n\nFor more in-depth instructions, see the installation section of the\nBiopython manual, linked to from:\n\nhttp://biopython.org/wiki/Documentation\n\nOr, if all else fails, feel free to write to the sign up to the Biopython\nmailing list and ask for help.  See:\n\nhttp://biopython.org/wiki/Mailing_lists\n\"\"\"\n\nimport sys\nimport os\n\ntry:\n    from setuptools import setup\n    from setuptools import Command\n    from setuptools import Extension\nexcept ImportError:\n    sys.exit(\n        \"We need the Python library setuptools to be installed. \"\n        \"Try running: python -m ensurepip\"\n    )\n\nif \"bdist_wheel\" in sys.argv:\n    try:\n        import wheel  # noqa: F401\n    except ImportError:\n        sys.exit(\n            \"We need both setuptools AND wheel packages installed \"\n            \"for bdist_wheel to work. Try running: pip install wheel\"\n        )\n\n\n# Make sure we have the right Python version.\nMIN_PY_VER = (3, 8)\nif sys.version_info[:2] < MIN_PY_VER:\n    sys.stderr.write(\n        (\"ERROR: Biopython requires Python %i.%i or later. \" % MIN_PY_VER)\n        + (\"Python %d.%d detected.\\n\" % sys.version_info[:2])\n    )\n    sys.exit(1)\n\n\nclass test_biopython(Command):\n    \"\"\"Run all of the tests for the package.\n\n    This is a automatic test run class to make distutils kind of act like\n    perl. With this you can do:\n\n    python setup.py build\n    python setup.py install\n    python setup.py test\n\n    \"\"\"\n\n    description = \"Automatically run the test suite for Biopython.\"\n    user_options = [(\"offline\", None, \"Don't run online tests\")]\n\n    def initialize_options(self):\n        \"\"\"No-op, initialise options.\"\"\"\n        self.offline = None\n\n    def finalize_options(self):\n        \"\"\"No-op, finalise options.\"\"\"\n        pass\n\n    def run(self):\n        \"\"\"Run the tests.\"\"\"\n        this_dir = os.getcwd()\n\n        # change to the test dir and run the tests\n        os.chdir(\"Tests\")\n        sys.path.insert(0, \"\")\n        import run_tests\n\n        if self.offline:\n            run_tests.main([\"--offline\"])\n        else:\n            run_tests.main([])\n\n        # change back to the current directory\n        os.chdir(this_dir)\n\n\ndef can_import(module_name):\n    \"\"\"Check we can import the requested module.\"\"\"\n    try:\n        return __import__(module_name)\n    except ImportError:\n        return None\n\n\n# Using requirements.txt is preferred for an application\n# (and likely will pin specific version numbers), using\n# setup.py's install_requires is preferred for a library\n# (and should try not to be overly narrow with versions).\nREQUIRES = [\"numpy\"]\n\n# --- set up the packages we are going to install\n# standard biopython packages\nPACKAGES = [\n    \"Bio\",\n    \"Bio.Affy\",\n    \"Bio.Align\",\n    \"Bio.Align.Applications\",\n    \"Bio.Align.substitution_matrices\",\n    \"Bio.AlignIO\",\n    \"Bio.Alphabet\",\n    \"Bio.Application\",\n    \"Bio.Blast\",\n    \"Bio.CAPS\",\n    \"Bio.Cluster\",\n    \"Bio.codonalign\",\n    \"Bio.Compass\",\n    \"Bio.Data\",\n    \"Bio.Emboss\",\n    \"Bio.Entrez\",\n    \"Bio.ExPASy\",\n    \"Bio.GenBank\",\n    \"Bio.Geo\",\n    \"Bio.Graphics\",\n    \"Bio.Graphics.GenomeDiagram\",\n    \"Bio.HMM\",\n    \"Bio.KEGG\",\n    \"Bio.KEGG.Compound\",\n    \"Bio.KEGG.Enzyme\",\n    \"Bio.KEGG.Gene\",\n    \"Bio.KEGG.Map\",\n    \"Bio.PDB.mmtf\",\n    \"Bio.KEGG.KGML\",\n    \"Bio.Medline\",\n    \"Bio.motifs\",\n    \"Bio.motifs.applications\",\n    \"Bio.motifs.jaspar\",\n    \"Bio.Nexus\",\n    \"Bio.NMR\",\n    \"Bio.Pathway\",\n    \"Bio.Pathway.Rep\",\n    \"Bio.PDB\",\n    \"Bio.phenotype\",\n    \"Bio.PopGen\",\n    \"Bio.PopGen.GenePop\",\n    \"Bio.Restriction\",\n    \"Bio.SCOP\",\n    \"Bio.SearchIO\",\n    \"Bio.SearchIO._legacy\",\n    \"Bio.SearchIO._model\",\n    \"Bio.SearchIO.BlastIO\",\n    \"Bio.SearchIO.HHsuiteIO\",\n    \"Bio.SearchIO.HmmerIO\",\n    \"Bio.SearchIO.ExonerateIO\",\n    \"Bio.SearchIO.InterproscanIO\",\n    \"Bio.SeqIO\",\n    \"Bio.SeqUtils\",\n    \"Bio.Sequencing\",\n    \"Bio.Sequencing.Applications\",\n    \"Bio.SVDSuperimposer\",\n    \"Bio.PDB.QCPSuperimposer\",\n    \"Bio.SwissProt\",\n    \"Bio.TogoWS\",\n    \"Bio.Phylo\",\n    \"Bio.Phylo.Applications\",\n    \"Bio.Phylo.PAML\",\n    \"Bio.UniGene\",\n    \"Bio.UniProt\",\n    \"Bio.Wise\",\n    # Other top level packages,\n    \"BioSQL\",\n]\n\nEXTENSIONS = [\n    Extension(\"Bio.Align._aligners\", [\"Bio/Align/_aligners.c\"]),\n    Extension(\"Bio.cpairwise2\", [\"Bio/cpairwise2module.c\"]),\n    Extension(\"Bio.Nexus.cnexus\", [\"Bio/Nexus/cnexus.c\"]),\n    Extension(\n        \"Bio.PDB.QCPSuperimposer.qcprotmodule\",\n        [\"Bio/PDB/QCPSuperimposer/qcprotmodule.c\"],\n    ),\n    Extension(\"Bio.motifs._pwm\", [\"Bio/motifs/_pwm.c\"]),\n    Extension(\n        \"Bio.Cluster._cluster\", [\"Bio/Cluster/cluster.c\", \"Bio/Cluster/clustermodule.c\"]\n    ),\n    Extension(\"Bio.PDB.kdtrees\", [\"Bio/PDB/kdtrees.c\"]),\n    Extension(\"Bio.PDB.ccealign\", [\"Bio/PDB/ccealignmodule.c\"]),\n    Extension(\"Bio.SeqIO._twoBitIO\", [\"Bio/SeqIO/_twoBitIO.c\"]),\n]\n\n# We now define the Biopython version number in Bio/__init__.py\n# Here we can't use \"import Bio\" then \"Bio.__version__\" as that would\n# tell us the version of Biopython already installed (if any).\n__version__ = \"Undefined\"\nfor line in open(\"Bio/__init__.py\"):\n    if line.startswith(\"__version__\"):\n        exec(line.strip())\n\n# We now load in our reStructuredText README.rst file to pass explicitly in the\n# metadata, since at time of writing PyPI did not do this for us.\n#\n# Must make encoding explicit to avoid any conflict with the local default.\n# Currently keeping README as ASCII (might switch to UTF8 later if needed).\n# If any invalid character does appear in README, this will fail and alert us.\nwith open(\"README.rst\", encoding=\"ascii\") as handle:\n    readme_rst = handle.read()\n\nsetup(\n    name=\"biopython\",\n    version=__version__,\n    author=\"The Biopython Contributors\",\n    author_email=\"biopython@biopython.org\",\n    url=\"https://biopython.org/\",\n    description=\"Freely available tools for computational molecular biology.\",\n    long_description=readme_rst,\n    project_urls={\n        \"Documentation\": \"https://biopython.org/wiki/Documentation\",\n        \"Source\": \"https://github.com/biopython/biopython/\",\n        \"Tracker\": \"https://github.com/biopython/biopython/issues\",\n    },\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Science/Research\",\n        \"License :: Freely Distributable\",\n        # Technically the \"Biopython License Agreement\" is not OSI approved,\n        # but is almost https://opensource.org/licenses/HPND so might put:\n        # 'License :: OSI Approved',\n        # To resolve this we are moving to dual-licensing with 3-clause BSD:\n        # 'License :: OSI Approved :: BSD License',\n        \"Operating System :: OS Independent\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"Topic :: Scientific/Engineering\",\n        \"Topic :: Scientific/Engineering :: Bio-Informatics\",\n        \"Topic :: Software Development :: Libraries :: Python Modules\",\n    ],\n    cmdclass={\"test\": test_biopython},\n    packages=PACKAGES,\n    ext_modules=EXTENSIONS,\n    include_package_data=True,  # done via MANIFEST.in under setuptools\n    install_requires=REQUIRES,\n    python_requires=\">=%i.%i\" % MIN_PY_VER,\n)\n", "path": "setup.py"}], "after_files": [{"content": "\"\"\"setuptools based setup script for Biopython.\n\nThis uses setuptools which is now the standard python mechanism for\ninstalling packages. If you have downloaded and uncompressed the\nBiopython source code, or fetched it from git, for the simplest\ninstallation just type the command::\n\n    python setup.py install\n\nHowever, you would normally install the latest Biopython release from\nthe PyPI archive with::\n\n    pip install biopython\n\nFor more in-depth instructions, see the installation section of the\nBiopython manual, linked to from:\n\nhttp://biopython.org/wiki/Documentation\n\nOr, if all else fails, feel free to write to the sign up to the Biopython\nmailing list and ask for help.  See:\n\nhttp://biopython.org/wiki/Mailing_lists\n\"\"\"\n\nimport sys\nimport os\nimport ast\n\ntry:\n    from setuptools import setup\n    from setuptools import Command\n    from setuptools import Extension\nexcept ImportError:\n    sys.exit(\n        \"We need the Python library setuptools to be installed. \"\n        \"Try running: python -m ensurepip\"\n    )\n\nif \"bdist_wheel\" in sys.argv:\n    try:\n        import wheel  # noqa: F401\n    except ImportError:\n        sys.exit(\n            \"We need both setuptools AND wheel packages installed \"\n            \"for bdist_wheel to work. Try running: pip install wheel\"\n        )\n\n\n# Make sure we have the right Python version.\nMIN_PY_VER = (3, 8)\nif sys.version_info[:2] < MIN_PY_VER:\n    sys.stderr.write(\n        (\"ERROR: Biopython requires Python %i.%i or later. \" % MIN_PY_VER)\n        + (\"Python %d.%d detected.\\n\" % sys.version_info[:2])\n    )\n    sys.exit(1)\n\n\nclass test_biopython(Command):\n    \"\"\"Run all of the tests for the package.\n\n    This is a automatic test run class to make distutils kind of act like\n    perl. With this you can do:\n\n    python setup.py build\n    python setup.py install\n    python setup.py test\n\n    \"\"\"\n\n    description = \"Automatically run the test suite for Biopython.\"\n    user_options = [(\"offline\", None, \"Don't run online tests\")]\n\n    def initialize_options(self):\n        \"\"\"No-op, initialise options.\"\"\"\n        self.offline = None\n\n    def finalize_options(self):\n        \"\"\"No-op, finalise options.\"\"\"\n        pass\n\n    def run(self):\n        \"\"\"Run the tests.\"\"\"\n        this_dir = os.getcwd()\n\n        # change to the test dir and run the tests\n        os.chdir(\"Tests\")\n        sys.path.insert(0, \"\")\n        import run_tests\n\n        if self.offline:\n            run_tests.main([\"--offline\"])\n        else:\n            run_tests.main([])\n\n        # change back to the current directory\n        os.chdir(this_dir)\n\n\ndef can_import(module_name):\n    \"\"\"Check we can import the requested module.\"\"\"\n    try:\n        return __import__(module_name)\n    except ImportError:\n        return None\n\n\n# Using requirements.txt is preferred for an application\n# (and likely will pin specific version numbers), using\n# setup.py's install_requires is preferred for a library\n# (and should try not to be overly narrow with versions).\nREQUIRES = [\"numpy\"]\n\n# --- set up the packages we are going to install\n# standard biopython packages\nPACKAGES = [\n    \"Bio\",\n    \"Bio.Affy\",\n    \"Bio.Align\",\n    \"Bio.Align.Applications\",\n    \"Bio.Align.substitution_matrices\",\n    \"Bio.AlignIO\",\n    \"Bio.Alphabet\",\n    \"Bio.Application\",\n    \"Bio.Blast\",\n    \"Bio.CAPS\",\n    \"Bio.Cluster\",\n    \"Bio.codonalign\",\n    \"Bio.Compass\",\n    \"Bio.Data\",\n    \"Bio.Emboss\",\n    \"Bio.Entrez\",\n    \"Bio.ExPASy\",\n    \"Bio.GenBank\",\n    \"Bio.Geo\",\n    \"Bio.Graphics\",\n    \"Bio.Graphics.GenomeDiagram\",\n    \"Bio.HMM\",\n    \"Bio.KEGG\",\n    \"Bio.KEGG.Compound\",\n    \"Bio.KEGG.Enzyme\",\n    \"Bio.KEGG.Gene\",\n    \"Bio.KEGG.Map\",\n    \"Bio.PDB.mmtf\",\n    \"Bio.KEGG.KGML\",\n    \"Bio.Medline\",\n    \"Bio.motifs\",\n    \"Bio.motifs.applications\",\n    \"Bio.motifs.jaspar\",\n    \"Bio.Nexus\",\n    \"Bio.NMR\",\n    \"Bio.Pathway\",\n    \"Bio.Pathway.Rep\",\n    \"Bio.PDB\",\n    \"Bio.phenotype\",\n    \"Bio.PopGen\",\n    \"Bio.PopGen.GenePop\",\n    \"Bio.Restriction\",\n    \"Bio.SCOP\",\n    \"Bio.SearchIO\",\n    \"Bio.SearchIO._legacy\",\n    \"Bio.SearchIO._model\",\n    \"Bio.SearchIO.BlastIO\",\n    \"Bio.SearchIO.HHsuiteIO\",\n    \"Bio.SearchIO.HmmerIO\",\n    \"Bio.SearchIO.ExonerateIO\",\n    \"Bio.SearchIO.InterproscanIO\",\n    \"Bio.SeqIO\",\n    \"Bio.SeqUtils\",\n    \"Bio.Sequencing\",\n    \"Bio.Sequencing.Applications\",\n    \"Bio.SVDSuperimposer\",\n    \"Bio.PDB.QCPSuperimposer\",\n    \"Bio.SwissProt\",\n    \"Bio.TogoWS\",\n    \"Bio.Phylo\",\n    \"Bio.Phylo.Applications\",\n    \"Bio.Phylo.PAML\",\n    \"Bio.UniGene\",\n    \"Bio.UniProt\",\n    \"Bio.Wise\",\n    # Other top level packages,\n    \"BioSQL\",\n]\n\nEXTENSIONS = [\n    Extension(\"Bio.Align._aligners\", [\"Bio/Align/_aligners.c\"]),\n    Extension(\"Bio.cpairwise2\", [\"Bio/cpairwise2module.c\"]),\n    Extension(\"Bio.Nexus.cnexus\", [\"Bio/Nexus/cnexus.c\"]),\n    Extension(\n        \"Bio.PDB.QCPSuperimposer.qcprotmodule\",\n        [\"Bio/PDB/QCPSuperimposer/qcprotmodule.c\"],\n    ),\n    Extension(\"Bio.motifs._pwm\", [\"Bio/motifs/_pwm.c\"]),\n    Extension(\n        \"Bio.Cluster._cluster\", [\"Bio/Cluster/cluster.c\", \"Bio/Cluster/clustermodule.c\"]\n    ),\n    Extension(\"Bio.PDB.kdtrees\", [\"Bio/PDB/kdtrees.c\"]),\n    Extension(\"Bio.PDB.ccealign\", [\"Bio/PDB/ccealignmodule.c\"]),\n    Extension(\"Bio.SeqIO._twoBitIO\", [\"Bio/SeqIO/_twoBitIO.c\"]),\n]\n\n\ndef get_version():\n    \"\"\"Get version number from __init__.py.\"\"\"\n    for line in open(\"Bio/__init__.py\"):\n        if line.startswith(\"__version__ = \"):\n            return ast.literal_eval(line.split(\"=\")[1].strip())\n    return \"Undefined\"\n\n\n__version__ = get_version()\n\n# We now load in our reStructuredText README.rst file to pass explicitly in the\n# metadata, since at time of writing PyPI did not do this for us.\n#\n# Must make encoding explicit to avoid any conflict with the local default.\n# Currently keeping README as ASCII (might switch to UTF8 later if needed).\n# If any invalid character does appear in README, this will fail and alert us.\nwith open(\"README.rst\", encoding=\"ascii\") as handle:\n    readme_rst = handle.read()\n\nsetup(\n    name=\"biopython\",\n    version=__version__,\n    author=\"The Biopython Contributors\",\n    author_email=\"biopython@biopython.org\",\n    url=\"https://biopython.org/\",\n    description=\"Freely available tools for computational molecular biology.\",\n    long_description=readme_rst,\n    project_urls={\n        \"Documentation\": \"https://biopython.org/wiki/Documentation\",\n        \"Source\": \"https://github.com/biopython/biopython/\",\n        \"Tracker\": \"https://github.com/biopython/biopython/issues\",\n    },\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Science/Research\",\n        \"License :: Freely Distributable\",\n        # Technically the \"Biopython License Agreement\" is not OSI approved,\n        # but is almost https://opensource.org/licenses/HPND so might put:\n        # 'License :: OSI Approved',\n        # To resolve this we are moving to dual-licensing with 3-clause BSD:\n        # 'License :: OSI Approved :: BSD License',\n        \"Operating System :: OS Independent\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"Topic :: Scientific/Engineering\",\n        \"Topic :: Scientific/Engineering :: Bio-Informatics\",\n        \"Topic :: Software Development :: Libraries :: Python Modules\",\n    ],\n    cmdclass={\"test\": test_biopython},\n    packages=PACKAGES,\n    ext_modules=EXTENSIONS,\n    include_package_data=True,  # done via MANIFEST.in under setuptools\n    install_requires=REQUIRES,\n    python_requires=\">=%i.%i\" % MIN_PY_VER,\n)\n", "path": "setup.py"}]}