MCPcopy
hub / github.com/pex-tool/pex / _execute

Method _execute

pex/pex.py:616–664  ·  view source on GitHub ↗
(self, python_args)

Source from the content-addressed store, hash-verified

614 return result
615
616 def _execute(self, python_args):
617 # type: (Sequence[str]) -> Any
618 force_interpreter = self._vars.PEX_INTERPRETER
619
620 self._clean_environment(strip_pex_env=self._pex_info.strip_pex_env)
621
622 for name, value in self._pex_info.inject_env.items():
623 os.environ.setdefault(name, value)
624
625 for name, resource in self._pex_info.bind_resource_paths.items():
626 os.environ[name] = self._resolve_resource_path(name, resource)
627
628 replacements = Namespace(env=Namespace(os.environ, safe=True))
629
630 if force_interpreter:
631 TRACER.log("PEX_INTERPRETER specified, dropping into interpreter")
632 return self.execute_interpreter(python_args)
633
634 if not any(
635 (
636 self._pex_info_overrides.script,
637 self._pex_info_overrides.entry_point,
638 self._pex_info.script,
639 self._pex_info.entry_point,
640 )
641 ):
642 TRACER.log("No entry point specified, dropping into interpreter")
643 return self.execute_interpreter(python_args)
644
645 if self._pex_info_overrides.script and self._pex_info_overrides.entry_point:
646 return "Cannot specify both script and entry_point for a PEX!"
647
648 if self._pex_info.script and self._pex_info.entry_point:
649 return "Cannot specify both script and entry_point for a PEX!"
650
651 if self._pex_info_overrides.script:
652 return self.execute_script(self._pex_info_overrides.script)
653 if self._pex_info_overrides.entry_point:
654 return self.execute_entry(parse_entry_point(self._pex_info_overrides.entry_point))
655
656 sys.argv[1:1] = [arg.format(pex=replacements) for arg in self._pex_info.inject_args]
657
658 if self._pex_info.script:
659 return self.execute_script(self._pex_info.script)
660 else:
661 # N.B.: We tested one of script or entry_point in pex_info or overrides was non-empty
662 # above; so this just satisfies type checking.
663 assert self._pex_info.entry_point
664 return self.execute_entry(parse_entry_point(self._pex_info.entry_point))
665
666 def execute_interpreter(self, python_args):
667 # type: (Sequence[str]) -> Any

Callers

nothing calls this directly

Calls 8

_clean_environmentMethod · 0.95
execute_interpreterMethod · 0.95
execute_scriptMethod · 0.95
execute_entryMethod · 0.95
NamespaceClass · 0.90
parse_entry_pointFunction · 0.90
logMethod · 0.80

Tested by

no test coverage detected