From 6a7fc779f9594df529d600baac66061ba47fc985 Mon Sep 17 00:00:00 2001 From: Chris Novakovic Date: Wed, 3 Dec 2025 15:52:20 +0000 Subject: [PATCH] Remove `InterpreterOptions` plugin configuration option The documentation for the `InterpreterOptions` plugin configuration option is ambiguous - it implies the options within are used by Python while the .pex is being built (e.g. while compiling bytecode), but actually they're embedded in the .pex and used at run time. Now they aren't used at all: this functionality is instead provided by `RuntimeInterpreterArgs`. Remove `InterpreterOptions`, since it is obsolete. Also tidy up some of the variable names in the Python build defs to make it explicit that the arguments in `RuntimeInterpreterArgs` are in fact passed to Python at run time. --- .plzconfig | 6 ------ build_defs/python.build_defs | 16 ++++++++-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/.plzconfig b/.plzconfig index b12da7e..07b6b70 100644 --- a/.plzconfig +++ b/.plzconfig @@ -53,12 +53,6 @@ DefaultValue = python3 Inherit = true Help = The default Python interpreter to use when building .pex files. -[PluginConfig "interpreter_options"] -ConfigKey = InterpreterOptions -Optional = true -Repeatable = true -Help = A list of additional arguments to pass to the Python interpreter when building .pex files. - [PluginConfig "default_runtime_interpreters"] ConfigKey = DefaultRuntimeInterpreters Optional = true diff --git a/build_defs/python.build_defs b/build_defs/python.build_defs index a394f9b..6076dc6 100644 --- a/build_defs/python.build_defs +++ b/build_defs/python.build_defs @@ -153,13 +153,13 @@ def python_binary(name:str, main:str, srcs:list=[], resources:list=[], out:str=N test_only=test_only, ) - interpreter_opts, interpreter_deps = _runtime_interpreter(interpreter, runtime_interpreters, runtime_interpreter_args) + runtime_args, runtime_targets = _runtime_interpreter(interpreter, runtime_interpreters, runtime_interpreter_args) zipsafe_flag = '' if zip_safe is False else '--zip_safe' cmd = '$TOOLS_PEX --preamble_verbosity="%s" -m "%s" %s %s' % ( CONFIG.PYTHON.DEFAULT_PREAMBLE_VERBOSITY, module_dir, zipsafe_flag, - interpreter_opts, + runtime_args, ) # If content hashing feature flag is enabled, we use the hash of the built @@ -191,7 +191,7 @@ def python_binary(name:str, main:str, srcs:list=[], resources:list=[], out:str=N output_is_complete=True, tools={ 'interpreter': [interpreter], - 'runtime_interpreters': interpreter_deps, + 'runtime_interpreters': runtime_targets, 'pex': [CONFIG.PYTHON.PEX_TOOL], }, test_only=test_only, @@ -207,7 +207,7 @@ def python_binary(name:str, main:str, srcs:list=[], resources:list=[], out:str=N return build_rule( name=name, srcs=[pex_rule], - runtime_deps=interpreter_deps, + runtime_deps=runtime_targets, deps=[lib_rule], outs=[out or (name + '.pex')], data=data, @@ -291,12 +291,12 @@ def python_test(name:str, srcs:list, data:list|dict=[], resources:list=[], deps: `unittest`, `pytest`, or a custom test runner entry point. """ test_runner = test_runner or CONFIG.PYTHON.TEST_RUNNER - interpreter_opts, interpreter_deps = _runtime_interpreter(interpreter, runtime_interpreters, runtime_interpreter_args) + runtime_args, runtime_targets = _runtime_interpreter(interpreter, runtime_interpreters, runtime_interpreter_args) cmd = '$TOOLS_PEX --preamble_verbosity="%s" -t -m "%s" -r "%s" --zip_safe --add_test_runner_deps %s --stamp="$RULE_HASH"' % ( CONFIG.PYTHON.DEFAULT_PREAMBLE_VERBOSITY, module_dir, test_runner, - interpreter_opts, + runtime_args, ) if site: cmd += ' -S' @@ -331,7 +331,7 @@ def python_test(name:str, srcs:list, data:list|dict=[], resources:list=[], deps: deps=deps, tools={ 'interpreter': [interpreter], - 'runtime_interpreters': interpreter_deps, + 'runtime_interpreters': runtime_targets, 'pex': [CONFIG.PYTHON.PEX_TOOL], }, labels = labels, @@ -375,7 +375,7 @@ def python_test(name:str, srcs:list, data:list|dict=[], resources:list=[], deps: return build_rule( name=name, srcs=[pex_rule], - runtime_deps=interpreter_deps, + runtime_deps=runtime_targets, deps=deps, data=data, outs=[f'{name}.pex'],