Skip to content

Commit 5e50d61

Browse files
authored
fix: preserve global options in requirements.txt (#5275)
Signed-off-by: Frost Ming <me@frostming.com>
1 parent 15782ba commit 5e50d61

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/_bentoml_sdk/images.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,13 @@ def _freeze_python_requirements(self, platform_: str | None = None) -> str:
189189
)
190190
except subprocess.CalledProcessError as e:
191191
raise BentoMLException(f"Failed to lock PyPI packages: {e}") from None
192-
return requirements_in.with_suffix(".lock").read_text()
192+
locked_requirements = ( # uv doesn't preserve global option lines, add them here
193+
"\n".join(option.dumps() for option in requirements_file.options)
194+
)
195+
if locked_requirements:
196+
locked_requirements += "\n"
197+
locked_requirements += requirements_in.with_suffix(".lock").read_text()
198+
return locked_requirements
193199

194200

195201
@attrs.define

src/bentoml/_internal/bento/bento.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,11 +849,12 @@ def write_to_bento(self, bento_fs: FS, envs: list[BentoEnvSchema]) -> None:
849849

850850
from _bentoml_impl.docker import generate_dockerfile
851851

852+
# Prepare env/python files
852853
py_folder = fs.path.join("env", "python")
853854
bento_fs.makedirs(py_folder, recreate=True)
854855
reqs_txt = fs.path.join(py_folder, "requirements.txt")
855856
bento_fs.writetext(reqs_txt, self.python_requirements)
856-
857+
# Prepare env/docker files
857858
docker_folder = fs.path.join("env", "docker")
858859
bento_fs.makedirs(docker_folder, recreate=True)
859860
dockerfile_path = fs.path.join(docker_folder, "Dockerfile")

0 commit comments

Comments
 (0)