docs: def init_db(dbURL, pwd_salt_size=None, pwd_rounds=None):
      '''Initialize users database
  
      initialize database and create necessary tables
      to handle users oprations.
  
      :param dbURL: database url, as described in :func:`init_proxy`
      '''
      if not dbURL:
          dbURL = 'sqlite:///:memory:'
      logging.getLogger(__name__).debug("Initializing database: {}".format(dict(url=dbURL,
                                                                                pwd_salt_size=pwd_salt_size,
                                                                                pwd_rounds=pwd_rounds)))
      try:
          db = init_proxy(dbURL)
          global pwdCryptCtx
          pwdCryptCtx = gen_crypt_context(salt_size=pwd_salt_size, rounds=pwd_rounds)
          create_tables(db)
          return db
      except Exception as e:
          e.args = (e.args[0] + ' [users database]',)
          raise