class_docstr: Abstract drawer that uses a remote service via XML-RPC
  to draw something on a remote display.
class_docstr_tok: ["Abstract","drawer","that","uses","a","remote","service","via","XML-RPC","to","draw","something","on","a","remote","display","."]
docstr: Constructs an abstract drawer using the XML-RPC service
  at the given URL.
  
  @param url: the URL where the XML-RPC calls for the service should
    be addressed to.
  @param service: the name of the service at the XML-RPC address. If
    C{None}, requests will be directed to the server proxy object
    constructed by C{xmlrpclib.ServerProxy}; if not C{None}, the
    given attribute will be looked up in the server proxy object.
docstr_tok: ["Constructs","an","abstract","drawer","using","the","XML-RPC","service","at","the","given","URL",".","@","param","url",":","the","URL","where","the","XML-RPC","calls","for","the","service","should","be","addressed","to",".","@","param","service",":","the","name","of","the","service","at","the","XML-RPC","address",".","If","C","{","None","}",",","requests","will","be","directed","to","the","server","proxy","object","constructed","by","C","{","xmlrpclib.ServerProxy","}",";","if","not","C","{","None","}",",","the","given","attribute","will","be","looked","up","in","the","server","proxy","object","."]
code: def __init__(self, url, service=None):
      """Constructs an abstract drawer using the XML-RPC service
      at the given URL.
  
      @param url: the URL where the XML-RPC calls for the service should
        be addressed to.
      @param service: the name of the service at the XML-RPC address. If
        C{None}, requests will be directed to the server proxy object
        constructed by C{xmlrpclib.ServerProxy}; if not C{None}, the
        given attribute will be looked up in the server proxy object.
      """
      import xmlrpc.client
  
      url = self._resolve_hostname(url)
      self.server = xmlrpc.client.ServerProxy(url)
      if service is None:
          self.service = self.server
      else:
          self.service = getattr(self.server, service)
  
imports: from abc import ABCMeta, abstractmethod
  from math import atan2, pi
  from .text import TextAlignment
  from .utils import get_bezier_control_points_for_curved_edge, evaluate_cubic_bezier
label_desc: Use image node_id 1 to create a new AbstractXMLRPCDrawer object from inherited base classes: AbstractDrawer with example: obj = AbstractXMLRPCDrawer(url, service)