prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Decrease binary dummy length
  `fake.binary(length=1048576)` generate too huge binary data but it is useless at docs build time.
  
  I tested two case, 1048576 and 1024.
  
  ``` console
  (faker) [item4@item4-mbp docs]$ echo "1048576"
  1048576
  (faker) [item4@item4-mbp docs]$ time make html
  sphinx-build -b html -d _build/doctrees   . _build/html
  Running Sphinx v1.4.8
  loading pickled environment... done
  building [mo]: targets for 0 po files that are out of date
  building [html]: targets for 61 source files that are out of date
  updating environment: 0 added, 61 changed, 0 removed
  reading sources... [100%] providers/faker.providers.user_agent
  looking for now-outdated files... none found
  pickling environment... done
  checking consistency... done
  preparing documents... done
  writing output... [100%] providers/faker.providers.user_agent
  generating indices... genindex
  writing additional pages... search
  copying static files... WARNING: html_static_path entry '/Users/item4/Projects/faker/docs/_static' does not exist
  done
  copying extra files... done
  dumping search index in English (code: en) ... done
  dumping object inventory... done
  build succeeded, 1 warning.
  
  Build finished. The HTML pages are in _build/html.
  
  real    3m24.875s
  user    3m3.222s
  sys 0m10.986s
  (faker) [item4@item4-mbp docs]$ echo "1024"
  1024
  (faker) [item4@item4-mbp docs]$ time make html
  sphinx-build -b html -d _build/doctrees   . _build/html
  Running Sphinx v1.4.8
  loading pickled environment... done
  building [mo]: targets for 0 po files that are out of date
  building [html]: targets for 61 source files that are out of date
  updating environment: 0 added, 61 changed, 0 removed
  reading sources... [100%] providers/faker.providers.user_agent
  looking for now-outdated files... none found
  pickling environment... done
  checking consistency... done
  preparing documents... done
  writing output... [100%] providers/faker.providers.user_agent
  generating indices... genindex
  writing additional pages... search
  copying static files... WARNING: html_static_path entry '/Users/item4/Projects/faker/docs/_static' does not exist
  done
  copying extra files... done
  dumping search index in English (code: en) ... done
  dumping object inventory... done
  build succeeded, 1 warning.
  
  Build finished. The HTML pages are in _build/html.
  
  real    0m46.086s
  user    0m43.772s
  sys 0m1.479s
  ```
  
  Does docs really need 1048576 length binary?
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `faker/documentor.py`
  Content:
  ```
  1 # coding=utf-8
  2 
  3 from __future__ import unicode_literals
  4 
  5 import inspect
  6 
  7 from faker import utils
  8 
  9 
  10 class Documentor(object):
  11 
  12     def __init__(self, generator):
  13         """
  14         :param generator: a localized Generator with providers filled,
  15                           for which to write the documentation
  16         :type generator: faker.Generator()
  17         """
  18         self.generator = generator
  19         self.max_name_len = 0
  20         self.already_generated = []
  21 
  22     def get_formatters(self, locale=None, excludes=None, **kwargs):
  23 
  24         self.max_name_len = 0
  25         self.already_generated = [] if excludes is None else excludes[:]
  26         formatters = []
  27         providers = self.generator.get_providers()
  28         for provider in providers[::-1]:  # reverse
  29             if locale and provider.__lang__ != locale:
  30                 continue
  31             formatters.append(
  32                 (provider, self.get_provider_formatters(provider, **kwargs))
  33             )
  34         return formatters
  35 
  36     def get_provider_formatters(self, provider, prefix='fake.',
  37                                 with_args=True, with_defaults=True):
  38 
  39         formatters = {}
  40 
  41         for name, method in inspect.getmembers(provider, inspect.ismethod):
  42 
  43             # skip 'private' method and inherited methods
  44             if name.startswith('_') or name in self.already_generated:
  45                 continue
  46 
  47             arguments = []
  48 
  49             if with_args:
  50                 # retrieve all parameter
  51                 argspec = inspect.getargspec(method)
  52 
  53                 lst = [x for x in argspec.args if x not in ['self', 'cls']]
  54                 for i, arg in enumerate(lst):
  55 
  56                     if argspec.defaults and with_defaults:
  57 
  58                         try:
  59                             default = argspec.defaults[i]
  60                             if utils.is_string(default):
  61                                 default = utils.quote(default)
  62                             else:
  63                                 # TODO check default type
  64                                 default = "{0}".format(default)
  65 
  66                             arg = "{0}={1}".format(arg, default)
  67 
  68                         except IndexError:
  69                             pass
  70 
  71                     arguments.append(arg)
  72                     if with_args == 'first':
  73                         break
  74 
  75                 if with_args != 'first':
  76                     if argspec.varargs:
  77                         arguments.append('*' + argspec.varargs)
  78                     if argspec.keywords:
  79                         arguments.append('**' + argspec.keywords)
  80 
  81             # build fake method signature
  82             signature = "{0}{1}({2})".format(prefix,
  83                                              name,
  84                                              ", ".join(arguments))
  85 
  86             # make a fake example
  87             example = self.generator.format(name)
  88 
  89             formatters[signature] = example
  90 
  91             self.max_name_len = max(self.max_name_len, len(signature))
  92             self.already_generated.append(name)
  93 
  94         return formatters
  95 
  96     @staticmethod
  97     def get_provider_name(provider_class):
  98         return provider_class.__provider__
  99
  ```
  --- 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/faker/documentor.py b/faker/documentor.py
  --- a/faker/documentor.py
  +++ b/faker/documentor.py
  @@ -39,12 +39,16 @@
           formatters = {}
   
           for name, method in inspect.getmembers(provider, inspect.ismethod):
  -
               # skip 'private' method and inherited methods
               if name.startswith('_') or name in self.already_generated:
                   continue
   
               arguments = []
  +            faker_args = []
  +            faker_kwargs = {}
  +
  +            if name == 'binary':
  +                faker_kwargs['length'] = 1024
   
               if with_args:
                   # retrieve all parameter
  @@ -84,7 +88,7 @@
                                                ", ".join(arguments))
   
               # make a fake example
  -            example = self.generator.format(name)
  +            example = self.generator.format(name, *faker_args, **faker_kwargs)
   
               formatters[signature] = example
  
