code: def shared_client(ClientType, *args, **kwargs):
      
      kwarg_key = tuple((key, kwargs[key]) for key in sorted(kwargs))
      cache_key = (ClientType, args, kwarg_key)
      client = None
      if cache_key in _client_cache:
          # resolve cached weakref
          # client can still be None after this!
          client = _client_cache[cache_key]()
  
      if client is None:
          Client = getattr(kubernetes.client, ClientType)
          client = Client(*args, **kwargs)
          # cache weakref so that clients can be garbage collected
          _client_cache[cache_key] = weakref.ref(client)
      return client
docs: Return a single shared kubernetes client instance
  
      A weak reference to the instance is cached,
      so that concurrent calls to shared_client
      will all return the same instance until
      all references to the client are cleared.