class_docstr: Object representing a single job to execute.
  
  Notes
  -----
  This class should never be created directly by the user. Use :meth:`.Batch.new_job`,
  :meth:`.Batch.new_bash_job`, or :meth:`.Batch.new_python_job` instead.
class_docstr_tok: ["Object","representing","a","single","job","to","execute",".","Notes","--","--","-","This","class","should","never","be","created","directly","by","the","user",".","Use",":","meth",":","`",".Batch.new_job","`",",",":","meth",":","`",".Batch.new_bash_job","`",",","or",":","meth",":","`",".Batch.new_python_job","`","instead","."]
docstr: Set the job's storage size.
  
  Examples
  --------
  
  Set the job's disk requirements to 10 Gi:
  
  >>> b = Batch()
  >>> j = b.new_job()
  >>> (j.storage('10Gi')
  ...   .command(f'echo "hello"'))
  >>> b.run()
  
  Notes
  -----
  
  The storage expression must be of the form {number}{suffix}
  where valid optional suffixes are *K*, *Ki*, *M*, *Mi*,
  *G*, *Gi*, *T*, *Ti*, *P*, and *Pi*. Omitting a suffix means
  the value is in bytes.
  
  For the :class:`.ServiceBackend`, jobs requesting one or more cores receive
  5 GiB of storage for the root file system `/`. Jobs requesting a fraction of a core
  receive the same fraction of 5 GiB of storage. If you need additional storage, you
  can explicitly request more storage using this method and the extra storage space
  will be mounted at `/io`. Batch automatically writes all :class:`.ResourceFile` to
  `/io`.
  
  The default storage size is 0 Gi. The minimum storage size is 0 Gi and the
  maximum storage size is 64 Ti. If storage is set to a value between 0 Gi
  and 10 Gi, the storage request is rounded up to 10 Gi. All values are
  rounded up to the nearest Gi.
  
  Parameters
  ----------
  storage:
      Units are in bytes if `storage` is an :obj:`int`. If `None`, use the
      default storage size for the :class:`.ServiceBackend` (0 Gi).
  
  Returns
  -------
  Same job object with storage set.
docstr_tok: ["Set","the","job","'s","storage","size",".","Examples","--","--","--","--","Set","the","job","'s","disk","requirements","to","10","Gi",":",">",">",">","b","=","Batch","(",")",">",">",">","j","=","b.new_job","(",")",">",">",">","(","j.storage","(","'10Gi","'",")","...",".command","(","f'echo","``","hello","''","'",")",")",">",">",">","b.run","(",")","Notes","--","--","-","The","storage","expression","must","be","of","the","form","{","number","}","{","suffix","}","where","valid","optional","suffixes","are","*","K","*",",","*","Ki","*",",","*","M","*",",","*","Mi","*",",","*","G","*",",","*","Gi","*",",","*","T","*",",","*","Ti","*",",","*","P","*",",","and","*","Pi","*",".","Omitting","a","suffix","means","the","value","is","in","bytes",".","For","the",":","class",":","`",".ServiceBackend","`",",","jobs","requesting","one","or","more","cores","receive","5","GiB","of","storage","for","the","root","file","system","`","\/","`",".","Jobs","requesting","a","fraction","of","a","core","receive","the","same","fraction","of","5","GiB","of","storage",".","If","you","need","additional","storage",",","you","can","explicitly","request","more","storage","using","this","method","and","the","extra","storage","space","will","be","mounted","at","`","\/io","`",".","Batch","automatically","writes","all",":","class",":","`",".ResourceFile","`","to","`","\/io","`",".","The","default","storage","size","is","0","Gi",".","The","minimum","storage","size","is","0","Gi","and","the","maximum","storage","size","is","64","Ti",".","If","storage","is","set","to","a","value","between","0","Gi","and","10","Gi",",","the","storage","request","is","rounded","up","to","10","Gi",".","All","values","are","rounded","up","to","the","nearest","Gi",".","Parameters","--","--","--","--","--","storage",":","Units","are","in","bytes","if","`","storage","`","is","an",":","obj",":","`","int","`",".","If","`","None","`",",","use","the","default","storage","size","for","the",":","class",":","`",".ServiceBackend","`","(","0","Gi",")",".","Returns","--","--","--","-","Same","job","object","with","storage","set","."]
code: def storage(self, storage: Optional[Union[str, int]]) -> Self:
      """
      Set the job's storage size.
  
      Examples
      --------
  
      Set the job's disk requirements to 10 Gi:
  
      >>> b = Batch()
      >>> j = b.new_job()
      >>> (j.storage('10Gi')
      ...   .command(f'echo "hello"'))
      >>> b.run()
  
      Notes
      -----
  
      The storage expression must be of the form {number}{suffix}
      where valid optional suffixes are *K*, *Ki*, *M*, *Mi*,
      *G*, *Gi*, *T*, *Ti*, *P*, and *Pi*. Omitting a suffix means
      the value is in bytes.
  
      For the :class:`.ServiceBackend`, jobs requesting one or more cores receive
      5 GiB of storage for the root file system `/`. Jobs requesting a fraction of a core
      receive the same fraction of 5 GiB of storage. If you need additional storage, you
      can explicitly request more storage using this method and the extra storage space
      will be mounted at `/io`. Batch automatically writes all :class:`.ResourceFile` to
      `/io`.
  
      The default storage size is 0 Gi. The minimum storage size is 0 Gi and the
      maximum storage size is 64 Ti. If storage is set to a value between 0 Gi
      and 10 Gi, the storage request is rounded up to 10 Gi. All values are
      rounded up to the nearest Gi.
  
      Parameters
      ----------
      storage:
          Units are in bytes if `storage` is an :obj:`int`. If `None`, use the
          default storage size for the :class:`.ServiceBackend` (0 Gi).
  
      Returns
      -------
      Same job object with storage set.
      """
  
      self._storage = opt_str(storage)
      return self
  
imports: import asyncio
  import inspect
  import os
  import re
  import textwrap
  import warnings
  from shlex import quote
  from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union, cast, Literal
  from typing_extensions import Self
  import hailtop.batch_client.client
  from .None import backend, batch
  from .None import resource
  from .exceptions import BatchException
label_desc: Use image node_id 10 for calling the Job obj's underlying member method code with example usage: obj.storage(storage) and returns: self