1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-28 10:46:15 +01:00
github.com_openSUSE_osc/osc/util
Marcus Huewe 276d6e2439 Do not use the chardet module in util.helper.decode_it
In general, decode_it is used to get a str from an arbitrary bytes
instance. For this, decode_it used the chardet module (if present)
to detect the underlying encoding (if the bytes instance corresponds
to a "supported" encoding). The drawback of this detection is that
it can take quite some time in case of a large bytes instance, which
represents no "supported" encoding (see #669 and #746).
Instead of doing a potentially "time consuming" detection, either
assume an utf-8 encoding or a latin-1 encoding. Rationale: it is just
not worth the effort to detect a _potential_ encoding because we have
no clue what the _correct_ encoding is. For instance, consider the
following bytes instance:

b'This character group is not supported: [abc\xc3\xbf]'

It represents a valid utf-8 and latin-1 encoding. What is the "correct"
one? We don't know... Even if you interpret the bytes instance as a
human you cannot give a definite answer (implicit assumption: there is
no additional context available).
That is, if we cannot give a definite answer in case of two potential
encodings, there is no point in bringing even more potential encodings
into play. Hence, do not use the chardet module.

Note: the rationale for trying utf-8 first is that utf-8 is pretty
much in vogue these days and, hence, the chances are "high" that we
guess the "correct" encoding.

Fixes: #669 ("check in huge shell archives is insanely slow")
Fixes: #746 ("Very slow local buildlog parsing")
2020-06-04 13:12:22 +02:00
..
__init__.py - don't fail if terminal encoding doesn't support unicode (fixes #660445) 2011-02-11 02:45:13 +01:00
ar.py Use with statement in ArFile.saveTo 2019-01-15 17:18:50 +01:00
archquery.py Remove superfluous try-except block in the archquery module 2019-01-27 16:51:58 +01:00
cpio.py Use with statement in CpioRead._copyin_file 2019-01-15 20:49:26 +01:00
debquery.py fix and unify building of local package cache 2019-07-26 13:38:45 +02:00
helper.py Do not use the chardet module in util.helper.decode_it 2020-06-04 13:12:22 +02:00
packagequery.py Return bytes in packagequery.PackageQueryResult.evr() instead of a str 2020-03-15 18:30:00 +01:00
repodata.py Fix ElementTree imports for Python 3.9 2020-06-02 15:13:10 -07:00
rpmquery.py fix and unify building of local package cache 2019-07-26 13:38:45 +02:00
safewriter.py Fix and simplify util.safewriter.SafeWriter 2018-03-09 16:55:56 +01:00