class_docstr: Extends watcher to add methods so calls for create and delete stream can be sent to server.
      
class_docstr_tok: ["Extends","watcher","to","add","methods","so","calls","for","create","and","delete","stream","can","be","sent","to","server","."]
code: def _open(self):
      if self.port is not None:
          self._clisrv = ZmqWrapper.ClientServer(
              port=DefaultPorts.CliSrv + self.port, is_server=False
          )
          # create subscription where we will receive server management events
          self._zmq_srvmgmt_sub = ZmqMgmtStream(
              clisrv=self._clisrv,
              for_write=False,
              port=self.port,
              stream_name="zmq_srvmgmt_sub:"
              + str(self.port)
              + ":False",
          )
  
file_path: tensorwatch/tensorwatch/watcher_client.py
imports: from typing import Any, Dict, Sequence, List
  from .zmq_wrapper import ZmqWrapper
  from .lv_types import CliSrvReqTypes, ClientServerRequest, DefaultPorts
  from .lv_types import VisArgs, PublisherTopics, ServerMgmtMsg, StreamCreateRequest
  from .stream import Stream
  from .zmq_mgmt_stream import ZmqMgmtStream
  from .None import utils
  from .watcher_base import WatcherBase
label_desc: Use image node_id 3 for calling the WatcherClient obj's underlying member method code with example usage: obj._open() without return types