Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
debugger_instance.py82 linesDownload Raw Back to utils
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10from flask import session11from threading import Lock12import secrets13 14debugger_sessions_lock = Lock()15 16 17class DebuggerInstance():18    def __init__(self, trans_id=None):19        if trans_id is None:20            self._trans_id = str(secrets.choice(range(1, 9999999)))21        else:22            self._trans_id = str(trans_id)23 24        self._function_data = None25        self._debugger_data = None26        self.load_from_session()27 28    @property29    def trans_id(self):30        """31        trans_id be readonly with no setter32        """33        return self._trans_id34 35    @property36    def function_data(self):37        return self._function_data38 39    @function_data.setter40    def function_data(self, data):41        self._function_data = data42        self.update_session()43 44    @property45    def debugger_data(self):46        return self._debugger_data47 48    @debugger_data.setter49    def debugger_data(self, data):50        self._debugger_data = data51        self.update_session()52 53    @staticmethod54    def get_trans_ids():55        if '__debugger_sessions' in session:56            return [trans_id for trans_id in session['__debugger_sessions']]57        else:58            return []59 60    def load_from_session(self):61        if '__debugger_sessions' in session and \62                str(self.trans_id) in session['__debugger_sessions']:63            trans_data = session['__debugger_sessions'][str(self.trans_id)]64            self.function_data = trans_data.get('function_data', None)65            self.debugger_data = trans_data.get('debugger_data', None)66 67    def update_session(self):68        with debugger_sessions_lock:69            if '__debugger_sessions' not in session:70                session['__debugger_sessions'] = dict()71 72            session['__debugger_sessions'][str(self.trans_id)] = dict(73                function_data=self.function_data,74                debugger_data=self.debugger_data75            )76 77    def clear(self):78        with debugger_sessions_lock:79            if '__debugger_sessions' in session and \80                    str(self.trans_id) in session['__debugger_sessions']:81                session['__debugger_sessions'].pop(str(self.trans_id))82 
codekingpro/portable-devtools · Team Ai