class_docstr: Report differences between two states of a dataset (hierarchy)
  
  The two to-be-compared states are given via the --from and --to options.
  These state identifiers are evaluated in the context of the (specified
  or detected) dataset. In the case of a recursive report on a dataset
  hierarchy, corresponding state pairs for any subdataset are determined
  from the subdataset record in the respective superdataset. Only changes
  recorded in a subdataset between these two states are reported, and so on.
  
  Any paths given as additional arguments will be used to constrain the
  difference report. As with Git's diff, it will not result in an error when
  a path is specified that does not exist on the filesystem.
  
  Reports are very similar to those of the `status` command, with the
  distinguished content types and states being identical.
class_docstr_tok: ["Report","differences","between","two","states","of","a","dataset","(","hierarchy",")","The","two","to-be-compared","states","are","given","via","the","--","from","and","--","to","options",".","These","state","identifiers","are","evaluated","in","the","context","of","the","(","specified","or","detected",")","dataset",".","In","the","case","of","a","recursive","report","on","a","dataset","hierarchy",",","corresponding","state","pairs","for","any","subdataset","are","determined","from","the","subdataset","record","in","the","respective","superdataset",".","Only","changes","recorded","in","a","subdataset","between","these","two","states","are","reported",",","and","so","on",".","Any","paths","given","as","additional","arguments","will","be","used","to","constrain","the","difference","report",".","As","with","Git","'s","diff",",","it","will","not","result","in","an","error","when","a","path","is","specified","that","does","not","exist","on","the","filesystem",".","Reports","are","very","similar","to","those","of","the","`","status","`","command",",","with","the","distinguished","content","types","and","states","being","identical","."]
code: def __call__(
      path=None,
      *,
      fr="HEAD",
      to=None,
      dataset=None,
      annex=None,
      untracked="normal",
      recursive=False,
      recursion_limit=None,
  ):
      yield from diff_dataset(
          dataset=dataset,
          fr=ensure_unicode(fr),
          to=ensure_unicode(to),
          constant_refs=False,
          path=path,
          annex=annex,
          untracked=untracked,
          recursive=recursive,
          recursion_limit=recursion_limit,
      )
  
file_path: datalad/datalad/core/local/diff.py
imports: import logging
  import os.path
  from datalad.utils import ensure_list, ensure_unicode, get_dataset_root
  from datalad.interface.base import Interface, build_doc, eval_results
  from datalad.distribution.dataset import Dataset, datasetmethod, require_dataset, resolve_path, path_under_rev_dataset
  from datalad.support.constraints import EnsureNone, EnsureStr
  from datalad.support.param import Parameter
  from datalad.core.local.status import Status, _common_diffstatus_params
  from datalad.support.exceptions import InvalidGitReferenceError
label_desc: Use image node_id 1 for calling the Diff obj's underlying member method code with example usage: obj.__call__(path) without return types