prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  List comprehension in __all__ prevents Pylance from working
  Thanks for contributing to Pwntools!   Ideas from the community help make Pwntools an amazing tool for everybody.
  
  If you've got an idea for a new feature, please provide information about:
  
  * What the feature does
  According to https://github.com/microsoft/pylance-release/issues/289, the list comprehension in `__all__` in https://github.com/Gallopsled/pwntools/blob/4e6ccb0da17fb91e43a4f9e95edf4fd83806ba23/pwn/toplevel.py#L85 prevents [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) from working (when using `from pwn import *` instead of manually importing all modules).
  https://github.com/compas-dev/compas/issues/621 may be a solution instead of listing all attributes manually to fix that.
  * Why the feature should exist
  To make Pylance happy :smile: 
  * What tests should be included
  Test in VS Code to ensure it works.
  
  If you think you can write the feature yourself, please submit a Pull Request and we can review your changes!
  
  
  </issue>
  <code>
  [start of pwn/toplevel.py]
  1 # Get all the modules from pwnlib
  2 import collections
  3 import logging
  4 import math
  5 import operator
  6 import os
  7 import platform
  8 import re
  9 import requests
  10 import socks
  11 import signal
  12 import string
  13 import struct
  14 import subprocess
  15 import sys
  16 import tempfile
  17 import threading
  18 import time
  19 
  20 from pprint import pprint
  21 
  22 import pwnlib
  23 from pwnlib import *
  24 from pwnlib.asm import *
  25 from pwnlib.context import Thread
  26 from pwnlib.context import context, LocalContext
  27 from pwnlib.dynelf import DynELF
  28 from pwnlib.encoders import *
  29 from pwnlib.elf.corefile import Core, Corefile, Coredump
  30 from pwnlib.elf.elf import ELF, load
  31 from pwnlib.encoders import *
  32 from pwnlib.exception import PwnlibException
  33 from pwnlib.gdb import attach, debug_assembly, debug_shellcode
  34 from pwnlib.filepointer import *
  35 from pwnlib.flag import *
  36 from pwnlib.fmtstr import FmtStr, fmtstr_payload, fmtstr_split
  37 from pwnlib.log import getLogger
  38 from pwnlib.memleak import MemLeak, RelativeMemLeak
  39 from pwnlib.regsort import *
  40 from pwnlib.replacements import *
  41 from pwnlib.rop import ROP
  42 from pwnlib.rop.call import AppendedArgument
  43 from pwnlib.rop.srop import SigreturnFrame
  44 from pwnlib.rop.ret2dlresolve import Ret2dlresolvePayload
  45 from pwnlib.runner import *
  46 from pwnlib.term.readline import str_input
  47 from pwnlib.timeout import Timeout
  48 from pwnlib.tubes.listen import listen
  49 from pwnlib.tubes.process import process, PTY, PIPE, STDOUT
  50 from pwnlib.tubes.remote import remote, tcp, udp, connect
  51 from pwnlib.tubes.serialtube import serialtube
  52 from pwnlib.tubes.server import server
  53 from pwnlib.tubes.ssh import ssh
  54 from pwnlib.tubes.tube import tube
  55 from pwnlib.ui import *
  56 from pwnlib.util import crc
  57 from pwnlib.util import iters
  58 from pwnlib.util import net
  59 from pwnlib.util import proc
  60 from pwnlib.util import safeeval
  61 from pwnlib.util.crc import BitPolynom
  62 from pwnlib.util.cyclic import *
  63 from pwnlib.util.fiddling import *
  64 from pwnlib.util.getdents import *
  65 from pwnlib.util.hashes import *
  66 from pwnlib.util.lists import *
  67 from pwnlib.util.misc import *
  68 from pwnlib.util.packing import *
  69 from pwnlib.util.proc import pidof
  70 from pwnlib.util.sh_string import sh_string, sh_prepare, sh_command_with
  71 from pwnlib.util.splash import *
  72 from pwnlib.util.web import *
  73 
  74 # Promote these modules, so that "from pwn import *" will let you access them
  75 
  76 from six.moves import cPickle as pickle, cStringIO as StringIO
  77 from six import BytesIO
  78 
  79 error   = log.error
  80 warning = log.warning
  81 warn    = log.warning
  82 info    = log.info
  83 debug   = log.debug
  84 success = log.success
  85 
  86 __all__ = [x for x in tuple(globals()) if x != '__name__']
  87
  [end of pwn/toplevel.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/pwn/toplevel.py b/pwn/toplevel.py
  --- a/pwn/toplevel.py
  +++ b/pwn/toplevel.py
  @@ -83,4 +83,5 @@
   debug   = log.debug
   success = log.success
   
  -__all__ = [x for x in tuple(globals()) if x != '__name__']
  +# Equivalence with the default behavior of "from import *"
  +# __all__ = [x for x in tuple(globals()) if not x.startswith('_')]
  
verification_info: {"golden_diff": "diff --git a/pwn/toplevel.py b/pwn/toplevel.py\n--- a/pwn/toplevel.py\n+++ b/pwn/toplevel.py\n@@ -83,4 +83,5 @@\n debug   = log.debug\n success = log.success\n \n-__all__ = [x for x in tuple(globals()) if x != '__name__']\n+# Equivalence with the default behavior of \"from import *\"\n+# __all__ = [x for x in tuple(globals()) if not x.startswith('_')]\n", "issue": "List comprehension in __all__ prevents Pylance from working\nThanks for contributing to Pwntools!   Ideas from the community help make Pwntools an amazing tool for everybody.\r\n\r\nIf you've got an idea for a new feature, please provide information about:\r\n\r\n* What the feature does\r\nAccording to https://github.com/microsoft/pylance-release/issues/289, the list comprehension in `__all__` in https://github.com/Gallopsled/pwntools/blob/4e6ccb0da17fb91e43a4f9e95edf4fd83806ba23/pwn/toplevel.py#L85 prevents [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) from working (when using `from pwn import *` instead of manually importing all modules).\r\nhttps://github.com/compas-dev/compas/issues/621 may be a solution instead of listing all attributes manually to fix that.\r\n* Why the feature should exist\r\nTo make Pylance happy :smile: \r\n* What tests should be included\r\nTest in VS Code to ensure it works.\r\n\r\nIf you think you can write the feature yourself, please submit a Pull Request and we can review your changes!\r\n\n", "before_files": [{"content": "# Get all the modules from pwnlib\nimport collections\nimport logging\nimport math\nimport operator\nimport os\nimport platform\nimport re\nimport requests\nimport socks\nimport signal\nimport string\nimport struct\nimport subprocess\nimport sys\nimport tempfile\nimport threading\nimport time\n\nfrom pprint import pprint\n\nimport pwnlib\nfrom pwnlib import *\nfrom pwnlib.asm import *\nfrom pwnlib.context import Thread\nfrom pwnlib.context import context, LocalContext\nfrom pwnlib.dynelf import DynELF\nfrom pwnlib.encoders import *\nfrom pwnlib.elf.corefile import Core, Corefile, Coredump\nfrom pwnlib.elf.elf import ELF, load\nfrom pwnlib.encoders import *\nfrom pwnlib.exception import PwnlibException\nfrom pwnlib.gdb import attach, debug_assembly, debug_shellcode\nfrom pwnlib.filepointer import *\nfrom pwnlib.flag import *\nfrom pwnlib.fmtstr import FmtStr, fmtstr_payload, fmtstr_split\nfrom pwnlib.log import getLogger\nfrom pwnlib.memleak import MemLeak, RelativeMemLeak\nfrom pwnlib.regsort import *\nfrom pwnlib.replacements import *\nfrom pwnlib.rop import ROP\nfrom pwnlib.rop.call import AppendedArgument\nfrom pwnlib.rop.srop import SigreturnFrame\nfrom pwnlib.rop.ret2dlresolve import Ret2dlresolvePayload\nfrom pwnlib.runner import *\nfrom pwnlib.term.readline import str_input\nfrom pwnlib.timeout import Timeout\nfrom pwnlib.tubes.listen import listen\nfrom pwnlib.tubes.process import process, PTY, PIPE, STDOUT\nfrom pwnlib.tubes.remote import remote, tcp, udp, connect\nfrom pwnlib.tubes.serialtube import serialtube\nfrom pwnlib.tubes.server import server\nfrom pwnlib.tubes.ssh import ssh\nfrom pwnlib.tubes.tube import tube\nfrom pwnlib.ui import *\nfrom pwnlib.util import crc\nfrom pwnlib.util import iters\nfrom pwnlib.util import net\nfrom pwnlib.util import proc\nfrom pwnlib.util import safeeval\nfrom pwnlib.util.crc import BitPolynom\nfrom pwnlib.util.cyclic import *\nfrom pwnlib.util.fiddling import *\nfrom pwnlib.util.getdents import *\nfrom pwnlib.util.hashes import *\nfrom pwnlib.util.lists import *\nfrom pwnlib.util.misc import *\nfrom pwnlib.util.packing import *\nfrom pwnlib.util.proc import pidof\nfrom pwnlib.util.sh_string import sh_string, sh_prepare, sh_command_with\nfrom pwnlib.util.splash import *\nfrom pwnlib.util.web import *\n\n# Promote these modules, so that \"from pwn import *\" will let you access them\n\nfrom six.moves import cPickle as pickle, cStringIO as StringIO\nfrom six import BytesIO\n\nerror   = log.error\nwarning = log.warning\nwarn    = log.warning\ninfo    = log.info\ndebug   = log.debug\nsuccess = log.success\n\n__all__ = [x for x in tuple(globals()) if x != '__name__']\n", "path": "pwn/toplevel.py"}]}