docs: def create_Indico_request_url(
          base_url,
          indico_what,
          indico_loc,
          indico_id,
          indico_type,
          indico_params,
          indico_key,
          indico_sig,
          _timestamp=None):
      """
      Create a signed Indico request URL to access Indico HTTP Export APIs.
  
      See U{http://indico.cern.ch/ihelp/html/ExportAPI/index.html} for more
      information.
  
      Example:
      >> create_Indico_request_url("https://indico.cern.ch",
                                   "categ",
                                   "",
                                   [1, 7],
                                   "xml",
                                   {'onlypublic': 'yes',
                                    'order': 'title',
                                    'from': 'today',
                                    'to': 'tomorrow'},
                                   '00000000-0000-0000-0000-000000000000',
                                   '00000000-0000-0000-0000-000000000000')
  
      @param base_url: Service base URL of the Indico instance to query
      @param indico_what: element to export
      @type indico_what: one of the strings: C{categ}, C{event}, C{room}, C{reservation}
      @param indico_loc: location of the element(s) specified by ID (only used for some elements)
      @param indico_id: ID of the element to be exported
      @type indico_id: a string or a list/tuple of strings
      @param indico_type: output format
      @type indico_type: one of the strings: C{json}, C{jsonp}, C{xml}, C{html}, C{ics}, C{atom}
      @param indico_params: parameters of the query. See U{http://indico.cern.ch/ihelp/html/ExportAPI/common.html}
      @param indico_key: API key provided for the given Indico instance
      @param indico_sig: API secret key (signature) provided for the given Indico instance
      @param _timestamp: for testing purpose only (default: current timestamp)
  
      @return signed URL of the request (string)
      """
  
      url = '/export/' + indico_what + '/'
      if indico_loc:
          url += indico_loc + '/'
      if type(indico_id) in (list, tuple):
          # dash separated list of values
          indico_id = '-'.join([str(x) for x in indico_id])
      url += indico_id + '.' + str(indico_type)
  
      if hasattr(indico_params, 'items'):
          items = indico_params.items()
      else:
          items = list(indico_params)
      if indico_key:
          items.append(('apikey', indico_key))
      if indico_sig and HASHLIB_IMPORTED:
          if _timestamp:
              items.append(('timestamp', str(_timestamp)))
          else:
              items.append(('timestamp', str(int(time.time()))))
          items = sorted(items, key=lambda x: x[0].lower())
          url_to_sign = '%s?%s' % (url, urlencode(items))
          if sys.version_info < (2, 5):
              # compatibility mode for Python < 2.5 and hashlib
              my_digest_algo = _MySHA1(sha1())
          else:
              my_digest_algo = sha1
          signature = hmac.new(indico_sig, url_to_sign,
                               my_digest_algo).hexdigest()
          items.append(('signature', signature))
      elif not HASHLIB_IMPORTED:
          current_app.logger.warning(
              "Module hashlib not installed. Please install it."
          )
      if not items:
          return url
  
      url = '%s%s?%s' % (base_url.strip('/'), url, urlencode(items))
      return url