Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -370,7 +370,7 @@ class TranscriptParser:
|
|
370 |
parsed_data['student_info']['year_of_graduation'] = yog_match.group(1)
|
371 |
|
372 |
# Improved GPA extraction with more flexible patterns
|
373 |
-
gpa_matches = re.findall(r"(?:
|
374 |
if len(gpa_matches) >= 1:
|
375 |
parsed_data['student_info']['unweighted_gpa'] = float(gpa_matches[0])
|
376 |
if len(gpa_matches) >= 2:
|
@@ -413,11 +413,12 @@ class TranscriptParser:
|
|
413 |
}
|
414 |
|
415 |
# Extract assessments with more flexible pattern
|
416 |
-
assess_pattern = re.compile(r"Z-
|
417 |
for match in assess_pattern.finditer(text):
|
418 |
name = f"Assessment: {match.group(1).strip()}"
|
419 |
-
status = match.group(3).strip()
|
420 |
-
|
|
|
421 |
|
422 |
# Handle other Z items
|
423 |
for z_item in ["Community Service Hours", "GPA"]:
|
@@ -427,9 +428,9 @@ class TranscriptParser:
|
|
427 |
parsed_data['assessments'][z_item] = status
|
428 |
|
429 |
# Extract course history with more robust pattern
|
430 |
-
course_history_section = re.search(r"
|
431 |
if course_history_section:
|
432 |
-
course_lines = [line.strip() for line in course_history_section.group(1).split('\n') if line.strip()]
|
433 |
for line in course_lines:
|
434 |
parts = [part.strip() for part in line.split('|')]
|
435 |
if len(parts) >= 9:
|
@@ -445,6 +446,9 @@ class TranscriptParser:
|
|
445 |
'included': parts[8] if len(parts) > 8 else "",
|
446 |
'credits': parts[9] if len(parts) > 9 else "0"
|
447 |
}
|
|
|
|
|
|
|
448 |
parsed_data['course_history'].append(course)
|
449 |
|
450 |
return parsed_data
|
@@ -500,7 +504,7 @@ class TranscriptParser:
|
|
500 |
# ========== ENHANCED ANALYSIS FUNCTIONS ==========
|
501 |
def analyze_gpa(parsed_data: Dict) -> str:
|
502 |
try:
|
503 |
-
gpa = float(parsed_data
|
504 |
if gpa >= 4.5:
|
505 |
return "π Excellent GPA! You're in the top tier of students."
|
506 |
elif gpa >= 3.5:
|
|
|
370 |
parsed_data['student_info']['year_of_graduation'] = yog_match.group(1)
|
371 |
|
372 |
# Improved GPA extraction with more flexible patterns
|
373 |
+
gpa_matches = re.findall(r"(?:UN.?WEIGHTED|WEIGHTED)\s*GPA\s*([\d.]+)", text, re.IGNORECASE)
|
374 |
if len(gpa_matches) >= 1:
|
375 |
parsed_data['student_info']['unweighted_gpa'] = float(gpa_matches[0])
|
376 |
if len(gpa_matches) >= 2:
|
|
|
413 |
}
|
414 |
|
415 |
# Extract assessments with more flexible pattern
|
416 |
+
assess_pattern = re.compile(r"Z-([^\|]+)\s*\|\s*([^\|]*)\s*\|\s*([^\|]*)\s*\|\s*([^\|]*)\s*%", re.IGNORECASE)
|
417 |
for match in assess_pattern.finditer(text):
|
418 |
name = f"Assessment: {match.group(1).strip()}"
|
419 |
+
status = match.group(3).strip() if match.group(3) else ""
|
420 |
+
if status:
|
421 |
+
parsed_data['assessments'][name] = status
|
422 |
|
423 |
# Handle other Z items
|
424 |
for z_item in ["Community Service Hours", "GPA"]:
|
|
|
428 |
parsed_data['assessments'][z_item] = status
|
429 |
|
430 |
# Extract course history with more robust pattern
|
431 |
+
course_history_section = re.search(r"Requirement.*?School Year.*?GradeLv1.*?CrsNum.*?Description.*?Term.*?DstNumber.*?FG.*?Incl.*?Credits(.*?)(?:\n\s*\n|$)", text, re.DOTALL | re.IGNORECASE)
|
432 |
if course_history_section:
|
433 |
+
course_lines = [line.strip() for line in course_history_section.group(1).split('\n') if line.strip() and '|' in line]
|
434 |
for line in course_lines:
|
435 |
parts = [part.strip() for part in line.split('|')]
|
436 |
if len(parts) >= 9:
|
|
|
446 |
'included': parts[8] if len(parts) > 8 else "",
|
447 |
'credits': parts[9] if len(parts) > 9 else "0"
|
448 |
}
|
449 |
+
# Handle "inProgress" credits
|
450 |
+
if "inProgress" in course['credits'].lower():
|
451 |
+
course['credits'] = "0"
|
452 |
parsed_data['course_history'].append(course)
|
453 |
|
454 |
return parsed_data
|
|
|
504 |
# ========== ENHANCED ANALYSIS FUNCTIONS ==========
|
505 |
def analyze_gpa(parsed_data: Dict) -> str:
|
506 |
try:
|
507 |
+
gpa = float(parsed_data.get('student_info', {}).get('weighted_gpa', 0))
|
508 |
if gpa >= 4.5:
|
509 |
return "π Excellent GPA! You're in the top tier of students."
|
510 |
elif gpa >= 3.5:
|