code: def url(match, handler=None, methods=None, defaults=None,
          redirect_to=None, build_only=False, name=None, **kwargs):
      
      assert isinstance(match, str), "match parameter should be string."
      assert handler or redirect_to, "you should specify handler or redirect_to for the url"
  
      if isinstance(methods, str):
          methods = [methods.upper()]
      elif isinstance(methods, (list, tuple)):
          methods = [x.upper() for x in methods]
  
      rule = {"match": match,
              "handler": handler,
              "methods": methods,
              "defaults": defaults,
              "redirect_to": redirect_to,
              "build_only": build_only,
              "name": name,
              "extra_data": kwargs}
      return rule
docs: Simple helper for build a url, and return anillo
      url spec hash map (dictionary)
  
      It can be used in this way:
  
      urls = [
          url("/<int:year>", index, methods=["get", "post"]),
          url("/<int:year>", index, methods=["get", "post"])
      ]
  
      This is a prefered way to define one url.
  
      :return: The anillo url spec
      :rtype: dict