That&#x27;s the point...if the code says &quot;If Py3, do (modern code) else do (old code)&quot;, then when&#x2F;if py4 comes out, and six.PY3 is False, you end up running (old code).<p>Obviously you don&#x27;t know if (modern code) is Py4 compatible, since we don&#x27;t know what py4 is, but while the py3 code MIGHT be runnable under py4, the py2 code is ALMOST CERTAINLY not going to run under py4.<p>So instead, make the check for PY2 code:<p>If Py2 do (old code), else do (modern code).<p>That MIGHT break under Py4, if modern code isn&#x27;t future code, but also MIGHT work, whereas the other version WOULD break under Py4.<p>Same story if you&#x27;re using sys.version[] rather than six.