Spaces:
Sleeping
Sleeping
#Fast APi Packages | |
from fastapi import FastAPI,File, UploadFile | |
from pydantic import BaseModel | |
import json | |
from typing_extensions import Annotated | |
#SkillExtraction Packages | |
from PyPDF2 import PdfReader | |
import psycopg2 | |
from psycopg2 import sql | |
import pandas as pd | |
from datetime import date | |
import numpy as np | |
import spacy | |
import re | |
from sentence_transformers import SentenceTransformer, util | |
from sklearn.feature_extraction.text import CountVectorizer | |
from sklearn.metrics.pairwise import cosine_similarity | |
from io import StringIO | |
from spacy.matcher import PhraseMatcher | |
from skillNer.general_params import SKILL_DB | |
from skillNer.skill_extractor_class import SkillExtractor | |
from psycopg2.extensions import register_adapter, AsIs | |
register_adapter(np.int64, AsIs) | |
import warnings | |
warnings.filterwarnings('ignore') | |
#Custom Classes for endpoints | |
from DbConnection import DbConnection | |
from UploadFile import UploadOpenFile | |
from SkillExtract import SkillExtractorDetails | |
import os | |
os.environ['HF_HOME'] = '/hug/cache/' | |
app = FastAPI() | |
class FileDetails(BaseModel): | |
filecontents: str | |
filename: str | |
fileid: str | |
message: str | |
class SkillDetails(BaseModel): | |
skillid: int | |
requiredSkills: str | |
softSkills: str | |
goodToHaveSkills: str | |
class FileResponse(BaseModel): | |
fileid: int | |
message: str | |
nlp = spacy.load("en_core_web_lg") | |
# init skill extractor | |
skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher) | |
async def root(): | |
return {"SkillAPI":"SkillAPi Version 0.05"} | |
#https://vaibhav84-resumeapi.hf.space/docs | |
db_params = DbConnection.GetDbConnection() | |
def parse_csv(df): | |
res = df.to_json(orient="records") | |
parsed = json.loads(res) | |
return parsed | |
def ProfileMatchResults(): | |
dbQuery = "select * from profilematch" | |
conn = psycopg2.connect(**db_params) | |
df = pd.read_sql_query(dbQuery, conn) | |
return parse_csv(df) | |
def UploadFileDetails(file_data: FileDetails): | |
returnID = UploadOpenFile.uploadFile(file_data.filecontents,file_data.filename,db_params) | |
file_data.filecontents = "" | |
file_data.fileid = str(returnID) | |
file_data.message = "File Uploaded Successfully!" | |
return file_data | |
def ExtractSkills(skill_data: SkillDetails): | |
returnSkills = SkillExtractorDetails.SkillExtract(db_params,skill_extractor,skill_data.skillid) | |
details = returnSkills.split('@') | |
skill_data.requiredSkills = details[0] | |
skill_data.softSkills = details[1] | |
skill_data.goodToHaveSkills = details[1] | |
return skill_data | |
def create_upload_file(file: bytes = File(...)): | |
content = file.decode('utf-8') | |
lines = content.split('\n') | |
return {"content": lines} | |
def upload_PDF(file: UploadFile = File(...)): | |
try: | |
contents = file.file.read() | |
with open(file.filename, 'wb') as f: | |
f.write(contents) | |
except Exception: | |
return {"message": "There was an error uploading the file"} | |
finally: | |
file.file.close() | |
return {"message": f"Successfully uploaded {contents}"} | |
def upload_PDF2(file: UploadFile = File(...)): | |
text ='' | |
if file.filename.endswith("pdf"): | |
pdf_reader = PdfReader(file) | |
for page in pdf_reader.pages: | |
text += page.extract_text() | |
return {"message": f"Successfully uploaded {text}"} |