code: def test_issue_1238():
      """
  
      https://github.com/online-ml/river/issues/1238
  
      >>> from river import compose
  
      >>> x = dict(a=0, b=1, x=2, y=3)
      >>> group_1 = compose.Select('a', 'b')
      >>> group_2 = compose.Select('x', 'y')
      >>> product = group_1 + group_2 + group_1 * group_2
      >>> sorted(product.transform_one(x), key=lambda k: (len(k), k))
      ['a', 'b', 'x', 'y', 'a*x', 'a*y', 'b*x', 'b*y']
  
      >>> product = group_1 * group_2 + group_1 + group_2
      >>> sorted(product.transform_one(x), key=lambda k: (len(k), k))
      ['a', 'b', 'x', 'y', 'a*x', 'a*y', 'b*x', 'b*y']
  
      >>> product = group_1 + group_1 * group_2
      >>> sorted(product.transform_one(x), key=lambda k: (len(k), k))
      ['a', 'b', 'a*x', 'a*y', 'b*x', 'b*y']
  
      """
  
file_path: river/river/compose/test_product.py
imports: from __future__ import annotations
  import numpy
  import pandas
  from sklearn import datasets
  from sklearn import linear_model
  from river import compat, compose, datasets, preprocessing, stream
label_desc: Use image node_id 1 for calling a global function with example usage: test_issue_1238() without return types