[Python-Dev] breakpoint() and $PYTHONBREAKPOINT (original) (raw)

Barry Warsaw barry at python.org
Sun Sep 10 15:06:09 EDT 2017


For PEP 553, I think it’s a good idea to support the environment variable $PYTHONBREAKPOINT[*] but I’m stuck on a design question, so I’d like to get some feedback.

Should $PYTHONBREAKPOINT be consulted in breakpoint() or in sys.breakpointhook()?

If we support it in breakpoint() then it means if $PYTHONBREAKPOINT is set, Python will never call sys.breakpointhook() so programmatic override of that will be ignored.

If we support it in sys.breakpointhook(), then if you programmatically override that, PYTHONBREAKPOINTwillbeignoredevenifset.Ofcourse,anycodethatoverridessys.breakpointhook()couldalsoconsultPYTHONBREAKPOINT will be ignored even if set. Of course, any code that overrides sys.breakpointhook() could also consult PYTHONBREAKPOINTwillbeignoredevenifset.Ofcourse,anycodethatoverridessys.breakpointhook()couldalsoconsultPYTHONBREAKPOINT if they want.

So how do we want it to work? It seems like explicit code should override the environment variable, which should override the default, meaning that PYTHONBREAKPOINTshouldbeconsultedonlyinbreakpoint().Andifyousetsys.breakpointhook()withsomethingelse,thenohwell,PythonjustignoresPYTHONBREAKPOINT should be consulted only in breakpoint(). And if you set sys.breakpointhook() with something else, then oh well, Python just ignores PYTHONBREAKPOINTshouldbeconsultedonlyinbreakpoint().Andifyousetsys.breakpointhook()withsomethingelse,thenohwell,PythonjustignoresPYTHONBREAKPOINT.

Feedback welcome. -Barry

[*] Probably not $PYTHONBREAKPOINTHOOK although if we choose to implement that in sys.breakpointhook(), it might still makes sense.

-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 273 bytes Desc: Message signed with OpenPGP URL: <http://mail.python.org/pipermail/python-dev/attachments/20170910/0f451f0e/attachment.sig>



More information about the Python-Dev mailing list