class_docstr: Property descriptor for ResolverOp.
  
  Usage:
    class FooOp(ResolverOp):
      foo = Property(type=int, default=42)
  
      def apply(self, input_dict):
        whatever(self.foo, input_dict)  # Can be accessed from self.
        ...
  
    @resolver_stem
    def my_resolver_stem(input_dict):
      result = FooOp(input_dict, foo=123)
class_docstr_tok: ["Property","descriptor","for","ResolverOp",".","Usage",":","class","FooOp","(","ResolverOp",")",":","foo","=","Property","(","type=int",",","default=42",")","def","apply","(","self",",","input_dict",")",":","whatever","(","self.foo",",","input_dict",")","#","Can","be","accessed","from","self",".","...","@","resolver_stem","def","my_resolver_stem","(","input_dict",")",":","result","=","FooOp","(","input_dict",",","foo=123",")"]
code: def required(self) -> bool:
      return self._required
  
imports: from __future__ import annotations
  import abc
  from typing import Any, Generic, Literal, Mapping, Optional, Sequence, Set, Type, TypeVar, Union
  import attr
  from tfx import types
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import json_utils
  from tfx.utils import typing_utils
  import ml_metadata
label_desc: Use image node_id 4 for calling the Property obj's underlying member method code with example usage: obj.required() and returns: self