def stage_in(self, file, executor):
if file.scheme == '<STR_LIT>':<EOL><INDENT>working_dir = self.dfk.executors[executor].working_dir<EOL>stage_in_app = self._ftp_stage_in_app(executor=executor)<EOL>app_fut = stage_in_app(working_dir, outputs=[file])<EOL>return app_fut._outputs[<NUM_LIT:0>]<EOL><DEDENT>elif file.scheme == '<STR_LIT:http>' or file.scheme == '<STR_LIT>':<EOL><INDENT>working_dir = self.dfk.executors[executor].working_dir<EOL>stage_in_app = self._http_stage_in_app(executor=executor)<EOL>app_fut = stage_in_app(working_dir, outputs=[file])<EOL>return app_fut._outputs[<NUM_LIT:0>]<EOL><DEDENT>elif file.scheme == '<STR_LIT>':<EOL><INDENT>globus_ep = self._get_globus_endpoint(executor)<EOL>stage_in_app = self._globus_stage_in_app()<EOL>app_fut = stage_in_app(globus_ep, outputs=[file])<EOL>return app_fut._outputs[<NUM_LIT:0>]<EOL><DEDENT>else:<EOL><INDENT>raise Exception('<STR_LIT>'.format(file.scheme))<EOL><DEDENT>
Transport the file from the input source to the executor.

        This function returns a DataFuture.

        Args:
            - self
            - file (File) : file to stage in
            - executor (str) : an executor the file is going to be staged in to.
                                If the executor argument is not specified for a file
                                with 'globus' scheme, the file will be staged in to
                                the first executor with the "globus" key in a config.