code: def download_file(url, out_file):
      out_dir = os.path.dirname(out_file)
      if not os.path.isdir(out_dir):
          os.makedirs(out_dir)
      if not os.path.isfile(out_file):
          log.info("\t" + url + " > " + out_file)
          fh, out_file_tmp = tempfile.mkstemp(dir=out_dir)
          f = os.fdopen(fh, "w")
          f.close()
          urllib.request.urlretrieve(url, out_file_tmp)
          # urllib.urlretrieve(url, out_file_tmp)
          os.rename(out_file_tmp, out_file)
      else:
          pass
  
imports: import os
  import os.path
  import shutil
  import json
  import torch
  from glob import glob
  import sys
  import csv
  import logging
  import numpy
  from plyfile import PlyData, PlyElement
  from torch_geometric.data import Data, InMemoryDataset, download_url, extract_zip
  import torch_geometric.transforms
  import multiprocessing
  import pandas
  import tempfile
  import urllib
  from urllib.request import urlopen
  from torch_points3d.datasets.base_dataset import BaseDataset
  import torch_points3d.core.data_transform
  from .None import IGNORE_LABEL
label_desc: Use image node_id 3 for calling a global function with example usage: download_file(url, out_file) without return types