docs: def container_fabric(container_maps=None, docker_client=None, clients=None, client_implementation=None):
      """
      :param container_maps: Container map or a tuple / list thereof.
      :type container_maps: list[dockermap.map.config.main.ContainerMap] | dockermap.map.config.main.ContainerMap
      :param docker_client: Default Docker client instance.
      :type docker_client: dockerfabric.base.FabricClientConfiguration or docker.docker.Client
      :param clients: Optional dictionary of Docker client configuration objects.
      :type clients: dict[unicode | str, dockerfabric.base.FabricClientConfiguration]
      :param client_implementation: Client implementation to use (API or CLI).
      :type client_implementation: unicode | str
      :return: Container mapping client.
      :rtype: dockerfabric.base.FabricContainerClient
      """
      ci = client_implementation or env.get('docker_fabric_implementation') or CLIENT_API
      if ci == CLIENT_API:
          return ContainerApiFabricClient(container_maps, docker_client, clients)
      elif ci == CLIENT_CLI:
          return ContainerCliFabricClient(container_maps, docker_client, clients)
      raise ValueError("Invalid client implementation.", ci)