Coverage for app/__init__.py: 93%

28 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-20 21:23 +0000

1from flask import Flask 

2from flask_cors import CORS 

3from config import Config 

4from flask_sqlalchemy import SQLAlchemy 

5from flask_migrate import Migrate 

6from langchain_postgres.vectorstores import PGVector 

7from langchain_core.embeddings import DeterministicFakeEmbedding 

8from langchain_ollama import OllamaEmbeddings 

9 

10from flask_login import LoginManager 

11 

12# load_dotenv() 

13# print(os.getenv("SESSION_SECRET_KEY")) 

14 

15# the two functions we call when initalizing app db and migrations 

16db = SQLAlchemy() 

17migrate = Migrate() 

18login_manager = LoginManager() 

19 

20 

21def create_app(config_class=Config): 

22 """ 

23 Author: Troy Witmer 

24 Date: 02/06/2025 

25 Description: function that sets up all app dependencies, and blueprints, called when 

26 initializing the app 

27 param:config_class : configuration variables for the app 

28 """ 

29 

30 app = Flask(__name__) 

31 CORS(app, resources={r"/*": {"origins": "http://localhost:5173"}}) 

32 app.config.from_object(config_class) 

33 

34 # app.secret_key = os.getenv("SESSION_SECRET_KEY") 

35 # app.config['SESSION_PERMANENT'] = True 

36 

37 # initializing the database for the app 

38 db.init_app(app) 

39 # initalizing the database migrations for the app 

40 migrate.init_app(app, db) 

41 

42 login_manager.init_app(app) 

43 

44 """ 

45 app.vector_db = PGVector( 

46 embeddings=DeterministicFakeEmbedding(size=4096), 

47 collection_name="vectorized_docs", 

48 connection=app.config["SQLALCHEMY_DATABASE_URI"] 

49 ) 

50 """ 

51 

52 app.vector_db = PGVector( 

53 embeddings=OllamaEmbeddings( 

54 model="mxbai-embed-large", 

55 base_url="http://ollama:11434", 

56 ), 

57 collection_name="vectorized_docs", 

58 connection=app.config["SQLALCHEMY_DATABASE_URI"], 

59 ) 

60 

61 from app.main import bp as main_bp 

62 

63 app.register_blueprint(main_bp) 

64 

65 return app 

66 

67 

68@login_manager.user_loader 

69def load_user(user_id): 

70 from app.models import User 

71 

72 return User.query.get(int(user_id))