code: def size(cls, descriptor):
      # We never have the size so we look it up
      url = descriptor["url"]
      handler = cls._get_handler(url)
      with handler() as client:
          obj = client.info(url, return_missing=True)
          if obj.exists:
              return obj.size
      raise FileNotFoundError("File at '%s' does not exist" % url)
  
imports: from collections import namedtuple
  import gzip
  import io
  import json
  import os
  from hashlib import sha1
  from typing import Any, Dict, Optional
  from metaflow._vendor import click
  from .exception import MetaflowException
  from .parameters import DelayedEvaluationParameter, DeployTimeField, Parameter, ParameterContext
  from .util import get_username
  import functools
  from metaflow.plugins.datatools import Local, S3
  from metaflow.plugins.azure.includefile_support import Azure
  from metaflow.plugins.gcp.includefile_support import GS
label_desc: Use image node_id 3 for calling the UploaderV1 obj's underlying member method code with example usage: obj.size(cls, descriptor) and returns: obj