verification_info: {"golden_diff": "diff --git a/faker/documentor.py b/faker/documentor.py\n--- a/faker/documentor.py\n+++ b/faker/documentor.py\n@@ -39,12 +39,16 @@\n         formatters = {}\n \n         for name, method in inspect.getmembers(provider, inspect.ismethod):\n-\n             # skip 'private' method and inherited methods\n             if name.startswith('_') or name in self.already_generated:\n                 continue\n \n             arguments = []\n+            faker_args = []\n+            faker_kwargs = {}\n+\n+            if name == 'binary':\n+                faker_kwargs['length'] = 1024\n \n             if with_args:\n                 # retrieve all parameter\n@@ -84,7 +88,7 @@\n                                              \", \".join(arguments))\n \n             # make a fake example\n-            example = self.generator.format(name)\n+            example = self.generator.format(name, *faker_args, **faker_kwargs)\n \n             formatters[signature] = example\n", "issue": "Decrease binary dummy length\n`fake.binary(length=1048576)` generate too huge binary data but it is useless at docs build time.\n\nI tested two case, 1048576 and 1024.\n\n``` console\n(faker) [item4@item4-mbp docs]$ echo \"1048576\"\n1048576\n(faker) [item4@item4-mbp docs]$ time make html\nsphinx-build -b html -d _build/doctrees   . _build/html\nRunning Sphinx v1.4.8\nloading pickled environment... done\nbuilding [mo]: targets for 0 po files that are out of date\nbuilding [html]: targets for 61 source files that are out of date\nupdating environment: 0 added, 61 changed, 0 removed\nreading sources... [100%] providers/faker.providers.user_agent\nlooking for now-outdated files... none found\npickling environment... done\nchecking consistency... done\npreparing documents... done\nwriting output... [100%] providers/faker.providers.user_agent\ngenerating indices... genindex\nwriting additional pages... search\ncopying static files... WARNING: html_static_path entry '/Users/item4/Projects/faker/docs/_static' does not exist\ndone\ncopying extra files... done\ndumping search index in English (code: en) ... done\ndumping object inventory... done\nbuild succeeded, 1 warning.\n\nBuild finished. The HTML pages are in _build/html.\n\nreal    3m24.875s\nuser    3m3.222s\nsys 0m10.986s\n(faker) [item4@item4-mbp docs]$ echo \"1024\"\n1024\n(faker) [item4@item4-mbp docs]$ time make html\nsphinx-build -b html -d _build/doctrees   . _build/html\nRunning Sphinx v1.4.8\nloading pickled environment... done\nbuilding [mo]: targets for 0 po files that are out of date\nbuilding [html]: targets for 61 source files that are out of date\nupdating environment: 0 added, 61 changed, 0 removed\nreading sources... [100%] providers/faker.providers.user_agent\nlooking for now-outdated files... none found\npickling environment... done\nchecking consistency... done\npreparing documents... done\nwriting output... [100%] providers/faker.providers.user_agent\ngenerating indices... genindex\nwriting additional pages... search\ncopying static files... WARNING: html_static_path entry '/Users/item4/Projects/faker/docs/_static' does not exist\ndone\ncopying extra files... done\ndumping search index in English (code: en) ... done\ndumping object inventory... done\nbuild succeeded, 1 warning.\n\nBuild finished. The HTML pages are in _build/html.\n\nreal    0m46.086s\nuser    0m43.772s\nsys 0m1.479s\n```\n\nDoes docs really need 1048576 length binary?\n\n", "before_files": [{"content": "# coding=utf-8\n\nfrom __future__ import unicode_literals\n\nimport inspect\n\nfrom faker import utils\n\n\nclass Documentor(object):\n\n    def __init__(self, generator):\n        \"\"\"\n        :param generator: a localized Generator with providers filled,\n                          for which to write the documentation\n        :type generator: faker.Generator()\n        \"\"\"\n        self.generator = generator\n        self.max_name_len = 0\n        self.already_generated = []\n\n    def get_formatters(self, locale=None, excludes=None, **kwargs):\n\n        self.max_name_len = 0\n        self.already_generated = [] if excludes is None else excludes[:]\n        formatters = []\n        providers = self.generator.get_providers()\n        for provider in providers[::-1]:  # reverse\n            if locale and provider.__lang__ != locale:\n                continue\n            formatters.append(\n                (provider, self.get_provider_formatters(provider, **kwargs))\n            )\n        return formatters\n\n    def get_provider_formatters(self, provider, prefix='fake.',\n                                with_args=True, with_defaults=True):\n\n        formatters = {}\n\n        for name, method in inspect.getmembers(provider, inspect.ismethod):\n\n            # skip 'private' method and inherited methods\n            if name.startswith('_') or name in self.already_generated:\n                continue\n\n            arguments = []\n\n            if with_args:\n                # retrieve all parameter\n                argspec = inspect.getargspec(method)\n\n                lst = [x for x in argspec.args if x not in ['self', 'cls']]\n                for i, arg in enumerate(lst):\n\n                    if argspec.defaults and with_defaults:\n\n                        try:\n                            default = argspec.defaults[i]\n                            if utils.is_string(default):\n                                default = utils.quote(default)\n                            else:\n                                # TODO check default type\n                                default = \"{0}\".format(default)\n\n                            arg = \"{0}={1}\".format(arg, default)\n\n                        except IndexError:\n                            pass\n\n                    arguments.append(arg)\n                    if with_args == 'first':\n                        break\n\n                if with_args != 'first':\n                    if argspec.varargs:\n                        arguments.append('*' + argspec.varargs)\n                    if argspec.keywords:\n                        arguments.append('**' + argspec.keywords)\n\n            # build fake method signature\n            signature = \"{0}{1}({2})\".format(prefix,\n                                             name,\n                                             \", \".join(arguments))\n\n            # make a fake example\n            example = self.generator.format(name)\n\n            formatters[signature] = example\n\n            self.max_name_len = max(self.max_name_len, len(signature))\n            self.already_generated.append(name)\n\n        return formatters\n\n    @staticmethod\n    def get_provider_name(provider_class):\n        return provider_class.__provider__\n", "path": "faker/documentor.py"}], "after_files": [{"content": "# coding=utf-8\n\nfrom __future__ import unicode_literals\n\nimport inspect\n\nfrom faker import utils\n\n\nclass Documentor(object):\n\n    def __init__(self, generator):\n        \"\"\"\n        :param generator: a localized Generator with providers filled,\n                          for which to write the documentation\n        :type generator: faker.Generator()\n        \"\"\"\n        self.generator = generator\n        self.max_name_len = 0\n        self.already_generated = []\n\n    def get_formatters(self, locale=None, excludes=None, **kwargs):\n\n        self.max_name_len = 0\n        self.already_generated = [] if excludes is None else excludes[:]\n        formatters = []\n        providers = self.generator.get_providers()\n        for provider in providers[::-1]:  # reverse\n            if locale and provider.__lang__ != locale:\n                continue\n            formatters.append(\n                (provider, self.get_provider_formatters(provider, **kwargs))\n            )\n        return formatters\n\n    def get_provider_formatters(self, provider, prefix='fake.',\n                                with_args=True, with_defaults=True):\n\n        formatters = {}\n\n        for name, method in inspect.getmembers(provider, inspect.ismethod):\n            # skip 'private' method and inherited methods\n            if name.startswith('_') or name in self.already_generated:\n                continue\n\n            arguments = []\n            faker_args = []\n            faker_kwargs = {}\n\n            if name == 'binary':\n                faker_kwargs['length'] = 1024\n\n            if with_args:\n                # retrieve all parameter\n                argspec = inspect.getargspec(method)\n\n                lst = [x for x in argspec.args if x not in ['self', 'cls']]\n                for i, arg in enumerate(lst):\n\n                    if argspec.defaults and with_defaults:\n\n                        try:\n                            default = argspec.defaults[i]\n                            if utils.is_string(default):\n                                default = utils.quote(default)\n                            else:\n                                # TODO check default type\n                                default = \"{0}\".format(default)\n\n                            arg = \"{0}={1}\".format(arg, default)\n\n                        except IndexError:\n                            pass\n\n                    arguments.append(arg)\n                    if with_args == 'first':\n                        break\n\n                if with_args != 'first':\n                    if argspec.varargs:\n                        arguments.append('*' + argspec.varargs)\n                    if argspec.keywords:\n                        arguments.append('**' + argspec.keywords)\n\n            # build fake method signature\n            signature = \"{0}{1}({2})\".format(prefix,\n                                             name,\n                                             \", \".join(arguments))\n\n            # make a fake example\n            example = self.generator.format(name, *faker_args, **faker_kwargs)\n\n            formatters[signature] = example\n\n            self.max_name_len = max(self.max_name_len, len(signature))\n            self.already_generated.append(name)\n\n        return formatters\n\n    @staticmethod\n    def get_provider_name(provider_class):\n        return provider_class.__provider__\n", "path": "faker/documentor.py"}]}