class_docstr: Includes a local file as a parameter for the flow.
  
  `IncludeFile` behaves like `Parameter` except that it reads its value from a file instead of
  the command line. The user provides a path to a file on the command line. The file contents
  are saved as a read-only artifact which is available in all steps of the flow.
  
  Parameters
  ----------
  name : str
      User-visible parameter name.
  default : str or a function
      Default path to a local file. A function
      implies that the parameter corresponds to a *deploy-time parameter*.
  is_text : bool, default: True
      Convert the file contents to a string using the provided `encoding`.
      If False, the artifact is stored in `bytes`.
  encoding : str, optional, default: 'utf-8'
      Use this encoding to decode the file contexts if `is_text=True`.
  required : bool, default: False
      Require that the user specified a value for the parameter.
      `required=True` implies that the `default` is not used.
  help : str, optional
      Help text to show in `run --help`.
  show_default : bool, default: True
      If True, show the default value in the help text.
class_docstr_tok: ["Includes","a","local","file","as","a","parameter","for","the","flow",".","`","IncludeFile","`","behaves","like","`","Parameter","`","except","that","it","reads","its","value","from","a","file","instead","of","the","command","line",".","The","user","provides","a","path","to","a","file","on","the","command","line",".","The","file","contents","are","saved","as","a","read-only","artifact","which","is","available","in","all","steps","of","the","flow",".","Parameters","--","--","--","--","--","name",":","str","User-visible","parameter","name",".","default",":","str","or","a","function","Default","path","to","a","local","file",".","A","function","implies","that","the","parameter","corresponds","to","a","*","deploy-time","parameter","*",".","is_text",":","bool",",","default",":","True","Convert","the","file","contents","to","a","string","using","the","provided","`","encoding","`",".","If","False",",","the","artifact","is","stored","in","`","bytes","`",".","encoding",":","str",",","optional",",","default",":","'utf-8'","Use","this","encoding","to","decode","the","file","contexts","if","`","is_text=True","`",".","required",":","bool",",","default",":","False","Require","that","the","user","specified","a","value","for","the","parameter",".","`","required=True","`","implies","that","the","`","default","`","is","not","used",".","help",":","str",",","optional","Help","text","to","show","in","`","run","--","help","`",".","show_default",":","bool",",","default",":","True","If","True",",","show","the","default","value","in","the","help","text","."]
code: def __init__(
      self,
      name: str,
      required: bool = False,
      is_text: bool = True,
      encoding: str = "utf-8",
      help: Optional[str] = None,
      **kwargs: Dict[str, str],
  ):
      # If a default is specified, it needs to be uploaded when the flow is deployed
      # (for example when doing a `step-functions create`) so we make the default
      # be a DeployTimeField. This means that it will be evaluated in two cases:
      #  - by deploy_time_eval for `step-functions create` and related.
      #  - by Click when evaluating the parameter.
      #
      # In the first case, we will need to fully upload the file whereas in the
      # second case, we can just return the string as the FilePath.convert method
      # will take care of evaluating things.
      v = kwargs.get("default")
      if v is not None:
          # If the default is a callable, we have two DeployTimeField:
          #  - the callable nature of the default will require us to "call" the default
          #    (so that is the outer DeployTimeField)
          #  - IncludeFile defaults are always DeployTimeFields (since they need to be
          #    uploaded)
          #
          # Therefore, if the default value is itself a callable, we will have
          # a DeployTimeField (upload the file) wrapping another DeployTimeField
          # (call the default)
          if callable(v) and not isinstance(v, DeployTimeField):
              # If default is a callable, make it a DeployTimeField (the inner one)
              v = DeployTimeField(
                  name, str, "default", v, return_str=True
              )
          kwargs["default"] = DeployTimeField(
              name,
              str,
              "default",
              IncludeFile._eval_default(is_text, encoding, v),
              print_representation=v,
          )
  
      super(IncludeFile, self).__init__(
          name,
          required=required,
          help=help,
          type=FilePathClass(is_text, encoding),
          **kwargs,
      )
  
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 1 to create a new IncludeFile object from inherited base classes: Parameter with example: obj = IncludeFile(name, required, is_text, encoding, help)