#Fast APi Packages from fastapi import FastAPI from pydantic import BaseModel import json #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 class SkillDetails(BaseModel): skillid: int class FileResponse(BaseModel): fileid: int message: str nlp = spacy.load("en_core_web_lg") # init skill extractor skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher) @app.get("/") async def root(): return {"greeting":"Hello world"} #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 @app.get("/ProfileMatch") def ProfileMatchResults(): dbQuery = "select * from profilematch" conn = psycopg2.connect(**db_params) df = pd.read_sql_query(dbQuery, conn) return parse_csv(df) @app.post("/UploadFile/") def UploadFileDetails(file_data: FileDetails): FileResponse.fileid = UploadOpenFile.uploadFile(file_data.filecontents,file_data.filename,db_params) FileResponse.message = "File Uploaded Successfully!!!" return @app.post("/ExtractSkills/") def ExtractSkills(skill_data: SkillDetails): return SkillExtractorDetails.SkillExtract(db_params,skill_extractor,skill_data.skillid)