Benjamin-Loison / pyzo

Python to the people
https://pyzo.org
Other
0 stars 0 forks source link

Avoid wrap lines in shell output #11

Open Benjamin-Loison opened 6 months ago

Benjamin-Loison commented 6 months ago
import blackboxprotobuf
import base64
import json

data = base64.b64decode('4qmFsgKrCBIYVUNXZWcyUGthdGU2OU5GZEJldVJGVEF3Go4IOGdhRUJocUJCbnItQlFyNUJRclFCVUZtYW5Fd2RrNU9lbFZJWlhkcVZtcFRSalpEVFRSd2EyaFdlamhGU25OSmIxRmhURFkzYTB0U1ltVlZlWFJDVDFGYVFteGpSMFZaZW1kQ1FYWkJiRFF3UjFKYWVHZzVVVlpPWTAxc2RWUm1SSGRVYVhCUFUzbGhiemRuUzFwa01tOVpUVll6WkVoSlFqQkNaakpPYzJ0cGF6Vk5SR3A2U25STFMyNHlTV2xmVkMxQlMxVXhYM2t4WjNCamJWWlliazlEZFZKTmVqVktSUzF1TTNwM1pubHRNR3huWjJsMFIxWXRlWFY2UmtKV1JGOVZiRFJRVW5ReE1qaG5ZVXAxU0ZkU2F6Y3hUVmhQZVhOQ1FXNUxkM1JGVjBWWGQxUjZjRGh0VDAxS1ZTMUtjV2RtVTNoWWMwMWtVRUZOZG5CUlRrcFViWEpwVVZCb09GRnFRbEpsVDA0d2JHdFVZM1ZXVm1nMlYxUmZPRTFWVlVsSGVFSllTSEp3YUhaV01sRlJiekJ6ZEZWNlVVa3RVMmN6ZGs5WVVXdExWM1oxZFVFMlltSkpTRTh4YUUwNVRsb3ROWFUzTUd4NVdrMDVSVnBVVFVoRk5FVkZOa2x0Y0RoeU0wRXlPRkJtTVc4eVNqVlNUMWQzTUZRemNpMXhRMFk1TURkUFdIbFdTR0ZKYURrdFFVRklkME5FVWtodk1WRk5jbnAyU21KME1HWmplRlJ4UzBKRGRrdHVabXhFY1UxdFUyUmllREpPWDNsVFZrNUZaR1ZNY0dOSmMyZEZXbVpwTW1Sa00xOUxla1JCYTIxaVFXVmpkM0J1TW5ac1prUm5UV3gyWmxnd2RrWnlSRTF0UVVFM2JEUkxVR2t0ZG5kd1lrWlJSV3d4YVRWWmNFeHFXVFJETFZBeWNXVnBaVEE0Y0U1ck5UTk9ZbVJvUmpaUWRVMUplaTA0Wm01U09HMU1OazUwWDI0MFMwdEtTRWs0YmpaUGRWbDVWMTlHZVVodlJrNVNVRXh5VUhKVk5HWnZhbmd0ZERsYWFsTlhUM052UkRnNWEwTk9ZbEpGUjAxS2FqWnJTbU13T1RGcU4xbzJURzVFU1MxZk9YSkJOVlpIYkU5NGRETlFhV3h3YXpoc1VIVnVka3huT0VwWWVsUkhNM1UyU0d4SmJIcDVSbVJDUWxwRmEycHROMmcxY2poRFJqbHpVR3RmZWxoZlZrUXhNMlV4VEVoa1pVNXRXRzAzWnpOSGNGcHdiR1pLUVZnNVNISklUVVpLUnpsMlkzWlhkaElrTmpZeFpXTm1ORGd0TURBd01DMHlaVEE0TFRrM09EUXRaRFJtTlRRM1ptUTVPVEZqR0FFJTNE')
message, typedef = blackboxprotobuf.decode_message(data)
print(json.dumps(message, indent = 4))
{
    "80226972": {
        "2": "UCWeg2Pkate69NFdBeuRFTAw",
        "3": "8gaEBhqBBnr-BQr5BQrQBUFmanEwdk5OelVIZXdqVmpTRjZDTTRwa2hWejhFSnNJb1
FhTDY3a0tSYmVVeXRCT1FaQmxjR0VZemdCQXZBbDQwR1JaeGg5UVZOY01sdVRmRHdUaXBPU3lhbzdnS1
pkMm9ZTVYzZEhJQjBCZjJOc2tpazVNRGp6SnRLS24ySWlfVC1BS1UxX3kxZ3BjbVZYbk9DdVJNejVKRS
1uM3p3ZnltMGxnZ2l0R1YteXV6RkJWRF9VbDRQUnQxMjhnYUp1SFdSazcxTVhPeXNCQW5Ld3RFV0VXd1
R6cDhtT01KVS1KcWdmU3hYc01kUEFNdnBRTkpUbXJpUVBoOFFqQlJlT04wbGtUY3VWVmg2V1RfOE1VVU
lHeEJYSHJwaHZWMlFRbzBzdFV6UUktU2czdk9YUWtLV3Z1dUE2YmJJSE8xaE05TlotNXU3MGx5Wk05RV
pUTUhFNEVFNkltcDhyM0EyOFBmMW8ySjVST1d3MFQzci1xQ0Y5MDdPWHlWSGFJaDktQUFId0NEUkhvMV
FNcnp2SmJ0MGZjeFRxS0JDdktuZmxEcU1tU2RieDJOX3lTVk5FZGVMcGNJc2dFWmZpMmRkM19LekRBa2
1iQWVjd3BuMnZsZkRnTWx2ZlgwdkZyRE1tQUE3bDRLUGktdndwYkZRRWwxaTVZcExqWTRDLVAycWVpZT
A4cE5rNTNOYmRoRjZQdU1Jei04Zm5SOG1MNk50X240S0tKSEk4bjZPdVl5V19GeUhvRk5SUExyUHJVNG
ZvangtdDlaalNXT3NvRDg5a0NOYlJFR01KajZrSmMwOTFqN1o2TG5ESS1fOXJBNVZHbE94dDNQaWxwaz
hsUHVudkxnOEpYelRHM3U2SGxJbHp5RmRCQlpFa2ptN2g1cjhDRjlzUGtfelhfVkQxM2UxTEhkZU5tWG
03ZzNHcFpwbGZKQVg5SHJITUZKRzl2Y3ZXdhIkNjYxZWNmNDgtMDAwMC0yZTA4LTk3ODQtZDRmNTQ3Zm
Q5OTFjGAE%3D"
    }
}

