code: def extend(
      self,
      value: Union[Any, Iterable[Any]],
      *,
      steps: Optional[Collection[float]] = None,
      timestamps: Optional[Collection[float]] = None,
      wait: bool = False,
      **kwargs,
  ) -> None:
      if not isinstance(value, NamespaceVal):
          value = NamespaceVal(value)
      for k, v in value.value.items():
          self._container[f"{self._str_path}/{k}"].extend(
              v, steps=steps, timestamps=timestamps, wait=wait, **kwargs
          )
  
imports: import argparse
  from collections.abc import MutableMapping
  from typing import TYPE_CHECKING, Any, Collection, Dict, Iterable, Iterator, List, Mapping, Optional, Union
  from neptune.attributes.attribute import Attribute
  from neptune.internal.container_structure import ContainerStructure
  from neptune.internal.utils.generic_attribute_mapper import NoValue, atomic_attribute_types_map
  from neptune.internal.utils.logger import logger
  from neptune.internal.utils.paths import parse_path, path_to_str
  from neptune.types.namespace import Namespace
label_desc: Use image node_id 7 for calling the Namespace obj's underlying member method code with example usage: obj.extend(value) without return types