async def create_python_binary( config: PythonBinaryConfiguration) -> CreatedBinary: entry_point: Optional[str] if config.entry_point.value is not None: entry_point = config.entry_point.value else: source_files = await Get[SourceFiles](AllSourceFilesRequest( [config.sources], strip_source_roots=True)) # NB: `PythonBinarySources` enforces that we have 0-1 sources. if len(source_files.files) == 1: module_name = source_files.files[0] entry_point = PythonBinary.translate_source_path_to_py_module_specifier( module_name) else: entry_point = None output_filename = f"{config.address.target_name}.pex" two_step_pex = await Get[TwoStepPex](TwoStepPexFromTargetsRequest( PexFromTargetsRequest( addresses=Addresses([config.address]), entry_point=entry_point, platforms=PexPlatforms.create_from_platforms_field( config.platforms), output_filename=output_filename, additional_args=config.generate_additional_args(), ))) pex = two_step_pex.pex return CreatedBinary(digest=pex.directory_digest, binary_name=pex.output_filename)
async def create_python_binary( field_set: PythonBinaryFieldSet, python_binary_defaults: PythonBinaryDefaults ) -> CreatedBinary: entry_point = field_set.entry_point.value if entry_point is None: # TODO: This is overkill? We don't need to hydrate the sources and strip snapshots, # we only need the path relative to the source root. binary_sources = await Get(HydratedSources, HydrateSourcesRequest(field_set.sources)) stripped_binary_sources = await Get( StrippedSourceFiles, SourceFiles(binary_sources.snapshot, ()) ) entry_point = PythonBinarySources.translate_source_file_to_entry_point( stripped_binary_sources.snapshot.files ) output_filename = f"{field_set.address.target_name}.pex" two_step_pex = await Get( TwoStepPex, TwoStepPexFromTargetsRequest( PexFromTargetsRequest( addresses=[field_set.address], entry_point=entry_point, platforms=PexPlatforms.create_from_platforms_field(field_set.platforms), output_filename=output_filename, additional_args=field_set.generate_additional_args(python_binary_defaults), ) ), ) pex = two_step_pex.pex return CreatedBinary(digest=pex.digest, binary_name=pex.output_filename)
def create_mock_binary(self, program_text: bytes) -> CreatedBinary: input_files_content = InputFilesContent( (FileContent(path="program.py", content=program_text, is_executable=True), )) digest = self.request_single_product(Digest, input_files_content) return CreatedBinary( binary_name="program.py", digest=digest, )
async def create_python_binary( field_set: PythonBinaryFieldSet) -> CreatedBinary: entry_point = field_set.entry_point.value if entry_point is None: source_files = await Get[SourceFiles](AllSourceFilesRequest( [field_set.sources], strip_source_roots=True)) entry_point = PythonBinarySources.translate_source_file_to_entry_point( source_files.files) output_filename = f"{field_set.address.target_name}.pex" two_step_pex = await Get[TwoStepPex](TwoStepPexFromTargetsRequest( PexFromTargetsRequest( addresses=Addresses([field_set.address]), entry_point=entry_point, platforms=PexPlatforms.create_from_platforms_field( field_set.platforms), output_filename=output_filename, additional_args=field_set.generate_additional_args(), ))) pex = two_step_pex.pex return CreatedBinary(digest=pex.digest, binary_name=pex.output_filename)
async def create_pex_binary(field_set: PexBinaryFieldSet) -> CreatedBinary: pex = await Get(BuiltPackage, PackageFieldSet, field_set) return CreatedBinary(pex.digest, cast(str, pex.artifacts[0].relpath))
async def create_python_binary(field_set: PythonBinaryFieldSet) -> CreatedBinary: pex = await Get(BuiltPackage, PackageFieldSet, field_set) return CreatedBinary(pex.digest, pex.relpath)