code: def make_url_dataset_factory(
      tags: AbstractSet[DatasetTag],
      url: str,
      archive_member: Optional[Path] = None,
      test_fraction: float = 0.1,
      normalise: bool = True,
  ) -> Callable[[DataReader], FnDatasetFactory]:
      """
      Decorator for creating a :class:`DatasetFactory` that downloads data from a URL.
  
      :param tags: Tags that applies to the data.
      :param url: URL to download.
      :param archive_member: If not `None` the URL is assumed to point to a zip-file, which will be
          un-zipped, and the member with this relative path will be used.
          If `None` the downloaded file will be used without unzipping.
      :param test_fraction: Fraction of data to use for the test set. The rest is used for training.
      :param normalise: Whether to normalise the data to mean 0 and variance 1.
      """
  
      def wrap(data_reader: DataReader) -> FnDatasetFactory:
          name = data_reader.__name__
  
          @wraps(data_reader)
          def wrapper(cache_dir: Path) -> Dataset:
              dataset_dir = cache_dir / name
              data_path = _get_data_file_from_url(
                  dataset_dir, url, archive_member
              )
              X, Y = data_reader(data_path)
              return _create_dataset(
                  name, tags, test_fraction, normalise, X, Y
              )
  
          return make_dataset_factory(tags)(wrapper)
  
      return wrap
  
imports: import zipfile
  from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from functools import wraps
  from pathlib import Path
  from typing import AbstractSet, Callable, Optional, Tuple
  from urllib.parse import urlparse
  from urllib.request import urlopen
  import numpy
  import pandas
  from check_shapes import check_shapes
  from benchmark.registry import TaggedRegistry
  from benchmark.tag import Tag, TagReq
  from gpflow.base import AnyNDArray
label_desc: Use image node_id 6 for calling a global function with example usage: make_url_dataset_factory(tags, url, archive_member, test_fraction, normalise) and returns: wrap, make_dataset_factory, _create_dataset