[Python-Dev] Add a developer mode to Python: -X dev command line option

Victor Stinner victor.stinner at gmail.com
Mon Nov 13 12:19:07 EST 2017


2017-11-13 17:51 GMT+01:00 Antoine Pitrou <antoine at python.org>:
> The main issue I have with `-b` is actually that you can get spurious
> warnings about properly working code.  You can also get warnings in
> well-tested third-party libraries, e.g.:
>
> distributed/tests/test_client.py::test_get_versions
>   /home/antoine/miniconda3/envs/dask36/lib/python3.6/site-packages/pandas/core/dtypes/common.py:20: BytesWarning: Comparison between bytes and string
>     for t in ['O', 'int8', 'uint8', 'int16', 'uint16',
>   /home/antoine/miniconda3/envs/dask36/lib/python3.6/site-packages/pandas/io/packers.py:231: BytesWarning: Comparison between bytes and string
>     7: np.dtype('int64'),

Oh right, that's a very good reason to not include -b option in the -X
dev mode ;-)

Usually, I mostly care of ResourceWarning and DeprecationWarning warnings.

PYTHONMALLOC=debug and -X faulthandler just comes "for free", they
don't change the behaviour as -b, and should help to debug crashes.

---

By the way, My worst memory of BytesWarning is when implemented/fixed
(I don't call) os.get_exec_path():

    # {b'PATH': ...}.get('PATH') and {'PATH': ...}.get(b'PATH') emit a
    # BytesWarning when using python -b or python -bb: ignore the warning
    with warnings.catch_warnings():
        warnings.simplefilter("ignore", BytesWarning)
        ...

I really dislike this code since warnings.catch_warnings() is
process-wide and so impact other threads :-(

(Maybe Yury's PEP "context variables" would help here? ;-))

Victor


More information about the Python-Dev mailing list