def get_gc_book(self):
        """ Returns the GnuCash db session """
        if not self.gc_book:
            gc_db = self.config.get(ConfigKeys.gnucash_book_path)
            if not gc_db:
                raise AttributeError("GnuCash book path not configured.")
            # check if this is the abs file exists
            if not os.path.isabs(gc_db):
                gc_db = resource_filename(
                    Requirement.parse("Asset-Allocation"), gc_db)
                if not os.path.exists(gc_db):
                    raise ValueError(f"Invalid GnuCash book path {gc_db}")

            self.gc_book = open_book(gc_db, open_if_lock=True)
        return self.gc_book
Returns the GnuCash db session