image

In gnome-terminal the output is as wanted.

Related to #9.

Benjamin-Loison commented 5 months ago

Disabling View > Wrap long lines does not help. It may be be code editor related.

Shells > Python > Edit shell configurations... does not help either.

Settings > Advanced settings... > Search... > wrap: set view > wrap to False does not help too.

The number of characters per line is 80.

grep -rwI 80 | grep -v 'request' | grep 80
RELEASE_NOTES.md:  * Shell always fits 80 colums set to default False.
RELEASE_NOTES.md:  * Shells can also be set not to wrap to 80 columns.
pyzo/tools/pyzoFileBrowser/tasks.py:            line = text[i1:i2].strip()[:80]
pyzo/resources/defaultConfig.ssdf:    edgeColumn = 80
pyzo/codeeditor/extensions/appearance.py:    @ce_option(80)
pyzo/pyzokernel/introspection.py:                    if len(repres) > 80:
pyzo/pyzokernel/magic.py:            print("-" * 80)
pyzo/core/shellInfoDialog.py:        self._edit.setMaximumHeight(80)
pyzo/core/shellInfoDialog.py:        self._edit2.setMaximumHeight(80)
pyzo/core/menu.py:# - Shell wrapping to 80 columns?
pyzo/core/menu.py:        self._line.resize(size[0] - 80, 20)
pyzo/core/icons.py:            pm = self._createCrossPixmap(80)
pyzo/core/shell.py:        # Set minimum width so 80 lines do fit in smallest font size
pyzo/core/shell.py:        long are split in pieces of 80 characters to increase performance for
pyzo/core/shell.py:            if len(line) > 1024:  # about 12 lines of 80 chars
pyzo/core/shell.py:                parts = [line[i : i + 80] for i in range(0, len(line), 80)]
tests/check_log.py:print("=" * 80)

As we can zoom out etc setMaximumHeight does not seem to make much sense here:

for i in range(80):
    print(i)

https://github.com/pyzo/pyzo/blob/d371d1b5321d1c00e6be431c1605cb718e86f9ef/pyzo/core/menu.py#L83

https://github.com/pyzo/pyzo/blob/d371d1b5321d1c00e6be431c1605cb718e86f9ef/pyzo/core/menu.py#L88

https://github.com/pyzo/pyzo/blob/d371d1b5321d1c00e6be431c1605cb718e86f9ef/pyzo/core/shell.py#L753-L764

https://github.com/pyzo/pyzo/issues/98

The clipping to 80 chars is hard-coded, and only happens for lines over 1024 chars wide.

https://github.com/pyzo/pyzo/issues/870

https://github.com/pyzo/pyzo/blob/d371d1b5321d1c00e6be431c1605cb718e86f9ef/pyzo/core/shell.py#L924

Add a setting at least to be able to copy-paste without considering the wrapping or a setting to disable this wrapping at least temporarily.

Benjamin-Loison commented 4 months ago

Would clean YouTube-operational-API/issues/273#issue-2291339644.