We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[BUG] Missing `basic_auth.ini` in PyPI package
### Issues Policy acknowledgement

- [X] I have read and agree to submit bug reports in accordance with the [issues policy](https://www.github.com/mlflow/mlflow/blob/master/ISSUE_POLICY.md)

### Willingness to contribute

Yes. I can contribute a fix for this bug independently.

### MLflow version

- Client: 2.3.2
- Tracking server: 2.3.2


### System information

- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**:
- **Python version**:
- **yarn version, if running the dev UI**:


### Describe the problem

Freshly installed mlflow package from PyPI is missing `basic_auth.ini` and cannot launch basic auth app.

![image](https://github.com/mlflow/mlflow/assets/22888849/7667e308-982d-44ae-b4ce-a21aae387938)

![image](https://github.com/mlflow/mlflow/assets/22888849/ba7ac8da-ed4b-4318-8fd1-3c2e8bff9689)


### Tracking information

<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
```shell
REPLACE_ME
```


### Code to reproduce issue

<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
```
pip install mlflow
mlflow ui --app-name=basic-auth
```


### Stack trace

<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
```
REPLACE_ME
```


### Other info / logs

<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->
```
REPLACE_ME
```


### What component(s) does this bug affect?

- [ ] `area/artifacts`: Artifact stores and artifact logging
- [ ] `area/build`: Build and test infrastructure for MLflow
- [ ] `area/docs`: MLflow documentation pages
- [ ] `area/examples`: Example code
- [ ] `area/model-registry`: Model Registry service, APIs, and the fluent client calls for Model Registry
- [ ] `area/models`: MLmodel format, model serialization/deserialization, flavors
- [ ] `area/recipes`: Recipes, Recipe APIs, Recipe configs, Recipe Templates
- [ ] `area/projects`: MLproject format, project running backends
- [ ] `area/scoring`: MLflow Model server, model deployment tools, Spark UDFs
- [ ] `area/server-infra`: MLflow Tracking server backend
- [X] `area/tracking`: Tracking Service, tracking client APIs, autologging

### What interface(s) does this bug affect?

- [ ] `area/uiux`: Front-end, user experience, plotting, JavaScript, JavaScript dev server
- [ ] `area/docker`: Docker use across MLflow's components, such as MLflow Projects and MLflow Models
- [ ] `area/sqlalchemy`: Use of SQLAlchemy in the Tracking Service or Model Registry
- [ ] `area/windows`: Windows support

### What language(s) does this bug affect?

- [ ] `language/r`: R APIs and clients
- [ ] `language/java`: Java APIs and clients
- [ ] `language/new`: Proposals for new client languages

### What integration(s) does this bug affect?

- [ ] `integrations/azure`: Azure and Azure ML integrations
- [ ] `integrations/sagemaker`: SageMaker integrations
- [ ] `integrations/databricks`: Databricks integrations

--- 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 logging
3 from importlib.machinery import SourceFileLoader
4 from setuptools import setup, find_packages, Command
5 
6 _MLFLOW_SKINNY_ENV_VAR = "MLFLOW_SKINNY"
7 
8 version = (
9     SourceFileLoader("mlflow.version", os.path.join("mlflow", "version.py")).load_module().VERSION
10 )
11 
12 
13 # Get a list of all files in the directory to include in our module
14 def package_files(directory):
15     paths = []
16     for path, _, filenames in os.walk(directory):
17         for filename in filenames:
18             paths.append(os.path.join("..", path, filename))
19     return paths
20 
21 
22 def is_comment_or_empty(line):
23     stripped = line.strip()
24     return stripped == "" or stripped.startswith("#")
25 
26 
27 def remove_comments_and_empty_lines(lines):
28     return [line for line in lines if not is_comment_or_empty(line)]
29 
30 
31 # Prints out a set of paths (relative to the mlflow/ directory) of files in mlflow/server/js/build
32 # to include in the wheel, e.g. "../mlflow/server/js/build/index.html"
33 js_files = package_files("mlflow/server/js/build")
34 models_container_server_files = package_files("mlflow/models/container")
35 alembic_files = [
36     "../mlflow/store/db_migrations/alembic.ini",
37     "../mlflow/temporary_db_migrations_for_pre_1_users/alembic.ini",
38 ]
39 extra_files = [
40     "pypi_package_index.json",
41     "pyspark/ml/log_model_allowlist.txt",
42 ]
43 recipes_template_files = package_files("mlflow/recipes/resources")
44 recipes_files = package_files("mlflow/recipes/cards/templates")
45 
46 
47 """
48 Minimal requirements for the skinny MLflow client which provides a limited
49 subset of functionality such as: RESTful client functionality for Tracking and
50 Model Registry, as well as support for Project execution against local backends
51 and Databricks.
52 """
53 with open(os.path.join("requirements", "skinny-requirements.txt")) as f:
54     SKINNY_REQUIREMENTS = remove_comments_and_empty_lines(f.read().splitlines())
55 
56 
57 """
58 These are the core requirements for the complete MLflow platform, which augments
59 the skinny client functionality with support for running the MLflow Tracking
60 Server & UI. It also adds project backends such as Docker and Kubernetes among
61 other capabilities.
62 """
63 with open(os.path.join("requirements", "core-requirements.txt")) as f:
64     CORE_REQUIREMENTS = SKINNY_REQUIREMENTS + remove_comments_and_empty_lines(f.read().splitlines())
65 
66 _is_mlflow_skinny = bool(os.environ.get(_MLFLOW_SKINNY_ENV_VAR))
67 logging.debug("{} env var is set: {}".format(_MLFLOW_SKINNY_ENV_VAR, _is_mlflow_skinny))
68 
69 
70 class ListDependencies(Command):
71     # `python setup.py <command name>` prints out "running <command name>" by default.
72     # This logging message must be hidden by specifying `--quiet` (or `-q`) when piping the output
73     # of this command to `pip install`.
74     description = "List mlflow dependencies"
75     user_options = [
76         ("skinny", None, "List mlflow-skinny dependencies"),
77     ]
78 
79     def initialize_options(self):
80         self.skinny = False
81 
82     def finalize_options(self):
83         pass
84 
85     def run(self):
86         dependencies = SKINNY_REQUIREMENTS if self.skinny else CORE_REQUIREMENTS
87         print("\n".join(dependencies))
88 
89 
90 MINIMUM_SUPPORTED_PYTHON_VERSION = "3.8"
91 
92 
93 class MinPythonVersion(Command):
94     description = "Print out the minimum supported Python version"
95     user_options = []
96 
97     def initialize_options(self):
98         pass
99 
100     def finalize_options(self):
101         pass
102 
103     def run(self):
104         print(MINIMUM_SUPPORTED_PYTHON_VERSION)
105 
106 
107 setup(
108     name="mlflow" if not _is_mlflow_skinny else "mlflow-skinny",
109     version=version,
110     packages=find_packages(exclude=["tests", "tests.*"]),
111     package_data={
112         "mlflow": (
113             js_files
114             + models_container_server_files
115             + alembic_files
116             + extra_files
117             + recipes_template_files
118             + recipes_files
119         ),
120     }
121     if not _is_mlflow_skinny
122     # include alembic files to enable usage of the skinny client with SQL databases
123     # if users install sqlalchemy and alembic independently
124     else {"mlflow": alembic_files + extra_files},
125     install_requires=CORE_REQUIREMENTS if not _is_mlflow_skinny else SKINNY_REQUIREMENTS,
126     extras_require={
127         "extras": [
128             # Required to log artifacts and models to HDFS artifact locations
129             "pyarrow",
130             # Required to sign outgoing request with SigV4 signature
131             "requests-auth-aws-sigv4",
132             # Required to log artifacts and models to AWS S3 artifact locations
133             "boto3",
134             # Required to log artifacts and models to GCS artifact locations
135             "google-cloud-storage>=1.30.0",
136             "azureml-core>=1.2.0",
137             # Required to log artifacts to SFTP artifact locations
138             "pysftp",
139             # Required by the mlflow.projects module, when running projects against
140             # a remote Kubernetes cluster
141             "kubernetes",
142             # Required to serve models through MLServer
143             # NOTE: remove the upper version pin once protobuf is no longer pinned in mlserver
144             # Reference issue: https://github.com/SeldonIO/MLServer/issues/1089
145             "mlserver>=1.2.0,!=1.3.1",
146             "mlserver-mlflow>=1.2.0,!=1.3.1",
147             "virtualenv",
148             # Required for exporting metrics from the MLflow server to Prometheus
149             # as part of the MLflow server monitoring add-on
150             "prometheus-flask-exporter",
151         ],
152         "databricks": [
153             # Required to write model artifacts to unity catalog locations
154             "azure-storage-file-datalake>12",
155             "google-cloud-storage>=1.30.0",
156             "boto3>1",
157         ],
158         "sqlserver": ["mlflow-dbstore"],
159         "aliyun-oss": ["aliyunstoreplugin"],
160     },
161     entry_points="""
162         [console_scripts]
163         mlflow=mlflow.cli:cli
164 
165         [mlflow.app]
166         basic-auth=mlflow.server.auth:app
167     """,
168     cmdclass={
169         "dependencies": ListDependencies,
170         "min_python_version": MinPythonVersion,
171     },
172     zip_safe=False,
173     author="Databricks",
174     description="MLflow: A Platform for ML Development and Productionization",
175     long_description=open("README.rst").read()
176     if not _is_mlflow_skinny
177     else open("README_SKINNY.rst").read() + open("README.rst").read(),
178     long_description_content_type="text/x-rst",
179     license="Apache License 2.0",
180     classifiers=[
181         "Intended Audience :: Developers",
182         f"Programming Language :: Python :: {MINIMUM_SUPPORTED_PYTHON_VERSION}",
183     ],
184     keywords="ml ai databricks",
185     url="https://mlflow.org/",
186     python_requires=f">={MINIMUM_SUPPORTED_PYTHON_VERSION}",
187     project_urls={
188         "Bug Tracker": "https://github.com/mlflow/mlflow/issues",
189         "Documentation": "https://mlflow.org/docs/latest/index.html",
190         "Source Code": "https://github.com/mlflow/mlflow",
191     },
192 )
193
```
--- 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
@@ -39,6 +39,7 @@
 extra_files = [
     "pypi_package_index.json",
     "pyspark/ml/log_model_allowlist.txt",
+    "server/auth/basic_auth.ini",
 ]
 recipes_template_files = package_files("mlflow/recipes/resources")
 recipes_files = package_files("mlflow/recipes/cards/templates")

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -39,6 +39,7 @@\n extra_files = [\n     \"pypi_package_index.json\",\n     \"pyspark/ml/log_model_allowlist.txt\",\n+    \"server/auth/basic_auth.ini\",\n ]\n recipes_template_files = package_files(\"mlflow/recipes/resources\")\n recipes_files = package_files(\"mlflow/recipes/cards/templates\")\n", "issue": "[BUG] Missing `basic_auth.ini` in PyPI package\n### Issues Policy acknowledgement\n\n- [X] I have read and agree to submit bug reports in accordance with the [issues policy](https://www.github.com/mlflow/mlflow/blob/master/ISSUE_POLICY.md)\n\n### Willingness to contribute\n\nYes. I can contribute a fix for this bug independently.\n\n### MLflow version\n\n- Client: 2.3.2\r\n- Tracking server: 2.3.2\r\n\n\n### System information\n\n- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**:\r\n- **Python version**:\r\n- **yarn version, if running the dev UI**:\r\n\n\n### Describe the problem\n\nFreshly installed mlflow package from PyPI is missing `basic_auth.ini` and cannot launch basic auth app.\r\n\r\n![image](https://github.com/mlflow/mlflow/assets/22888849/7667e308-982d-44ae-b4ce-a21aae387938)\r\n\r\n![image](https://github.com/mlflow/mlflow/assets/22888849/ba7ac8da-ed4b-4318-8fd1-3c2e8bff9689)\r\n\n\n### Tracking information\n\n<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->\r\n```shell\r\nREPLACE_ME\r\n```\r\n\n\n### Code to reproduce issue\n\n<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->\r\n```\r\npip install mlflow\r\nmlflow ui --app-name=basic-auth\r\n```\r\n\n\n### Stack trace\n\n<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->\r\n```\r\nREPLACE_ME\r\n```\r\n\n\n### Other info / logs\n\n<!-- PLEASE KEEP BACKTICKS AND CHECK PREVIEW -->\r\n```\r\nREPLACE_ME\r\n```\r\n\n\n### What component(s) does this bug affect?\n\n- [ ] `area/artifacts`: Artifact stores and artifact logging\n- [ ] `area/build`: Build and test infrastructure for MLflow\n- [ ] `area/docs`: MLflow documentation pages\n- [ ] `area/examples`: Example code\n- [ ] `area/model-registry`: Model Registry service, APIs, and the fluent client calls for Model Registry\n- [ ] `area/models`: MLmodel format, model serialization/deserialization, flavors\n- [ ] `area/recipes`: Recipes, Recipe APIs, Recipe configs, Recipe Templates\n- [ ] `area/projects`: MLproject format, project running backends\n- [ ] `area/scoring`: MLflow Model server, model deployment tools, Spark UDFs\n- [ ] `area/server-infra`: MLflow Tracking server backend\n- [X] `area/tracking`: Tracking Service, tracking client APIs, autologging\n\n### What interface(s) does this bug affect?\n\n- [ ] `area/uiux`: Front-end, user experience, plotting, JavaScript, JavaScript dev server\n- [ ] `area/docker`: Docker use across MLflow's components, such as MLflow Projects and MLflow Models\n- [ ] `area/sqlalchemy`: Use of SQLAlchemy in the Tracking Service or Model Registry\n- [ ] `area/windows`: Windows support\n\n### What language(s) does this bug affect?\n\n- [ ] `language/r`: R APIs and clients\n- [ ] `language/java`: Java APIs and clients\n- [ ] `language/new`: Proposals for new client languages\n\n### What integration(s) does this bug affect?\n\n- [ ] `integrations/azure`: Azure and Azure ML integrations\n- [ ] `integrations/sagemaker`: SageMaker integrations\n- [ ] `integrations/databricks`: Databricks integrations\n", "before_files": [{"content": "import os\nimport logging\nfrom importlib.machinery import SourceFileLoader\nfrom setuptools import setup, find_packages, Command\n\n_MLFLOW_SKINNY_ENV_VAR = \"MLFLOW_SKINNY\"\n\nversion = (\n    SourceFileLoader(\"mlflow.version\", os.path.join(\"mlflow\", \"version.py\")).load_module().VERSION\n)\n\n\n# Get a list of all files in the directory to include in our module\ndef package_files(directory):\n    paths = []\n    for path, _, filenames in os.walk(directory):\n        for filename in filenames:\n            paths.append(os.path.join(\"..\", path, filename))\n    return paths\n\n\ndef is_comment_or_empty(line):\n    stripped = line.strip()\n    return stripped == \"\" or stripped.startswith(\"#\")\n\n\ndef remove_comments_and_empty_lines(lines):\n    return [line for line in lines if not is_comment_or_empty(line)]\n\n\n# Prints out a set of paths (relative to the mlflow/ directory) of files in mlflow/server/js/build\n# to include in the wheel, e.g. \"../mlflow/server/js/build/index.html\"\njs_files = package_files(\"mlflow/server/js/build\")\nmodels_container_server_files = package_files(\"mlflow/models/container\")\nalembic_files = [\n    \"../mlflow/store/db_migrations/alembic.ini\",\n    \"../mlflow/temporary_db_migrations_for_pre_1_users/alembic.ini\",\n]\nextra_files = [\n    \"pypi_package_index.json\",\n    \"pyspark/ml/log_model_allowlist.txt\",\n]\nrecipes_template_files = package_files(\"mlflow/recipes/resources\")\nrecipes_files = package_files(\"mlflow/recipes/cards/templates\")\n\n\n\"\"\"\nMinimal requirements for the skinny MLflow client which provides a limited\nsubset of functionality such as: RESTful client functionality for Tracking and\nModel Registry, as well as support for Project execution against local backends\nand Databricks.\n\"\"\"\nwith open(os.path.join(\"requirements\", \"skinny-requirements.txt\")) as f:\n    SKINNY_REQUIREMENTS = remove_comments_and_empty_lines(f.read().splitlines())\n\n\n\"\"\"\nThese are the core requirements for the complete MLflow platform, which augments\nthe skinny client functionality with support for running the MLflow Tracking\nServer & UI. It also adds project backends such as Docker and Kubernetes among\nother capabilities.\n\"\"\"\nwith open(os.path.join(\"requirements\", \"core-requirements.txt\")) as f:\n    CORE_REQUIREMENTS = SKINNY_REQUIREMENTS + remove_comments_and_empty_lines(f.read().splitlines())\n\n_is_mlflow_skinny = bool(os.environ.get(_MLFLOW_SKINNY_ENV_VAR))\nlogging.debug(\"{} env var is set: {}\".format(_MLFLOW_SKINNY_ENV_VAR, _is_mlflow_skinny))\n\n\nclass ListDependencies(Command):\n    # `python setup.py <command name>` prints out \"running <command name>\" by default.\n    # This logging message must be hidden by specifying `--quiet` (or `-q`) when piping the output\n    # of this command to `pip install`.\n    description = \"List mlflow dependencies\"\n    user_options = [\n        (\"skinny\", None, \"List mlflow-skinny dependencies\"),\n    ]\n\n    def initialize_options(self):\n        self.skinny = False\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        dependencies = SKINNY_REQUIREMENTS if self.skinny else CORE_REQUIREMENTS\n        print(\"\\n\".join(dependencies))\n\n\nMINIMUM_SUPPORTED_PYTHON_VERSION = \"3.8\"\n\n\nclass MinPythonVersion(Command):\n    description = \"Print out the minimum supported Python version\"\n    user_options = []\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        print(MINIMUM_SUPPORTED_PYTHON_VERSION)\n\n\nsetup(\n    name=\"mlflow\" if not _is_mlflow_skinny else \"mlflow-skinny\",\n    version=version,\n    packages=find_packages(exclude=[\"tests\", \"tests.*\"]),\n    package_data={\n        \"mlflow\": (\n            js_files\n            + models_container_server_files\n            + alembic_files\n            + extra_files\n            + recipes_template_files\n            + recipes_files\n        ),\n    }\n    if not _is_mlflow_skinny\n    # include alembic files to enable usage of the skinny client with SQL databases\n    # if users install sqlalchemy and alembic independently\n    else {\"mlflow\": alembic_files + extra_files},\n    install_requires=CORE_REQUIREMENTS if not _is_mlflow_skinny else SKINNY_REQUIREMENTS,\n    extras_require={\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            # 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 mlserver\n            # Reference issue: https://github.com/SeldonIO/MLServer/issues/1089\n            \"mlserver>=1.2.0,!=1.3.1\",\n            \"mlserver-mlflow>=1.2.0,!=1.3.1\",\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        ],\n        \"sqlserver\": [\"mlflow-dbstore\"],\n        \"aliyun-oss\": [\"aliyunstoreplugin\"],\n    },\n    entry_points=\"\"\"\n        [console_scripts]\n        mlflow=mlflow.cli:cli\n\n        [mlflow.app]\n        basic-auth=mlflow.server.auth:app\n    \"\"\",\n    cmdclass={\n        \"dependencies\": ListDependencies,\n        \"min_python_version\": MinPythonVersion,\n    },\n    zip_safe=False,\n    author=\"Databricks\",\n    description=\"MLflow: A Platform for ML Development and Productionization\",\n    long_description=open(\"README.rst\").read()\n    if not _is_mlflow_skinny\n    else open(\"README_SKINNY.rst\").read() + open(\"README.rst\").read(),\n    long_description_content_type=\"text/x-rst\",\n    license=\"Apache License 2.0\",\n    classifiers=[\n        \"Intended Audience :: Developers\",\n        f\"Programming Language :: Python :: {MINIMUM_SUPPORTED_PYTHON_VERSION}\",\n    ],\n    keywords=\"ml ai databricks\",\n    url=\"https://mlflow.org/\",\n    python_requires=f\">={MINIMUM_SUPPORTED_PYTHON_VERSION}\",\n    project_urls={\n        \"Bug Tracker\": \"https://github.com/mlflow/mlflow/issues\",\n        \"Documentation\": \"https://mlflow.org/docs/latest/index.html\",\n        \"Source Code\": \"https://github.com/mlflow/mlflow\",\n    },\n)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport logging\nfrom importlib.machinery import SourceFileLoader\nfrom setuptools import setup, find_packages, Command\n\n_MLFLOW_SKINNY_ENV_VAR = \"MLFLOW_SKINNY\"\n\nversion = (\n    SourceFileLoader(\"mlflow.version\", os.path.join(\"mlflow\", \"version.py\")).load_module().VERSION\n)\n\n\n# Get a list of all files in the directory to include in our module\ndef package_files(directory):\n    paths = []\n    for path, _, filenames in os.walk(directory):\n        for filename in filenames:\n            paths.append(os.path.join(\"..\", path, filename))\n    return paths\n\n\ndef is_comment_or_empty(line):\n    stripped = line.strip()\n    return stripped == \"\" or stripped.startswith(\"#\")\n\n\ndef remove_comments_and_empty_lines(lines):\n    return [line for line in lines if not is_comment_or_empty(line)]\n\n\n# Prints out a set of paths (relative to the mlflow/ directory) of files in mlflow/server/js/build\n# to include in the wheel, e.g. \"../mlflow/server/js/build/index.html\"\njs_files = package_files(\"mlflow/server/js/build\")\nmodels_container_server_files = package_files(\"mlflow/models/container\")\nalembic_files = [\n    \"../mlflow/store/db_migrations/alembic.ini\",\n    \"../mlflow/temporary_db_migrations_for_pre_1_users/alembic.ini\",\n]\nextra_files = [\n    \"pypi_package_index.json\",\n    \"pyspark/ml/log_model_allowlist.txt\",\n    \"server/auth/basic_auth.ini\",\n]\nrecipes_template_files = package_files(\"mlflow/recipes/resources\")\nrecipes_files = package_files(\"mlflow/recipes/cards/templates\")\n\n\n\"\"\"\nMinimal requirements for the skinny MLflow client which provides a limited\nsubset of functionality such as: RESTful client functionality for Tracking and\nModel Registry, as well as support for Project execution against local backends\nand Databricks.\n\"\"\"\nwith open(os.path.join(\"requirements\", \"skinny-requirements.txt\")) as f:\n    SKINNY_REQUIREMENTS = remove_comments_and_empty_lines(f.read().splitlines())\n\n\n\"\"\"\nThese are the core requirements for the complete MLflow platform, which augments\nthe skinny client functionality with support for running the MLflow Tracking\nServer & UI. It also adds project backends such as Docker and Kubernetes among\nother capabilities.\n\"\"\"\nwith open(os.path.join(\"requirements\", \"core-requirements.txt\")) as f:\n    CORE_REQUIREMENTS = SKINNY_REQUIREMENTS + remove_comments_and_empty_lines(f.read().splitlines())\n\n_is_mlflow_skinny = bool(os.environ.get(_MLFLOW_SKINNY_ENV_VAR))\nlogging.debug(\"{} env var is set: {}\".format(_MLFLOW_SKINNY_ENV_VAR, _is_mlflow_skinny))\n\n\nclass ListDependencies(Command):\n    # `python setup.py <command name>` prints out \"running <command name>\" by default.\n    # This logging message must be hidden by specifying `--quiet` (or `-q`) when piping the output\n    # of this command to `pip install`.\n    description = \"List mlflow dependencies\"\n    user_options = [\n        (\"skinny\", None, \"List mlflow-skinny dependencies\"),\n    ]\n\n    def initialize_options(self):\n        self.skinny = False\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        dependencies = SKINNY_REQUIREMENTS if self.skinny else CORE_REQUIREMENTS\n        print(\"\\n\".join(dependencies))\n\n\nMINIMUM_SUPPORTED_PYTHON_VERSION = \"3.8\"\n\n\nclass MinPythonVersion(Command):\n    description = \"Print out the minimum supported Python version\"\n    user_options = []\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        print(MINIMUM_SUPPORTED_PYTHON_VERSION)\n\n\nsetup(\n    name=\"mlflow\" if not _is_mlflow_skinny else \"mlflow-skinny\",\n    version=version,\n    packages=find_packages(exclude=[\"tests\", \"tests.*\"]),\n    package_data={\n        \"mlflow\": (\n            js_files\n            + models_container_server_files\n            + alembic_files\n            + extra_files\n            + recipes_template_files\n            + recipes_files\n        ),\n    }\n    if not _is_mlflow_skinny\n    # include alembic files to enable usage of the skinny client with SQL databases\n    # if users install sqlalchemy and alembic independently\n    else {\"mlflow\": alembic_files + extra_files},\n    install_requires=CORE_REQUIREMENTS if not _is_mlflow_skinny else SKINNY_REQUIREMENTS,\n    extras_require={\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            # 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 mlserver\n            # Reference issue: https://github.com/SeldonIO/MLServer/issues/1089\n            \"mlserver>=1.2.0,!=1.3.1\",\n            \"mlserver-mlflow>=1.2.0,!=1.3.1\",\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        ],\n        \"sqlserver\": [\"mlflow-dbstore\"],\n        \"aliyun-oss\": [\"aliyunstoreplugin\"],\n    },\n    entry_points=\"\"\"\n        [console_scripts]\n        mlflow=mlflow.cli:cli\n\n        [mlflow.app]\n        basic-auth=mlflow.server.auth:app\n    \"\"\",\n    cmdclass={\n        \"dependencies\": ListDependencies,\n        \"min_python_version\": MinPythonVersion,\n    },\n    zip_safe=False,\n    author=\"Databricks\",\n    description=\"MLflow: A Platform for ML Development and Productionization\",\n    long_description=open(\"README.rst\").read()\n    if not _is_mlflow_skinny\n    else open(\"README_SKINNY.rst\").read() + open(\"README.rst\").read(),\n    long_description_content_type=\"text/x-rst\",\n    license=\"Apache License 2.0\",\n    classifiers=[\n        \"Intended Audience :: Developers\",\n        f\"Programming Language :: Python :: {MINIMUM_SUPPORTED_PYTHON_VERSION}\",\n    ],\n    keywords=\"ml ai databricks\",\n    url=\"https://mlflow.org/\",\n    python_requires=f\">={MINIMUM_SUPPORTED_PYTHON_VERSION}\",\n    project_urls={\n        \"Bug Tracker\": \"https://github.com/mlflow/mlflow/issues\",\n        \"Documentation\": \"https://mlflow.org/docs/latest/index.html\",\n        \"Source Code\": \"https://github.com/mlflow/mlflow\",\n    },\n)\n", "path": "setup.py"}]}