code: def inject(arg_names=None, all_except=None):
      
      back_frame_loc = locations.get_back_frame_loc()
      if arg_names is not None and all_except is not None:
          raise errors.TooManyArgsToInjectDecoratorError(back_frame_loc)
      for arg, arg_value in [('arg_names', arg_names), ('all_except', all_except)]:
          if arg_value is not None:
              if not arg_value:
                  raise errors.EmptySequenceArgError(back_frame_loc, arg)
              if (not support.is_sequence(arg_value) or
                      support.is_string(arg_value)):
                  raise errors.WrongArgTypeError(
                      arg, 'sequence (of arg names)', type(arg_value).__name__)
      if arg_names is None and all_except is None:
          all_except = []
      return _get_pinject_wrapper(
          back_frame_loc, inject_arg_names=arg_names,
          inject_all_except_arg_names=all_except)
docs: Marks an initializer explicitly as injectable.
  
      An initializer marked with @inject will be usable even when setting
      only_use_explicit_bindings=True when calling new_object_graph().
  
      This decorator can be used on an initializer or provider method to
      separate the injectable args from the args that will be passed directly.
      If arg_names is specified, then it must be a sequence, and only those args
      are injected (and the rest must be passed directly).  If all_except is
      specified, then it must be a sequence, and only those args are passed
      directly (and the rest must be specified).  If neither arg_names nor
      all_except are specified, then all args are injected (and none may be
      passed directly).
  
      arg_names or all_except, when specified, must not be empty and must
      contain a (possibly empty, possibly non-proper) subset of the named args
      of the decorated function.  all_except may not be all args of the
      decorated function (because then why call that provider method or
      initialzer via Pinject?).  At most one of arg_names and all_except may be
      specified.  A function may be decorated by @inject at most once.