(Still experimental) PDB replacement, build on top of prompt_toolkit and ptpython.
pip install ptpdb
from ptpdb import set_trace
set_trace()
See the official PDB documentation to learn how it works.
prompt_toolkit/ptpython pdb frontend
(Still experimental) PDB replacement, build on top of prompt_toolkit and ptpython.
pip install ptpdb
from ptpdb import set_trace
set_trace()
See the official PDB documentation to learn how it works.
list
is also the list constructor
pypdb inherits from pdb this issue that all python debuggers I know of have except for pdb++
If you have a variable called c
or r
and you type one of those to see it's value, it will continue or restart.
Pdb++ has a neat feature where the variable takes precedence and if you want the command, you do e.g.: `!!c``.
https://pypi.python.org/pypi/pdbpp/#smart-command-parsing
Wanted to float the idea before working on a PR, as some folks might not like it.
I have a source code file containing German umlauts. It has a valid coding declaration. Using ptpdb in it breaks with::
XXX/tests/test_file.py:205: in test_file__Add__Edit__Download_1
assert False
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py:49: in trace_dispatch
return self.dispatch_line(frame)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py:67: in dispatch_line
self.user_line(frame)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pdb.py:158: in user_line
self.interaction(frame, None)
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pdb.py:210: in interaction
self.cmdloop()
../../../python/eggs/ptpdb-0.9-py2.7.egg/ptpdb/__init__.py:305: in cmdloop
line = self._get_input()
../../../python/eggs/ptpdb-0.9-py2.7.egg/ptpdb/__init__.py:345: in _get_input
self._show_source_code(self.curframe.f_code.co_filename)
../../../python/eggs/ptpdb-0.9-py2.7.egg/ptpdb/__init__.py:389: in _show_source_code
source_code_doc = self._get_source_code_document(filename)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <ptpdb.PtPdb instance at 0x109336830>
filename = 'XXX/tests/test_file.py'
def _get_source_code_document(self, filename):
"""
Return source code around current line as string.
"""
> source_code = ''.join(linecache.getlines(filename))
E UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 28: ordinal not in range(128)
../../../python/eggs/ptpdb-0.9-py2.7.egg/ptpdb/__init__.py:397: UnicodeDecodeError
I've briefly tried ptpdb
when coming across it while looking for better integration between pdb++ and python-prompt-toolkit than just pdb++ hijacking import pdb
when using ipdb (or something similar).
It works OK in general, but would need some fixes for removals in Jedi.
My intention is to have something that can replace https://github.com/pdbpp/fancycompleter and https://github.com/pypy/pyrepl by something that is more sophisticated in terms of using something like https://github.com/davidhalter/jedi.
pdb++ currently has a somewhat more sophisticated completion (fallback) system already, which merges completions from fancycompleter and the original/used pdb, but the completions provided by ptpdb are certainly more advanced.
Therefore I'd like to know about the current status of the project, and any plans you might have.
In general I could imagine that factoring out something along completions-for-python-toolkit might be feasible, for example.
I have this simple code defining a class:
class test:
def __init__(self):
x = [0, 0]
y = 0
#import pdb; pdb.set_trace()
import ptpdb; ptpdb.set_trace()
test()
When I use ptpdb to inspect the variables inside the class, I cannot reassign their value:
--Return--
-> ptpdb_test.py(6)__init__()->None
import ptpdb; ptpdb.set_trace()
>>> x
[0, 0]
>>> x = [1, 1]
>>> x
[0, 0]
>>> y
0
>>> y = 1
>>> y
0
which is a different behavior than pdb:
--Return--
> /tmp/ptpdb_test.py(5)__init__()->None
-> import pdb; pdb.set_trace()
(Pdb) x
[0, 0]
(Pdb) x = [1, 1]
(Pdb) x
[1, 1]
(Pdb) y
0
(Pdb) y = 1
(Pdb) y
1
Using ptpdb version 0.15 on python 2.7.11
@jonathanslenders I currently get the following error when running the latest version of ptpdb and ptpython. It happens when running import pdb; pdb.set_trace()
(fame) ➜ fame git: ✗ SKIP_UID_CHECK=1 fame
-> cli.py(93)cli_entrypoint()
args = parse_cli()
Traceback (most recent call last):
File "/home/grok/.virtualenvs/fame/bin/fame", line 11, in <module>
load_entry_point('fame', 'console_scripts', 'fame')()
File "/home/grok/code/fame/fame/cli.py", line 93, in cli_entrypoint
args = parse_cli()
File "/home/grok/code/fame/fame/cli.py", line 93, in cli_entrypoint
args = parse_cli()
File "/usr/lib/python2.7/bdb.py", line 49, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python2.7/bdb.py", line 67, in dispatch_line
self.user_line(frame)
File "/usr/lib/python2.7/pdb.py", line 158, in user_line
self.interaction(frame, None)
File "/usr/lib/python2.7/pdb.py", line 210, in interaction
self.cmdloop()
File "/home/grok/.virtualenvs/fame/local/lib/python2.7/site-packages/ptpdb/__init__.py", line 324, in cmdloop
line = self._get_input()
File "/home/grok/.virtualenvs/fame/local/lib/python2.7/site-packages/ptpdb/__init__.py", line 392, in _get_input
self.python_input.key_bindings_manager.reset(self.cli)
AttributeError: 'PythonInput' object has no attribute 'key_bindings_manager'
(fame) ➜ fame git: ✗ pip freeze
asn1crypto==0.23.0
bcrypt==3.1.4
cffi==1.11.2
configparser==3.5.0
cryptography==2.1.3
docopt==0.6.2
enum34==1.1.6
Fabric==1.14.0
flake8==3.5.0
idna==2.6
ipaddress==1.0.18
jedi==0.11.0
mccabe==0.6.1
paramiko==2.3.1
parso==0.1.0
pkg-resources==0.0.0
prompt-toolkit==1.0.15
ptpdb==0.17
ptpython==0.41
py==1.4.34
pyasn1==0.3.7
pycodestyle==2.3.1
pycparser==2.18
pyflakes==1.6.0
Pygments==2.2.0
PyNaCl==1.2.0
pytest==3.2.3
six==1.11.0
wcwidth==0.1.7
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
I got this stacktrace when i was testing ptpdb inside django with set_trace()
Environment:
Request Method: POST
Request URL: http://localhost:8080/
Django Version: 1.6.1
Python Version: 2.7.6
Installed Applications:
('suit',
'django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'celery',
'south',
'cmdb',
'debug_toolbar')
Installed Middleware:
('django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper
432. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
99. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
52. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner
198. return view(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
29. return bound_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
99. response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
25. return func(self, *args2, **kwargs2)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in changelist_view
1347. response = self.response_action(request, queryset=cl.get_queryset(request))
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in response_action
1084. response = func(self, request, queryset)
File "/srv/support/utils.py" in wrapper
52. return action(modeladmin, request, queryset, **kwargs)
File "/srv/support/unit/admin.py" in action_disable_service_mode
291. unit_names.append(unit.name)
File "/srv/support/unit/admin.py" in action_disable_service_mode
291. unit_names.append(unit.name)
File "/usr/lib/python2.7/bdb.py" in trace_dispatch
49. return self.dispatch_line(frame)
File "/usr/lib/python2.7/bdb.py" in dispatch_line
67. self.user_line(frame)
File "/usr/lib/python2.7/pdb.py" in user_line
158. self.interaction(frame, None)
File "/usr/lib/python2.7/pdb.py" in interaction
210. self.cmdloop()
File "/usr/local/lib/python2.7/dist-packages/ptpdb/__init__.py" in cmdloop
160. line = self._get_input()
File "/usr/local/lib/python2.7/dist-packages/ptpdb/__init__.py" in _get_input
223. return self.cli.cli.read_input().text
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/interface.py" in read_input
321. self.eventloop.run(self.stdin, self.create_eventloop_callbacks())
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/eventloop/posix.py" in run
57. with call_on_sigwinch(received_winch):
File "/usr/local/lib/python2.7/dist-packages/prompt_toolkit/eventloop/posix.py" in __enter__
155. self.previous_callback = signal.signal(signal.SIGWINCH, lambda *a: self.callback())
Exception Type: ValueError at /unit/
Exception Value: signal only works in main thread
How can I quit from inside a while loop? Below is an example of a script I've had trouble getting out of.
from ptpdb import set_trace
while True:
set_trace()
print('doing something')
PTPDB is missing ptpdb.post_mortem( exception_traceback )
.
PDB and third party iPDB has a post_mortem()
method, not found on PTPDB.
I guess you can steal the solution from ipdb source since is also third party, works similar to ptpdb.
Real life usage example:
┻━┻ ︵ \ (°□°)/ ︵ ┻━┻
When installing from Pypi.
cc: @RonnyPfannschmidt : Sorry, I did not had the time yet. I'll try to fix things asap.
Found the following error when trying out this tool. Installed manually from source.
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ptpdb import set_trace
>>> set_trace()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ptpdb/__init__.py", line 263, in set_trace
PtPdb().set_trace(sys._getframe().f_back)
File "ptpdb/__init__.py", line 124, in __init__
PdbShortcutsToolbar(weakref.ref(self)),
TypeError: __init__() got an unexpected keyword argument '_extra_buffer_processors'
>>>
Hey Jonathan,
I'm really loving your modules -- thanks so much for all your awesome hard work.
I was wondering if there is a way to start ptpdb in the interpreter mode instead, and only enter the debug mode with a command?
$ pipenv install ptpdb --dev
Installing ptpdb…
Adding ptpdb to Pipfile's [dev-packages]…
✔ Installation Succeeded
Pipfile.lock (65c7c8) out of date, updating to (5bacf9)…
Locking [dev-packages] dependencies…
✘ Locking Failed!
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/resolver.py", line 69, in resolve
[pipenv.exceptions.ResolutionFailure]: req_dir=requirements_dir
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 726, in resolve_deps
[pipenv.exceptions.ResolutionFailure]: req_dir=req_dir,
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 480, in actually_resolve_deps
[pipenv.exceptions.ResolutionFailure]: resolved_tree = resolver.resolve()
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 395, in resolve
[pipenv.exceptions.ResolutionFailure]: raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: pipenv.exceptions.ResolutionFailure: ERROR: ERROR: Could not find a version that matches prompt-toolkit<2.0.0,<2.1.0,>=1.0.0,>=2.0.6
[pipenv.exceptions.ResolutionFailure]: Tried: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.25, 0.26, 0.28, 0.30, 0.31, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.35, 0.36, 0.36, 0.36, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.40, 0.40, 0.40, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45, 0.46, 0.46, 0.46, 0.47, 0.47, 0.47, 0.48, 0.48, 0.48, 0.49, 0.49, 0.49, 0.50, 0.50, 0.50, 0.51, 0.51, 0.51, 0.52, 0.52, 0.52, 0.53, 0.53, 0.53, 0.54, 0.54, 0.54, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.58, 0.58, 0.58, 0.59, 0.59, 0.59, 0.60, 0.60, 0.60, 1.0.0, 1.0.0, 1.0.0, 1.0.1, 1.0.1, 1.0.1, 1.0.2, 1.0.2, 1.0.2, 1.0.3, 1.0.3, 1.0.3, 1.0.4, 1.0.4, 1.0.4, 1.0.5, 1.0.5, 1.0.5, 1.0.6, 1.0.6, 1.0.6, 1.0.7, 1.0.7, 1.0.7, 1.0.8, 1.0.8, 1.0.8, 1.0.9, 1.0.9, 1.0.9, 1.0.10, 1.0.10, 1.0.10, 1.0.13, 1.0.13, 1.0.13, 1.0.14, 1.0.14, 1.0.14, 1.0.15, 1.0.15, 1.0.15, 2.0.1, 2.0.1, 2.0.1, 2.0.2, 2.0.2, 2.0.2, 2.0.3, 2.0.3, 2.0.3, 2.0.4, 2.0.4, 2.0.4, 2.0.5, 2.0.5, 2.0.5, 2.0.6, 2.0.6, 2.0.6, 2.0.7, 2.0.7, 2.0.7, 2.0.8, 2.0.8, 2.0.8, 2.0.9, 2.0.9, 2.0.9
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
First try clearing your dependency cache with $ pipenv lock --clear, then try the original command again.
Alternatively, you can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: ERROR: Could not find a version that matches prompt-toolkit<2.0.0,<2.1.0,>=1.0.0,>=2.0.6
Tried: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.25, 0.26, 0.28, 0.30, 0.31, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.35, 0.36, 0.36, 0.36, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.40, 0.40, 0.40, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45, 0.46, 0.46, 0.46, 0.47, 0.47, 0.47, 0.48, 0.48, 0.48, 0.49, 0.49, 0.49, 0.50, 0.50, 0.50, 0.51, 0.51, 0.51, 0.52, 0.52, 0.52, 0.53, 0.53, 0.53, 0.54, 0.54, 0.54, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.58, 0.58, 0.58, 0.59, 0.59, 0.59, 0.60, 0.60, 0.60, 1.0.0, 1.0.0, 1.0.0, 1.0.1, 1.0.1, 1.0.1, 1.0.2, 1.0.2, 1.0.2, 1.0.3, 1.0.3, 1.0.3, 1.0.4, 1.0.4, 1.0.4, 1.0.5, 1.0.5, 1.0.5, 1.0.6, 1.0.6, 1.0.6, 1.0.7, 1.0.7, 1.0.7, 1.0.8, 1.0.8, 1.0.8, 1.0.9, 1.0.9, 1.0.9, 1.0.10, 1.0.10, 1.0.10, 1.0.13, 1.0.13, 1.0.13, 1.0.14, 1.0.14, 1.0.14, 1.0.15, 1.0.15, 1.0.15, 2.0.1, 2.0.1, 2.0.1, 2.0.2, 2.0.2, 2.0.2, 2.0.3, 2.0.3, 2.0.3, 2.0.4, 2.0.4, 2.0.4, 2.0.5, 2.0.5, 2.0.5, 2.0.6, 2.0.6, 2.0.6, 2.0.7, 2.0.7, 2.0.7, 2.0.8, 2.0.8, 2.0.8, 2.0.9, 2.0.9, 2.0.9
There are incompatible versions in the resolved dependencies.
[pipenv.exceptions.ResolutionFailure]: req_dir=requirements_dir
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 726, in resolve_deps
[pipenv.exceptions.ResolutionFailure]: req_dir=req_dir,
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 480, in actually_resolve_deps
[pipenv.exceptions.ResolutionFailure]: resolved_tree = resolver.resolve()
[pipenv.exceptions.ResolutionFailure]: File "/usr/local/Cellar/pipenv/2018.11.26_2/libexec/lib/python3.7/site-packages/pipenv/utils.py", line 395, in resolve
[pipenv.exceptions.ResolutionFailure]: raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: pipenv.exceptions.ResolutionFailure: ERROR: ERROR: Could not find a version that matches prompt-toolkit<2.0.0,<2.1.0,>=1.0.0,>=2.0.6
[pipenv.exceptions.ResolutionFailure]: Tried: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.25, 0.26, 0.28, 0.30, 0.31, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.35, 0.36, 0.36, 0.36, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.40, 0.40, 0.40, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45, 0.46, 0.46, 0.46, 0.47, 0.47, 0.47, 0.48, 0.48, 0.48, 0.49, 0.49, 0.49, 0.50, 0.50, 0.50, 0.51, 0.51, 0.51, 0.52, 0.52, 0.52, 0.53, 0.53, 0.53, 0.54, 0.54, 0.54, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.58, 0.58, 0.58, 0.59, 0.59, 0.59, 0.60, 0.60, 0.60, 1.0.0, 1.0.0, 1.0.0, 1.0.1, 1.0.1, 1.0.1, 1.0.2, 1.0.2, 1.0.2, 1.0.3, 1.0.3, 1.0.3, 1.0.4, 1.0.4, 1.0.4, 1.0.5, 1.0.5, 1.0.5, 1.0.6, 1.0.6, 1.0.6, 1.0.7, 1.0.7, 1.0.7, 1.0.8, 1.0.8, 1.0.8, 1.0.9, 1.0.9, 1.0.9, 1.0.10, 1.0.10, 1.0.10, 1.0.13, 1.0.13, 1.0.13, 1.0.14, 1.0.14, 1.0.14, 1.0.15, 1.0.15, 1.0.15, 2.0.1, 2.0.1, 2.0.1, 2.0.2, 2.0.2, 2.0.2, 2.0.3, 2.0.3, 2.0.3, 2.0.4, 2.0.4, 2.0.4, 2.0.5, 2.0.5, 2.0.5, 2.0.6, 2.0.6, 2.0.6, 2.0.7, 2.0.7, 2.0.7, 2.0.8, 2.0.8, 2.0.8, 2.0.9, 2.0.9, 2.0.9
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
First try clearing your dependency cache with $ pipenv lock --clear, then try the original command again.
Alternatively, you can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: ERROR: Could not find a version that matches prompt-toolkit<2.0.0,<2.1.0,>=1.0.0,>=2.0.6
Tried: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.25, 0.26, 0.28, 0.30, 0.31, 0.32, 0.32, 0.32, 0.33, 0.33, 0.33, 0.34, 0.34, 0.34, 0.35, 0.35, 0.35, 0.36, 0.36, 0.36, 0.37, 0.37, 0.37, 0.38, 0.38, 0.38, 0.39, 0.39, 0.39, 0.40, 0.40, 0.40, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45, 0.46, 0.46, 0.46, 0.47, 0.47, 0.47, 0.48, 0.48, 0.48, 0.49, 0.49, 0.49, 0.50, 0.50, 0.50, 0.51, 0.51, 0.51, 0.52, 0.52, 0.52, 0.53, 0.53, 0.53, 0.54, 0.54, 0.54, 0.55, 0.55, 0.55, 0.56, 0.56, 0.56, 0.57, 0.57, 0.57, 0.58, 0.58, 0.58, 0.59, 0.59, 0.59, 0.60, 0.60, 0.60, 1.0.0, 1.0.0, 1.0.0, 1.0.1, 1.0.1, 1.0.1, 1.0.2, 1.0.2, 1.0.2, 1.0.3, 1.0.3, 1.0.3, 1.0.4, 1.0.4, 1.0.4, 1.0.5, 1.0.5, 1.0.5, 1.0.6, 1.0.6, 1.0.6, 1.0.7, 1.0.7, 1.0.7, 1.0.8, 1.0.8, 1.0.8, 1.0.9, 1.0.9, 1.0.9, 1.0.10, 1.0.10, 1.0.10, 1.0.13, 1.0.13, 1.0.13, 1.0.14, 1.0.14, 1.0.14, 1.0.15, 1.0.15, 1.0.15, 2.0.1, 2.0.1, 2.0.1, 2.0.2, 2.0.2, 2.0.2, 2.0.3, 2.0.3, 2.0.3, 2.0.4, 2.0.4, 2.0.4, 2.0.5, 2.0.5, 2.0.5, 2.0.6, 2.0.6, 2.0.6, 2.0.7, 2.0.7, 2.0.7, 2.0.8, 2.0.8, 2.0.8, 2.0.9, 2.0.9, 2.0.9
There are incompatible versions in the resolved dependencies.
I can't currently find some way to disable the code viewer that is on the right side of the screen. It would be nice to have it because sometime it takes up alot of space.
If this somehow already exists then it might only need a doc update.
Feature request: attach to a remote pdb session:
from ptpdb import set_trace
File "/home/wzy/.local/lib/python3.9/site-packages/ptpdb/__init__.py", line 15, in <module>
from prompt_toolkit.buffer import Buffer, AcceptAction
ImportError: cannot import name 'AcceptAction' from 'prompt_toolkit.buffer' (/home/wzy/.local/lib/python3.9/site-packages/prompt_toolkit/buffer.py)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.