prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Add description and deprecation support to filters
  `FilterInputObjectType` doesn't provide a way to document fields. We could add two fields to the meta-class: `descriptions = {field: description}` and `deprecations = {field: reason}`.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `saleor/graphql/core/types/filter_input.py`
  Content:
  ```
  1 import six
  2 from graphene import InputField, InputObjectType
  3 from graphene.types.inputobjecttype import InputObjectTypeOptions
  4 from graphene.types.utils import yank_fields_from_attrs
  5 from graphene_django.filter.utils import get_filterset_class
  6 
  7 from .converter import convert_form_field
  8 
  9 
  10 class FilterInputObjectType(InputObjectType):
  11     """Class for storing and serving django-filtres as graphQL input.
  12 
  13     FilterSet class which inherits from django-filters.FilterSet should be
  14     provided with using fitlerset_class argument.
  15     """
  16 
  17     @classmethod
  18     def __init_subclass_with_meta__(
  19         cls, _meta=None, model=None, filterset_class=None, fields=None, **options
  20     ):
  21         cls.custom_filterset_class = filterset_class
  22         cls.filterset_class = None
  23         cls.fields = fields
  24         cls.model = model
  25 
  26         if not _meta:
  27             _meta = InputObjectTypeOptions(cls)
  28 
  29         fields = cls.get_filtering_args_from_filterset()
  30         fields = yank_fields_from_attrs(fields, _as=InputField)
  31         if _meta.fields:
  32             _meta.fields.update(fields)
  33         else:
  34             _meta.fields = fields
  35 
  36         super().__init_subclass_with_meta__(_meta=_meta, **options)
  37 
  38     @classmethod
  39     def get_filtering_args_from_filterset(cls):
  40         """Retrieve the filtering arguments from the queryset.
  41 
  42         Inspect a FilterSet and produce the arguments to pass to a Graphene field.
  43         These arguments will be available to filter against in the GraphQL.
  44         """
  45         if not cls.custom_filterset_class:
  46             assert cls.model and cls.fields, (
  47                 "Provide filterset class or model and fields requested to "
  48                 "create default filterset"
  49             )
  50 
  51         meta = dict(model=cls.model, fields=cls.fields)
  52         cls.filterset_class = get_filterset_class(cls.custom_filterset_class, **meta)
  53 
  54         args = {}
  55         for name, filter_field in six.iteritems(cls.filterset_class.base_filters):
  56             input_class = getattr(filter_field, "input_class", None)
  57             if input_class:
  58                 field_type = convert_form_field(filter_field)
  59             else:
  60                 field_type = convert_form_field(filter_field.field)
  61                 field_type.description = filter_field.label
  62             kwargs = getattr(field_type, "kwargs", {})
  63             field_type.kwargs = kwargs
  64             args[name] = field_type
  65         return args
  66
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/saleor/graphql/core/types/filter_input.py b/saleor/graphql/core/types/filter_input.py
  --- a/saleor/graphql/core/types/filter_input.py
  +++ b/saleor/graphql/core/types/filter_input.py
  @@ -58,7 +58,7 @@
                   field_type = convert_form_field(filter_field)
               else:
                   field_type = convert_form_field(filter_field.field)
  -                field_type.description = filter_field.label
  +                field_type.description = getattr(filter_field, "help_text", "")
               kwargs = getattr(field_type, "kwargs", {})
               field_type.kwargs = kwargs
               args[name] = field_type
  
verification_info: {"golden_diff": "diff --git a/saleor/graphql/core/types/filter_input.py b/saleor/graphql/core/types/filter_input.py\n--- a/saleor/graphql/core/types/filter_input.py\n+++ b/saleor/graphql/core/types/filter_input.py\n@@ -58,7 +58,7 @@\n                 field_type = convert_form_field(filter_field)\n             else:\n                 field_type = convert_form_field(filter_field.field)\n-                field_type.description = filter_field.label\n+                field_type.description = getattr(filter_field, \"help_text\", \"\")\n             kwargs = getattr(field_type, \"kwargs\", {})\n             field_type.kwargs = kwargs\n             args[name] = field_type\n", "issue": "Add description and deprecation support to filters\n`FilterInputObjectType` doesn't provide a way to document fields. We could add two fields to the meta-class: `descriptions = {field: description}` and `deprecations = {field: reason}`.\n", "before_files": [{"content": "import six\nfrom graphene import InputField, InputObjectType\nfrom graphene.types.inputobjecttype import InputObjectTypeOptions\nfrom graphene.types.utils import yank_fields_from_attrs\nfrom graphene_django.filter.utils import get_filterset_class\n\nfrom .converter import convert_form_field\n\n\nclass FilterInputObjectType(InputObjectType):\n    \"\"\"Class for storing and serving django-filtres as graphQL input.\n\n    FilterSet class which inherits from django-filters.FilterSet should be\n    provided with using fitlerset_class argument.\n    \"\"\"\n\n    @classmethod\n    def __init_subclass_with_meta__(\n        cls, _meta=None, model=None, filterset_class=None, fields=None, **options\n    ):\n        cls.custom_filterset_class = filterset_class\n        cls.filterset_class = None\n        cls.fields = fields\n        cls.model = model\n\n        if not _meta:\n            _meta = InputObjectTypeOptions(cls)\n\n        fields = cls.get_filtering_args_from_filterset()\n        fields = yank_fields_from_attrs(fields, _as=InputField)\n        if _meta.fields:\n            _meta.fields.update(fields)\n        else:\n            _meta.fields = fields\n\n        super().__init_subclass_with_meta__(_meta=_meta, **options)\n\n    @classmethod\n    def get_filtering_args_from_filterset(cls):\n        \"\"\"Retrieve the filtering arguments from the queryset.\n\n        Inspect a FilterSet and produce the arguments to pass to a Graphene field.\n        These arguments will be available to filter against in the GraphQL.\n        \"\"\"\n        if not cls.custom_filterset_class:\n            assert cls.model and cls.fields, (\n                \"Provide filterset class or model and fields requested to \"\n                \"create default filterset\"\n            )\n\n        meta = dict(model=cls.model, fields=cls.fields)\n        cls.filterset_class = get_filterset_class(cls.custom_filterset_class, **meta)\n\n        args = {}\n        for name, filter_field in six.iteritems(cls.filterset_class.base_filters):\n            input_class = getattr(filter_field, \"input_class\", None)\n            if input_class:\n                field_type = convert_form_field(filter_field)\n            else:\n                field_type = convert_form_field(filter_field.field)\n                field_type.description = filter_field.label\n            kwargs = getattr(field_type, \"kwargs\", {})\n            field_type.kwargs = kwargs\n            args[name] = field_type\n        return args\n", "path": "saleor/graphql/core/types/filter_input.py"}], "after_files": [{"content": "import six\nfrom graphene import InputField, InputObjectType\nfrom graphene.types.inputobjecttype import InputObjectTypeOptions\nfrom graphene.types.utils import yank_fields_from_attrs\nfrom graphene_django.filter.utils import get_filterset_class\n\nfrom .converter import convert_form_field\n\n\nclass FilterInputObjectType(InputObjectType):\n    \"\"\"Class for storing and serving django-filtres as graphQL input.\n\n    FilterSet class which inherits from django-filters.FilterSet should be\n    provided with using fitlerset_class argument.\n    \"\"\"\n\n    @classmethod\n    def __init_subclass_with_meta__(\n        cls, _meta=None, model=None, filterset_class=None, fields=None, **options\n    ):\n        cls.custom_filterset_class = filterset_class\n        cls.filterset_class = None\n        cls.fields = fields\n        cls.model = model\n\n        if not _meta:\n            _meta = InputObjectTypeOptions(cls)\n\n        fields = cls.get_filtering_args_from_filterset()\n        fields = yank_fields_from_attrs(fields, _as=InputField)\n        if _meta.fields:\n            _meta.fields.update(fields)\n        else:\n            _meta.fields = fields\n\n        super().__init_subclass_with_meta__(_meta=_meta, **options)\n\n    @classmethod\n    def get_filtering_args_from_filterset(cls):\n        \"\"\"Retrieve the filtering arguments from the queryset.\n\n        Inspect a FilterSet and produce the arguments to pass to a Graphene field.\n        These arguments will be available to filter against in the GraphQL.\n        \"\"\"\n        if not cls.custom_filterset_class:\n            assert cls.model and cls.fields, (\n                \"Provide filterset class or model and fields requested to \"\n                \"create default filterset\"\n            )\n\n        meta = dict(model=cls.model, fields=cls.fields)\n        cls.filterset_class = get_filterset_class(cls.custom_filterset_class, **meta)\n\n        args = {}\n        for name, filter_field in six.iteritems(cls.filterset_class.base_filters):\n            input_class = getattr(filter_field, \"input_class\", None)\n            if input_class:\n                field_type = convert_form_field(filter_field)\n            else:\n                field_type = convert_form_field(filter_field.field)\n                field_type.description = getattr(filter_field, \"help_text\", \"\")\n            kwargs = getattr(field_type, \"kwargs\", {})\n            field_type.kwargs = kwargs\n            args[name] = field_type\n        return args\n", "path": "saleor/graphql/core/types/filter_input.py"}]}