python-discord / snekbox

Easy, safe evaluation of arbitrary Python code
https://pythondiscord.com
MIT License
214 stars 39 forks source link

Enable 3.13's colorized output (snekbox half) #225

Closed thurisatic closed 3 weeks ago

thurisatic commented 3 weeks ago

This PR is the snekbox side of changes made to allow bot's !eval to support colored output. The first of the two commits for bot's side allows ANSI codes to be rendered when given via print or such, but Python 3.13 does not produce these colors in tracebacks without an environment variable. Per documentation, there are two such envars - PYTHON_COLORS and FORCE_COLOR. Testing has shown FORCE_COLOR to have no effect in eval output, while PYTHON_COLORS (even by itself) produces colored tracebacks.

The insertion of ANSI codes produces significant problems when code is long enough to require uploading to pinnwand, however, so this PR probably should not be merged unless the Prevent 3.13's ANSI escapes from mangling pinnwand uploads commit from bot's PR is also merged, which fixes the problems.

python-discord/bot#3198 is bot's half

coveralls commented 3 weeks ago

Coverage Status

coverage: 89.158%. remained the same when pulling 1d4c8480490bf8a6ea7146338e3288c347697c16 on thurisatic:colorsnek into 2fc04c663e77f253444729673eda06d62d540efd on python-discord:main.