code: func NewClient(apiDef *raml.APIDefinition, kind string, unmarshallResponse bool) Client {
  	services := map[string]*service{}
  	for uri, res := range apiDef.Resources {
  		rd := resource.New(apiDef, &res, commons.NormalizeURITitle(apiDef.Title), false)
  		services[uri] = newService(uri, &rd, unmarshallResponse)
  	}
  	switch kind {
  	case "":
  		kind = clientNameRequests
  	case clientNameRequests, clientNameAiohttp, clientNameGeventRequests:
  	default:
  		log.Fatalf("invalid client kind:%v", kind)
  	}
  
  	c := Client{
  		Name:               commons.NormalizeURI(apiDef.Title),
  		APIDef:             apiDef,
  		BaseURI:            apiDef.BaseURI,
  		Services:           services,
  		Kind:               kind,
  		UnmarshallResponse: unmarshallResponse,
  	}
  	if strings.Index(c.BaseURI, "{version}") > 0 {
  		c.BaseURI = strings.Replace(c.BaseURI, "{version}", apiDef.Version, -1)
  	}
  	c.initTemplates()
  	c.Securities = getClientSecurityDefs(apiDef.SecuritySchemes, c.Template)
  
  	return c
  }
docs: // NewClient creates a python Client