code: def user_item_pairs(
      user_df,
      item_df,
      user_col=DEFAULT_USER_COL,
      item_col=DEFAULT_ITEM_COL,
      user_item_filter_df=None,
      shuffle=True,
      seed=None,
  ):
      """Get all pairs of users and items data.
  
      Args:
          user_df (pandas.DataFrame): User data containing unique user ids and maybe their features.
          item_df (pandas.DataFrame): Item data containing unique item ids and maybe their features.
          user_col (str): User id column name.
          item_col (str): Item id column name.
          user_item_filter_df (pd.DataFrame): User-item pairs to be used as a filter.
          shuffle (bool): If True, shuffles the result.
          seed (int): Random seed for shuffle
  
      Returns:
          pandas.DataFrame: All pairs of user-item from user_df and item_df, excepting the pairs in user_item_filter_df.
      """
  
      # Get all user-item pairs
      user_df["key"] = 1
      item_df["key"] = 1
      users_items = user_df.merge(item_df, on="key")
  
      user_df.drop("key", axis=1, inplace=True)
      item_df.drop("key", axis=1, inplace=True)
      users_items.drop("key", axis=1, inplace=True)
  
      # Filter
      if user_item_filter_df is not None:
          users_items = filter_by(
              users_items, user_item_filter_df, [user_col, item_col]
          )
  
      if shuffle:
          users_items = users_items.sample(
              frac=1, random_state=seed
          ).reset_index(drop=True)
  
      return users_items
  
imports: import logging
  import pandas
  import numpy
  from functools import lru_cache, wraps
  from recommenders.utils.constants import DEFAULT_USER_COL, DEFAULT_ITEM_COL, DEFAULT_RATING_COL, DEFAULT_LABEL_COL
label_desc: Use image node_id 1 for calling a global function with example usage: user_item_pairs(user_df, item_df, user_col, item_col, user_item_filter_df, shuffle, seed) and returns: users_items