@property
  def abstract(self):
    return self._kwargs.get('abstract', False)

  # It only makes sense to inherit a subset of our own fields (we should not inherit new fields!),
  # our superclasses logically provide fields within this constrained set.
  # NB: Since `Struct` is at base an ~unconstrained struct, a superclass does allow for
  # arbitrary and thus more fields to be defined than a subclass might logically support.  We
  # accept this hole in a trade for generally expected behavior when `Struct` is subclassed
  # in the style of constructors with named parameters representing the full complete set of
  # expected parameters leaving **kwargs only for use by 'the system'; ie for `type_alias` and
  # `address` plumbing for example.
  #
  # Of note is the fact that we pass a constraint type and not a concrete constraint value.  This
  # tells addressable to use `SuperclassesOf([Struct instance's type])`, which is what we
  # want.  Aka, for `StructSubclassA`, the constraint is
  # `SuperclassesOf(StructSubclassA)`.
  #
Return `True` if this object has been marked as abstract.
dataset/ETHPy150Open pantsbuild/pants/src/python/pants/engine/exp/struct.py/Struct.abstract