class_docstr: Implements a conditional property using the descriptor protocol.
  
  Using this class to create a decorator will raise an ``AttributeError``
  if check(self) returns a falsey value. Note that if check raises an error
  this will also result in hasattr returning false.
  
  See https://docs.python.org/3/howto/descriptor.html for an explanation of
  descriptors.
class_docstr_tok: ["Implements","a","conditional","property","using","the","descriptor","protocol",".","Using","this","class","to","create","a","decorator","will","raise","an","``","AttributeError","``","if","check","(","self",")","returns","a","falsey","value",".","Note","that","if","check","raises","an","error","this","will","also","result","in","hasattr","returning","false",".","See","https",":","\/\/docs.python.org\/3\/howto\/descriptor.html","for","an","explanation","of","descriptors","."]
code: def __init__(self, fn, check, attribute_name):
      self.fn = fn
      self.check = check
      self.attribute_name = attribute_name
  
      # update the docstring of the descriptor
      update_wrapper(self, fn)
  
imports: from functools import update_wrapper, wraps
  from types import MethodType
label_desc: Use image node_id 1 to create a new _AvailableIfDescriptor object  with example: obj = _AvailableIfDescriptor(fn, check, attribute_name)