anthony01 commited on
Commit
96988ff
·
verified ·
1 Parent(s): 7232ca6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -10
app.py CHANGED
@@ -1,8 +1,9 @@
1
  import gradio as gr
2
- # from transformers import AutoModelForCausalLM, AutoTokenizer
3
-
4
  from transformers import AutoTokenizer, AutoModelForCausalLM
5
 
 
6
  model_name = "Salesforce/codegen-350M-mono"
7
  token = "token" # Replace with your actual token
8
 
@@ -10,24 +11,63 @@ token = "token" # Replace with your actual token
10
  tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=token)
11
  model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=token)
12
 
13
-
14
-
15
  def explain_code(code):
16
  inputs = tokenizer(code, return_tensors="pt")
17
  outputs = model.generate(inputs['input_ids'], max_length=500)
18
  explanation = tokenizer.decode(outputs[0], skip_special_tokens=True)
19
  return explanation
20
 
21
- # Gradio interface for uploading files
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  def process_uploaded_file(file):
23
  code = file.read().decode("utf-8")
24
- return code
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  # Create the Gradio interface
27
- iface = gr.Interface(fn=process_uploaded_file,
28
- inputs=gr.File(label="Upload Java File", file_types=[".java"]),
29
- outputs="text",
30
- live=True)
 
 
 
 
 
31
 
32
  # Launch the interface
33
  iface.launch()
 
1
  import gradio as gr
2
+ import os
3
+ import shutil
4
  from transformers import AutoTokenizer, AutoModelForCausalLM
5
 
6
+ # Model details and token
7
  model_name = "Salesforce/codegen-350M-mono"
8
  token = "token" # Replace with your actual token
9
 
 
11
  tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=token)
12
  model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=token)
13
 
14
+ # Function to explain the Java code
 
15
  def explain_code(code):
16
  inputs = tokenizer(code, return_tensors="pt")
17
  outputs = model.generate(inputs['input_ids'], max_length=500)
18
  explanation = tokenizer.decode(outputs[0], skip_special_tokens=True)
19
  return explanation
20
 
21
+ # Function to extract Java files from a directory
22
+ def extract_java_files(src_dir, dest_dir=None):
23
+ java_files = []
24
+ for root, dirs, files in os.walk(src_dir):
25
+ for file in files:
26
+ if file.endswith('.java'):
27
+ java_file_path = os.path.join(root, file)
28
+ java_files.append(java_file_path)
29
+ # If a destination directory is provided, copy the file
30
+ if dest_dir:
31
+ if not os.path.exists(dest_dir):
32
+ os.makedirs(dest_dir)
33
+ shutil.copy(java_file_path, os.path.join(dest_dir, file))
34
+ return java_files
35
+
36
+ # Function to read and process uploaded file
37
  def process_uploaded_file(file):
38
  code = file.read().decode("utf-8")
39
+ return explain_code(code)
40
+
41
+ # Create a folder for storing extracted Java files (optional)
42
+ src_directory = "path_to_your_directory" # replace with your folder path
43
+ dest_directory = "extracted_java_files" # Folder where Java files will be copied
44
+ java_files = extract_java_files(src_directory, dest_directory)
45
+
46
+ # Gradio Interface for selecting uploaded Java file or explaining code
47
+ def explain_from_uploaded_or_folder(file=None):
48
+ if file:
49
+ code = file.read().decode("utf-8")
50
+ else:
51
+ # If no file uploaded, use the first Java file from the extracted folder (or prompt user)
52
+ if java_files:
53
+ with open(java_files[0], "r") as f:
54
+ code = f.read()
55
+ else:
56
+ return "No Java files found."
57
+
58
+ # Process and return explanation of the code
59
+ return explain_code(code)
60
 
61
  # Create the Gradio interface
62
+ iface = gr.Interface(
63
+ fn=explain_from_uploaded_or_folder,
64
+ inputs=[
65
+ gr.File(label="Upload Java File", file_types=[".java"]),
66
+ gr.Button("Use First Extracted Java File", visible=not bool(java_files))
67
+ ],
68
+ outputs="text",
69
+ live=True
70
+ )
71
 
72
  # Launch the interface
73
  iface.launch()