from transformers import AutoTokenizer, AutoModelWithLMHead, SummarizationPipeline import gradio as gr import tokenize import io pipeline = SummarizationPipeline( model=AutoModelWithLMHead.from_pretrained("SEBIS/code_trans_t5_large_source_code_summarization_python_multitask_finetune"), tokenizer=AutoTokenizer.from_pretrained("SEBIS/code_trans_t5_large_source_code_summarization_python_multitask_finetune", skip_special_tokens=True), device=0) def code_summarizer(code): def code_tokenizer(line): result= [] line = io.StringIO(line) for toktype, tok, start, end, line in tokenize.generate_tokens(line.readline): if (not toktype == tokenize.COMMENT): if toktype == tokenize.STRING: result.append("CODE_STRING") elif toktype == tokenize.NUMBER: result.append("CODE_INTEGER") elif (not tok=="\n") and (not tok==" "): result.append(str(tok)) return ' '.join(result) tokenized_code = code_tokenizer(code) summary = pipeline(tokenized_code) return summary[0]['summary_text'] def call_examples(): examples = ['''def findAverage(list): sum = 0. for x in list: sum = sum + x average = sum / len(list) return average''', '''def findMax(list): max = list[0] for x in list: if x > max: max = x return max''', '''def findMin(list): min = list[0] for x in list: if x < min: min = x return min'''] return examples gr.Interface(fn=code_summarizer, inputs=gr.inputs.Textbox( lines=5, default='', placeholder='Insert a Python code here', label='PYTHON CODE'), outputs=gr.outputs.Textbox( type='auto', label='CODE SUMMARY'), title='Code Summarizer From CodeTrans', description='Summarize any Python code', examples=call_examples(), allow_flagging='never').launch(inbrowser=True)