com.googler.python 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -2
- package/python3.4.2/lib/python3.4/site-packages/pip/__init__.py +1 -277
- package/python3.4.2/lib/python3.4/site-packages/pip/__main__.py +19 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/__init__.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/basecommand.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{baseparser.py → _internal/baseparser.py} +240 -224
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/build_env.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cache.py +202 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cmdoptions.py +609 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/__init__.py +79 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/check.py +42 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/completion.py +94 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/configuration.py +227 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/download.py +233 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/freeze.py +96 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/hash.py +57 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{commands → _internal/commands}/help.py +36 -33
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/install.py +477 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/list.py +343 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/search.py +135 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/show.py +164 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/uninstall.py +71 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/wheel.py +179 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/compat.py +235 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/configuration.py +378 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/download.py +922 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/exceptions.py +249 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/index.py +1117 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/locations.py +194 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/__init__.py +4 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/index.py +15 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{_vendor/requests/packages/urllib3/contrib → _internal/operations}/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/check.py +106 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/freeze.py +252 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/prepare.py +378 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/pep425tags.py +317 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/__init__.py +69 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_file.py +338 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_install.py +1115 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_set.py +164 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_uninstall.py +455 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/resolve.py +354 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{status_codes.py → _internal/status_codes.py} +8 -6
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/appdirs.py +258 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/deprecation.py +77 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/encoding.py +33 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/filesystem.py +28 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/glibc.py +84 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/hashes.py +94 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/logging.py +132 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/misc.py +851 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/outdated.py +163 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/packaging.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/setuptools_build.py +8 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/temp_dir.py +82 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/typing.py +29 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/ui.py +421 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/__init__.py +471 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/bazaar.py +113 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/git.py +311 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/mercurial.py +105 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/subversion.py +271 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/wheel.py +817 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/__init__.py +109 -8
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/appdirs.py +604 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/_cmd.py +60 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/adapter.py +134 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +133 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +43 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/controller.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/filewrapper.py +78 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/heuristics.py +138 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/serialize.py +194 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/wrapper.py +27 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__init__.py +3 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__main__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests → certifi}/cacert.pem +1765 -2358
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/core.py +37 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/__init__.py +39 -32
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/big5prober.py +47 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/chardistribution.py +233 -231
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/compat.py +34 -34
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/cp949prober.py +49 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/enums.py +76 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escprober.py +101 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escsm.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euckrprober.py +47 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwfreq.py +387 -428
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwprober.py +46 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312freq.py +283 -472
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312prober.py +46 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/hebrewprober.py +292 -283
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jisfreq.py +325 -569
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jpcntx.py +233 -219
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langbulgarianmodel.py +228 -229
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langcyrillicmodel.py +333 -329
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langgreekmodel.py +225 -225
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhebrewmodel.py +200 -201
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhungarianmodel.py +225 -225
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langthaimodel.py +199 -200
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/latin1prober.py +145 -139
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/mbcsgroupprober.py +54 -54
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/sbcsgroupprober.py +73 -69
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/utf8prober.py +82 -76
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/version.py +9 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/__init__.py +7 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansi.py +102 -50
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansitowin32.py +236 -190
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/initialise.py +82 -56
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/win32.py +156 -137
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/winterm.py +162 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/__init__.py +23 -23
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -6
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/shutil.py +761 -761
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -84
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +788 -788
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -2607
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/compat.py +1117 -1064
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/database.py +1318 -1301
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/index.py +516 -488
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/locators.py +1292 -1194
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/manifest.py +393 -364
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/markers.py +131 -190
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/metadata.py +1068 -1026
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/resources.py +355 -317
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/scripts.py +415 -323
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t32.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t64.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/util.py +1755 -1575
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/version.py +736 -721
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w32.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w64.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/wheel.py +984 -958
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distro.py +1104 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/__init__.py +35 -23
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{ihatexml.py → _ihatexml.py} +288 -285
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{inputstream.py → _inputstream.py} +923 -881
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{tokenizer.py → _tokenizer.py} +1721 -1731
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/__init__.py +14 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/_base.py +37 -37
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/datrie.py +44 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/py.py +67 -67
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{utils.py → _utils.py} +124 -82
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/constants.py +2947 -3104
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -20
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/{_base.py → base.py} +12 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -65
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -93
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -205
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +896 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -38
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/html5parser.py +2791 -2713
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -76
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/{_base.py → base.py} +417 -377
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +236 -227
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +340 -337
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +366 -369
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -57
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{_base.py → base.py} +252 -200
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +130 -138
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{lxmletree.py → etree_lxml.py} +213 -208
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{genshistream.py → genshi.py} +69 -69
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/__init__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/codec.py +118 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/compat.py +12 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/core.py +387 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/idnadata.py +1585 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/intranges.py +53 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/package_data.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/uts46data.py +7634 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/ipaddress.py +2419 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/__init__.py +347 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/linklockfile.py +73 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/mkdirlockfile.py +84 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/pidlockfile.py +190 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/sqlitelockfile.py +156 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/symlinklockfile.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/__init__.py +66 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/_version.py +1 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/exceptions.py +41 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/fallback.py +971 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__about__.py +21 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__init__.py +14 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_compat.py +30 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_structures.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/markers.py +301 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/requirements.py +130 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/specifiers.py +774 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/utils.py +63 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/version.py +441 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{pkg_resources.py → pkg_resources/__init__.py} +3125 -2762
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pkg_resources/py31compat.py +22 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/__init__.py +127 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/bar.py +88 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/counter.py +48 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/helpers.py +91 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/spinner.py +44 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pyparsing.py +5720 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/__init__.py +3 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/core.py +13 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/parser.py +374 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/writer.py +127 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__init__.py +123 -77
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__version__.py +14 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/adapters.py +525 -388
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/api.py +152 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/auth.py +293 -193
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/certs.py +18 -24
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/compat.py +73 -115
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/cookies.py +542 -454
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/exceptions.py +122 -75
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/help.py +120 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/hooks.py +34 -45
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/models.py +948 -803
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages.py +16 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/sessions.py +737 -637
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/status_codes.py +91 -88
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/structures.py +105 -127
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/utils.py +904 -673
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/retrying.py +267 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/six.py +891 -646
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/__init__.py +97 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/_collections.py +319 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/connection.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/connectionpool.py +905 -710
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +593 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +343 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/appengine.py +296 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/contrib/ntlmpool.py +112 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +455 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +810 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/socks.py +188 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/exceptions.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/fields.py +178 -177
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/filepost.py +94 -100
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/__init__.py +5 -4
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +53 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ordered_dict.py +259 -260
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/six.py +868 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/__init__.py +19 -13
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/_implementation.py +157 -105
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/poolmanager.py +440 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/request.py +148 -141
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/response.py +626 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/__init__.py +54 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/connection.py +130 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/request.py +118 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/response.py +81 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/retry.py +401 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/selectors.py +581 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/ssl_.py +341 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/timeout.py +242 -234
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/url.py +230 -162
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/wait.py +40 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/labels.py +231 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/tests.py +153 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/__init__.py +0 -16
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/markers.py +0 -119
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/sanitizer.py +0 -271
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/__init__.py +0 -16
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/htmlserializer.py +0 -320
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/pulldom.py +0 -63
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/re-vendor.py +0 -34
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/__init__.py +0 -3
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py +0 -925
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py +0 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py +0 -106
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py +0 -62
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py +0 -61
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/constants.py +0 -39
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escprober.py +0 -86
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escsm.py +0 -242
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py +0 -90
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py +0 -596
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py +0 -86
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py +0 -575
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py +0 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py +0 -91
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py +0 -170
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py +0 -58
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py +0 -205
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/connection.py +0 -204
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py +0 -422
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py +0 -126
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py +0 -385
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py +0 -258
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/response.py +0 -308
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py +0 -27
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py +0 -45
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py +0 -68
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py +0 -13
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py +0 -133
- package/python3.4.2/lib/python3.4/site-packages/pip/backwardcompat/__init__.py +0 -138
- package/python3.4.2/lib/python3.4/site-packages/pip/basecommand.py +0 -201
- package/python3.4.2/lib/python3.4/site-packages/pip/cmdoptions.py +0 -371
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/__init__.py +0 -88
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/bundle.py +0 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/completion.py +0 -59
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/freeze.py +0 -114
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/install.py +0 -314
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/list.py +0 -162
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/search.py +0 -132
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/show.py +0 -80
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/uninstall.py +0 -59
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/unzip.py +0 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/wheel.py +0 -195
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/zip.py +0 -351
- package/python3.4.2/lib/python3.4/site-packages/pip/download.py +0 -644
- package/python3.4.2/lib/python3.4/site-packages/pip/exceptions.py +0 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/index.py +0 -990
- package/python3.4.2/lib/python3.4/site-packages/pip/locations.py +0 -171
- package/python3.4.2/lib/python3.4/site-packages/pip/log.py +0 -276
- package/python3.4.2/lib/python3.4/site-packages/pip/pep425tags.py +0 -102
- package/python3.4.2/lib/python3.4/site-packages/pip/req.py +0 -1931
- package/python3.4.2/lib/python3.4/site-packages/pip/runner.py +0 -18
- package/python3.4.2/lib/python3.4/site-packages/pip/util.py +0 -720
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/__init__.py +0 -251
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/bazaar.py +0 -131
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/git.py +0 -194
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/mercurial.py +0 -151
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/subversion.py +0 -273
- package/python3.4.2/lib/python3.4/site-packages/pip/wheel.py +0 -560
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
+
# The Original Code is Mozilla Universal charset detector code.
|
|
3
|
+
#
|
|
4
|
+
# The Initial Developer of the Original Code is
|
|
5
|
+
# Netscape Communications Corporation.
|
|
6
|
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
|
7
|
+
# the Initial Developer. All Rights Reserved.
|
|
8
|
+
#
|
|
9
|
+
# Contributor(s):
|
|
10
|
+
# Mark Pilgrim - port to Python
|
|
11
|
+
# Shy Shalom - original C code
|
|
12
|
+
#
|
|
13
|
+
# This library is free software; you can redistribute it and/or
|
|
14
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
15
|
+
# License as published by the Free Software Foundation; either
|
|
16
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
17
|
+
#
|
|
18
|
+
# This library is distributed in the hope that it will be useful,
|
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
# Lesser General Public License for more details.
|
|
22
|
+
#
|
|
23
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
24
|
+
# License along with this library; if not, write to the Free Software
|
|
25
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
26
|
+
# 02110-1301 USA
|
|
27
|
+
######################### END LICENSE BLOCK #########################
|
|
28
|
+
|
|
29
|
+
import logging
|
|
30
|
+
import re
|
|
31
|
+
|
|
32
|
+
from .enums import ProbingState
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class CharSetProber(object):
|
|
36
|
+
|
|
37
|
+
SHORTCUT_THRESHOLD = 0.95
|
|
38
|
+
|
|
39
|
+
def __init__(self, lang_filter=None):
|
|
40
|
+
self._state = None
|
|
41
|
+
self.lang_filter = lang_filter
|
|
42
|
+
self.logger = logging.getLogger(__name__)
|
|
43
|
+
|
|
44
|
+
def reset(self):
|
|
45
|
+
self._state = ProbingState.DETECTING
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def charset_name(self):
|
|
49
|
+
return None
|
|
50
|
+
|
|
51
|
+
def feed(self, buf):
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def state(self):
|
|
56
|
+
return self._state
|
|
57
|
+
|
|
58
|
+
def get_confidence(self):
|
|
59
|
+
return 0.0
|
|
60
|
+
|
|
61
|
+
@staticmethod
|
|
62
|
+
def filter_high_byte_only(buf):
|
|
63
|
+
buf = re.sub(b'([\x00-\x7F])+', b' ', buf)
|
|
64
|
+
return buf
|
|
65
|
+
|
|
66
|
+
@staticmethod
|
|
67
|
+
def filter_international_words(buf):
|
|
68
|
+
"""
|
|
69
|
+
We define three types of bytes:
|
|
70
|
+
alphabet: english alphabets [a-zA-Z]
|
|
71
|
+
international: international characters [\x80-\xFF]
|
|
72
|
+
marker: everything else [^a-zA-Z\x80-\xFF]
|
|
73
|
+
|
|
74
|
+
The input buffer can be thought to contain a series of words delimited
|
|
75
|
+
by markers. This function works to filter all words that contain at
|
|
76
|
+
least one international character. All contiguous sequences of markers
|
|
77
|
+
are replaced by a single space ascii character.
|
|
78
|
+
|
|
79
|
+
This filter applies to all scripts which do not use English characters.
|
|
80
|
+
"""
|
|
81
|
+
filtered = bytearray()
|
|
82
|
+
|
|
83
|
+
# This regex expression filters out only words that have at-least one
|
|
84
|
+
# international character. The word may include one marker character at
|
|
85
|
+
# the end.
|
|
86
|
+
words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?',
|
|
87
|
+
buf)
|
|
88
|
+
|
|
89
|
+
for word in words:
|
|
90
|
+
filtered.extend(word[:-1])
|
|
91
|
+
|
|
92
|
+
# If the last character in the word is a marker, replace it with a
|
|
93
|
+
# space as markers shouldn't affect our analysis (they are used
|
|
94
|
+
# similarly across all languages and may thus have similar
|
|
95
|
+
# frequencies).
|
|
96
|
+
last_char = word[-1:]
|
|
97
|
+
if not last_char.isalpha() and last_char < b'\x80':
|
|
98
|
+
last_char = b' '
|
|
99
|
+
filtered.extend(last_char)
|
|
100
|
+
|
|
101
|
+
return filtered
|
|
102
|
+
|
|
103
|
+
@staticmethod
|
|
104
|
+
def filter_with_english_letters(buf):
|
|
105
|
+
"""
|
|
106
|
+
Returns a copy of ``buf`` that retains only the sequences of English
|
|
107
|
+
alphabet and high byte characters that are not between <> characters.
|
|
108
|
+
Also retains English alphabet and high byte characters immediately
|
|
109
|
+
before occurrences of >.
|
|
110
|
+
|
|
111
|
+
This filter can be applied to all scripts which contain both English
|
|
112
|
+
characters and extended ASCII characters, but is currently only used by
|
|
113
|
+
``Latin1Prober``.
|
|
114
|
+
"""
|
|
115
|
+
filtered = bytearray()
|
|
116
|
+
in_tag = False
|
|
117
|
+
prev = 0
|
|
118
|
+
|
|
119
|
+
for curr in range(len(buf)):
|
|
120
|
+
# Slice here to get bytes instead of an int with Python 3
|
|
121
|
+
buf_char = buf[curr:curr + 1]
|
|
122
|
+
# Check if we're coming out of or entering an HTML tag
|
|
123
|
+
if buf_char == b'>':
|
|
124
|
+
in_tag = False
|
|
125
|
+
elif buf_char == b'<':
|
|
126
|
+
in_tag = True
|
|
127
|
+
|
|
128
|
+
# If current character is not extended-ASCII and not alphabetic...
|
|
129
|
+
if buf_char < b'\x80' and not buf_char.isalpha():
|
|
130
|
+
# ...and we're not in a tag
|
|
131
|
+
if curr > prev and not in_tag:
|
|
132
|
+
# Keep everything after last non-extended-ASCII,
|
|
133
|
+
# non-alphabetic character
|
|
134
|
+
filtered.extend(buf[prev:curr])
|
|
135
|
+
# Output a space to delimit stretch we kept
|
|
136
|
+
filtered.extend(b' ')
|
|
137
|
+
prev = curr + 1
|
|
138
|
+
|
|
139
|
+
# If we're not in a tag...
|
|
140
|
+
if not in_tag:
|
|
141
|
+
# Keep everything after last non-extended-ASCII, non-alphabetic
|
|
142
|
+
# character
|
|
143
|
+
filtered.extend(buf[prev:])
|
|
144
|
+
|
|
145
|
+
return filtered
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Script which takes one or more file paths and reports on their detected
|
|
4
|
+
encodings
|
|
5
|
+
|
|
6
|
+
Example::
|
|
7
|
+
|
|
8
|
+
% chardetect somefile someotherfile
|
|
9
|
+
somefile: windows-1252 with confidence 0.5
|
|
10
|
+
someotherfile: ascii with confidence 1.0
|
|
11
|
+
|
|
12
|
+
If no paths are provided, it takes its input from stdin.
|
|
13
|
+
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import absolute_import, print_function, unicode_literals
|
|
17
|
+
|
|
18
|
+
import argparse
|
|
19
|
+
import sys
|
|
20
|
+
|
|
21
|
+
from pip._vendor.chardet import __version__
|
|
22
|
+
from pip._vendor.chardet.compat import PY2
|
|
23
|
+
from pip._vendor.chardet.universaldetector import UniversalDetector
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def description_of(lines, name='stdin'):
|
|
27
|
+
"""
|
|
28
|
+
Return a string describing the probable encoding of a file or
|
|
29
|
+
list of strings.
|
|
30
|
+
|
|
31
|
+
:param lines: The lines to get the encoding of.
|
|
32
|
+
:type lines: Iterable of bytes
|
|
33
|
+
:param name: Name of file or collection of lines
|
|
34
|
+
:type name: str
|
|
35
|
+
"""
|
|
36
|
+
u = UniversalDetector()
|
|
37
|
+
for line in lines:
|
|
38
|
+
line = bytearray(line)
|
|
39
|
+
u.feed(line)
|
|
40
|
+
# shortcut out of the loop to save reading further - particularly useful if we read a BOM.
|
|
41
|
+
if u.done:
|
|
42
|
+
break
|
|
43
|
+
u.close()
|
|
44
|
+
result = u.result
|
|
45
|
+
if PY2:
|
|
46
|
+
name = name.decode(sys.getfilesystemencoding(), 'ignore')
|
|
47
|
+
if result['encoding']:
|
|
48
|
+
return '{0}: {1} with confidence {2}'.format(name, result['encoding'],
|
|
49
|
+
result['confidence'])
|
|
50
|
+
else:
|
|
51
|
+
return '{0}: no result'.format(name)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def main(argv=None):
|
|
55
|
+
"""
|
|
56
|
+
Handles command line arguments and gets things started.
|
|
57
|
+
|
|
58
|
+
:param argv: List of arguments, as if specified on the command-line.
|
|
59
|
+
If None, ``sys.argv[1:]`` is used instead.
|
|
60
|
+
:type argv: list of str
|
|
61
|
+
"""
|
|
62
|
+
# Get command line arguments
|
|
63
|
+
parser = argparse.ArgumentParser(
|
|
64
|
+
description="Takes one or more file paths and reports their detected \
|
|
65
|
+
encodings")
|
|
66
|
+
parser.add_argument('input',
|
|
67
|
+
help='File whose encoding we would like to determine. \
|
|
68
|
+
(default: stdin)',
|
|
69
|
+
type=argparse.FileType('rb'), nargs='*',
|
|
70
|
+
default=[sys.stdin if PY2 else sys.stdin.buffer])
|
|
71
|
+
parser.add_argument('--version', action='version',
|
|
72
|
+
version='%(prog)s {0}'.format(__version__))
|
|
73
|
+
args = parser.parse_args(argv)
|
|
74
|
+
|
|
75
|
+
for f in args.input:
|
|
76
|
+
if f.isatty():
|
|
77
|
+
print("You are running chardetect interactively. Press " +
|
|
78
|
+
"CTRL-D twice at the start of a blank line to signal the " +
|
|
79
|
+
"end of your input. If you want help, run chardetect " +
|
|
80
|
+
"--help\n", file=sys.stderr)
|
|
81
|
+
print(description_of(f, f.name))
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
if __name__ == '__main__':
|
|
85
|
+
main()
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
+
# The Original Code is mozilla.org code.
|
|
3
|
+
#
|
|
4
|
+
# The Initial Developer of the Original Code is
|
|
5
|
+
# Netscape Communications Corporation.
|
|
6
|
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
7
|
+
# the Initial Developer. All Rights Reserved.
|
|
8
|
+
#
|
|
9
|
+
# Contributor(s):
|
|
10
|
+
# Mark Pilgrim - port to Python
|
|
11
|
+
#
|
|
12
|
+
# This library is free software; you can redistribute it and/or
|
|
13
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
# License as published by the Free Software Foundation; either
|
|
15
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
16
|
+
#
|
|
17
|
+
# This library is distributed in the hope that it will be useful,
|
|
18
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
# Lesser General Public License for more details.
|
|
21
|
+
#
|
|
22
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
# License along with this library; if not, write to the Free Software
|
|
24
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
25
|
+
# 02110-1301 USA
|
|
26
|
+
######################### END LICENSE BLOCK #########################
|
|
27
|
+
|
|
28
|
+
import logging
|
|
29
|
+
|
|
30
|
+
from .enums import MachineState
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class CodingStateMachine(object):
|
|
34
|
+
"""
|
|
35
|
+
A state machine to verify a byte sequence for a particular encoding. For
|
|
36
|
+
each byte the detector receives, it will feed that byte to every active
|
|
37
|
+
state machine available, one byte at a time. The state machine changes its
|
|
38
|
+
state based on its previous state and the byte it receives. There are 3
|
|
39
|
+
states in a state machine that are of interest to an auto-detector:
|
|
40
|
+
|
|
41
|
+
START state: This is the state to start with, or a legal byte sequence
|
|
42
|
+
(i.e. a valid code point) for character has been identified.
|
|
43
|
+
|
|
44
|
+
ME state: This indicates that the state machine identified a byte sequence
|
|
45
|
+
that is specific to the charset it is designed for and that
|
|
46
|
+
there is no other possible encoding which can contain this byte
|
|
47
|
+
sequence. This will to lead to an immediate positive answer for
|
|
48
|
+
the detector.
|
|
49
|
+
|
|
50
|
+
ERROR state: This indicates the state machine identified an illegal byte
|
|
51
|
+
sequence for that encoding. This will lead to an immediate
|
|
52
|
+
negative answer for this encoding. Detector will exclude this
|
|
53
|
+
encoding from consideration from here on.
|
|
54
|
+
"""
|
|
55
|
+
def __init__(self, sm):
|
|
56
|
+
self._model = sm
|
|
57
|
+
self._curr_byte_pos = 0
|
|
58
|
+
self._curr_char_len = 0
|
|
59
|
+
self._curr_state = None
|
|
60
|
+
self.logger = logging.getLogger(__name__)
|
|
61
|
+
self.reset()
|
|
62
|
+
|
|
63
|
+
def reset(self):
|
|
64
|
+
self._curr_state = MachineState.START
|
|
65
|
+
|
|
66
|
+
def next_state(self, c):
|
|
67
|
+
# for each byte we get its class
|
|
68
|
+
# if it is first byte, we also get byte length
|
|
69
|
+
byte_class = self._model['class_table'][c]
|
|
70
|
+
if self._curr_state == MachineState.START:
|
|
71
|
+
self._curr_byte_pos = 0
|
|
72
|
+
self._curr_char_len = self._model['char_len_table'][byte_class]
|
|
73
|
+
# from byte's class and state_table, we get its next state
|
|
74
|
+
curr_state = (self._curr_state * self._model['class_factor']
|
|
75
|
+
+ byte_class)
|
|
76
|
+
self._curr_state = self._model['state_table'][curr_state]
|
|
77
|
+
self._curr_byte_pos += 1
|
|
78
|
+
return self._curr_state
|
|
79
|
+
|
|
80
|
+
def get_current_charlen(self):
|
|
81
|
+
return self._curr_char_len
|
|
82
|
+
|
|
83
|
+
def get_coding_state_machine(self):
|
|
84
|
+
return self._model['name']
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def language(self):
|
|
88
|
+
return self._model['language']
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
-
# Contributor(s):
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
+
# Contributor(s):
|
|
3
|
+
# Dan Blanchard
|
|
4
|
+
# Ian Cordasco
|
|
5
|
+
#
|
|
6
|
+
# This library is free software; you can redistribute it and/or
|
|
7
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
8
|
+
# License as published by the Free Software Foundation; either
|
|
9
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# This library is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
14
|
+
# Lesser General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
17
|
+
# License along with this library; if not, write to the Free Software
|
|
18
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
19
|
+
# 02110-1301 USA
|
|
20
|
+
######################### END LICENSE BLOCK #########################
|
|
21
|
+
|
|
22
|
+
import sys
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if sys.version_info < (3, 0):
|
|
26
|
+
PY2 = True
|
|
27
|
+
PY3 = False
|
|
28
|
+
base_str = (str, unicode)
|
|
29
|
+
text_type = unicode
|
|
30
|
+
else:
|
|
31
|
+
PY2 = False
|
|
32
|
+
PY3 = True
|
|
33
|
+
base_str = (bytes, str)
|
|
34
|
+
text_type = str
|
|
@@ -1,44 +1,49 @@
|
|
|
1
|
-
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
-
# The Original Code is mozilla.org code.
|
|
3
|
-
#
|
|
4
|
-
# The Initial Developer of the Original Code is
|
|
5
|
-
# Netscape Communications Corporation.
|
|
6
|
-
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
7
|
-
# the Initial Developer. All Rights Reserved.
|
|
8
|
-
#
|
|
9
|
-
# Contributor(s):
|
|
10
|
-
# Mark Pilgrim - port to Python
|
|
11
|
-
#
|
|
12
|
-
# This library is free software; you can redistribute it and/or
|
|
13
|
-
# modify it under the terms of the GNU Lesser General Public
|
|
14
|
-
# License as published by the Free Software Foundation; either
|
|
15
|
-
# version 2.1 of the License, or (at your option) any later version.
|
|
16
|
-
#
|
|
17
|
-
# This library is distributed in the hope that it will be useful,
|
|
18
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
-
# Lesser General Public License for more details.
|
|
21
|
-
#
|
|
22
|
-
# You should have received a copy of the GNU Lesser General Public
|
|
23
|
-
# License along with this library; if not, write to the Free Software
|
|
24
|
-
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
25
|
-
# 02110-1301 USA
|
|
26
|
-
######################### END LICENSE BLOCK #########################
|
|
27
|
-
|
|
28
|
-
from .
|
|
29
|
-
from .codingstatemachine import CodingStateMachine
|
|
30
|
-
from .
|
|
31
|
-
from .mbcssm import
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class CP949Prober(MultiByteCharSetProber):
|
|
35
|
-
def __init__(self):
|
|
36
|
-
|
|
37
|
-
self.
|
|
38
|
-
# NOTE: CP949 is a superset of EUC-KR, so the distribution should be
|
|
39
|
-
# not different.
|
|
40
|
-
self.
|
|
41
|
-
self.reset()
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
+
# The Original Code is mozilla.org code.
|
|
3
|
+
#
|
|
4
|
+
# The Initial Developer of the Original Code is
|
|
5
|
+
# Netscape Communications Corporation.
|
|
6
|
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
7
|
+
# the Initial Developer. All Rights Reserved.
|
|
8
|
+
#
|
|
9
|
+
# Contributor(s):
|
|
10
|
+
# Mark Pilgrim - port to Python
|
|
11
|
+
#
|
|
12
|
+
# This library is free software; you can redistribute it and/or
|
|
13
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
# License as published by the Free Software Foundation; either
|
|
15
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
16
|
+
#
|
|
17
|
+
# This library is distributed in the hope that it will be useful,
|
|
18
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
# Lesser General Public License for more details.
|
|
21
|
+
#
|
|
22
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
# License along with this library; if not, write to the Free Software
|
|
24
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
25
|
+
# 02110-1301 USA
|
|
26
|
+
######################### END LICENSE BLOCK #########################
|
|
27
|
+
|
|
28
|
+
from .chardistribution import EUCKRDistributionAnalysis
|
|
29
|
+
from .codingstatemachine import CodingStateMachine
|
|
30
|
+
from .mbcharsetprober import MultiByteCharSetProber
|
|
31
|
+
from .mbcssm import CP949_SM_MODEL
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class CP949Prober(MultiByteCharSetProber):
|
|
35
|
+
def __init__(self):
|
|
36
|
+
super(CP949Prober, self).__init__()
|
|
37
|
+
self.coding_sm = CodingStateMachine(CP949_SM_MODEL)
|
|
38
|
+
# NOTE: CP949 is a superset of EUC-KR, so the distribution should be
|
|
39
|
+
# not different.
|
|
40
|
+
self.distribution_analyzer = EUCKRDistributionAnalysis()
|
|
41
|
+
self.reset()
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def charset_name(self):
|
|
45
|
+
return "CP949"
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def language(self):
|
|
49
|
+
return "Korean"
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""
|
|
2
|
+
All of the Enums that are used throughout the chardet package.
|
|
3
|
+
|
|
4
|
+
:author: Dan Blanchard (dan.blanchard@gmail.com)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class InputState(object):
|
|
9
|
+
"""
|
|
10
|
+
This enum represents the different states a universal detector can be in.
|
|
11
|
+
"""
|
|
12
|
+
PURE_ASCII = 0
|
|
13
|
+
ESC_ASCII = 1
|
|
14
|
+
HIGH_BYTE = 2
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class LanguageFilter(object):
|
|
18
|
+
"""
|
|
19
|
+
This enum represents the different language filters we can apply to a
|
|
20
|
+
``UniversalDetector``.
|
|
21
|
+
"""
|
|
22
|
+
CHINESE_SIMPLIFIED = 0x01
|
|
23
|
+
CHINESE_TRADITIONAL = 0x02
|
|
24
|
+
JAPANESE = 0x04
|
|
25
|
+
KOREAN = 0x08
|
|
26
|
+
NON_CJK = 0x10
|
|
27
|
+
ALL = 0x1F
|
|
28
|
+
CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL
|
|
29
|
+
CJK = CHINESE | JAPANESE | KOREAN
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ProbingState(object):
|
|
33
|
+
"""
|
|
34
|
+
This enum represents the different states a prober can be in.
|
|
35
|
+
"""
|
|
36
|
+
DETECTING = 0
|
|
37
|
+
FOUND_IT = 1
|
|
38
|
+
NOT_ME = 2
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class MachineState(object):
|
|
42
|
+
"""
|
|
43
|
+
This enum represents the different states a state machine can be in.
|
|
44
|
+
"""
|
|
45
|
+
START = 0
|
|
46
|
+
ERROR = 1
|
|
47
|
+
ITS_ME = 2
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SequenceLikelihood(object):
|
|
51
|
+
"""
|
|
52
|
+
This enum represents the likelihood of a character following the previous one.
|
|
53
|
+
"""
|
|
54
|
+
NEGATIVE = 0
|
|
55
|
+
UNLIKELY = 1
|
|
56
|
+
LIKELY = 2
|
|
57
|
+
POSITIVE = 3
|
|
58
|
+
|
|
59
|
+
@classmethod
|
|
60
|
+
def get_num_categories(cls):
|
|
61
|
+
""":returns: The number of likelihood categories in the enum."""
|
|
62
|
+
return 4
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class CharacterCategory(object):
|
|
66
|
+
"""
|
|
67
|
+
This enum represents the different categories language models for
|
|
68
|
+
``SingleByteCharsetProber`` put characters into.
|
|
69
|
+
|
|
70
|
+
Anything less than CONTROL is considered a letter.
|
|
71
|
+
"""
|
|
72
|
+
UNDEFINED = 255
|
|
73
|
+
LINE_BREAK = 254
|
|
74
|
+
SYMBOL = 253
|
|
75
|
+
DIGIT = 252
|
|
76
|
+
CONTROL = 251
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
######################## BEGIN LICENSE BLOCK ########################
|
|
2
|
+
# The Original Code is mozilla.org code.
|
|
3
|
+
#
|
|
4
|
+
# The Initial Developer of the Original Code is
|
|
5
|
+
# Netscape Communications Corporation.
|
|
6
|
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
|
7
|
+
# the Initial Developer. All Rights Reserved.
|
|
8
|
+
#
|
|
9
|
+
# Contributor(s):
|
|
10
|
+
# Mark Pilgrim - port to Python
|
|
11
|
+
#
|
|
12
|
+
# This library is free software; you can redistribute it and/or
|
|
13
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
# License as published by the Free Software Foundation; either
|
|
15
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
16
|
+
#
|
|
17
|
+
# This library is distributed in the hope that it will be useful,
|
|
18
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
# Lesser General Public License for more details.
|
|
21
|
+
#
|
|
22
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
# License along with this library; if not, write to the Free Software
|
|
24
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
25
|
+
# 02110-1301 USA
|
|
26
|
+
######################### END LICENSE BLOCK #########################
|
|
27
|
+
|
|
28
|
+
from .charsetprober import CharSetProber
|
|
29
|
+
from .codingstatemachine import CodingStateMachine
|
|
30
|
+
from .enums import LanguageFilter, ProbingState, MachineState
|
|
31
|
+
from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL,
|
|
32
|
+
ISO2022KR_SM_MODEL)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class EscCharSetProber(CharSetProber):
|
|
36
|
+
"""
|
|
37
|
+
This CharSetProber uses a "code scheme" approach for detecting encodings,
|
|
38
|
+
whereby easily recognizable escape or shift sequences are relied on to
|
|
39
|
+
identify these encodings.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(self, lang_filter=None):
|
|
43
|
+
super(EscCharSetProber, self).__init__(lang_filter=lang_filter)
|
|
44
|
+
self.coding_sm = []
|
|
45
|
+
if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED:
|
|
46
|
+
self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL))
|
|
47
|
+
self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL))
|
|
48
|
+
if self.lang_filter & LanguageFilter.JAPANESE:
|
|
49
|
+
self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL))
|
|
50
|
+
if self.lang_filter & LanguageFilter.KOREAN:
|
|
51
|
+
self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL))
|
|
52
|
+
self.active_sm_count = None
|
|
53
|
+
self._detected_charset = None
|
|
54
|
+
self._detected_language = None
|
|
55
|
+
self._state = None
|
|
56
|
+
self.reset()
|
|
57
|
+
|
|
58
|
+
def reset(self):
|
|
59
|
+
super(EscCharSetProber, self).reset()
|
|
60
|
+
for coding_sm in self.coding_sm:
|
|
61
|
+
if not coding_sm:
|
|
62
|
+
continue
|
|
63
|
+
coding_sm.active = True
|
|
64
|
+
coding_sm.reset()
|
|
65
|
+
self.active_sm_count = len(self.coding_sm)
|
|
66
|
+
self._detected_charset = None
|
|
67
|
+
self._detected_language = None
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def charset_name(self):
|
|
71
|
+
return self._detected_charset
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def language(self):
|
|
75
|
+
return self._detected_language
|
|
76
|
+
|
|
77
|
+
def get_confidence(self):
|
|
78
|
+
if self._detected_charset:
|
|
79
|
+
return 0.99
|
|
80
|
+
else:
|
|
81
|
+
return 0.00
|
|
82
|
+
|
|
83
|
+
def feed(self, byte_str):
|
|
84
|
+
for c in byte_str:
|
|
85
|
+
for coding_sm in self.coding_sm:
|
|
86
|
+
if not coding_sm or not coding_sm.active:
|
|
87
|
+
continue
|
|
88
|
+
coding_state = coding_sm.next_state(c)
|
|
89
|
+
if coding_state == MachineState.ERROR:
|
|
90
|
+
coding_sm.active = False
|
|
91
|
+
self.active_sm_count -= 1
|
|
92
|
+
if self.active_sm_count <= 0:
|
|
93
|
+
self._state = ProbingState.NOT_ME
|
|
94
|
+
return self.state
|
|
95
|
+
elif coding_state == MachineState.ITS_ME:
|
|
96
|
+
self._state = ProbingState.FOUND_IT
|
|
97
|
+
self._detected_charset = coding_sm.get_coding_state_machine()
|
|
98
|
+
self._detected_language = coding_sm.language
|
|
99
|
+
return self.state
|
|
100
|
+
|
|
101
|
+
return self.state
|