async def setup_isort(setup_request: SetupRequest, isort: Isort) -> Setup: isort_pex_get = Get( VenvPex, PexRequest( output_filename="isort.pex", internal_only=True, requirements=PexRequirements(isort.all_requirements), interpreter_constraints=PexInterpreterConstraints( isort.interpreter_constraints), main=isort.main, ), ) source_files_get = Get( SourceFiles, SourceFilesRequest(field_set.sources for field_set in setup_request.request.field_sets), ) source_files, isort_pex = await MultiGet(source_files_get, isort_pex_get) source_files_snapshot = ( source_files.snapshot if setup_request.request.prior_formatter_result is None else setup_request.request.prior_formatter_result) config_files = await Get(ConfigFiles, ConfigFilesRequest, isort.config_request(source_files_snapshot.dirs)) # Isort 5+ changes how config files are handled. Determine which semantics we should use. is_isort5 = False if isort.config: isort_info = await Get(PexResolveInfo, VenvPex, isort_pex) is_isort5 = any( dist_info.project_name == "isort" and dist_info.version.major >= 5 for dist_info in isort_info) input_digest = await Get( Digest, MergeDigests( (source_files_snapshot.digest, config_files.snapshot.digest))) process = await Get( Process, VenvPexProcess( isort_pex, argv=generate_argv(source_files, isort, is_isort5=is_isort5, check_only=setup_request.check_only), input_digest=input_digest, output_files=source_files_snapshot.files, description= f"Run isort on {pluralize(len(setup_request.request.field_sets), 'file')}.", level=LogLevel.DEBUG, ), ) return Setup(process, original_digest=source_files_snapshot.digest)
async def isort_fmt(request: IsortRequest, isort: Isort) -> FmtResult: if isort.skip: return FmtResult.skip(formatter_name=request.name) isort_pex_get = Get(VenvPex, PexRequest, isort.to_pex_request()) config_files_get = Get(ConfigFiles, ConfigFilesRequest, isort.config_request(request.snapshot.dirs)) isort_pex, config_files = await MultiGet(isort_pex_get, config_files_get) # Isort 5+ changes how config files are handled. Determine which semantics we should use. is_isort5 = False if isort.config: isort_info = await Get(PexResolveInfo, VenvPex, isort_pex) is_isort5 = any( dist_info.project_name == "isort" and dist_info.version.major >= 5 for dist_info in isort_info) input_digest = await Get( Digest, MergeDigests((request.snapshot.digest, config_files.snapshot.digest))) result = await Get( ProcessResult, VenvPexProcess( isort_pex, argv=generate_argv(request.snapshot.files, isort, is_isort5=is_isort5), input_digest=input_digest, output_files=request.snapshot.files, description= f"Run isort on {pluralize(len(request.field_sets), 'file')}.", level=LogLevel.DEBUG, ), ) output_snapshot = await Get(Snapshot, Digest, result.output_digest) return FmtResult.create(request, result, output_snapshot, strip_chroot_path=True)