Hi Rocky,

Two things to point out: 1) I am the original author of bpython but I
haven't actually worked on it in a number of years. 2) bpdb is a contrib,
by someone who may or may not be still around.

So I'm afraid I'm not going to be much help - hopefully somebody else will
pick this up. :)

On 28 May 2015 at 13:51, Rocky Bernstein <[email protected]> wrote:

>
> On Thursday, May 28, 2015 at 4:30:22 AM UTC-4, Bob Farrell wrote:
>>
>> Hi Rocky (awesome name, by the way),
>>
>> Take a look at the bpdb/ directory in the root of the project directory:
>> https://github.com/bpython/bpython/tree/master/bpdb
>> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fbpython%2Fbpython%2Ftree%2Fmaster%2Fbpdb&sa=D&sntz=1&usg=AFQjCNGCFTnT6wLU1FR2Nwh1aExY6GHtLg>
>>
>> If I've understood you correctly this should be a working example of what
>> you're looking for. It looks like you're more than familiar with pdb so
>> hopefully this should be a breeze for you.
>>
>> Let us now how you get on !
>>
>
> Ok. I took a look at https://github.com/bpython/bpython/tree/master/bpdb
> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fbpython%2Fbpython%2Ftree%2Fmaster%2Fbpdb&sa=D&sntz=1&usg=AFQjCNGCFTnT6wLU1FR2Nwh1aExY6GHtLg>.
> Although I didn't run that code, something that makes no sense to me is how
>  instance variables (self) in the BPdb class get picked up by bpython.
>
> Specifically, self.prompt, and self.intro. That definitely didn't work for
> me and so I wound up setting sys.ps1 for the prompt and passing the
> "banner" parameter to bpython.embed(). And even if self.intro works, (does
> it?) passing it as a parameter to embed() seems a lot more straightforward
> and less magical.
>
> So that's the stuff I could figure out. Now onto the I can't.
>
> The first problem I have is getting out of bpython. It seems to close
> sys.stdout. It does this even if inside bpython if I  run "raise
> SystemExit", "raise SystemError",  quit() or enter Ctrl-D (EOF). So how can
> I get out of bpython without it closing stdout?
>
> The second problem I encounter is in running callbacks into the debugger
> such as for listing files, changing frames for evaluation and so on. I get
> no output, unless I add a gratuitous print('') statement. And even then I
> am getting line feeds (\n) without a carriage return. What's going on
> there?
>
> The last problem is a more minor. embed() has a parameter to set locals,
> but none to set globals. I suppose I could fold or put all globals
> variables into the local scope. But aside from being ugly and potentially
> time consuming, it's semantically wrong.
>
> The specific code I have so far is
> https://github.com/rocky/python2-trepan/blob/master/trepan/processor/command/bpy.py
> but I'd appreciate it if you'd try it out . I think all of the things I've
> mentioned above will be clear. Instructions for installing from git are
> https://github.com/rocky/python2-trepan/wiki/How-to-Install . To run,
> assuming bpython is already installed, just type:
>
>     $ trepan2 myscript.py
>     (trepan2) bpython
>     trepan2 python shell with locals
>     Use dbgr(*string*) to issue debugger command: *string*
>     trepan2 >>>
>
>
> As you say, since you are familiar with bpython hopefully this will be a
> breeze for you.
>
> Cheers,
>    Rocky
>
>
>> Cheers,
>>
>> On Thursday, 28 May 2015 09:24:25 UTC+1, Rocky Bernstein wrote:
>>>
>>> I have recently been beefing up support of the python trepan debugger
>>> <https://pypi.python.org/pypi?name=trepan&:action=display> to go into
>>> both a python and ipython shell. In doing that I came across bpython.
>>>
>>> How does one embed a bpython shell from inside another Python program
>>> such as a debugger?
>>>
>>> Here are some issues that come up:
>>>
>>>
>>>    1. Setting evaluation (locals, globals) to be in the context of the
>>>    debugged program
>>>    2. Saving/restoring command history
>>>    3. Saving/restoring command completion functions
>>>
>>> To get a sense of how this is done for ipython and python see
>>> https://github.com/rocky/python2-trepan/blob/master/trepan/processor/command/ipython.py
>>> and
>>> https://github.com/rocky/python2-trepan/blob/master/trepan/processor/command/python.py
>>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "bpython" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/bpython.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"bpython" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/bpython.
For more options, visit https://groups.google.com/d/optout.

Reply via email to