code: def url(self, **params):
          
          self._setattrs(**params)
          path = self.baseurl + self.quote(self.identifier) + "/"
          if (self.info):
              # info request
              path += "info"
              format = self.format if self.format else "json"
          else:
              # region
              if self.region:
                  region = self.region
              elif self.region_xywh:
                  region = "%d,%d,%d,%d" % tuple(self.region_xywh)
              else:
                  region = "full"
              # size
              if self.size:
                  size = self.size
              elif self.size_wh:
                  if (self.size_wh[0] is None):
                      size = ",%d" % (self.size_wh[1])
                  elif (self.size_wh[1] is None):
                      size = "%d," % (self.size_wh[0])
                  else:
                      size = "%d,%d" % (self.size_wh[0], self.size_wh[1])
              elif (self.size_max and self.api_version >= '2.1'):
                  size = 'max'
              else:
                  size = "full"
              # rotation and quality
              rotation = self.rotation if self.rotation else "0"
              quality = self.quality if self.quality else self.default_quality
              # parameterized form
              path += self.quote(region) + "/" +\
                  self.quote(size) + "/" +\
                  self.quote(rotation) + "/" +\
                  self.quote(quality)
              format = self.format
          if (format):
              path += "." + format
          return(path)
docs: Build a URL path for image or info request.
  
          An IIIF Image request with parameterized form is assumed unless
          the info parameter is specified, in which case an Image Information
          request URI is constructred.