code: def autoparams(*selected_args):
      
      def autoparams_decorator(func):
          if sys.version_info[:2] < (3, 5):
              raise InjectorException('autoparams are supported from Python 3.5 onwards')
  
          full_args_spec = inspect.getfullargspec(func)
          annotations_items = full_args_spec.annotations.items()
          all_arg_names = frozenset(full_args_spec.args + full_args_spec.kwonlyargs)
          args_to_check = frozenset(selected_args) or all_arg_names
          args_annotated_types = {
              arg_name: annotated_type for arg_name, annotated_type in annotations_items
              if arg_name in args_to_check
          }
          return _ParametersInjection(**args_annotated_types)(func)
  
      return autoparams_decorator
docs: Return a decorator that will inject args into a function using type annotations, Python >= 3.5 only.
  
      For example::
  
          @inject.autoparams()
          def refresh_cache(cache: RedisCache, db: DbInterface):
              pass
  
      There is an option to specify which arguments we want to inject without attempts of injecting everything:
  
      For example::
  
          @inject.autoparams('cache', 'db')
          def sign_up(name, email, cache, db):
              pass