code: def get_gc_book(self):
          
          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
docs: Returns the GnuCash db session