We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[DOC-FIX] Add JFrog MLFlow plugin in order to store your artifacts on a preferred JFrog repository
### Willingness to contribute

Yes. I can contribute a documentation fix independently.

### URL(s) with the issue

https://mlflow.org/docs/latest/plugins.html#artifact-repository-plugins

### Description of proposal (what needs changing)

Include details about the [mlflow-jfrog-plugin](https://pypi.org/project/mlflow-jfrog-plugin), and also provide simplified installation instructions, such as `pip install mlflow[jfrog]`

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `dev/pyproject.py`
Content:
```
1 from __future__ import annotations
2 
3 import re
4 import shutil
5 import subprocess
6 from pathlib import Path
7 
8 import toml
9 
10 SEPARATOR = """
11 # Package metadata: can't be updated manually, use dev/pyproject.py
12 # -----------------------------------------------------------------
13 # Dev tool settings: can be updated manually
14 
15 """
16 
17 
18 def read_requirements(path: Path) -> list[str]:
19     lines = (l.strip() for l in path.read_text().splitlines())
20     return [l for l in lines if l and not l.startswith("#")]
21 
22 
23 def build(skinny: bool) -> None:
24     skinny_requirements = read_requirements(Path("requirements", "skinny-requirements.txt"))
25     core_requirements = read_requirements(Path("requirements", "core-requirements.txt"))
26     gateways_requirements = read_requirements(Path("requirements", "gateway-requirements.txt"))
27     version = re.search(
28         r'^VERSION = "([a-z0-9\.]+)"$', Path("mlflow", "version.py").read_text(), re.MULTILINE
29     ).group(1)
30     python_version = Path("requirements", "python-version.txt").read_text().strip()
31     data = {
32         "build-system": {
33             "requires": ["setuptools"],
34             "build-backend": "setuptools.build_meta",
35         },
36         "project": {
37             "name": "mlflow" if not skinny else "mlflow-skinny",
38             "version": version,
39             "maintainers": [
40                 {"name": "Databricks", "email": "mlflow-oss-maintainers@googlegroups.com "}
41             ],
42             "description": (
43                 "MLflow is an open source platform for the complete machine learning lifecycle"
44             ),
45             "readme": "README.rst",
46             "license": {
47                 "file": "LICENSE.txt",
48             },
49             "keywords": ["mlflow", "ai", "databricks"],
50             "classifiers": [
51                 "Development Status :: 5 - Production/Stable",
52                 "Intended Audience :: Developers",
53                 "Intended Audience :: End Users/Desktop",
54                 "Intended Audience :: Science/Research",
55                 "Intended Audience :: Information Technology",
56                 "Topic :: Scientific/Engineering :: Artificial Intelligence",
57                 "Topic :: Software Development :: Libraries :: Python Modules",
58                 "License :: OSI Approved :: Apache Software License",
59                 "Operating System :: OS Independent",
60                 f"Programming Language :: Python :: {python_version}",
61             ],
62             "requires-python": f">={python_version}",
63             "dependencies": sorted(
64                 skinny_requirements if skinny else skinny_requirements + core_requirements
65             ),
66             "optional-dependencies": {
67                 "extras": [
68                     # Required to log artifacts and models to HDFS artifact locations
69                     "pyarrow",
70                     # Required to sign outgoing request with SigV4 signature
71                     "requests-auth-aws-sigv4",
72                     # Required to log artifacts and models to AWS S3 artifact locations
73                     "boto3",
74                     "botocore",
75                     # Required to log artifacts and models to GCS artifact locations
76                     "google-cloud-storage>=1.30.0",
77                     "azureml-core>=1.2.0",
78                     # Required to log artifacts to SFTP artifact locations
79                     "pysftp",
80                     # Required by the mlflow.projects module, when running projects against
81                     # a remote Kubernetes cluster
82                     "kubernetes",
83                     # Required to serve models through MLServer
84                     # NOTE: remove the upper version pin once protobuf is no longer pinned in
85                     # mlserver. Reference issue: https://github.com/SeldonIO/MLServer/issues/1089
86                     "mlserver>=1.2.0,!=1.3.1,<1.4.0",
87                     "mlserver-mlflow>=1.2.0,!=1.3.1,<1.4.0",
88                     "virtualenv",
89                     # Required for exporting metrics from the MLflow server to Prometheus
90                     # as part of the MLflow server monitoring add-on
91                     "prometheus-flask-exporter",
92                 ],
93                 "databricks": [
94                     # Required to write model artifacts to unity catalog locations
95                     "azure-storage-file-datalake>12",
96                     "google-cloud-storage>=1.30.0",
97                     "boto3>1",
98                     "botocore",
99                 ],
100                 "gateway": gateways_requirements,
101                 "genai": gateways_requirements,
102                 "sqlserver": ["mlflow-dbstore"],
103                 "aliyun-oss": ["aliyunstoreplugin"],
104                 "xethub": ["mlflow-xethub"],
105             },
106             "urls": {
107                 "homepage": "https://mlflow.org",
108                 "issues": "https://github.com/mlflow/mlflow/issues",
109                 "documentation": "https://mlflow.org/docs/latest/index.html",
110                 "repository": "https://github.com/mlflow/mlflow",
111             },
112             "scripts": {
113                 "mlflow": "mlflow.cli:cli",
114             },
115             "entry-points": {
116                 "mlflow.app": {
117                     "basic-auth": "mlflow.server.auth:create_app",
118                 },
119                 "mlflow.app.client": {
120                     "basic-auth": "mlflow.server.auth.client:AuthServiceClient",
121                 },
122                 "mlflow.deployments": {
123                     "databricks": "mlflow.deployments.databricks",
124                     "http": "mlflow.deployments.mlflow",
125                     "https": "mlflow.deployments.mlflow",
126                     "openai": "mlflow.deployments.openai",
127                 },
128             },
129         },
130         "tool": {
131             "setuptools": {
132                 "packages": {
133                     "find": {
134                         "where": ["."],
135                         "include": ["mlflow", "mlflow.*"],
136                         "exclude": ["tests", "tests.*"],
137                     }
138                 },
139                 "package-data": {
140                     "mlflow": [
141                         "store/db_migrations/alembic.ini",
142                         "temporary_db_migrations_for_pre_1_users/alembic.ini",
143                         "pypi_package_index.json",
144                         "pyspark/ml/log_model_allowlist.txt",
145                         "server/auth/basic_auth.ini",
146                         "server/auth/db/migrations/alembic.ini",
147                         "recipes/resources/**/*",
148                         "recipes/cards/templates/**/*",
149                     ]
150                     + ([] if skinny else ["models/container/**/*", "server/js/build/**/*"])
151                 },
152             }
153         },
154     }
155 
156     if skinny:
157         out_path = "pyproject.skinny.toml"
158         with Path(out_path).open("w") as f:
159             f.write(toml.dumps(data))
160     else:
161         out_path = "pyproject.toml"
162         original = Path(out_path).read_text().split(SEPARATOR)[1]
163         with Path(out_path).open("w") as f:
164             f.write(toml.dumps(data))
165             f.write(SEPARATOR)
166             f.write(original)
167 
168     if taplo := shutil.which("taplo"):
169         subprocess.run([taplo, "fmt", out_path], check=True)
170 
171 
172 def main() -> None:
173     if shutil.which("taplo") is None:
174         print(
175             "taplo is required to generate pyproject.toml. "
176             "Please install it by following the instructions at "
177             "https://taplo.tamasfe.dev/cli/introduction.html."
178         )
179         return
180     build(skinny=False)
181     build(skinny=True)
182 
183 
184 if __name__ == "__main__":
185     main()
186
```
--- 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/dev/pyproject.py b/dev/pyproject.py
--- a/dev/pyproject.py
+++ b/dev/pyproject.py
@@ -102,6 +102,7 @@
                 "sqlserver": ["mlflow-dbstore"],
                 "aliyun-oss": ["aliyunstoreplugin"],
                 "xethub": ["mlflow-xethub"],
+                "jfrog": ["mlflow-jfrog-plugin"],
             },
             "urls": {
                 "homepage": "https://mlflow.org",

{"golden_diff": "diff --git a/dev/pyproject.py b/dev/pyproject.py\n--- a/dev/pyproject.py\n+++ b/dev/pyproject.py\n@@ -102,6 +102,7 @@\n                 \"sqlserver\": [\"mlflow-dbstore\"],\n                 \"aliyun-oss\": [\"aliyunstoreplugin\"],\n                 \"xethub\": [\"mlflow-xethub\"],\n+                \"jfrog\": [\"mlflow-jfrog-plugin\"],\n             },\n             \"urls\": {\n                 \"homepage\": \"https://mlflow.org\",\n", "issue": "[DOC-FIX] Add JFrog MLFlow plugin in order to store your artifacts on a preferred JFrog repository\n### Willingness to contribute\n\nYes. I can contribute a documentation fix independently.\n\n### URL(s) with the issue\n\nhttps://mlflow.org/docs/latest/plugins.html#artifact-repository-plugins\n\n### Description of proposal (what needs changing)\n\nInclude details about the [mlflow-jfrog-plugin](https://pypi.org/project/mlflow-jfrog-plugin), and also provide simplified installation instructions, such as `pip install mlflow[jfrog]`\n", "before_files": [{"content": "from __future__ import annotations\n\nimport re\nimport shutil\nimport subprocess\nfrom pathlib import Path\n\nimport toml\n\nSEPARATOR = \"\"\"\n# Package metadata: can't be updated manually, use dev/pyproject.py\n# -----------------------------------------------------------------\n# Dev tool settings: can be updated manually\n\n\"\"\"\n\n\ndef read_requirements(path: Path) -> list[str]:\n    lines = (l.strip() for l in path.read_text().splitlines())\n    return [l for l in lines if l and not l.startswith(\"#\")]\n\n\ndef build(skinny: bool) -> None:\n    skinny_requirements = read_requirements(Path(\"requirements\", \"skinny-requirements.txt\"))\n    core_requirements = read_requirements(Path(\"requirements\", \"core-requirements.txt\"))\n    gateways_requirements = read_requirements(Path(\"requirements\", \"gateway-requirements.txt\"))\n    version = re.search(\n        r'^VERSION = \"([a-z0-9\\.]+)\"$', Path(\"mlflow\", \"version.py\").read_text(), re.MULTILINE\n    ).group(1)\n    python_version = Path(\"requirements\", \"python-version.txt\").read_text().strip()\n    data = {\n        \"build-system\": {\n            \"requires\": [\"setuptools\"],\n            \"build-backend\": \"setuptools.build_meta\",\n        },\n        \"project\": {\n            \"name\": \"mlflow\" if not skinny else \"mlflow-skinny\",\n            \"version\": version,\n            \"maintainers\": [\n                {\"name\": \"Databricks\", \"email\": \"mlflow-oss-maintainers@googlegroups.com \"}\n            ],\n            \"description\": (\n                \"MLflow is an open source platform for the complete machine learning lifecycle\"\n            ),\n            \"readme\": \"README.rst\",\n            \"license\": {\n                \"file\": \"LICENSE.txt\",\n            },\n            \"keywords\": [\"mlflow\", \"ai\", \"databricks\"],\n            \"classifiers\": [\n                \"Development Status :: 5 - Production/Stable\",\n                \"Intended Audience :: Developers\",\n                \"Intended Audience :: End Users/Desktop\",\n                \"Intended Audience :: Science/Research\",\n                \"Intended Audience :: Information Technology\",\n                \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n                \"Topic :: Software Development :: Libraries :: Python Modules\",\n                \"License :: OSI Approved :: Apache Software License\",\n                \"Operating System :: OS Independent\",\n                f\"Programming Language :: Python :: {python_version}\",\n            ],\n            \"requires-python\": f\">={python_version}\",\n            \"dependencies\": sorted(\n                skinny_requirements if skinny else skinny_requirements + core_requirements\n            ),\n            \"optional-dependencies\": {\n                \"extras\": [\n                    # Required to log artifacts and models to HDFS artifact locations\n                    \"pyarrow\",\n                    # Required to sign outgoing request with SigV4 signature\n                    \"requests-auth-aws-sigv4\",\n                    # Required to log artifacts and models to AWS S3 artifact locations\n                    \"boto3\",\n                    \"botocore\",\n                    # Required to log artifacts and models to GCS artifact locations\n                    \"google-cloud-storage>=1.30.0\",\n                    \"azureml-core>=1.2.0\",\n                    # Required to log artifacts to SFTP artifact locations\n                    \"pysftp\",\n                    # Required by the mlflow.projects module, when running projects against\n                    # a remote Kubernetes cluster\n                    \"kubernetes\",\n                    # Required to serve models through MLServer\n                    # NOTE: remove the upper version pin once protobuf is no longer pinned in\n                    # mlserver. Reference issue: https://github.com/SeldonIO/MLServer/issues/1089\n                    \"mlserver>=1.2.0,!=1.3.1,<1.4.0\",\n                    \"mlserver-mlflow>=1.2.0,!=1.3.1,<1.4.0\",\n                    \"virtualenv\",\n                    # Required for exporting metrics from the MLflow server to Prometheus\n                    # as part of the MLflow server monitoring add-on\n                    \"prometheus-flask-exporter\",\n                ],\n                \"databricks\": [\n                    # Required to write model artifacts to unity catalog locations\n                    \"azure-storage-file-datalake>12\",\n                    \"google-cloud-storage>=1.30.0\",\n                    \"boto3>1\",\n                    \"botocore\",\n                ],\n                \"gateway\": gateways_requirements,\n                \"genai\": gateways_requirements,\n                \"sqlserver\": [\"mlflow-dbstore\"],\n                \"aliyun-oss\": [\"aliyunstoreplugin\"],\n                \"xethub\": [\"mlflow-xethub\"],\n            },\n            \"urls\": {\n                \"homepage\": \"https://mlflow.org\",\n                \"issues\": \"https://github.com/mlflow/mlflow/issues\",\n                \"documentation\": \"https://mlflow.org/docs/latest/index.html\",\n                \"repository\": \"https://github.com/mlflow/mlflow\",\n            },\n            \"scripts\": {\n                \"mlflow\": \"mlflow.cli:cli\",\n            },\n            \"entry-points\": {\n                \"mlflow.app\": {\n                    \"basic-auth\": \"mlflow.server.auth:create_app\",\n                },\n                \"mlflow.app.client\": {\n                    \"basic-auth\": \"mlflow.server.auth.client:AuthServiceClient\",\n                },\n                \"mlflow.deployments\": {\n                    \"databricks\": \"mlflow.deployments.databricks\",\n                    \"http\": \"mlflow.deployments.mlflow\",\n                    \"https\": \"mlflow.deployments.mlflow\",\n                    \"openai\": \"mlflow.deployments.openai\",\n                },\n            },\n        },\n        \"tool\": {\n            \"setuptools\": {\n                \"packages\": {\n                    \"find\": {\n                        \"where\": [\".\"],\n                        \"include\": [\"mlflow\", \"mlflow.*\"],\n                        \"exclude\": [\"tests\", \"tests.*\"],\n                    }\n                },\n                \"package-data\": {\n                    \"mlflow\": [\n                        \"store/db_migrations/alembic.ini\",\n                        \"temporary_db_migrations_for_pre_1_users/alembic.ini\",\n                        \"pypi_package_index.json\",\n                        \"pyspark/ml/log_model_allowlist.txt\",\n                        \"server/auth/basic_auth.ini\",\n                        \"server/auth/db/migrations/alembic.ini\",\n                        \"recipes/resources/**/*\",\n                        \"recipes/cards/templates/**/*\",\n                    ]\n                    + ([] if skinny else [\"models/container/**/*\", \"server/js/build/**/*\"])\n                },\n            }\n        },\n    }\n\n    if skinny:\n        out_path = \"pyproject.skinny.toml\"\n        with Path(out_path).open(\"w\") as f:\n            f.write(toml.dumps(data))\n    else:\n        out_path = \"pyproject.toml\"\n        original = Path(out_path).read_text().split(SEPARATOR)[1]\n        with Path(out_path).open(\"w\") as f:\n            f.write(toml.dumps(data))\n            f.write(SEPARATOR)\n            f.write(original)\n\n    if taplo := shutil.which(\"taplo\"):\n        subprocess.run([taplo, \"fmt\", out_path], check=True)\n\n\ndef main() -> None:\n    if shutil.which(\"taplo\") is None:\n        print(\n            \"taplo is required to generate pyproject.toml. \"\n            \"Please install it by following the instructions at \"\n            \"https://taplo.tamasfe.dev/cli/introduction.html.\"\n        )\n        return\n    build(skinny=False)\n    build(skinny=True)\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "dev/pyproject.py"}], "after_files": [{"content": "from __future__ import annotations\n\nimport re\nimport shutil\nimport subprocess\nfrom pathlib import Path\n\nimport toml\n\nSEPARATOR = \"\"\"\n# Package metadata: can't be updated manually, use dev/pyproject.py\n# -----------------------------------------------------------------\n# Dev tool settings: can be updated manually\n\n\"\"\"\n\n\ndef read_requirements(path: Path) -> list[str]:\n    lines = (l.strip() for l in path.read_text().splitlines())\n    return [l for l in lines if l and not l.startswith(\"#\")]\n\n\ndef build(skinny: bool) -> None:\n    skinny_requirements = read_requirements(Path(\"requirements\", \"skinny-requirements.txt\"))\n    core_requirements = read_requirements(Path(\"requirements\", \"core-requirements.txt\"))\n    gateways_requirements = read_requirements(Path(\"requirements\", \"gateway-requirements.txt\"))\n    version = re.search(\n        r'^VERSION = \"([a-z0-9\\.]+)\"$', Path(\"mlflow\", \"version.py\").read_text(), re.MULTILINE\n    ).group(1)\n    python_version = Path(\"requirements\", \"python-version.txt\").read_text().strip()\n    data = {\n        \"build-system\": {\n            \"requires\": [\"setuptools\"],\n            \"build-backend\": \"setuptools.build_meta\",\n        },\n        \"project\": {\n            \"name\": \"mlflow\" if not skinny else \"mlflow-skinny\",\n            \"version\": version,\n            \"maintainers\": [\n                {\"name\": \"Databricks\", \"email\": \"mlflow-oss-maintainers@googlegroups.com \"}\n            ],\n            \"description\": (\n                \"MLflow is an open source platform for the complete machine learning lifecycle\"\n            ),\n            \"readme\": \"README.rst\",\n            \"license\": {\n                \"file\": \"LICENSE.txt\",\n            },\n            \"keywords\": [\"mlflow\", \"ai\", \"databricks\"],\n            \"classifiers\": [\n                \"Development Status :: 5 - Production/Stable\",\n                \"Intended Audience :: Developers\",\n                \"Intended Audience :: End Users/Desktop\",\n                \"Intended Audience :: Science/Research\",\n                \"Intended Audience :: Information Technology\",\n                \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n                \"Topic :: Software Development :: Libraries :: Python Modules\",\n                \"License :: OSI Approved :: Apache Software License\",\n                \"Operating System :: OS Independent\",\n                f\"Programming Language :: Python :: {python_version}\",\n            ],\n            \"requires-python\": f\">={python_version}\",\n            \"dependencies\": sorted(\n                skinny_requirements if skinny else skinny_requirements + core_requirements\n            ),\n            \"optional-dependencies\": {\n                \"extras\": [\n                    # Required to log artifacts and models to HDFS artifact locations\n                    \"pyarrow\",\n                    # Required to sign outgoing request with SigV4 signature\n                    \"requests-auth-aws-sigv4\",\n                    # Required to log artifacts and models to AWS S3 artifact locations\n                    \"boto3\",\n                    \"botocore\",\n                    # Required to log artifacts and models to GCS artifact locations\n                    \"google-cloud-storage>=1.30.0\",\n                    \"azureml-core>=1.2.0\",\n                    # Required to log artifacts to SFTP artifact locations\n                    \"pysftp\",\n                    # Required by the mlflow.projects module, when running projects against\n                    # a remote Kubernetes cluster\n                    \"kubernetes\",\n                    # Required to serve models through MLServer\n                    # NOTE: remove the upper version pin once protobuf is no longer pinned in\n                    # mlserver. Reference issue: https://github.com/SeldonIO/MLServer/issues/1089\n                    \"mlserver>=1.2.0,!=1.3.1,<1.4.0\",\n                    \"mlserver-mlflow>=1.2.0,!=1.3.1,<1.4.0\",\n                    \"virtualenv\",\n                    # Required for exporting metrics from the MLflow server to Prometheus\n                    # as part of the MLflow server monitoring add-on\n                    \"prometheus-flask-exporter\",\n                ],\n                \"databricks\": [\n                    # Required to write model artifacts to unity catalog locations\n                    \"azure-storage-file-datalake>12\",\n                    \"google-cloud-storage>=1.30.0\",\n                    \"boto3>1\",\n                    \"botocore\",\n                ],\n                \"gateway\": gateways_requirements,\n                \"genai\": gateways_requirements,\n                \"sqlserver\": [\"mlflow-dbstore\"],\n                \"aliyun-oss\": [\"aliyunstoreplugin\"],\n                \"xethub\": [\"mlflow-xethub\"],\n                \"jfrog\": [\"mlflow-jfrog-plugin\"],\n            },\n            \"urls\": {\n                \"homepage\": \"https://mlflow.org\",\n                \"issues\": \"https://github.com/mlflow/mlflow/issues\",\n                \"documentation\": \"https://mlflow.org/docs/latest/index.html\",\n                \"repository\": \"https://github.com/mlflow/mlflow\",\n            },\n            \"scripts\": {\n                \"mlflow\": \"mlflow.cli:cli\",\n            },\n            \"entry-points\": {\n                \"mlflow.app\": {\n                    \"basic-auth\": \"mlflow.server.auth:create_app\",\n                },\n                \"mlflow.app.client\": {\n                    \"basic-auth\": \"mlflow.server.auth.client:AuthServiceClient\",\n                },\n                \"mlflow.deployments\": {\n                    \"databricks\": \"mlflow.deployments.databricks\",\n                    \"http\": \"mlflow.deployments.mlflow\",\n                    \"https\": \"mlflow.deployments.mlflow\",\n                    \"openai\": \"mlflow.deployments.openai\",\n                },\n            },\n        },\n        \"tool\": {\n            \"setuptools\": {\n                \"packages\": {\n                    \"find\": {\n                        \"where\": [\".\"],\n                        \"include\": [\"mlflow\", \"mlflow.*\"],\n                        \"exclude\": [\"tests\", \"tests.*\"],\n                    }\n                },\n                \"package-data\": {\n                    \"mlflow\": [\n                        \"store/db_migrations/alembic.ini\",\n                        \"temporary_db_migrations_for_pre_1_users/alembic.ini\",\n                        \"pypi_package_index.json\",\n                        \"pyspark/ml/log_model_allowlist.txt\",\n                        \"server/auth/basic_auth.ini\",\n                        \"server/auth/db/migrations/alembic.ini\",\n                        \"recipes/resources/**/*\",\n                        \"recipes/cards/templates/**/*\",\n                    ]\n                    + ([] if skinny else [\"models/container/**/*\", \"server/js/build/**/*\"])\n                },\n            }\n        },\n    }\n\n    if skinny:\n        out_path = \"pyproject.skinny.toml\"\n        with Path(out_path).open(\"w\") as f:\n            f.write(toml.dumps(data))\n    else:\n        out_path = \"pyproject.toml\"\n        original = Path(out_path).read_text().split(SEPARATOR)[1]\n        with Path(out_path).open(\"w\") as f:\n            f.write(toml.dumps(data))\n            f.write(SEPARATOR)\n            f.write(original)\n\n    if taplo := shutil.which(\"taplo\"):\n        subprocess.run([taplo, \"fmt\", out_path], check=True)\n\n\ndef main() -> None:\n    if shutil.which(\"taplo\") is None:\n        print(\n            \"taplo is required to generate pyproject.toml. \"\n            \"Please install it by following the instructions at \"\n            \"https://taplo.tamasfe.dev/cli/introduction.html.\"\n        )\n        return\n    build(skinny=False)\n    build(skinny=True)\n\n\nif __name__ == \"__main__\":\n    main()\n", "path": "dev/pyproject.py"}]}