class_docstr: Base implementation of a Continual Learning benchmark instance.
  A Continual Learning benchmark instance is defined by a set of streams of
  experiences (batches or tasks depending on the terminology). Each
  experience contains the training (or test, or validation, ...) data that
  becomes available at a certain time instant.
  
  Experiences are usually defined in children classes, with this class
  serving as the more general implementation. This class handles the most
  simple type of assignment: each stream is defined as a list of experiences,
  each experience is defined by a dataset.
  
  Defining the "train" and "test" streams is mandatory. This class supports
  custom streams as well. Custom streams can be accessed by using the
  `streamname_stream` field of the created instance.
  
  The name of custom streams can only contain letters, numbers or the "_"
  character and must not start with a number.
code: def _check_stream_name(stream_name: Any):
      if not isinstance(stream_name, str):
          raise ValueError(
              'Invalid type for stream name. Must be a "str"'
          )
  
      if STREAM_NAME_REGEX.fullmatch(stream_name) is None:
          raise ValueError(f"Invalid name for stream {stream_name}")
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass
  import re
  from typing import Generic, TypeVar, Union, Sequence, Callable, Optional, Dict, Any, Iterable, List, Set, Tuple, Mapping, TYPE_CHECKING
  from .None import DatasetExperience
  from ..generic_scenario import CLScenario, CLExperience, CLStream, SequenceCLStream
  from .lazy_dataset_sequence import LazyDatasetSequence
  from avalanche.benchmarks.utils import AvalancheDataset
  from torch.utils.data.dataset import Dataset
label_desc: Use image node_id 8 for calling the DatasetScenario obj's underlying member method code with example usage: obj._check_stream_name(stream_name) without return types