Remove `import re` from entrypoint wrapper scripts (#10627)

This commit is contained in:
Taneli Hukkinen 2025-01-15 20:45:32 +02:00 committed by GitHub
parent 66e47345cb
commit ad075c3751
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 54 additions and 26 deletions

View File

@ -26,6 +26,8 @@ use crate::{Error, Layout};
/// Wrapper script template function /// Wrapper script template function
/// ///
/// <https://github.com/pypa/pip/blob/7f8a6844037fb7255cfd0d34ff8e8cf44f2598d4/src/pip/_vendor/distlib/scripts.py#L41-L48> /// <https://github.com/pypa/pip/blob/7f8a6844037fb7255cfd0d34ff8e8cf44f2598d4/src/pip/_vendor/distlib/scripts.py#L41-L48>
///
/// Script template slightly modified: removed `import re`, allowing scripts that never import `re` to load faster.
fn get_script_launcher(entry_point: &Script, shebang: &str) -> String { fn get_script_launcher(entry_point: &Script, shebang: &str) -> String {
let Script { let Script {
module, function, .. module, function, ..
@ -36,11 +38,13 @@ fn get_script_launcher(entry_point: &Script, shebang: &str) -> String {
format!( format!(
r#"{shebang} r#"{shebang}
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from {module} import {import_name} from {module} import {import_name}
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit({function}()) sys.exit({function}())
"# "#
) )

View File

@ -62,11 +62,13 @@ fn tool_install() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -135,11 +137,13 @@ fn tool_install() {
assert_snapshot!(fs_err::read_to_string(bin_dir.join("flask")).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(bin_dir.join("flask")).unwrap(), @r###"
#![TEMP_DIR]/tools/flask/bin/python #![TEMP_DIR]/tools/flask/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from flask.cli import main from flask.cli import main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main()) sys.exit(main())
"###); "###);
}); });
@ -327,11 +331,13 @@ fn tool_install_version() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -409,11 +415,13 @@ fn tool_install_editable() {
assert_snapshot!(fs_err::read_to_string(&executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(&executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import main from black import main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main()) sys.exit(main())
"###); "###);
@ -705,11 +713,13 @@ fn tool_install_editable_from() {
assert_snapshot!(fs_err::read_to_string(&executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(&executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import main from black import main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main()) sys.exit(main())
"###); "###);
@ -856,11 +866,13 @@ fn tool_install_already_installed() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
}); });
@ -1218,11 +1230,13 @@ fn tool_install_force() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python3 #![TEMP_DIR]/tools/black/bin/python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -1545,11 +1559,13 @@ fn tool_install_unnamed_package() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -1658,11 +1674,13 @@ fn tool_install_unnamed_from() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -1747,11 +1765,13 @@ fn tool_install_unnamed_with() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/black/bin/python #![TEMP_DIR]/tools/black/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from black import patched_main from black import patched_main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(patched_main()) sys.exit(patched_main())
"###); "###);
@ -2618,11 +2638,13 @@ fn tool_install_malformed_dist_info() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/babel/bin/python #![TEMP_DIR]/tools/babel/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from babel.messages.frontend import main from babel.messages.frontend import main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main()) sys.exit(main())
"###); "###);
@ -2696,11 +2718,13 @@ fn tool_install_settings() {
assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###" assert_snapshot!(fs_err::read_to_string(executable).unwrap(), @r###"
#![TEMP_DIR]/tools/flask/bin/python #![TEMP_DIR]/tools/flask/bin/python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re
import sys import sys
from flask.cli import main from flask.cli import main
if __name__ == "__main__": if __name__ == "__main__":
sys.argv[0] = re.sub(r"(-script\.pyw|\.exe)?$", "", sys.argv[0]) if sys.argv[0].endswith("-script.pyw"):
sys.argv[0] = sys.argv[0][:-11]
elif sys.argv[0].endswith(".exe"):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main()) sys.exit(main())
"###); "###);