code: def required_args(target, args=(), kwargs=()):
      """Return a set of names of required args to target that were not supplied
      in args or kwargs.
  
      This is used in builds() to determine which arguments to attempt to
      fill from type hints.  target may be any callable (including classes
      and bound methods).  args and kwargs should be as they are passed to
      builds() - that is, a tuple of values and a dict of names: values.
      """
      # We start with a workaround for NamedTuples, which don't have nice inits
      if inspect.isclass(target) and is_typed_named_tuple(target):
          provided = set(kwargs) | set(target._fields[: len(args)])
          return set(target._fields) - provided
      # Then we try to do the right thing with inspect.signature
      try:
          sig = get_signature(target)
      except (ValueError, TypeError):
          return set()
      return {
          name
          for name, param in list(sig.parameters.items())[len(args) :]
          if arg_is_required(param) and name not in kwargs
      }
  
imports: import ast
  import hashlib
  import inspect
  import os
  import re
  import sys
  import textwrap
  import types
  from functools import wraps
  from io import StringIO
  from keyword import iskeyword
  from tokenize import COMMENT, detect_encoding, generate_tokens, untokenize
  from types import ModuleType
  from typing import TYPE_CHECKING, Any, Callable
  from unittest.mock import _patch
  from hypothesis.internal.compat import PYPY, is_typed_named_tuple
  from hypothesis.utils.conventions import not_set
  from hypothesis.vendor.pretty import pretty
label_desc: Use image node_id 7 for calling a global function with example usage: required_args(target, args, kwargs) and returns: unknown, unknown, set