prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Root module description is a mini-rant about LC_ALL rather than a description of the library
  ### Description
  
  Looking at the `sopel` module with `pydoc` in an interactive prompt) exposes the user to [a short rant](https://github.com/sopel-irc/sopel/blob/c26914b68913bc25bdd1f5fed9c5942a87fdfee6/sopel/__init__.py#L1-L4) about the behavior of `LC_ALL` and instructions to use only ASCII in this module.
  
  I'm sympathetic to the frustration over #984 that led to this, but it will be an improvement to add a docstring to the module with a short description.
  
  ### Reproduction steps
  
  Run `python3 -m pydoc sopel` or `import sopel; help(sopel)` in an interactive prompt.
  
  ### Expected behavior
  
  The user should see a short description of Sopel
  
  ### Relevant logs
  
  _No response_
  
  ### Notes
  
  _No response_
  
  ### Sopel version
  
  c26914b
  
  ### Installation method
  
  `pip install`
  
  ### Python version
  
  _No response_
  
  ### Operating system
  
  _No response_
  
  ### IRCd
  
  _No response_
  
  ### Relevant plugins
  
  _No response_
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `sopel/__init__.py`
  Content:
  ```
  1 # ASCII ONLY IN THIS FILE THOUGH!!!!!!!
  2 # Python does some stupid bullshit of respecting LC_ALL over the encoding on the
  3 # file, so in order to undo Python's ridiculous fucking idiocy, we have to have
  4 # our own check.
  5 
  6 # Copyright 2008, Sean B. Palmer, inamidst.com
  7 # Copyright 2012, Elsie Powell, http://embolalia.com
  8 # Copyright 2012, Elad Alfassa <elad@fedoraproject.org>
  9 #
  10 # Licensed under the Eiffel Forum License 2.
  11 
  12 from __future__ import annotations
  13 
  14 from collections import namedtuple
  15 import locale
  16 import re
  17 import sys
  18 
  19 # TODO: replace with stdlib importlib.metadata when dropping py3.7
  20 # version info used in this module works from py3.8+
  21 import importlib_metadata
  22 
  23 __all__ = [
  24     'bot',
  25     'config',
  26     'db',
  27     'formatting',
  28     'irc',
  29     'loader',
  30     'logger',
  31     'module',  # deprecated in 7.1, removed in 9.0
  32     'plugin',
  33     'tools',
  34     'trigger',
  35     'version_info',
  36 ]
  37 
  38 loc = locale.getlocale()
  39 if not loc[1] or ('UTF-8' not in loc[1] and 'utf8' not in loc[1]):
  40     print('WARNING!!! You are running with a non-UTF8 locale environment '
  41           'variable (e.g. LC_ALL is set to "C"), which makes Python 3 do '
  42           'stupid things. If you get strange errors, please set it to '
  43           'something like "en_US.UTF-8".', file=sys.stderr)
  44 
  45 
  46 __version__ = importlib_metadata.version('sopel')
  47 
  48 
  49 def _version_info(version=__version__):
  50     regex = re.compile(r'(\d+)\.(\d+)\.(\d+)(?:[\-\.]?(a|b|rc)(\d+))?.*')
  51     version_match = regex.match(version)
  52 
  53     if version_match is None:
  54         raise RuntimeError("Can't parse version number!")
  55 
  56     version_groups = version_match.groups()
  57     major, minor, micro = (int(piece) for piece in version_groups[0:3])
  58     level = version_groups[3]
  59     serial = int(version_groups[4] or 0)
  60     if level == 'a':
  61         level = 'alpha'
  62     elif level == 'b':
  63         level = 'beta'
  64     elif level == 'rc':
  65         level = 'candidate'
  66     elif not level and version_groups[4] is None:
  67         level = 'final'
  68     else:
  69         level = 'alpha'
  70 
  71     VersionInfo = namedtuple('VersionInfo',
  72                              'major, minor, micro, releaselevel, serial')
  73     return VersionInfo(major, minor, micro, level, serial)
  74 
  75 
  76 version_info = _version_info()
  77
  ```
  --- 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/sopel/__init__.py b/sopel/__init__.py
  --- a/sopel/__init__.py
  +++ b/sopel/__init__.py
  @@ -1,8 +1,9 @@
  -# ASCII ONLY IN THIS FILE THOUGH!!!!!!!
  -# Python does some stupid bullshit of respecting LC_ALL over the encoding on the
  -# file, so in order to undo Python's ridiculous fucking idiocy, we have to have
  -# our own check.
  +"""
  +Sopel is a simple, easy-to-use, open-source IRC utility bot, written in Python.
   
  +It’s designed to be easy to use, easy to run, and easy to extend.
  +"""
  +#
   # Copyright 2008, Sean B. Palmer, inamidst.com
   # Copyright 2012, Elsie Powell, http://embolalia.com
   # Copyright 2012, Elad Alfassa <elad@fedoraproject.org>
  @@ -37,9 +38,8 @@
   
   loc = locale.getlocale()
   if not loc[1] or ('UTF-8' not in loc[1] and 'utf8' not in loc[1]):
  -    print('WARNING!!! You are running with a non-UTF8 locale environment '
  -          'variable (e.g. LC_ALL is set to "C"), which makes Python 3 do '
  -          'stupid things. If you get strange errors, please set it to '
  +    print('Warning: Running with a non-UTF8 locale. If you see strange '
  +          'encoding errors, try setting the LC_ALL environment variable to '
             'something like "en_US.UTF-8".', file=sys.stderr)
  
verification_info: {"golden_diff": "diff --git a/sopel/__init__.py b/sopel/__init__.py\n--- a/sopel/__init__.py\n+++ b/sopel/__init__.py\n@@ -1,8 +1,9 @@\n-# ASCII ONLY IN THIS FILE THOUGH!!!!!!!\n-# Python does some stupid bullshit of respecting LC_ALL over the encoding on the\n-# file, so in order to undo Python's ridiculous fucking idiocy, we have to have\n-# our own check.\n+\"\"\"\n+Sopel is a simple, easy-to-use, open-source IRC utility bot, written in Python.\n \n+It\u2019s designed to be easy to use, easy to run, and easy to extend.\n+\"\"\"\n+#\n # Copyright 2008, Sean B. Palmer, inamidst.com\n # Copyright 2012, Elsie Powell, http://embolalia.com\n # Copyright 2012, Elad Alfassa <elad@fedoraproject.org>\n@@ -37,9 +38,8 @@\n \n loc = locale.getlocale()\n if not loc[1] or ('UTF-8' not in loc[1] and 'utf8' not in loc[1]):\n-    print('WARNING!!! You are running with a non-UTF8 locale environment '\n-          'variable (e.g. LC_ALL is set to \"C\"), which makes Python 3 do '\n-          'stupid things. If you get strange errors, please set it to '\n+    print('Warning: Running with a non-UTF8 locale. If you see strange '\n+          'encoding errors, try setting the LC_ALL environment variable to '\n           'something like \"en_US.UTF-8\".', file=sys.stderr)\n", "issue": "Root module description is a mini-rant about LC_ALL rather than a description of the library\n### Description\n\nLooking at the `sopel` module with `pydoc` in an interactive prompt) exposes the user to [a short rant](https://github.com/sopel-irc/sopel/blob/c26914b68913bc25bdd1f5fed9c5942a87fdfee6/sopel/__init__.py#L1-L4) about the behavior of `LC_ALL` and instructions to use only ASCII in this module.\r\n\r\nI'm sympathetic to the frustration over #984 that led to this, but it will be an improvement to add a docstring to the module with a short description.\n\n### Reproduction steps\n\nRun `python3 -m pydoc sopel` or `import sopel; help(sopel)` in an interactive prompt.\n\n### Expected behavior\n\nThe user should see a short description of Sopel\n\n### Relevant logs\n\n_No response_\n\n### Notes\n\n_No response_\n\n### Sopel version\n\nc26914b\n\n### Installation method\n\n`pip install`\n\n### Python version\n\n_No response_\n\n### Operating system\n\n_No response_\n\n### IRCd\n\n_No response_\n\n### Relevant plugins\n\n_No response_\n", "before_files": [{"content": "# ASCII ONLY IN THIS FILE THOUGH!!!!!!!\n# Python does some stupid bullshit of respecting LC_ALL over the encoding on the\n# file, so in order to undo Python's ridiculous fucking idiocy, we have to have\n# our own check.\n\n# Copyright 2008, Sean B. Palmer, inamidst.com\n# Copyright 2012, Elsie Powell, http://embolalia.com\n# Copyright 2012, Elad Alfassa <elad@fedoraproject.org>\n#\n# Licensed under the Eiffel Forum License 2.\n\nfrom __future__ import annotations\n\nfrom collections import namedtuple\nimport locale\nimport re\nimport sys\n\n# TODO: replace with stdlib importlib.metadata when dropping py3.7\n# version info used in this module works from py3.8+\nimport importlib_metadata\n\n__all__ = [\n    'bot',\n    'config',\n    'db',\n    'formatting',\n    'irc',\n    'loader',\n    'logger',\n    'module',  # deprecated in 7.1, removed in 9.0\n    'plugin',\n    'tools',\n    'trigger',\n    'version_info',\n]\n\nloc = locale.getlocale()\nif not loc[1] or ('UTF-8' not in loc[1] and 'utf8' not in loc[1]):\n    print('WARNING!!! You are running with a non-UTF8 locale environment '\n          'variable (e.g. LC_ALL is set to \"C\"), which makes Python 3 do '\n          'stupid things. If you get strange errors, please set it to '\n          'something like \"en_US.UTF-8\".', file=sys.stderr)\n\n\n__version__ = importlib_metadata.version('sopel')\n\n\ndef _version_info(version=__version__):\n    regex = re.compile(r'(\\d+)\\.(\\d+)\\.(\\d+)(?:[\\-\\.]?(a|b|rc)(\\d+))?.*')\n    version_match = regex.match(version)\n\n    if version_match is None:\n        raise RuntimeError(\"Can't parse version number!\")\n\n    version_groups = version_match.groups()\n    major, minor, micro = (int(piece) for piece in version_groups[0:3])\n    level = version_groups[3]\n    serial = int(version_groups[4] or 0)\n    if level == 'a':\n        level = 'alpha'\n    elif level == 'b':\n        level = 'beta'\n    elif level == 'rc':\n        level = 'candidate'\n    elif not level and version_groups[4] is None:\n        level = 'final'\n    else:\n        level = 'alpha'\n\n    VersionInfo = namedtuple('VersionInfo',\n                             'major, minor, micro, releaselevel, serial')\n    return VersionInfo(major, minor, micro, level, serial)\n\n\nversion_info = _version_info()\n", "path": "sopel/__init__.py"}], "after_files": [{"content": "\"\"\"\nSopel is a simple, easy-to-use, open-source IRC utility bot, written in Python.\n\nIt\u2019s designed to be easy to use, easy to run, and easy to extend.\n\"\"\"\n#\n# Copyright 2008, Sean B. Palmer, inamidst.com\n# Copyright 2012, Elsie Powell, http://embolalia.com\n# Copyright 2012, Elad Alfassa <elad@fedoraproject.org>\n#\n# Licensed under the Eiffel Forum License 2.\n\nfrom __future__ import annotations\n\nfrom collections import namedtuple\nimport locale\nimport re\nimport sys\n\n# TODO: replace with stdlib importlib.metadata when dropping py3.7\n# version info used in this module works from py3.8+\nimport importlib_metadata\n\n__all__ = [\n    'bot',\n    'config',\n    'db',\n    'formatting',\n    'irc',\n    'loader',\n    'logger',\n    'module',  # deprecated in 7.1, removed in 9.0\n    'plugin',\n    'tools',\n    'trigger',\n    'version_info',\n]\n\nloc = locale.getlocale()\nif not loc[1] or ('UTF-8' not in loc[1] and 'utf8' not in loc[1]):\n    print('Warning: Running with a non-UTF8 locale. If you see strange '\n          'encoding errors, try setting the LC_ALL environment variable to '\n          'something like \"en_US.UTF-8\".', file=sys.stderr)\n\n\n__version__ = importlib_metadata.version('sopel')\n\n\ndef _version_info(version=__version__):\n    regex = re.compile(r'(\\d+)\\.(\\d+)\\.(\\d+)(?:[\\-\\.]?(a|b|rc)(\\d+))?.*')\n    version_match = regex.match(version)\n\n    if version_match is None:\n        raise RuntimeError(\"Can't parse version number!\")\n\n    version_groups = version_match.groups()\n    major, minor, micro = (int(piece) for piece in version_groups[0:3])\n    level = version_groups[3]\n    serial = int(version_groups[4] or 0)\n    if level == 'a':\n        level = 'alpha'\n    elif level == 'b':\n        level = 'beta'\n    elif level == 'rc':\n        level = 'candidate'\n    elif not level and version_groups[4] is None:\n        level = 'final'\n    else:\n        level = 'alpha'\n\n    VersionInfo = namedtuple('VersionInfo',\n                             'major, minor, micro, releaselevel, serial')\n    return VersionInfo(major, minor, micro, level, serial)\n\n\nversion_info = _version_info()\n", "path": "sopel/__init__.py"}]}