class_docstr: Class representing an intermediate file from a job.
  
  Examples
  --------
  `j.ofile` is a :class:`.JobResourceFile` on the job`j`:
  
  >>> b = Batch()
  >>> j = b.new_job(name='hello-tmp')
  >>> j.command(f'echo "hello world" > {j.ofile}')
  >>> b.run()
  
  Notes
  -----
  All :class:`.JobResourceFile` are temporary files and must be written
  to a permanent location using :meth:`.Batch.write_output` if the output needs
  to be saved.
class_docstr_tok: ["Class","representing","an","intermediate","file","from","a","job",".","Examples","--","--","--","--","`","j.ofile","`","is","a",":","class",":","`",".JobResourceFile","`","on","the","job","`","j","`",":",">",">",">","b","=","Batch","(",")",">",">",">","j","=","b.new_job","(","name='hello-tmp","'",")",">",">",">","j.command","(","f'echo","``","hello","world","''",">","{","j.ofile","}","'",")",">",">",">","b.run","(",")","Notes","--","--","-","All",":","class",":","`",".JobResourceFile","`","are","temporary","files","and","must","be","written","to","a","permanent","location","using",":","meth",":","`",".Batch.write_output","`","if","the","output","needs","to","be","saved","."]
code: def __init__(self, value, source: job.Job):
      super().__init__(value)
      self._has_extension = False
      self._source = source
  
imports: import abc
  from typing import Optional, Set, cast, Union
  from .None import job
  from .exceptions import BatchException
label_desc: Use image node_id 1 to create a new JobResourceFile object from inherited base classes: ResourceFile with example: obj = JobResourceFile(value, source)