update shared dependencies
This commit is contained in:
parent
d4d3d82be3
commit
736cd598a8
521 changed files with 45146 additions and 22574 deletions
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
# EASY-INSTALL-ENTRY-SCRIPT: 'chardet==2.3.0','console_scripts','chardetect'
|
|
||||||
__requires__ = 'chardet==2.3.0'
|
|
||||||
import sys
|
|
||||||
from pkg_resources import load_entry_point
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(
|
|
||||||
load_entry_point('chardet==2.3.0', 'console_scripts', 'chardetect')()
|
|
||||||
)
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from setuptools.command.easy_install import main
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
|
||||||
sys.exit(main())
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from setuptools.command.easy_install import main
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
|
||||||
sys.exit(main())
|
|
|
@ -10,16 +10,16 @@ PyPDF2/xmp.py,sha256=vdjDUAMCqb7-AhkuNaqCanviPHMpuJ-5adY8Kxe5jUc,13639
|
||||||
PyPDF2-1.25.1.dist-info/DESCRIPTION.rst,sha256=mCiWyCHYtsbQ22O_f2FbbD8CjW1GMfwvbn67J_THZ5M,600
|
PyPDF2-1.25.1.dist-info/DESCRIPTION.rst,sha256=mCiWyCHYtsbQ22O_f2FbbD8CjW1GMfwvbn67J_THZ5M,600
|
||||||
PyPDF2-1.25.1.dist-info/METADATA,sha256=lGFpbQOrG5_oOYPi4GlzoQT4Lyj3eCvNEHIomSf4JsU,1174
|
PyPDF2-1.25.1.dist-info/METADATA,sha256=lGFpbQOrG5_oOYPi4GlzoQT4Lyj3eCvNEHIomSf4JsU,1174
|
||||||
PyPDF2-1.25.1.dist-info/RECORD,,
|
PyPDF2-1.25.1.dist-info/RECORD,,
|
||||||
PyPDF2-1.25.1.dist-info/WHEEL,sha256=bfpjj1zBtYtglW1hWtnRCmhEcEV3TH8magB_ZQeGgSg,93
|
PyPDF2-1.25.1.dist-info/WHEEL,sha256=lCqt3ViRAf9c8mCs6o7ffkwROUdYSy8_YHn5f_rulB4,93
|
||||||
PyPDF2-1.25.1.dist-info/metadata.json,sha256=aVLfNzdnpxj8hyl12sDq-3IgfGH7t0g5gS2y6LPYtYE,692
|
PyPDF2-1.25.1.dist-info/metadata.json,sha256=gaK0QZPmK8xsUqrxEf3uGaJQXIevQ5Z5ZfV-NfIhVc4,692
|
||||||
PyPDF2-1.25.1.dist-info/top_level.txt,sha256=BERWrwqdvKXaVKhpnMbtO6b11qPA-mBt2r9a0VPF-Ow,7
|
PyPDF2-1.25.1.dist-info/top_level.txt,sha256=BERWrwqdvKXaVKhpnMbtO6b11qPA-mBt2r9a0VPF-Ow,7
|
||||||
/srv/openmedialibrary/platform/Shared/home/.local/lib/python3.5/site-packages/PyPDF2-1.25.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/PyPDF2-1.25.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
PyPDF2/__pycache__/xmp.cpython-35.pyc,,
|
PyPDF2/__pycache__/xmp.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/utils.cpython-35.pyc,,
|
PyPDF2/__pycache__/pdf.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/pdf.cpython-35.pyc,,
|
PyPDF2/__pycache__/generic.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/merger.cpython-35.pyc,,
|
PyPDF2/__pycache__/filters.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/__init__.cpython-35.pyc,,
|
PyPDF2/__pycache__/pagerange.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/generic.cpython-35.pyc,,
|
PyPDF2/__pycache__/_version.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/filters.cpython-35.pyc,,
|
PyPDF2/__pycache__/__init__.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/pagerange.cpython-35.pyc,,
|
PyPDF2/__pycache__/merger.cpython-34.pyc,,
|
||||||
PyPDF2/__pycache__/_version.cpython-35.pyc,,
|
PyPDF2/__pycache__/utils.cpython-34.pyc,,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: bdist_wheel (0.26.0)
|
Generator: bdist_wheel (0.29.0)
|
||||||
Root-Is-Purelib: true
|
Root-Is-Purelib: true
|
||||||
Tag: cp35-none-any
|
Tag: cp34-none-any
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries :: Python Modules"], "extensions": {"python.details": {"contacts": [{"email": "PyPDF2@phaseit.net", "name": "Phaseit, Inc.", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://mstamy2.github.com/PyPDF2"}}}, "generator": "bdist_wheel (0.26.0)", "metadata_version": "2.0", "name": "PyPDF2", "summary": "PDF toolkit", "version": "1.25.1"}
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries :: Python Modules"], "extensions": {"python.details": {"contacts": [{"email": "PyPDF2@phaseit.net", "name": "Phaseit, Inc.", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://mstamy2.github.com/PyPDF2"}}}, "generator": "bdist_wheel (0.29.0)", "metadata_version": "2.0", "name": "PyPDF2", "summary": "PDF toolkit", "version": "1.25.1"}
|
|
@ -46,7 +46,6 @@ import string
|
||||||
import math
|
import math
|
||||||
import struct
|
import struct
|
||||||
import sys
|
import sys
|
||||||
import uuid
|
|
||||||
from sys import version_info
|
from sys import version_info
|
||||||
if version_info < ( 3, 0 ):
|
if version_info < ( 3, 0 ):
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
@ -226,22 +225,8 @@ class PdfFileWriter(object):
|
||||||
NameObject("/S"): NameObject("/JavaScript"),
|
NameObject("/S"): NameObject("/JavaScript"),
|
||||||
NameObject("/JS"): NameObject("(%s)" % javascript)
|
NameObject("/JS"): NameObject("(%s)" % javascript)
|
||||||
})
|
})
|
||||||
js_indirect_object = self._addObject(js)
|
|
||||||
|
|
||||||
# We need a name for parameterized javascript in the pdf file, but it can be anything.
|
|
||||||
js_string_name = str(uuid.uuid4())
|
|
||||||
|
|
||||||
js_name_tree = DictionaryObject()
|
|
||||||
js_name_tree.update({
|
|
||||||
NameObject("/JavaScript"): DictionaryObject({
|
|
||||||
NameObject("/Names"): ArrayObject([createStringObject(js_string_name), js_indirect_object])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
self._addObject(js_name_tree)
|
|
||||||
|
|
||||||
self._root_object.update({
|
self._root_object.update({
|
||||||
NameObject("/OpenAction"): js_indirect_object,
|
NameObject("/OpenAction"): self._addObject(js)
|
||||||
NameObject("/Names"): js_name_tree
|
|
||||||
})
|
})
|
||||||
|
|
||||||
def addAttachment(self, fname, fdata):
|
def addAttachment(self, fname, fdata):
|
||||||
|
@ -2152,7 +2137,7 @@ class PageObject(DictionaryObject):
|
||||||
page2Res = res2.get(resource, DictionaryObject()).getObject()
|
page2Res = res2.get(resource, DictionaryObject()).getObject()
|
||||||
renameRes = {}
|
renameRes = {}
|
||||||
for key in list(page2Res.keys()):
|
for key in list(page2Res.keys()):
|
||||||
if key in newRes and newRes.raw_get(key) != page2Res.raw_get(key):
|
if key in newRes and newRes[key] != page2Res[key]:
|
||||||
newname = NameObject(key + str(uuid.uuid4()))
|
newname = NameObject(key + str(uuid.uuid4()))
|
||||||
renameRes[key] = newname
|
renameRes[key] = newname
|
||||||
newRes[newname] = page2Res[key]
|
newRes[newname] = page2Res[key]
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -1,4 +1,4 @@
|
||||||
Metadata-Version: 1.0
|
Metadata-Version: 2.0
|
||||||
Name: PySocks
|
Name: PySocks
|
||||||
Version: 1.5.6
|
Version: 1.5.6
|
||||||
Summary: A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information.
|
Summary: A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information.
|
||||||
|
@ -6,6 +6,9 @@ Home-page: https://github.com/Anorov/PySocks
|
||||||
Author: Anorov
|
Author: Anorov
|
||||||
Author-email: anorov.vorona@gmail.com
|
Author-email: anorov.vorona@gmail.com
|
||||||
License: BSD
|
License: BSD
|
||||||
Description: UNKNOWN
|
|
||||||
Keywords: socks,proxy
|
Keywords: socks,proxy
|
||||||
Platform: UNKNOWN
|
Platform: UNKNOWN
|
||||||
|
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
socks.py,sha256=0pa1zGmoXBtXOf0uCgb7a2RaVyYXJGy2szcqaH-4J54,28004
|
||||||
|
sockshandler.py,sha256=ENwUUO3vt84_1yRHAq1A147TL_TAuFux2t_1QvNV2Vo,2913
|
||||||
|
PySocks-1.5.6.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10
|
||||||
|
PySocks-1.5.6.dist-info/METADATA,sha256=FMkow33TD954netuDo9XoNwJvnYfhG3xb29-SqYfD3s,312
|
||||||
|
PySocks-1.5.6.dist-info/RECORD,,
|
||||||
|
PySocks-1.5.6.dist-info/WHEEL,sha256=lCqt3ViRAf9c8mCs6o7ffkwROUdYSy8_YHn5f_rulB4,93
|
||||||
|
PySocks-1.5.6.dist-info/metadata.json,sha256=1YIXTsL7gr8l01o_J6_5NIv29fVrNchGX8t-w1bmPKA,498
|
||||||
|
PySocks-1.5.6.dist-info/top_level.txt,sha256=TKSOIfCFBoK9EY8FBYbYqC3PWd3--G15ph9n8-QHPDk,19
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/PySocks-1.5.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
__pycache__/sockshandler.cpython-34.pyc,,
|
||||||
|
__pycache__/socks.cpython-34.pyc,,
|
|
@ -0,0 +1,5 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: cp34-none-any
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"extensions": {"python.details": {"contacts": [{"email": "anorov.vorona@gmail.com", "name": "Anorov", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/Anorov/PySocks"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["socks", "proxy"], "license": "BSD", "metadata_version": "2.0", "name": "PySocks", "summary": "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information.", "version": "1.5.6"}
|
|
@ -1,6 +0,0 @@
|
||||||
socks.py
|
|
||||||
sockshandler.py
|
|
||||||
PySocks.egg-info/PKG-INFO
|
|
||||||
PySocks.egg-info/SOURCES.txt
|
|
||||||
PySocks.egg-info/dependency_links.txt
|
|
||||||
PySocks.egg-info/top_level.txt
|
|
|
@ -1,9 +0,0 @@
|
||||||
../socks.py
|
|
||||||
../sockshandler.py
|
|
||||||
../__pycache__/socks.cpython-34.pyc
|
|
||||||
../__pycache__/sockshandler.cpython-34.pyc
|
|
||||||
./
|
|
||||||
top_level.txt
|
|
||||||
dependency_links.txt
|
|
||||||
PKG-INFO
|
|
||||||
SOURCES.txt
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
=============
|
||||||
|
ABC-Backports
|
||||||
|
=============
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ABCs live in "collections.abc" in Python >= 3.3
|
||||||
|
from collections.abc import Coroutine, Generator
|
||||||
|
except ImportError:
|
||||||
|
# fall back to import from "backports_abc"
|
||||||
|
from backports_abc import Coroutine, Generator
|
||||||
|
|
||||||
|
You can also install the ABCs into the stdlib by calling the ``patch()``
|
||||||
|
function:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import backports_abc
|
||||||
|
backports_abc.patch()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ABCs live in "collections.abc" in Python >= 3.3
|
||||||
|
from collections.abc import Coroutine, Generator
|
||||||
|
except ImportError:
|
||||||
|
# fall back to import from "collections" in Python <= 3.2
|
||||||
|
from backports_abc import Coroutine, Generator
|
||||||
|
|
||||||
|
Currently, ``patch()`` provides the following names if missing:
|
||||||
|
|
||||||
|
* ``collections.abc.Generator``
|
||||||
|
* ``collections.abc.Awaitable``
|
||||||
|
* ``collections.abc.Coroutine``
|
||||||
|
* ``inspect.isawaitable(obj)``
|
||||||
|
|
||||||
|
All of them are also available directly from the ``backports_abc``
|
||||||
|
module namespace.
|
||||||
|
|
||||||
|
In Python 2.x and Python 3.2, it patches the ``collections`` module
|
||||||
|
instead of the ``collections.abc`` module. Any names that are already
|
||||||
|
available when importing this module will not be overwritten.
|
||||||
|
|
||||||
|
The names that were previously patched by ``patch()`` can be queried
|
||||||
|
through the mapping in ``backports_abc.PATCHED``.
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
=========
|
||||||
|
|
||||||
|
0.4 (2015-09-14)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* direct wheel building support
|
||||||
|
|
||||||
|
* make all names available at the module level instead of requiring patching
|
||||||
|
|
||||||
|
|
||||||
|
0.3 (2015-07-03)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* removed patching of ``inspect.iscoroutine()`` as it is not ABC based
|
||||||
|
|
||||||
|
|
||||||
|
0.2 (2015-07-03)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* require explicit ``backports_abc.patch()`` call to do the patching
|
||||||
|
(avoids side-effects on import and allows future configuration)
|
||||||
|
|
||||||
|
* provide access to patched names through global ``PATCHED`` dict
|
||||||
|
|
||||||
|
* add ABC based implementations of inspect.iscoroutine() and
|
||||||
|
inspect.isawaitable()
|
||||||
|
|
||||||
|
|
||||||
|
0.1 (2015-06-24)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* initial public release
|
||||||
|
|
||||||
|
* provided ABCs: Generator, Coroutine, Awaitable
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -0,0 +1,101 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: backports-abc
|
||||||
|
Version: 0.4
|
||||||
|
Summary: A backport of recent additions to the 'collections.abc' module.
|
||||||
|
Home-page: https://github.com/cython/backports_abc
|
||||||
|
Author: Stefan Behnel et al.
|
||||||
|
Author-email: cython-devel@python.org
|
||||||
|
License: UNKNOWN
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: Python Software Foundation License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
|
||||||
|
=============
|
||||||
|
ABC-Backports
|
||||||
|
=============
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ABCs live in "collections.abc" in Python >= 3.3
|
||||||
|
from collections.abc import Coroutine, Generator
|
||||||
|
except ImportError:
|
||||||
|
# fall back to import from "backports_abc"
|
||||||
|
from backports_abc import Coroutine, Generator
|
||||||
|
|
||||||
|
You can also install the ABCs into the stdlib by calling the ``patch()``
|
||||||
|
function:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import backports_abc
|
||||||
|
backports_abc.patch()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# ABCs live in "collections.abc" in Python >= 3.3
|
||||||
|
from collections.abc import Coroutine, Generator
|
||||||
|
except ImportError:
|
||||||
|
# fall back to import from "collections" in Python <= 3.2
|
||||||
|
from backports_abc import Coroutine, Generator
|
||||||
|
|
||||||
|
Currently, ``patch()`` provides the following names if missing:
|
||||||
|
|
||||||
|
* ``collections.abc.Generator``
|
||||||
|
* ``collections.abc.Awaitable``
|
||||||
|
* ``collections.abc.Coroutine``
|
||||||
|
* ``inspect.isawaitable(obj)``
|
||||||
|
|
||||||
|
All of them are also available directly from the ``backports_abc``
|
||||||
|
module namespace.
|
||||||
|
|
||||||
|
In Python 2.x and Python 3.2, it patches the ``collections`` module
|
||||||
|
instead of the ``collections.abc`` module. Any names that are already
|
||||||
|
available when importing this module will not be overwritten.
|
||||||
|
|
||||||
|
The names that were previously patched by ``patch()`` can be queried
|
||||||
|
through the mapping in ``backports_abc.PATCHED``.
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
=========
|
||||||
|
|
||||||
|
0.4 (2015-09-14)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* direct wheel building support
|
||||||
|
|
||||||
|
* make all names available at the module level instead of requiring patching
|
||||||
|
|
||||||
|
|
||||||
|
0.3 (2015-07-03)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* removed patching of ``inspect.iscoroutine()`` as it is not ABC based
|
||||||
|
|
||||||
|
|
||||||
|
0.2 (2015-07-03)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* require explicit ``backports_abc.patch()`` call to do the patching
|
||||||
|
(avoids side-effects on import and allows future configuration)
|
||||||
|
|
||||||
|
* provide access to patched names through global ``PATCHED`` dict
|
||||||
|
|
||||||
|
* add ABC based implementations of inspect.iscoroutine() and
|
||||||
|
inspect.isawaitable()
|
||||||
|
|
||||||
|
|
||||||
|
0.1 (2015-06-24)
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* initial public release
|
||||||
|
|
||||||
|
* provided ABCs: Generator, Coroutine, Awaitable
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
backports_abc.py,sha256=mbCAmZnNay6Xudwu7KSetUPDbbImIfROXSSve8izAEI,5277
|
||||||
|
backports_abc-0.4.dist-info/DESCRIPTION.rst,sha256=LhLJKmQBL5GC4g-6f-JhfIY7qNmsd1ROa3n2BNb1syU,2074
|
||||||
|
backports_abc-0.4.dist-info/METADATA,sha256=4yoBi66MYiwltr2oDC2O9r__fFUWf8SDlVxZUPbt8ZU,2716
|
||||||
|
backports_abc-0.4.dist-info/top_level.txt,sha256=VrQEXq17Ce9X1jfsstW6gYD3gyq3Kjio-8wFYildkzo,14
|
||||||
|
backports_abc-0.4.dist-info/RECORD,,
|
||||||
|
backports_abc-0.4.dist-info/metadata.json,sha256=AIEgf2dZKeoBWp4UUzRRrUljLI9o_lXFgb09KXQXG3w,760
|
||||||
|
backports_abc-0.4.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/backports_abc-0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
__pycache__/backports_abc.cpython-34.pyc,,
|
|
@ -1,5 +1,5 @@
|
||||||
Wheel-Version: 1.0
|
Wheel-Version: 1.0
|
||||||
Generator: bdist_wheel (0.22.0)
|
Generator: bdist_wheel (0.24.0)
|
||||||
Root-Is-Purelib: true
|
Root-Is-Purelib: true
|
||||||
Tag: py2-none-any
|
Tag: py2-none-any
|
||||||
Tag: py3-none-any
|
Tag: py3-none-any
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Python Software Foundation License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3"], "metadata_version": "2.0", "extensions": {"python.details": {"contacts": [{"email": "cython-devel@python.org", "name": "Stefan Behnel et al.", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/cython/backports_abc"}}}, "summary": "A backport of recent additions to the 'collections.abc' module.", "version": "0.4", "name": "backports-abc", "generator": "bdist_wheel (0.24.0)"}
|
|
@ -0,0 +1 @@
|
||||||
|
backports_abc
|
202
Shared/lib/python3.4/site-packages/backports_abc.py
Normal file
202
Shared/lib/python3.4/site-packages/backports_abc.py
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
"""
|
||||||
|
Patch recently added ABCs into the standard lib module
|
||||||
|
``collections.abc`` (Py3) or ``collections`` (Py2).
|
||||||
|
|
||||||
|
Usage::
|
||||||
|
|
||||||
|
import backports_abc
|
||||||
|
backports_abc.patch()
|
||||||
|
|
||||||
|
or::
|
||||||
|
|
||||||
|
try:
|
||||||
|
from collections.abc import Generator
|
||||||
|
except ImportError:
|
||||||
|
from backports_abc import Generator
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
import collections.abc as _collections_abc
|
||||||
|
except ImportError:
|
||||||
|
import collections as _collections_abc
|
||||||
|
|
||||||
|
|
||||||
|
def mk_gen():
|
||||||
|
from abc import abstractmethod
|
||||||
|
|
||||||
|
required_methods = (
|
||||||
|
'__iter__', '__next__' if hasattr(iter(()), '__next__') else 'next',
|
||||||
|
'send', 'throw', 'close')
|
||||||
|
|
||||||
|
class Generator(_collections_abc.Iterator):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
if '__next__' in required_methods:
|
||||||
|
def __next__(self):
|
||||||
|
return self.send(None)
|
||||||
|
else:
|
||||||
|
def next(self):
|
||||||
|
return self.send(None)
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def send(self, value):
|
||||||
|
raise StopIteration
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def throw(self, typ, val=None, tb=None):
|
||||||
|
if val is None:
|
||||||
|
if tb is None:
|
||||||
|
raise typ
|
||||||
|
val = typ()
|
||||||
|
if tb is not None:
|
||||||
|
val = val.with_traceback(tb)
|
||||||
|
raise val
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
try:
|
||||||
|
self.throw(GeneratorExit)
|
||||||
|
except (GeneratorExit, StopIteration):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise RuntimeError('generator ignored GeneratorExit')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __subclasshook__(cls, C):
|
||||||
|
if cls is Generator:
|
||||||
|
mro = C.__mro__
|
||||||
|
for method in required_methods:
|
||||||
|
for base in mro:
|
||||||
|
if method in base.__dict__:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
return NotImplemented
|
||||||
|
return True
|
||||||
|
return NotImplemented
|
||||||
|
|
||||||
|
generator = type((lambda: (yield))())
|
||||||
|
Generator.register(generator)
|
||||||
|
return Generator
|
||||||
|
|
||||||
|
|
||||||
|
def mk_awaitable():
|
||||||
|
from abc import abstractmethod, ABCMeta
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def __await__(self):
|
||||||
|
yield
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __subclasshook__(cls, C):
|
||||||
|
if cls is Awaitable:
|
||||||
|
for B in C.__mro__:
|
||||||
|
if '__await__' in B.__dict__:
|
||||||
|
if B.__dict__['__await__']:
|
||||||
|
return True
|
||||||
|
break
|
||||||
|
return NotImplemented
|
||||||
|
|
||||||
|
# calling metaclass directly as syntax differs in Py2/Py3
|
||||||
|
Awaitable = ABCMeta('Awaitable', (), {
|
||||||
|
'__slots__': (),
|
||||||
|
'__await__': __await__,
|
||||||
|
'__subclasshook__': __subclasshook__,
|
||||||
|
})
|
||||||
|
|
||||||
|
return Awaitable
|
||||||
|
|
||||||
|
|
||||||
|
def mk_coroutine():
|
||||||
|
from abc import abstractmethod
|
||||||
|
|
||||||
|
class Coroutine(Awaitable):
|
||||||
|
__slots__ = ()
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def send(self, value):
|
||||||
|
"""Send a value into the coroutine.
|
||||||
|
Return next yielded value or raise StopIteration.
|
||||||
|
"""
|
||||||
|
raise StopIteration
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def throw(self, typ, val=None, tb=None):
|
||||||
|
"""Raise an exception in the coroutine.
|
||||||
|
Return next yielded value or raise StopIteration.
|
||||||
|
"""
|
||||||
|
if val is None:
|
||||||
|
if tb is None:
|
||||||
|
raise typ
|
||||||
|
val = typ()
|
||||||
|
if tb is not None:
|
||||||
|
val = val.with_traceback(tb)
|
||||||
|
raise val
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
"""Raise GeneratorExit inside coroutine.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
self.throw(GeneratorExit)
|
||||||
|
except (GeneratorExit, StopIteration):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise RuntimeError('coroutine ignored GeneratorExit')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def __subclasshook__(cls, C):
|
||||||
|
if cls is Coroutine:
|
||||||
|
mro = C.__mro__
|
||||||
|
for method in ('__await__', 'send', 'throw', 'close'):
|
||||||
|
for base in mro:
|
||||||
|
if method in base.__dict__:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
return NotImplemented
|
||||||
|
return True
|
||||||
|
return NotImplemented
|
||||||
|
|
||||||
|
return Coroutine
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
# make all ABCs available in this module
|
||||||
|
|
||||||
|
try:
|
||||||
|
Generator = _collections_abc.Generator
|
||||||
|
except AttributeError:
|
||||||
|
Generator = mk_gen()
|
||||||
|
|
||||||
|
try:
|
||||||
|
Awaitable = _collections_abc.Awaitable
|
||||||
|
except AttributeError:
|
||||||
|
Awaitable = mk_awaitable()
|
||||||
|
|
||||||
|
try:
|
||||||
|
Coroutine = _collections_abc.Coroutine
|
||||||
|
except AttributeError:
|
||||||
|
Coroutine = mk_coroutine()
|
||||||
|
|
||||||
|
try:
|
||||||
|
from inspect import isawaitable
|
||||||
|
except ImportError:
|
||||||
|
def isawaitable(obj):
|
||||||
|
return isinstance(obj, Awaitable)
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
# allow patching the stdlib
|
||||||
|
|
||||||
|
PATCHED = {}
|
||||||
|
|
||||||
|
|
||||||
|
def patch(patch_inspect=True):
|
||||||
|
"""
|
||||||
|
Main entry point for patching the ``collections.abc`` and ``inspect``
|
||||||
|
standard library modules.
|
||||||
|
"""
|
||||||
|
PATCHED['collections.abc.Generator'] = _collections_abc.Generator = Generator
|
||||||
|
PATCHED['collections.abc.Coroutine'] = _collections_abc.Coroutine = Coroutine
|
||||||
|
PATCHED['collections.abc.Awaitable'] = _collections_abc.Awaitable = Awaitable
|
||||||
|
|
||||||
|
if patch_inspect:
|
||||||
|
import inspect
|
||||||
|
PATCHED['inspect.isawaitable'] = inspect.isawaitable = isawaitable
|
|
@ -1,48 +0,0 @@
|
||||||
Certifi: Python SSL Certificates
|
|
||||||
================================
|
|
||||||
|
|
||||||
`Certifi`_ is a carefully curated collection of Root Certificates for
|
|
||||||
validating the trustworthiness of SSL certificates while verifying the identity
|
|
||||||
of TLS hosts. It has been extracted from the `Requests`_ project.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
``certifi`` is available on PyPI. Simply install it with ``pip``::
|
|
||||||
|
|
||||||
$ pip install certifi
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
To reference the installed CA Bundle, you can use the built-in function::
|
|
||||||
|
|
||||||
>>> import certifi
|
|
||||||
|
|
||||||
>>> certifi.where()
|
|
||||||
'/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
|
|
||||||
1024-bit Root Certificates
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Browsers and certificate authorities have concluded that 1024-bit keys are
|
|
||||||
unacceptably weak for certificates, particularly root certificates. For this
|
|
||||||
reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
|
|
||||||
bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
|
|
||||||
certifiate from the same CA. Because Mozilla removed these certificates from
|
|
||||||
its bundle, ``certifi`` removed them as well.
|
|
||||||
|
|
||||||
Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to
|
|
||||||
validate certificate chains that use the strong roots. For this reason, if you
|
|
||||||
fail to validate a certificate using the ``certifi.where()`` mechanism, you can
|
|
||||||
intentionally re-add the 1024-bit roots back into your bundle by calling
|
|
||||||
``certifi.old_where()`` instead. This is not recommended in production: if at
|
|
||||||
all possible you should upgrade to a newer OpenSSL. However, if you have no
|
|
||||||
other option, this may work for you.
|
|
||||||
|
|
||||||
.. _`Certifi`: http://certifi.io/en/latest/
|
|
||||||
.. _`Requests`: http://docs.python-requests.org/en/latest/
|
|
||||||
|
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
Metadata-Version: 2.0
|
|
||||||
Name: certifi
|
|
||||||
Version: 2015.11.20.1
|
|
||||||
Summary: Python package for providing Mozilla's CA Bundle.
|
|
||||||
Home-page: http://certifi.io/
|
|
||||||
Author: Kenneth Reitz
|
|
||||||
Author-email: me@kennethreitz.com
|
|
||||||
License: ISC
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: Natural Language :: English
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 2.5
|
|
||||||
Classifier: Programming Language :: Python :: 2.6
|
|
||||||
Classifier: Programming Language :: Python :: 2.7
|
|
||||||
Classifier: Programming Language :: Python :: 3.0
|
|
||||||
Classifier: Programming Language :: Python :: 3.1
|
|
||||||
Classifier: Programming Language :: Python :: 3.2
|
|
||||||
Classifier: Programming Language :: Python :: 3.3
|
|
||||||
Classifier: Programming Language :: Python :: 3.4
|
|
||||||
|
|
||||||
Certifi: Python SSL Certificates
|
|
||||||
================================
|
|
||||||
|
|
||||||
`Certifi`_ is a carefully curated collection of Root Certificates for
|
|
||||||
validating the trustworthiness of SSL certificates while verifying the identity
|
|
||||||
of TLS hosts. It has been extracted from the `Requests`_ project.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
``certifi`` is available on PyPI. Simply install it with ``pip``::
|
|
||||||
|
|
||||||
$ pip install certifi
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
To reference the installed CA Bundle, you can use the built-in function::
|
|
||||||
|
|
||||||
>>> import certifi
|
|
||||||
|
|
||||||
>>> certifi.where()
|
|
||||||
'/usr/local/lib/python2.7/site-packages/certifi/cacert.pem'
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
|
|
||||||
1024-bit Root Certificates
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Browsers and certificate authorities have concluded that 1024-bit keys are
|
|
||||||
unacceptably weak for certificates, particularly root certificates. For this
|
|
||||||
reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its
|
|
||||||
bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key)
|
|
||||||
certifiate from the same CA. Because Mozilla removed these certificates from
|
|
||||||
its bundle, ``certifi`` removed them as well.
|
|
||||||
|
|
||||||
Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to
|
|
||||||
validate certificate chains that use the strong roots. For this reason, if you
|
|
||||||
fail to validate a certificate using the ``certifi.where()`` mechanism, you can
|
|
||||||
intentionally re-add the 1024-bit roots back into your bundle by calling
|
|
||||||
``certifi.old_where()`` instead. This is not recommended in production: if at
|
|
||||||
all possible you should upgrade to a newer OpenSSL. However, if you have no
|
|
||||||
other option, this may work for you.
|
|
||||||
|
|
||||||
.. _`Certifi`: http://certifi.io/en/latest/
|
|
||||||
.. _`Requests`: http://docs.python-requests.org/en/latest/
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
certifi/__init__.py,sha256=PQnlDAmiQCFAKkk9KwohQdKLi4jKgLwHAEpMMj-Rno4,65
|
|
||||||
certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41
|
|
||||||
certifi/cacert.pem,sha256=j_IWL25eEgetcl_WsBPVc3qYwpOleezC6wo_zWb98V0,315580
|
|
||||||
certifi/core.py,sha256=DqvIINYNNXsp3Srlk_NRaiizaww8po3l8t8ksz-Xt6Q,716
|
|
||||||
certifi/old_root.pem,sha256=HT0KIfaM83q0XHFqGEesiGyfmlSWuD2RI0-AVIS2srY,25626
|
|
||||||
certifi/weak.pem,sha256=xskENxE0VZ4EYMX3tG9oB1mWMW1ACaliQwPPNP0ctiQ,341206
|
|
||||||
certifi-2015.11.20.1.dist-info/DESCRIPTION.rst,sha256=u4KmW8nf84KSFVrJue_kb-ArB1h3uUQT4H6CV_oOeUI,1706
|
|
||||||
certifi-2015.11.20.1.dist-info/METADATA,sha256=QOGx0SByMIj_w9WgfFhr2O24DO9QOh-HXTXwK0KaoTc,2524
|
|
||||||
certifi-2015.11.20.1.dist-info/RECORD,,
|
|
||||||
certifi-2015.11.20.1.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
|
|
||||||
certifi-2015.11.20.1.dist-info/metadata.json,sha256=8RXsg-wuDBJKT4gTtcMHe24CkOA8JVIcInVG7PN1VbA,913
|
|
||||||
certifi-2015.11.20.1.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8
|
|
||||||
certifi/__pycache__/__main__.cpython-34.pyc,,
|
|
||||||
certifi/__pycache__/core.cpython-34.pyc,,
|
|
||||||
certifi/__pycache__/__init__.cpython-34.pyc,,
|
|
|
@ -1 +0,0 @@
|
||||||
{"generator": "bdist_wheel (0.26.0)", "summary": "Python package for providing Mozilla's CA Bundle.", "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4"], "extensions": {"python.details": {"project_urls": {"Home": "http://certifi.io/"}, "contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}}, "license": "ISC", "metadata_version": "2.0", "name": "certifi", "version": "2015.11.20.1"}
|
|
|
@ -1 +0,0 @@
|
||||||
certifi
|
|
|
@ -1,3 +0,0 @@
|
||||||
from .core import where, old_where
|
|
||||||
|
|
||||||
__version__ = "2015.11.20.1"
|
|
|
@ -1,2 +0,0 @@
|
||||||
from certifi import where
|
|
||||||
print(where())
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,36 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
"""
|
|
||||||
certifi.py
|
|
||||||
~~~~~~~~~~
|
|
||||||
|
|
||||||
This module returns the installation location of cacert.pem.
|
|
||||||
"""
|
|
||||||
import os
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
|
|
||||||
class DeprecatedBundleWarning(DeprecationWarning):
|
|
||||||
"""
|
|
||||||
The weak security bundle is being deprecated. Please bother your service
|
|
||||||
provider to get them to stop using cross-signed roots.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def where():
|
|
||||||
f = os.path.split(__file__)[0]
|
|
||||||
|
|
||||||
return os.path.join(f, 'cacert.pem')
|
|
||||||
|
|
||||||
|
|
||||||
def old_where():
|
|
||||||
warnings.warn(
|
|
||||||
"The weak security bundle is being deprecated.",
|
|
||||||
DeprecatedBundleWarning
|
|
||||||
)
|
|
||||||
f = os.path.split(__file__)[0]
|
|
||||||
return os.path.join(f, 'weak.pem')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print(where())
|
|
|
@ -1,414 +0,0 @@
|
||||||
# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
|
||||||
# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
|
|
||||||
# Label: "Entrust.net Secure Server CA"
|
|
||||||
# Serial: 927650371
|
|
||||||
# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee
|
|
||||||
# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39
|
|
||||||
# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
|
|
||||||
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
|
|
||||||
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
|
|
||||||
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
|
|
||||||
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
|
|
||||||
MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
|
|
||||||
ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
|
|
||||||
b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
|
||||||
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
|
|
||||||
U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
|
|
||||||
A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
|
|
||||||
I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
|
|
||||||
wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
|
|
||||||
AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
|
|
||||||
oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
|
|
||||||
BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
|
|
||||||
dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
|
|
||||||
MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
|
|
||||||
b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
|
||||||
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
|
|
||||||
MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
|
|
||||||
E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
|
|
||||||
MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
|
|
||||||
hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
|
|
||||||
95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
|
|
||||||
2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
|
|
||||||
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority
|
|
||||||
# Label: "ValiCert Class 2 VA"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87
|
|
||||||
# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6
|
|
||||||
# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
|
||||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
|
||||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
|
||||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
|
||||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy
|
|
||||||
NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
|
||||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
|
||||||
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
|
||||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
|
||||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY
|
|
||||||
dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9
|
|
||||||
WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS
|
|
||||||
v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v
|
|
||||||
UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu
|
|
||||||
IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
|
|
||||||
W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok
|
|
||||||
# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok
|
|
||||||
# Label: "NetLock Express (Class C) Root"
|
|
||||||
# Serial: 104
|
|
||||||
# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4
|
|
||||||
# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b
|
|
||||||
# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx
|
|
||||||
ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0
|
|
||||||
b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD
|
|
||||||
EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X
|
|
||||||
DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw
|
|
||||||
DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u
|
|
||||||
c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr
|
|
||||||
TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN
|
|
||||||
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA
|
|
||||||
OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC
|
|
||||||
2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW
|
|
||||||
RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P
|
|
||||||
AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW
|
|
||||||
ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0
|
|
||||||
YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz
|
|
||||||
b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO
|
|
||||||
ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB
|
|
||||||
IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs
|
|
||||||
b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
|
||||||
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s
|
|
||||||
YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg
|
|
||||||
a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g
|
|
||||||
SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0
|
|
||||||
aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg
|
|
||||||
YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg
|
|
||||||
Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY
|
|
||||||
ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g
|
|
||||||
pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4
|
|
||||||
Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok
|
|
||||||
# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok
|
|
||||||
# Label: "NetLock Business (Class B) Root"
|
|
||||||
# Serial: 105
|
|
||||||
# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6
|
|
||||||
# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af
|
|
||||||
# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx
|
|
||||||
ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0
|
|
||||||
b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD
|
|
||||||
EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05
|
|
||||||
OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G
|
|
||||||
A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh
|
|
||||||
Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l
|
|
||||||
dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG
|
|
||||||
SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK
|
|
||||||
gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX
|
|
||||||
iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc
|
|
||||||
Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E
|
|
||||||
BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G
|
|
||||||
SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu
|
|
||||||
b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh
|
|
||||||
bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv
|
|
||||||
Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln
|
|
||||||
aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0
|
|
||||||
IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
|
||||||
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph
|
|
||||||
biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo
|
|
||||||
ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP
|
|
||||||
UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj
|
|
||||||
YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo
|
|
||||||
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA
|
|
||||||
bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06
|
|
||||||
sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa
|
|
||||||
n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS
|
|
||||||
NitjrFgBazMpUIaD8QFI
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
|
|
||||||
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority
|
|
||||||
# Label: "RSA Root Certificate 1"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72
|
|
||||||
# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb
|
|
||||||
# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
|
||||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
|
||||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
|
||||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
|
||||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy
|
|
||||||
NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
|
||||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
|
||||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
|
||||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
|
||||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD
|
|
||||||
cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs
|
|
||||||
2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY
|
|
||||||
JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE
|
|
||||||
Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ
|
|
||||||
n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
|
|
||||||
PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
|
|
||||||
# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority
|
|
||||||
# Label: "ValiCert Class 1 VA"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb
|
|
||||||
# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e
|
|
||||||
# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
|
|
||||||
IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz
|
|
||||||
BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y
|
|
||||||
aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG
|
|
||||||
9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy
|
|
||||||
NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y
|
|
||||||
azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
|
||||||
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw
|
|
||||||
Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl
|
|
||||||
cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y
|
|
||||||
LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+
|
|
||||||
TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y
|
|
||||||
TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0
|
|
||||||
LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW
|
|
||||||
I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw
|
|
||||||
nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
|
|
||||||
# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc.
|
|
||||||
# Label: "Equifax Secure eBusiness CA 1"
|
|
||||||
# Serial: 4
|
|
||||||
# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d
|
|
||||||
# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41
|
|
||||||
# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc
|
|
||||||
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT
|
|
||||||
ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw
|
|
||||||
MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j
|
|
||||||
LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ
|
|
||||||
KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo
|
|
||||||
RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu
|
|
||||||
WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw
|
|
||||||
Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD
|
|
||||||
AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK
|
|
||||||
eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM
|
|
||||||
zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+
|
|
||||||
WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN
|
|
||||||
/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
|
|
||||||
# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc.
|
|
||||||
# Label: "Equifax Secure Global eBusiness CA"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc
|
|
||||||
# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45
|
|
||||||
# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc
|
|
||||||
MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT
|
|
||||||
ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw
|
|
||||||
MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj
|
|
||||||
dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l
|
|
||||||
c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC
|
|
||||||
UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc
|
|
||||||
58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/
|
|
||||||
o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH
|
|
||||||
MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr
|
|
||||||
aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA
|
|
||||||
A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA
|
|
||||||
Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv
|
|
||||||
8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
|
|
||||||
# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division
|
|
||||||
# Label: "Thawte Premium Server CA"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a
|
|
||||||
# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a
|
|
||||||
# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
|
|
||||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
|
||||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
|
||||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
|
|
||||||
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
|
|
||||||
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
|
|
||||||
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
|
|
||||||
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
|
|
||||||
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
|
|
||||||
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
|
|
||||||
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
|
|
||||||
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
|
|
||||||
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
|
|
||||||
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
|
|
||||||
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
|
|
||||||
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
|
|
||||||
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
|
|
||||||
# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division
|
|
||||||
# Label: "Thawte Server CA"
|
|
||||||
# Serial: 1
|
|
||||||
# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d
|
|
||||||
# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c
|
|
||||||
# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx
|
|
||||||
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
|
|
||||||
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
|
|
||||||
biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm
|
|
||||||
MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx
|
|
||||||
MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
|
||||||
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3
|
|
||||||
dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl
|
|
||||||
cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3
|
|
||||||
DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
|
|
||||||
gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91
|
|
||||||
yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX
|
|
||||||
L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj
|
|
||||||
EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG
|
|
||||||
7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
|
|
||||||
QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ
|
|
||||||
qdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
|
||||||
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
|
||||||
# Label: "Verisign Class 3 Public Primary Certification Authority"
|
|
||||||
# Serial: 149843929435818692848040365716851702463
|
|
||||||
# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67
|
|
||||||
# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2
|
|
||||||
# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
|
|
||||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
|
||||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
|
||||||
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
|
||||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
|
||||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
|
||||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
|
||||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
|
||||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
|
||||||
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
|
|
||||||
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
|
|
||||||
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
|
||||||
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority
|
|
||||||
# Label: "Verisign Class 3 Public Primary Certification Authority"
|
|
||||||
# Serial: 80507572722862485515306429940691309246
|
|
||||||
# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4
|
|
||||||
# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b
|
|
||||||
# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG
|
|
||||||
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
|
|
||||||
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
|
|
||||||
MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
|
|
||||||
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
|
|
||||||
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
|
|
||||||
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
|
|
||||||
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
|
|
||||||
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
|
|
||||||
CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i
|
|
||||||
2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ
|
|
||||||
2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
|
|
||||||
# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network
|
|
||||||
# Label: "Verisign Class 3 Public Primary Certification Authority - G2"
|
|
||||||
# Serial: 167285380242319648451154478808036881606
|
|
||||||
# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9
|
|
||||||
# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f
|
|
||||||
# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ
|
|
||||||
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh
|
|
||||||
c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy
|
|
||||||
MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp
|
|
||||||
emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X
|
|
||||||
DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw
|
|
||||||
FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg
|
|
||||||
UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo
|
|
||||||
YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5
|
|
||||||
MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB
|
|
||||||
AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4
|
|
||||||
pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0
|
|
||||||
13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID
|
|
||||||
AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk
|
|
||||||
U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
|
|
||||||
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY
|
|
||||||
oJ2daZH9
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
|
|
||||||
# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc.
|
|
||||||
# Label: "GTE CyberTrust Global Root"
|
|
||||||
# Serial: 421
|
|
||||||
# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db
|
|
||||||
# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74
|
|
||||||
# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
|
|
||||||
VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
|
|
||||||
bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
|
|
||||||
b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
|
|
||||||
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
|
|
||||||
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
|
|
||||||
b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
|
|
||||||
iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
|
|
||||||
r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
|
|
||||||
04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
|
|
||||||
GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
|
|
||||||
3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
|
|
||||||
lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
# Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
|
|
||||||
# Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
|
|
||||||
# Label: "Equifax Secure Certificate Authority"
|
|
||||||
# Serial: 903804111
|
|
||||||
# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4
|
|
||||||
# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a
|
|
||||||
# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
|
|
||||||
UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
|
|
||||||
dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
|
|
||||||
MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
|
|
||||||
dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
|
|
||||||
AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
|
|
||||||
BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
|
|
||||||
cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
|
|
||||||
AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
|
|
||||||
MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
|
|
||||||
aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
|
|
||||||
ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
|
|
||||||
IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
|
|
||||||
MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
|
|
||||||
A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
|
|
||||||
7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
|
|
||||||
1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
|
|
||||||
-----END CERTIFICATE-----
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,48 @@
|
||||||
|
Chardet: The Universal Character Encoding Detector
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Detects
|
||||||
|
- ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
|
||||||
|
- Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
|
||||||
|
- EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
|
||||||
|
- EUC-KR, ISO-2022-KR (Korean)
|
||||||
|
- KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
|
||||||
|
- ISO-8859-2, windows-1250 (Hungarian)
|
||||||
|
- ISO-8859-5, windows-1251 (Bulgarian)
|
||||||
|
- windows-1252 (English)
|
||||||
|
- ISO-8859-7, windows-1253 (Greek)
|
||||||
|
- ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
|
||||||
|
- TIS-620 (Thai)
|
||||||
|
|
||||||
|
Requires Python 2.6 or later
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Install from `PyPI <https://pypi.python.org/pypi/chardet>`_::
|
||||||
|
|
||||||
|
pip install chardet
|
||||||
|
|
||||||
|
|
||||||
|
Command-line Tool
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
chardet comes with a command-line script which reports on the encodings of one
|
||||||
|
or more files::
|
||||||
|
|
||||||
|
% chardetect somefile someotherfile
|
||||||
|
somefile: windows-1252 with confidence 0.5
|
||||||
|
someotherfile: ascii with confidence 1.0
|
||||||
|
|
||||||
|
About
|
||||||
|
-----
|
||||||
|
|
||||||
|
This is a continuation of Mark Pilgrim's excellent chardet. Previously, two
|
||||||
|
versions needed to be maintained: one that supported python 2.x and one that
|
||||||
|
supported python 3.x. We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s
|
||||||
|
`charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one
|
||||||
|
coherent version that works for Python 2.6+.
|
||||||
|
|
||||||
|
:maintainer: Dan Blanchard
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -0,0 +1,72 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: chardet
|
||||||
|
Version: 2.3.0
|
||||||
|
Summary: Universal encoding detector for Python 2 and 3
|
||||||
|
Home-page: https://github.com/chardet/chardet
|
||||||
|
Author: Ian Cordasco
|
||||||
|
Author-email: graffatcolmingov@gmail.com
|
||||||
|
License: LGPL
|
||||||
|
Keywords: encoding,i18n,xml
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 4 - Beta
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.6
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.2
|
||||||
|
Classifier: Programming Language :: Python :: 3.3
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Classifier: Topic :: Text Processing :: Linguistic
|
||||||
|
|
||||||
|
Chardet: The Universal Character Encoding Detector
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
Detects
|
||||||
|
- ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
|
||||||
|
- Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
|
||||||
|
- EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
|
||||||
|
- EUC-KR, ISO-2022-KR (Korean)
|
||||||
|
- KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
|
||||||
|
- ISO-8859-2, windows-1250 (Hungarian)
|
||||||
|
- ISO-8859-5, windows-1251 (Bulgarian)
|
||||||
|
- windows-1252 (English)
|
||||||
|
- ISO-8859-7, windows-1253 (Greek)
|
||||||
|
- ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
|
||||||
|
- TIS-620 (Thai)
|
||||||
|
|
||||||
|
Requires Python 2.6 or later
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Install from `PyPI <https://pypi.python.org/pypi/chardet>`_::
|
||||||
|
|
||||||
|
pip install chardet
|
||||||
|
|
||||||
|
|
||||||
|
Command-line Tool
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
chardet comes with a command-line script which reports on the encodings of one
|
||||||
|
or more files::
|
||||||
|
|
||||||
|
% chardetect somefile someotherfile
|
||||||
|
somefile: windows-1252 with confidence 0.5
|
||||||
|
someotherfile: ascii with confidence 1.0
|
||||||
|
|
||||||
|
About
|
||||||
|
-----
|
||||||
|
|
||||||
|
This is a continuation of Mark Pilgrim's excellent chardet. Previously, two
|
||||||
|
versions needed to be maintained: one that supported python 2.x and one that
|
||||||
|
supported python 3.x. We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s
|
||||||
|
`charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one
|
||||||
|
coherent version that works for Python 2.6+.
|
||||||
|
|
||||||
|
:maintainer: Dan Blanchard
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295
|
||||||
|
chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594
|
||||||
|
chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684
|
||||||
|
chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504
|
||||||
|
chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226
|
||||||
|
chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791
|
||||||
|
chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902
|
||||||
|
chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318
|
||||||
|
chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157
|
||||||
|
chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335
|
||||||
|
chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782
|
||||||
|
chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187
|
||||||
|
chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839
|
||||||
|
chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678
|
||||||
|
chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978
|
||||||
|
chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675
|
||||||
|
chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872
|
||||||
|
chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676
|
||||||
|
chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011
|
||||||
|
chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681
|
||||||
|
chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359
|
||||||
|
chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315
|
||||||
|
chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348
|
||||||
|
chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784
|
||||||
|
chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725
|
||||||
|
chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628
|
||||||
|
chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318
|
||||||
|
chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536
|
||||||
|
chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275
|
||||||
|
chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232
|
||||||
|
chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268
|
||||||
|
chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967
|
||||||
|
chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590
|
||||||
|
chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793
|
||||||
|
chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291
|
||||||
|
chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764
|
||||||
|
chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840
|
||||||
|
chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652
|
||||||
|
chardet-2.3.0.dist-info/DESCRIPTION.rst,sha256=7VG_hrAJBS_-fy0UoMy32Nb22Ty98PZZrnB5ZWXXHfA,1465
|
||||||
|
chardet-2.3.0.dist-info/METADATA,sha256=weRVfg_3PuhyNaqOTnSN6WxcIfjXb87WQXb-QTLs57E,2429
|
||||||
|
chardet-2.3.0.dist-info/RECORD,,
|
||||||
|
chardet-2.3.0.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110
|
||||||
|
chardet-2.3.0.dist-info/entry_points.txt,sha256=2T00JXwbiQBZQFSKyCFxud4LEQ3_8TKuOwUsSXT-kUI,56
|
||||||
|
chardet-2.3.0.dist-info/metadata.json,sha256=ptG9BSXYY-lmHsq-i6SjRfvRXYfuvmZz8rZfxrO4Pjs,1225
|
||||||
|
chardet-2.3.0.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/bin/chardetect,sha256=GQPhfifvGgQPjka4kP_i-SYM5X_TEW0Hu3SV937PX2o,285
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/chardet-2.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
chardet/__pycache__/sbcsgroupprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/universaldetector.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/codingstatemachine.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langbulgarianmodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/euckrprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/utf8prober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/euctwprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/hebrewprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/jpcntx.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/latin1prober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/cp949prober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langthaimodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/eucjpprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/sbcharsetprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/charsetprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/euctwfreq.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/compat.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/gb2312prober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/euckrfreq.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/chardistribution.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/mbcsgroupprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/gb2312freq.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/mbcharsetprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/escprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/sjisprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/chardetect.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/charsetgroupprober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langhungarianmodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/escsm.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/mbcssm.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langcyrillicmodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langgreekmodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/jisfreq.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/langhebrewmodel.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/big5prober.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/constants.cpython-34.pyc,,
|
||||||
|
chardet/__pycache__/big5freq.cpython-34.pyc,,
|
|
@ -0,0 +1,6 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.chardetect:main"}}, "python.details": {"contacts": [{"email": "graffatcolmingov@gmail.com", "name": "Ian Cordasco", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "version": "2.3.0"}
|
|
@ -1,70 +0,0 @@
|
||||||
Metadata-Version: 1.1
|
|
||||||
Name: chardet
|
|
||||||
Version: 2.3.0
|
|
||||||
Summary: Universal encoding detector for Python 2 and 3
|
|
||||||
Home-page: https://github.com/chardet/chardet
|
|
||||||
Author: Ian Cordasco
|
|
||||||
Author-email: graffatcolmingov@gmail.com
|
|
||||||
License: LGPL
|
|
||||||
Description: Chardet: The Universal Character Encoding Detector
|
|
||||||
--------------------------------------------------
|
|
||||||
|
|
||||||
Detects
|
|
||||||
- ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
|
|
||||||
- Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
|
|
||||||
- EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
|
|
||||||
- EUC-KR, ISO-2022-KR (Korean)
|
|
||||||
- KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
|
|
||||||
- ISO-8859-2, windows-1250 (Hungarian)
|
|
||||||
- ISO-8859-5, windows-1251 (Bulgarian)
|
|
||||||
- windows-1252 (English)
|
|
||||||
- ISO-8859-7, windows-1253 (Greek)
|
|
||||||
- ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
|
|
||||||
- TIS-620 (Thai)
|
|
||||||
|
|
||||||
Requires Python 2.6 or later
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
Install from `PyPI <https://pypi.python.org/pypi/chardet>`_::
|
|
||||||
|
|
||||||
pip install chardet
|
|
||||||
|
|
||||||
|
|
||||||
Command-line Tool
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
chardet comes with a command-line script which reports on the encodings of one
|
|
||||||
or more files::
|
|
||||||
|
|
||||||
% chardetect somefile someotherfile
|
|
||||||
somefile: windows-1252 with confidence 0.5
|
|
||||||
someotherfile: ascii with confidence 1.0
|
|
||||||
|
|
||||||
About
|
|
||||||
-----
|
|
||||||
|
|
||||||
This is a continuation of Mark Pilgrim's excellent chardet. Previously, two
|
|
||||||
versions needed to be maintained: one that supported python 2.x and one that
|
|
||||||
supported python 3.x. We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s
|
|
||||||
`charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one
|
|
||||||
coherent version that works for Python 2.6+.
|
|
||||||
|
|
||||||
:maintainer: Dan Blanchard
|
|
||||||
|
|
||||||
Keywords: encoding,i18n,xml
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Classifier: Development Status :: 4 - Beta
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 2
|
|
||||||
Classifier: Programming Language :: Python :: 2.6
|
|
||||||
Classifier: Programming Language :: Python :: 2.7
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.2
|
|
||||||
Classifier: Programming Language :: Python :: 3.3
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Classifier: Topic :: Text Processing :: Linguistic
|
|
|
@ -1,48 +0,0 @@
|
||||||
LICENSE
|
|
||||||
MANIFEST.in
|
|
||||||
README.rst
|
|
||||||
setup.cfg
|
|
||||||
setup.py
|
|
||||||
chardet/__init__.py
|
|
||||||
chardet/big5freq.py
|
|
||||||
chardet/big5prober.py
|
|
||||||
chardet/chardetect.py
|
|
||||||
chardet/chardistribution.py
|
|
||||||
chardet/charsetgroupprober.py
|
|
||||||
chardet/charsetprober.py
|
|
||||||
chardet/codingstatemachine.py
|
|
||||||
chardet/compat.py
|
|
||||||
chardet/constants.py
|
|
||||||
chardet/cp949prober.py
|
|
||||||
chardet/escprober.py
|
|
||||||
chardet/escsm.py
|
|
||||||
chardet/eucjpprober.py
|
|
||||||
chardet/euckrfreq.py
|
|
||||||
chardet/euckrprober.py
|
|
||||||
chardet/euctwfreq.py
|
|
||||||
chardet/euctwprober.py
|
|
||||||
chardet/gb2312freq.py
|
|
||||||
chardet/gb2312prober.py
|
|
||||||
chardet/hebrewprober.py
|
|
||||||
chardet/jisfreq.py
|
|
||||||
chardet/jpcntx.py
|
|
||||||
chardet/langbulgarianmodel.py
|
|
||||||
chardet/langcyrillicmodel.py
|
|
||||||
chardet/langgreekmodel.py
|
|
||||||
chardet/langhebrewmodel.py
|
|
||||||
chardet/langhungarianmodel.py
|
|
||||||
chardet/langthaimodel.py
|
|
||||||
chardet/latin1prober.py
|
|
||||||
chardet/mbcharsetprober.py
|
|
||||||
chardet/mbcsgroupprober.py
|
|
||||||
chardet/mbcssm.py
|
|
||||||
chardet/sbcharsetprober.py
|
|
||||||
chardet/sbcsgroupprober.py
|
|
||||||
chardet/sjisprober.py
|
|
||||||
chardet/universaldetector.py
|
|
||||||
chardet/utf8prober.py
|
|
||||||
chardet.egg-info/PKG-INFO
|
|
||||||
chardet.egg-info/SOURCES.txt
|
|
||||||
chardet.egg-info/dependency_links.txt
|
|
||||||
chardet.egg-info/entry_points.txt
|
|
||||||
chardet.egg-info/top_level.txt
|
|
|
@ -1,83 +0,0 @@
|
||||||
../chardet/__init__.py
|
|
||||||
../chardet/big5freq.py
|
|
||||||
../chardet/big5prober.py
|
|
||||||
../chardet/chardetect.py
|
|
||||||
../chardet/chardistribution.py
|
|
||||||
../chardet/charsetgroupprober.py
|
|
||||||
../chardet/charsetprober.py
|
|
||||||
../chardet/codingstatemachine.py
|
|
||||||
../chardet/compat.py
|
|
||||||
../chardet/constants.py
|
|
||||||
../chardet/cp949prober.py
|
|
||||||
../chardet/escprober.py
|
|
||||||
../chardet/escsm.py
|
|
||||||
../chardet/eucjpprober.py
|
|
||||||
../chardet/euckrfreq.py
|
|
||||||
../chardet/euckrprober.py
|
|
||||||
../chardet/euctwfreq.py
|
|
||||||
../chardet/euctwprober.py
|
|
||||||
../chardet/gb2312freq.py
|
|
||||||
../chardet/gb2312prober.py
|
|
||||||
../chardet/hebrewprober.py
|
|
||||||
../chardet/jisfreq.py
|
|
||||||
../chardet/jpcntx.py
|
|
||||||
../chardet/langbulgarianmodel.py
|
|
||||||
../chardet/langcyrillicmodel.py
|
|
||||||
../chardet/langgreekmodel.py
|
|
||||||
../chardet/langhebrewmodel.py
|
|
||||||
../chardet/langhungarianmodel.py
|
|
||||||
../chardet/langthaimodel.py
|
|
||||||
../chardet/latin1prober.py
|
|
||||||
../chardet/mbcharsetprober.py
|
|
||||||
../chardet/mbcsgroupprober.py
|
|
||||||
../chardet/mbcssm.py
|
|
||||||
../chardet/sbcharsetprober.py
|
|
||||||
../chardet/sbcsgroupprober.py
|
|
||||||
../chardet/sjisprober.py
|
|
||||||
../chardet/universaldetector.py
|
|
||||||
../chardet/utf8prober.py
|
|
||||||
../chardet/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/big5freq.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/big5prober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/chardetect.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/chardistribution.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/charsetgroupprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/charsetprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/codingstatemachine.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/compat.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/constants.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/cp949prober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/escprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/escsm.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/eucjpprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/euckrfreq.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/euckrprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/euctwfreq.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/euctwprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/gb2312freq.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/gb2312prober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/hebrewprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/jisfreq.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/jpcntx.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langbulgarianmodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langcyrillicmodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langgreekmodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langhebrewmodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langhungarianmodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/langthaimodel.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/latin1prober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/mbcharsetprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/mbcsgroupprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/mbcssm.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/sbcharsetprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/sbcsgroupprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/sjisprober.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/universaldetector.cpython-34.pyc
|
|
||||||
../chardet/__pycache__/utf8prober.cpython-34.pyc
|
|
||||||
./
|
|
||||||
dependency_links.txt
|
|
||||||
entry_points.txt
|
|
||||||
PKG-INFO
|
|
||||||
SOURCES.txt
|
|
||||||
top_level.txt
|
|
||||||
../../../../bin/chardetect
|
|
|
@ -1,31 +0,0 @@
|
||||||
Metadata-Version: 1.1
|
|
||||||
Name: distribute
|
|
||||||
Version: 0.7.3
|
|
||||||
Summary: distribute legacy wrapper
|
|
||||||
Home-page: http://packages.python.org/distribute
|
|
||||||
Author: The fellowship of the packaging
|
|
||||||
Author-email: distutils-sig@python.org
|
|
||||||
License: PSF or ZPL
|
|
||||||
Description: Distribute - legacy package
|
|
||||||
|
|
||||||
This package is a simple compatibility layer that installs Setuptools 0.7+.
|
|
||||||
|
|
||||||
Keywords: CPAN PyPI distutils eggs package management
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: Python Software Foundation License
|
|
||||||
Classifier: License :: OSI Approved :: Zope Public License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python :: 2.4
|
|
||||||
Classifier: Programming Language :: Python :: 2.5
|
|
||||||
Classifier: Programming Language :: Python :: 2.6
|
|
||||||
Classifier: Programming Language :: Python :: 2.7
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.1
|
|
||||||
Classifier: Programming Language :: Python :: 3.2
|
|
||||||
Classifier: Programming Language :: Python :: 3.3
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Classifier: Topic :: System :: Archiving :: Packaging
|
|
||||||
Classifier: Topic :: System :: Systems Administration
|
|
||||||
Classifier: Topic :: Utilities
|
|
|
@ -1,56 +0,0 @@
|
||||||
MANIFEST.in
|
|
||||||
pkg_resources.py
|
|
||||||
setup.cfg
|
|
||||||
setup.py
|
|
||||||
distribute.egg-info/PKG-INFO
|
|
||||||
distribute.egg-info/SOURCES.txt
|
|
||||||
distribute.egg-info/dependency_links.txt
|
|
||||||
distribute.egg-info/requires.txt
|
|
||||||
distribute.egg-info/top_level.txt
|
|
||||||
distribute.egg-info/zip-safe
|
|
||||||
setuptools/__init__.py
|
|
||||||
setuptools/archive_util.py
|
|
||||||
setuptools/compat.py
|
|
||||||
setuptools/depends.py
|
|
||||||
setuptools/dist.py
|
|
||||||
setuptools/extension.py
|
|
||||||
setuptools/package_index.py
|
|
||||||
setuptools/py24compat.py
|
|
||||||
setuptools/py27compat.py
|
|
||||||
setuptools/sandbox.py
|
|
||||||
setuptools/script template (dev).py
|
|
||||||
setuptools/script template.py
|
|
||||||
setuptools/site-patch.py
|
|
||||||
setuptools/ssl_support.py
|
|
||||||
setuptools.egg-info/PKG-INFO
|
|
||||||
setuptools.egg-info/SOURCES.txt
|
|
||||||
setuptools.egg-info/dependency_links.txt
|
|
||||||
setuptools.egg-info/entry_points.txt
|
|
||||||
setuptools.egg-info/entry_points.txt.orig
|
|
||||||
setuptools.egg-info/requires.txt
|
|
||||||
setuptools.egg-info/requires.txt.orig
|
|
||||||
setuptools.egg-info/top_level.txt
|
|
||||||
setuptools.egg-info/zip-safe
|
|
||||||
setuptools/command/__init__.py
|
|
||||||
setuptools/command/alias.py
|
|
||||||
setuptools/command/bdist_egg.py
|
|
||||||
setuptools/command/bdist_rpm.py
|
|
||||||
setuptools/command/bdist_wininst.py
|
|
||||||
setuptools/command/build_ext.py
|
|
||||||
setuptools/command/build_py.py
|
|
||||||
setuptools/command/develop.py
|
|
||||||
setuptools/command/easy_install.py
|
|
||||||
setuptools/command/egg_info.py
|
|
||||||
setuptools/command/install.py
|
|
||||||
setuptools/command/install_egg_info.py
|
|
||||||
setuptools/command/install_lib.py
|
|
||||||
setuptools/command/install_scripts.py
|
|
||||||
setuptools/command/launcher manifest.xml
|
|
||||||
setuptools/command/register.py
|
|
||||||
setuptools/command/rotate.py
|
|
||||||
setuptools/command/saveopts.py
|
|
||||||
setuptools/command/sdist.py
|
|
||||||
setuptools/command/setopt.py
|
|
||||||
setuptools/command/test.py
|
|
||||||
setuptools/command/upload.py
|
|
||||||
setuptools/command/upload_docs.py
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
./
|
|
||||||
dependency_links.txt
|
|
||||||
PKG-INFO
|
|
||||||
requires.txt
|
|
||||||
SOURCES.txt
|
|
||||||
top_level.txt
|
|
||||||
zip-safe
|
|
|
@ -1 +0,0 @@
|
||||||
setuptools>=0.7
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -1,4 +1,4 @@
|
||||||
Metadata-Version: 1.1
|
Metadata-Version: 2.0
|
||||||
Name: feedparser
|
Name: feedparser
|
||||||
Version: 5.2.1
|
Version: 5.2.1
|
||||||
Summary: Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds
|
Summary: Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds
|
||||||
|
@ -7,7 +7,6 @@ Author: Kurt McKee
|
||||||
Author-email: contactme@kurtmckee.org
|
Author-email: contactme@kurtmckee.org
|
||||||
License: UNKNOWN
|
License: UNKNOWN
|
||||||
Download-URL: https://pypi.python.org/pypi/feedparser
|
Download-URL: https://pypi.python.org/pypi/feedparser
|
||||||
Description: UNKNOWN
|
|
||||||
Keywords: atom,cdf,feed,parser,rdf,rss
|
Keywords: atom,cdf,feed,parser,rdf,rss
|
||||||
Platform: POSIX
|
Platform: POSIX
|
||||||
Platform: Windows
|
Platform: Windows
|
||||||
|
@ -29,3 +28,7 @@ Classifier: Programming Language :: Python :: 3.3
|
||||||
Classifier: Programming Language :: Python :: 3.4
|
Classifier: Programming Language :: Python :: 3.4
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
Classifier: Topic :: Text Processing :: Markup :: XML
|
Classifier: Topic :: Text Processing :: Markup :: XML
|
||||||
|
|
||||||
|
UNKNOWN
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
feedparser.py,sha256=GFiRC3lJVRu0qHzZrJ1kETY7lt-nBkuGzWzuxQhLmP8,159865
|
||||||
|
feedparser-5.2.1.dist-info/DESCRIPTION.rst,sha256=OCTuuN6LcWulhHS3d5rfjdsQtW22n7HENFRh6jC6ego,10
|
||||||
|
feedparser-5.2.1.dist-info/METADATA,sha256=C5CirzvRirHEViO3C-i2-S1dUQJcJOgZKKLho_Z20Ak,1318
|
||||||
|
feedparser-5.2.1.dist-info/RECORD,,
|
||||||
|
feedparser-5.2.1.dist-info/WHEEL,sha256=lCqt3ViRAf9c8mCs6o7ffkwROUdYSy8_YHn5f_rulB4,93
|
||||||
|
feedparser-5.2.1.dist-info/metadata.json,sha256=RMB2LpClHHZBGHSDdUKjdJEieOWn-T0t7Bh6BLaqNrA,1359
|
||||||
|
feedparser-5.2.1.dist-info/top_level.txt,sha256=V8OMyOFfOWI46em2E-SGpIywuPZEYtMPOcPua_gzvUk,11
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/feedparser-5.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
__pycache__/feedparser.cpython-34.pyc,,
|
|
@ -0,0 +1,5 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: cp34-none-any
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: XML"], "download_url": "https://pypi.python.org/pypi/feedparser", "extensions": {"python.details": {"contacts": [{"email": "contactme@kurtmckee.org", "name": "Kurt McKee", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/kurtmckee/feedparser"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["atom", "cdf", "feed", "parser", "rdf", "rss"], "metadata_version": "2.0", "name": "feedparser", "platform": "POSIX", "summary": "Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds", "version": "5.2.1"}
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +0,0 @@
|
||||||
../feedparser.py
|
|
||||||
../__pycache__/feedparser.cpython-34.pyc
|
|
||||||
./
|
|
||||||
dependency_links.txt
|
|
||||||
PKG-INFO
|
|
||||||
SOURCES.txt
|
|
||||||
top_level.txt
|
|
|
@ -0,0 +1,378 @@
|
||||||
|
html5lib
|
||||||
|
========
|
||||||
|
|
||||||
|
.. image:: https://travis-ci.org/html5lib/html5lib-python.png?branch=master
|
||||||
|
:target: https://travis-ci.org/html5lib/html5lib-python
|
||||||
|
|
||||||
|
html5lib is a pure-python library for parsing HTML. It is designed to
|
||||||
|
conform to the WHATWG HTML specification, as is implemented by all major
|
||||||
|
web browsers.
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
Simple usage follows this pattern:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
document = html5lib.parse(f)
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
document = html5lib.parse("<p>Hello World!")
|
||||||
|
|
||||||
|
By default, the ``document`` will be an ``xml.etree`` element instance.
|
||||||
|
Whenever possible, html5lib chooses the accelerated ``ElementTree``
|
||||||
|
implementation (i.e. ``xml.etree.cElementTree`` on Python 2.x).
|
||||||
|
|
||||||
|
Two other tree types are supported: ``xml.dom.minidom`` and
|
||||||
|
``lxml.etree``. To use an alternative format, specify the name of
|
||||||
|
a treebuilder:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
lxml_etree_document = html5lib.parse(f, treebuilder="lxml")
|
||||||
|
|
||||||
|
When using with ``urllib2`` (Python 2), the charset from HTTP should be
|
||||||
|
pass into html5lib as follows:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from contextlib import closing
|
||||||
|
from urllib2 import urlopen
|
||||||
|
import html5lib
|
||||||
|
|
||||||
|
with closing(urlopen("http://example.com/")) as f:
|
||||||
|
document = html5lib.parse(f, encoding=f.info().getparam("charset"))
|
||||||
|
|
||||||
|
When using with ``urllib.request`` (Python 3), the charset from HTTP
|
||||||
|
should be pass into html5lib as follows:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from urllib.request import urlopen
|
||||||
|
import html5lib
|
||||||
|
|
||||||
|
with urlopen("http://example.com/") as f:
|
||||||
|
document = html5lib.parse(f, encoding=f.info().get_content_charset())
|
||||||
|
|
||||||
|
To have more control over the parser, create a parser object explicitly.
|
||||||
|
For instance, to make the parser raise exceptions on parse errors, use:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
parser = html5lib.HTMLParser(strict=True)
|
||||||
|
document = parser.parse(f)
|
||||||
|
|
||||||
|
When you're instantiating parser objects explicitly, pass a treebuilder
|
||||||
|
class as the ``tree`` keyword argument to use an alternative document
|
||||||
|
format:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder("dom"))
|
||||||
|
minidom_document = parser.parse("<p>Hello World!")
|
||||||
|
|
||||||
|
More documentation is available at http://html5lib.readthedocs.org/.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
html5lib works on CPython 2.6+, CPython 3.2+ and PyPy. To install it,
|
||||||
|
use:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ pip install html5lib
|
||||||
|
|
||||||
|
|
||||||
|
Optional Dependencies
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The following third-party libraries may be used for additional
|
||||||
|
functionality:
|
||||||
|
|
||||||
|
- ``datrie`` can be used to improve parsing performance (though in
|
||||||
|
almost all cases the improvement is marginal);
|
||||||
|
|
||||||
|
- ``lxml`` is supported as a tree format (for both building and
|
||||||
|
walking) under CPython (but *not* PyPy where it is known to cause
|
||||||
|
segfaults);
|
||||||
|
|
||||||
|
- ``genshi`` has a treewalker (but not builder); and
|
||||||
|
|
||||||
|
- ``charade`` can be used as a fallback when character encoding cannot
|
||||||
|
be determined; ``chardet``, from which it was forked, can also be used
|
||||||
|
on Python 2.
|
||||||
|
|
||||||
|
- ``ordereddict`` can be used under Python 2.6
|
||||||
|
(``collections.OrderedDict`` is used instead on later versions) to
|
||||||
|
serialize attributes in alphabetical order.
|
||||||
|
|
||||||
|
|
||||||
|
Bugs
|
||||||
|
----
|
||||||
|
|
||||||
|
Please report any bugs on the `issue tracker
|
||||||
|
<https://github.com/html5lib/html5lib-python/issues>`_.
|
||||||
|
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
Unit tests require the ``nose`` library and can be run using the
|
||||||
|
``nosetests`` command in the root directory; ``ordereddict`` is
|
||||||
|
required under Python 2.6. All should pass.
|
||||||
|
|
||||||
|
Test data are contained in a separate `html5lib-tests
|
||||||
|
<https://github.com/html5lib/html5lib-tests>`_ repository and included
|
||||||
|
as a submodule, thus for git checkouts they must be initialized::
|
||||||
|
|
||||||
|
$ git submodule init
|
||||||
|
$ git submodule update
|
||||||
|
|
||||||
|
If you have all compatible Python implementations available on your
|
||||||
|
system, you can run tests on all of them using the ``tox`` utility,
|
||||||
|
which can be found on PyPI.
|
||||||
|
|
||||||
|
|
||||||
|
Questions?
|
||||||
|
----------
|
||||||
|
|
||||||
|
There's a mailing list available for support on Google Groups,
|
||||||
|
`html5lib-discuss <http://groups.google.com/group/html5lib-discuss>`_,
|
||||||
|
though you may get a quicker response asking on IRC in `#whatwg on
|
||||||
|
irc.freenode.net <http://wiki.whatwg.org/wiki/IRC>`_.
|
||||||
|
|
||||||
|
Change Log
|
||||||
|
----------
|
||||||
|
|
||||||
|
0.9999999/1.0b8
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on September 10, 2015
|
||||||
|
|
||||||
|
* Fix #195: fix the sanitizer to drop broken URLs (it threw an
|
||||||
|
exception between 0.9999 and 0.999999).
|
||||||
|
|
||||||
|
|
||||||
|
0.999999/1.0b7
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on July 7, 2015
|
||||||
|
|
||||||
|
* Fix #189: fix the sanitizer to allow relative URLs again (as it did
|
||||||
|
prior to 0.9999/1.0b5).
|
||||||
|
|
||||||
|
|
||||||
|
0.99999/1.0b6
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on April 30, 2015
|
||||||
|
|
||||||
|
* Fix #188: fix the sanitizer to not throw an exception when sanitizing
|
||||||
|
bogus data URLs.
|
||||||
|
|
||||||
|
|
||||||
|
0.9999/1.0b5
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on April 29, 2015
|
||||||
|
|
||||||
|
* Fix #153: Sanitizer fails to treat some attributes as URLs. Despite how
|
||||||
|
this sounds, this has no known security implications. No known version
|
||||||
|
of IE (5.5 to current), Firefox (3 to current), Safari (6 to current),
|
||||||
|
Chrome (1 to current), or Opera (12 to current) will run any script
|
||||||
|
provided in these attributes.
|
||||||
|
|
||||||
|
* Pass error message to the ParseError exception in strict parsing mode.
|
||||||
|
|
||||||
|
* Allow data URIs in the sanitizer, with a whitelist of content-types.
|
||||||
|
|
||||||
|
* Add support for Python implementations that don't support lone
|
||||||
|
surrogates (read: Jython). Fixes #2.
|
||||||
|
|
||||||
|
* Remove localization of error messages. This functionality was totally
|
||||||
|
unused (and untested that everything was localizable), so we may as
|
||||||
|
well follow numerous browsers in not supporting translating technical
|
||||||
|
strings.
|
||||||
|
|
||||||
|
* Expose treewalkers.pprint as a public API.
|
||||||
|
|
||||||
|
* Add a documentEncoding property to HTML5Parser, fix #121.
|
||||||
|
|
||||||
|
|
||||||
|
0.999
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on December 23, 2013
|
||||||
|
|
||||||
|
* Fix #127: add work-around for CPython issue #20007: .read(0) on
|
||||||
|
http.client.HTTPResponse drops the rest of the content.
|
||||||
|
|
||||||
|
* Fix #115: lxml treewalker can now deal with fragments containing, at
|
||||||
|
their root level, text nodes with non-ASCII characters on Python 2.
|
||||||
|
|
||||||
|
|
||||||
|
0.99
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on September 10, 2013
|
||||||
|
|
||||||
|
* No library changes from 1.0b3; released as 0.99 as pip has changed
|
||||||
|
behaviour from 1.4 to avoid installing pre-release versions per
|
||||||
|
PEP 440.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b3
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on July 24, 2013
|
||||||
|
|
||||||
|
* Removed ``RecursiveTreeWalker`` from ``treewalkers._base``. Any
|
||||||
|
implementation using it should be moved to
|
||||||
|
``NonRecursiveTreeWalker``, as everything bundled with html5lib has
|
||||||
|
for years.
|
||||||
|
|
||||||
|
* Fix #67 so that ``BufferedStream`` to correctly returns a bytes
|
||||||
|
object, thereby fixing any case where html5lib is passed a
|
||||||
|
non-seekable RawIOBase-like object.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b2
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on June 27, 2013
|
||||||
|
|
||||||
|
* Removed reordering of attributes within the serializer. There is now
|
||||||
|
an ``alphabetical_attributes`` option which preserves the previous
|
||||||
|
behaviour through a new filter. This allows attribute order to be
|
||||||
|
preserved through html5lib if the tree builder preserves order.
|
||||||
|
|
||||||
|
* Removed ``dom2sax`` from DOM treebuilders. It has been replaced by
|
||||||
|
``treeadapters.sax.to_sax`` which is generic and supports any
|
||||||
|
treewalker; it also resolves all known bugs with ``dom2sax``.
|
||||||
|
|
||||||
|
* Fix treewalker assertions on hitting bytes strings on
|
||||||
|
Python 2. Previous to 1.0b1, treewalkers coped with mixed
|
||||||
|
bytes/unicode data on Python 2; this reintroduces this prior
|
||||||
|
behaviour on Python 2. Behaviour is unchanged on Python 3.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b1
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on May 17, 2013
|
||||||
|
|
||||||
|
* Implementation updated to implement the `HTML specification
|
||||||
|
<http://www.whatwg.org/specs/web-apps/current-work/>`_ as of 5th May
|
||||||
|
2013 (`SVN <http://svn.whatwg.org/webapps/>`_ revision r7867).
|
||||||
|
|
||||||
|
* Python 3.2+ supported in a single codebase using the ``six`` library.
|
||||||
|
|
||||||
|
* Removed support for Python 2.5 and older.
|
||||||
|
|
||||||
|
* Removed the deprecated Beautiful Soup 3 treebuilder.
|
||||||
|
``beautifulsoup4`` can use ``html5lib`` as a parser instead. Note that
|
||||||
|
since it doesn't support namespaces, foreign content like SVG and
|
||||||
|
MathML is parsed incorrectly.
|
||||||
|
|
||||||
|
* Removed ``simpletree`` from the package. The default tree builder is
|
||||||
|
now ``etree`` (using the ``xml.etree.cElementTree`` implementation if
|
||||||
|
available, and ``xml.etree.ElementTree`` otherwise).
|
||||||
|
|
||||||
|
* Removed the ``XHTMLSerializer`` as it never actually guaranteed its
|
||||||
|
output was well-formed XML, and hence provided little of use.
|
||||||
|
|
||||||
|
* Removed default DOM treebuilder, so ``html5lib.treebuilders.dom`` is no
|
||||||
|
longer supported. ``html5lib.treebuilders.getTreeBuilder("dom")`` will
|
||||||
|
return the default DOM treebuilder, which uses ``xml.dom.minidom``.
|
||||||
|
|
||||||
|
* Optional heuristic character encoding detection now based on
|
||||||
|
``charade`` for Python 2.6 - 3.3 compatibility.
|
||||||
|
|
||||||
|
* Optional ``Genshi`` treewalker support fixed.
|
||||||
|
|
||||||
|
* Many bugfixes, including:
|
||||||
|
|
||||||
|
* #33: null in attribute value breaks XML AttValue;
|
||||||
|
|
||||||
|
* #4: nested, indirect descendant, <button> causes infinite loop;
|
||||||
|
|
||||||
|
* `Google Code 215
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=215>`_: Properly
|
||||||
|
detect seekable streams;
|
||||||
|
|
||||||
|
* `Google Code 206
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=206>`_: add
|
||||||
|
support for <video preload=...>, <audio preload=...>;
|
||||||
|
|
||||||
|
* `Google Code 205
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=205>`_: add
|
||||||
|
support for <video poster=...>;
|
||||||
|
|
||||||
|
* `Google Code 202
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=202>`_: Unicode
|
||||||
|
file breaks InputStream.
|
||||||
|
|
||||||
|
* Source code is now mostly PEP 8 compliant.
|
||||||
|
|
||||||
|
* Test harness has been improved and now depends on ``nose``.
|
||||||
|
|
||||||
|
* Documentation updated and moved to http://html5lib.readthedocs.org/.
|
||||||
|
|
||||||
|
|
||||||
|
0.95
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on February 11, 2012
|
||||||
|
|
||||||
|
|
||||||
|
0.90
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on January 17, 2010
|
||||||
|
|
||||||
|
|
||||||
|
0.11.1
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
Released on June 12, 2008
|
||||||
|
|
||||||
|
|
||||||
|
0.11
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on June 10, 2008
|
||||||
|
|
||||||
|
|
||||||
|
0.10
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on October 7, 2007
|
||||||
|
|
||||||
|
|
||||||
|
0.9
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Released on March 11, 2007
|
||||||
|
|
||||||
|
|
||||||
|
0.2
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Released on January 8, 2007
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pip
|
|
@ -0,0 +1,403 @@
|
||||||
|
Metadata-Version: 2.0
|
||||||
|
Name: html5lib
|
||||||
|
Version: 0.9999999
|
||||||
|
Summary: HTML parser based on the WHATWG HTML specification
|
||||||
|
Home-page: https://github.com/html5lib/html5lib-python
|
||||||
|
Author: James Graham
|
||||||
|
Author-email: james@hoppipolla.co.uk
|
||||||
|
License: MIT License
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.6
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.2
|
||||||
|
Classifier: Programming Language :: Python :: 3.3
|
||||||
|
Classifier: Programming Language :: Python :: 3.4
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Requires-Dist: six
|
||||||
|
|
||||||
|
html5lib
|
||||||
|
========
|
||||||
|
|
||||||
|
.. image:: https://travis-ci.org/html5lib/html5lib-python.png?branch=master
|
||||||
|
:target: https://travis-ci.org/html5lib/html5lib-python
|
||||||
|
|
||||||
|
html5lib is a pure-python library for parsing HTML. It is designed to
|
||||||
|
conform to the WHATWG HTML specification, as is implemented by all major
|
||||||
|
web browsers.
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
Simple usage follows this pattern:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
document = html5lib.parse(f)
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
document = html5lib.parse("<p>Hello World!")
|
||||||
|
|
||||||
|
By default, the ``document`` will be an ``xml.etree`` element instance.
|
||||||
|
Whenever possible, html5lib chooses the accelerated ``ElementTree``
|
||||||
|
implementation (i.e. ``xml.etree.cElementTree`` on Python 2.x).
|
||||||
|
|
||||||
|
Two other tree types are supported: ``xml.dom.minidom`` and
|
||||||
|
``lxml.etree``. To use an alternative format, specify the name of
|
||||||
|
a treebuilder:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
lxml_etree_document = html5lib.parse(f, treebuilder="lxml")
|
||||||
|
|
||||||
|
When using with ``urllib2`` (Python 2), the charset from HTTP should be
|
||||||
|
pass into html5lib as follows:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from contextlib import closing
|
||||||
|
from urllib2 import urlopen
|
||||||
|
import html5lib
|
||||||
|
|
||||||
|
with closing(urlopen("http://example.com/")) as f:
|
||||||
|
document = html5lib.parse(f, encoding=f.info().getparam("charset"))
|
||||||
|
|
||||||
|
When using with ``urllib.request`` (Python 3), the charset from HTTP
|
||||||
|
should be pass into html5lib as follows:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from urllib.request import urlopen
|
||||||
|
import html5lib
|
||||||
|
|
||||||
|
with urlopen("http://example.com/") as f:
|
||||||
|
document = html5lib.parse(f, encoding=f.info().get_content_charset())
|
||||||
|
|
||||||
|
To have more control over the parser, create a parser object explicitly.
|
||||||
|
For instance, to make the parser raise exceptions on parse errors, use:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
with open("mydocument.html", "rb") as f:
|
||||||
|
parser = html5lib.HTMLParser(strict=True)
|
||||||
|
document = parser.parse(f)
|
||||||
|
|
||||||
|
When you're instantiating parser objects explicitly, pass a treebuilder
|
||||||
|
class as the ``tree`` keyword argument to use an alternative document
|
||||||
|
format:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import html5lib
|
||||||
|
parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder("dom"))
|
||||||
|
minidom_document = parser.parse("<p>Hello World!")
|
||||||
|
|
||||||
|
More documentation is available at http://html5lib.readthedocs.org/.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
html5lib works on CPython 2.6+, CPython 3.2+ and PyPy. To install it,
|
||||||
|
use:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ pip install html5lib
|
||||||
|
|
||||||
|
|
||||||
|
Optional Dependencies
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The following third-party libraries may be used for additional
|
||||||
|
functionality:
|
||||||
|
|
||||||
|
- ``datrie`` can be used to improve parsing performance (though in
|
||||||
|
almost all cases the improvement is marginal);
|
||||||
|
|
||||||
|
- ``lxml`` is supported as a tree format (for both building and
|
||||||
|
walking) under CPython (but *not* PyPy where it is known to cause
|
||||||
|
segfaults);
|
||||||
|
|
||||||
|
- ``genshi`` has a treewalker (but not builder); and
|
||||||
|
|
||||||
|
- ``charade`` can be used as a fallback when character encoding cannot
|
||||||
|
be determined; ``chardet``, from which it was forked, can also be used
|
||||||
|
on Python 2.
|
||||||
|
|
||||||
|
- ``ordereddict`` can be used under Python 2.6
|
||||||
|
(``collections.OrderedDict`` is used instead on later versions) to
|
||||||
|
serialize attributes in alphabetical order.
|
||||||
|
|
||||||
|
|
||||||
|
Bugs
|
||||||
|
----
|
||||||
|
|
||||||
|
Please report any bugs on the `issue tracker
|
||||||
|
<https://github.com/html5lib/html5lib-python/issues>`_.
|
||||||
|
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
Unit tests require the ``nose`` library and can be run using the
|
||||||
|
``nosetests`` command in the root directory; ``ordereddict`` is
|
||||||
|
required under Python 2.6. All should pass.
|
||||||
|
|
||||||
|
Test data are contained in a separate `html5lib-tests
|
||||||
|
<https://github.com/html5lib/html5lib-tests>`_ repository and included
|
||||||
|
as a submodule, thus for git checkouts they must be initialized::
|
||||||
|
|
||||||
|
$ git submodule init
|
||||||
|
$ git submodule update
|
||||||
|
|
||||||
|
If you have all compatible Python implementations available on your
|
||||||
|
system, you can run tests on all of them using the ``tox`` utility,
|
||||||
|
which can be found on PyPI.
|
||||||
|
|
||||||
|
|
||||||
|
Questions?
|
||||||
|
----------
|
||||||
|
|
||||||
|
There's a mailing list available for support on Google Groups,
|
||||||
|
`html5lib-discuss <http://groups.google.com/group/html5lib-discuss>`_,
|
||||||
|
though you may get a quicker response asking on IRC in `#whatwg on
|
||||||
|
irc.freenode.net <http://wiki.whatwg.org/wiki/IRC>`_.
|
||||||
|
|
||||||
|
Change Log
|
||||||
|
----------
|
||||||
|
|
||||||
|
0.9999999/1.0b8
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on September 10, 2015
|
||||||
|
|
||||||
|
* Fix #195: fix the sanitizer to drop broken URLs (it threw an
|
||||||
|
exception between 0.9999 and 0.999999).
|
||||||
|
|
||||||
|
|
||||||
|
0.999999/1.0b7
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on July 7, 2015
|
||||||
|
|
||||||
|
* Fix #189: fix the sanitizer to allow relative URLs again (as it did
|
||||||
|
prior to 0.9999/1.0b5).
|
||||||
|
|
||||||
|
|
||||||
|
0.99999/1.0b6
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on April 30, 2015
|
||||||
|
|
||||||
|
* Fix #188: fix the sanitizer to not throw an exception when sanitizing
|
||||||
|
bogus data URLs.
|
||||||
|
|
||||||
|
|
||||||
|
0.9999/1.0b5
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Released on April 29, 2015
|
||||||
|
|
||||||
|
* Fix #153: Sanitizer fails to treat some attributes as URLs. Despite how
|
||||||
|
this sounds, this has no known security implications. No known version
|
||||||
|
of IE (5.5 to current), Firefox (3 to current), Safari (6 to current),
|
||||||
|
Chrome (1 to current), or Opera (12 to current) will run any script
|
||||||
|
provided in these attributes.
|
||||||
|
|
||||||
|
* Pass error message to the ParseError exception in strict parsing mode.
|
||||||
|
|
||||||
|
* Allow data URIs in the sanitizer, with a whitelist of content-types.
|
||||||
|
|
||||||
|
* Add support for Python implementations that don't support lone
|
||||||
|
surrogates (read: Jython). Fixes #2.
|
||||||
|
|
||||||
|
* Remove localization of error messages. This functionality was totally
|
||||||
|
unused (and untested that everything was localizable), so we may as
|
||||||
|
well follow numerous browsers in not supporting translating technical
|
||||||
|
strings.
|
||||||
|
|
||||||
|
* Expose treewalkers.pprint as a public API.
|
||||||
|
|
||||||
|
* Add a documentEncoding property to HTML5Parser, fix #121.
|
||||||
|
|
||||||
|
|
||||||
|
0.999
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on December 23, 2013
|
||||||
|
|
||||||
|
* Fix #127: add work-around for CPython issue #20007: .read(0) on
|
||||||
|
http.client.HTTPResponse drops the rest of the content.
|
||||||
|
|
||||||
|
* Fix #115: lxml treewalker can now deal with fragments containing, at
|
||||||
|
their root level, text nodes with non-ASCII characters on Python 2.
|
||||||
|
|
||||||
|
|
||||||
|
0.99
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on September 10, 2013
|
||||||
|
|
||||||
|
* No library changes from 1.0b3; released as 0.99 as pip has changed
|
||||||
|
behaviour from 1.4 to avoid installing pre-release versions per
|
||||||
|
PEP 440.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b3
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on July 24, 2013
|
||||||
|
|
||||||
|
* Removed ``RecursiveTreeWalker`` from ``treewalkers._base``. Any
|
||||||
|
implementation using it should be moved to
|
||||||
|
``NonRecursiveTreeWalker``, as everything bundled with html5lib has
|
||||||
|
for years.
|
||||||
|
|
||||||
|
* Fix #67 so that ``BufferedStream`` to correctly returns a bytes
|
||||||
|
object, thereby fixing any case where html5lib is passed a
|
||||||
|
non-seekable RawIOBase-like object.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b2
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on June 27, 2013
|
||||||
|
|
||||||
|
* Removed reordering of attributes within the serializer. There is now
|
||||||
|
an ``alphabetical_attributes`` option which preserves the previous
|
||||||
|
behaviour through a new filter. This allows attribute order to be
|
||||||
|
preserved through html5lib if the tree builder preserves order.
|
||||||
|
|
||||||
|
* Removed ``dom2sax`` from DOM treebuilders. It has been replaced by
|
||||||
|
``treeadapters.sax.to_sax`` which is generic and supports any
|
||||||
|
treewalker; it also resolves all known bugs with ``dom2sax``.
|
||||||
|
|
||||||
|
* Fix treewalker assertions on hitting bytes strings on
|
||||||
|
Python 2. Previous to 1.0b1, treewalkers coped with mixed
|
||||||
|
bytes/unicode data on Python 2; this reintroduces this prior
|
||||||
|
behaviour on Python 2. Behaviour is unchanged on Python 3.
|
||||||
|
|
||||||
|
|
||||||
|
1.0b1
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Released on May 17, 2013
|
||||||
|
|
||||||
|
* Implementation updated to implement the `HTML specification
|
||||||
|
<http://www.whatwg.org/specs/web-apps/current-work/>`_ as of 5th May
|
||||||
|
2013 (`SVN <http://svn.whatwg.org/webapps/>`_ revision r7867).
|
||||||
|
|
||||||
|
* Python 3.2+ supported in a single codebase using the ``six`` library.
|
||||||
|
|
||||||
|
* Removed support for Python 2.5 and older.
|
||||||
|
|
||||||
|
* Removed the deprecated Beautiful Soup 3 treebuilder.
|
||||||
|
``beautifulsoup4`` can use ``html5lib`` as a parser instead. Note that
|
||||||
|
since it doesn't support namespaces, foreign content like SVG and
|
||||||
|
MathML is parsed incorrectly.
|
||||||
|
|
||||||
|
* Removed ``simpletree`` from the package. The default tree builder is
|
||||||
|
now ``etree`` (using the ``xml.etree.cElementTree`` implementation if
|
||||||
|
available, and ``xml.etree.ElementTree`` otherwise).
|
||||||
|
|
||||||
|
* Removed the ``XHTMLSerializer`` as it never actually guaranteed its
|
||||||
|
output was well-formed XML, and hence provided little of use.
|
||||||
|
|
||||||
|
* Removed default DOM treebuilder, so ``html5lib.treebuilders.dom`` is no
|
||||||
|
longer supported. ``html5lib.treebuilders.getTreeBuilder("dom")`` will
|
||||||
|
return the default DOM treebuilder, which uses ``xml.dom.minidom``.
|
||||||
|
|
||||||
|
* Optional heuristic character encoding detection now based on
|
||||||
|
``charade`` for Python 2.6 - 3.3 compatibility.
|
||||||
|
|
||||||
|
* Optional ``Genshi`` treewalker support fixed.
|
||||||
|
|
||||||
|
* Many bugfixes, including:
|
||||||
|
|
||||||
|
* #33: null in attribute value breaks XML AttValue;
|
||||||
|
|
||||||
|
* #4: nested, indirect descendant, <button> causes infinite loop;
|
||||||
|
|
||||||
|
* `Google Code 215
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=215>`_: Properly
|
||||||
|
detect seekable streams;
|
||||||
|
|
||||||
|
* `Google Code 206
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=206>`_: add
|
||||||
|
support for <video preload=...>, <audio preload=...>;
|
||||||
|
|
||||||
|
* `Google Code 205
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=205>`_: add
|
||||||
|
support for <video poster=...>;
|
||||||
|
|
||||||
|
* `Google Code 202
|
||||||
|
<http://code.google.com/p/html5lib/issues/detail?id=202>`_: Unicode
|
||||||
|
file breaks InputStream.
|
||||||
|
|
||||||
|
* Source code is now mostly PEP 8 compliant.
|
||||||
|
|
||||||
|
* Test harness has been improved and now depends on ``nose``.
|
||||||
|
|
||||||
|
* Documentation updated and moved to http://html5lib.readthedocs.org/.
|
||||||
|
|
||||||
|
|
||||||
|
0.95
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on February 11, 2012
|
||||||
|
|
||||||
|
|
||||||
|
0.90
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on January 17, 2010
|
||||||
|
|
||||||
|
|
||||||
|
0.11.1
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
Released on June 12, 2008
|
||||||
|
|
||||||
|
|
||||||
|
0.11
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on June 10, 2008
|
||||||
|
|
||||||
|
|
||||||
|
0.10
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
Released on October 7, 2007
|
||||||
|
|
||||||
|
|
||||||
|
0.9
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Released on March 11, 2007
|
||||||
|
|
||||||
|
|
||||||
|
0.2
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Released on January 8, 2007
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
html5lib/__init__.py,sha256=OeEYU2bhPKOq9YE4ueQUsKrdSN2Ly_FdIp8GjNL5AeQ,783
|
||||||
|
html5lib/constants.py,sha256=B5LN2DMP-6lEp9wpON4ecX3Kx01n_cbMjuGd6AteixE,86873
|
||||||
|
html5lib/html5parser.py,sha256=P1fmBDiTFMZgTxwiNAuPA8P0VR96QSnlp7i-xLNHYnc,117335
|
||||||
|
html5lib/ihatexml.py,sha256=MT12cVXAKaW-ALUkUeN175HpUP73xK8wAIpPzQ8cgfI,16581
|
||||||
|
html5lib/inputstream.py,sha256=MmlG5JLwn2MvxPIEeSjJWkJZOzzg4aWvMyKhMk5k4qs,31641
|
||||||
|
html5lib/sanitizer.py,sha256=sbyGySzFzCD_v0JYYSr6sLYVLpO6bpVmRiDMKbFRcCw,17804
|
||||||
|
html5lib/tokenizer.py,sha256=6Uf8sDUkvNn661bcBSBYUCTfXzSs9EyCTiPcj5PAjYI,76929
|
||||||
|
html5lib/utils.py,sha256=-kEjo4p5eVd2szBNnIuLExc6MOvKF0F01jQBP_9E0Oc,3255
|
||||||
|
html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
html5lib/filters/_base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286
|
||||||
|
html5lib/filters/alphabeticalattributes.py,sha256=fpRLbz6TCe5yXEkGmyMlJ80FekWsTR-sHk3Ano0U9LQ,624
|
||||||
|
html5lib/filters/inject_meta_charset.py,sha256=xllv1I7unxhcyZTf3LTsv30wh2mAkT7wmTZx7zIhpuY,2746
|
||||||
|
html5lib/filters/lint.py,sha256=8eJo0SXDcY40OhsNd0Cft36kUXCZ5t-30mNFSUf4LnE,4208
|
||||||
|
html5lib/filters/optionaltags.py,sha256=4ozLwBgMRaxe7iqxefLQpDhp3irK7YHo9LgSGsvZYMw,10500
|
||||||
|
html5lib/filters/sanitizer.py,sha256=MvGUs_v2taWPgGhjxswRSUiHfxrqMUhsNPz-eSeUYUQ,352
|
||||||
|
html5lib/filters/whitespace.py,sha256=LbOUcC0zQ9z703KNZrArOr0kVBO7OMXjKjucDW32LU4,1142
|
||||||
|
html5lib/serializer/__init__.py,sha256=xFXFP-inaTNlbnau5c5DGrH_O8yPm-C6HWbJxpiSqFE,490
|
||||||
|
html5lib/serializer/htmlserializer.py,sha256=TeR9CNlbKV6QPhkJhBHyuy8hgaAPZc0JsV0mnMv1-oM,12843
|
||||||
|
html5lib/treeadapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661
|
||||||
|
html5lib/treebuilders/__init__.py,sha256=Xz4X6B5DA1R-5GyRa44j0sJwfl6dUNyb0NBu9-7sK3U,3405
|
||||||
|
html5lib/treebuilders/_base.py,sha256=rzLhQqEJsI1qgh8__6kJ7So4Z4qUl4vSJYFtqzHBw6E,13699
|
||||||
|
html5lib/treebuilders/dom.py,sha256=jvmtvnERtpxXpHvBgiq1FpzAUYAAzoolOTx_DoXwGEI,8469
|
||||||
|
html5lib/treebuilders/etree.py,sha256=1HKcq5Np0PgUNSjhcsdjZVWbgouxp5KeL_8MjUuUuKM,12609
|
||||||
|
html5lib/treebuilders/etree_lxml.py,sha256=z3Bnfm2MstEEb_lbaAeicl5l-ab6MSQa5Q1ZZreK7Pc,14031
|
||||||
|
html5lib/treewalkers/__init__.py,sha256=m2-4a5P4dMNlQb26MNIhgj69p6ms1i-JD2HPDr7iTfw,5766
|
||||||
|
html5lib/treewalkers/_base.py,sha256=Ms4kXXrxceHBnCsVBZ04LFIR7V3e2AiSL41QIaBTWT4,7002
|
||||||
|
html5lib/treewalkers/dom.py,sha256=Lb63Nuz8HtgvkuuvSmU5LOyUkEtstH5saPPAg5xN4r8,1421
|
||||||
|
html5lib/treewalkers/etree.py,sha256=qJklMXBbBYqHxQfAeyAxW57x2xGt-nqOe80KDbv4MM0,4588
|
||||||
|
html5lib/treewalkers/genshistream.py,sha256=IbBFrlgi-59-K7P1zm0d7ZFIknBN4c5E57PHJDkx39s,2278
|
||||||
|
html5lib/treewalkers/lxmletree.py,sha256=1vMqSFN6IhwFtH3eqAXSNm-55I-5NwSb_-oBOCAvLv8,5980
|
||||||
|
html5lib/treewalkers/pulldom.py,sha256=9W6i8yWtUzayV6EwX-okVacttHaqpQZwdBCc2S3XeQ4,2302
|
||||||
|
html5lib/trie/__init__.py,sha256=mec5zyJ5wIKRM8819gIcIsYQwncg91rEmPwGH1dG3Ho,212
|
||||||
|
html5lib/trie/_base.py,sha256=WGY8SGptFmx4O0aKLJ54zrIQOoyuvhS0ngA36vAcIcc,927
|
||||||
|
html5lib/trie/datrie.py,sha256=rGMj61020CBiR97e4kyMyqn_FSIJzgDcYT2uj7PZkoo,1166
|
||||||
|
html5lib/trie/py.py,sha256=zg7RZSHxJ8mLmuI_7VEIV8AomISrgkvqCP477AgXaG0,1763
|
||||||
|
html5lib-0.9999999.dist-info/DESCRIPTION.rst,sha256=4symxPlAGFfTe4DH5texohsZDD1gYeIxBpeE-9Uh0CY,9899
|
||||||
|
html5lib-0.9999999.dist-info/METADATA,sha256=KM-AHI5RI5O7BSTrqF8Acd8jX_7yodP5PmZ1V8tREck,10902
|
||||||
|
html5lib-0.9999999.dist-info/RECORD,,
|
||||||
|
html5lib-0.9999999.dist-info/WHEEL,sha256=lCqt3ViRAf9c8mCs6o7ffkwROUdYSy8_YHn5f_rulB4,93
|
||||||
|
html5lib-0.9999999.dist-info/metadata.json,sha256=ptJ1V8e-ESI9H736RKJ5AJZ3I0T31YwhyIB0Zu2ru4o,1116
|
||||||
|
html5lib-0.9999999.dist-info/top_level.txt,sha256=XEX6CHpskSmvjJB4tP6m4Q5NYXhIf_0ceMc0PNbzJPQ,9
|
||||||
|
/var/lib/lxc/openmedialibrary/rootfs/srv/client/platform/Shared/p34/lib/python3.4/site-packages/html5lib-0.9999999.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
html5lib/treeadapters/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/serializer/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/serializer/__pycache__/htmlserializer.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/tokenizer.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/_base.cpython-34.pyc,,
|
||||||
|
html5lib/trie/__pycache__/py.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/lint.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/pulldom.cpython-34.pyc,,
|
||||||
|
html5lib/treebuilders/__pycache__/etree_lxml.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/sanitizer.cpython-34.pyc,,
|
||||||
|
html5lib/treebuilders/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/treebuilders/__pycache__/dom.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/utils.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/treebuilders/__pycache__/etree.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/sanitizer.cpython-34.pyc,,
|
||||||
|
html5lib/treebuilders/__pycache__/_base.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/constants.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/whitespace.cpython-34.pyc,,
|
||||||
|
html5lib/trie/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/optionaltags.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/dom.cpython-34.pyc,,
|
||||||
|
html5lib/trie/__pycache__/_base.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/inputstream.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/etree.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/lxmletree.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/_base.cpython-34.pyc,,
|
||||||
|
html5lib/treeadapters/__pycache__/sax.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/genshistream.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/alphabeticalattributes.cpython-34.pyc,,
|
||||||
|
html5lib/treewalkers/__pycache__/__init__.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/html5parser.cpython-34.pyc,,
|
||||||
|
html5lib/__pycache__/ihatexml.cpython-34.pyc,,
|
||||||
|
html5lib/filters/__pycache__/inject_meta_charset.cpython-34.pyc,,
|
||||||
|
html5lib/trie/__pycache__/datrie.cpython-34.pyc,,
|
|
@ -0,0 +1,5 @@
|
||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.29.0)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: cp34-none-any
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: HTML"], "extensions": {"python.details": {"contacts": [{"email": "james@hoppipolla.co.uk", "name": "James Graham", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/html5lib/html5lib-python"}}}, "extras": [], "generator": "bdist_wheel (0.29.0)", "license": "MIT License", "metadata_version": "2.0", "name": "html5lib", "run_requires": [{"requires": ["six"]}], "summary": "HTML parser based on the WHATWG HTML specification", "version": "0.9999999"}
|
|
@ -1,400 +0,0 @@
|
||||||
Metadata-Version: 1.1
|
|
||||||
Name: html5lib
|
|
||||||
Version: 0.9999999
|
|
||||||
Summary: HTML parser based on the WHATWG HTML specification
|
|
||||||
Home-page: https://github.com/html5lib/html5lib-python
|
|
||||||
Author: James Graham
|
|
||||||
Author-email: james@hoppipolla.co.uk
|
|
||||||
License: MIT License
|
|
||||||
Description: html5lib
|
|
||||||
========
|
|
||||||
|
|
||||||
.. image:: https://travis-ci.org/html5lib/html5lib-python.png?branch=master
|
|
||||||
:target: https://travis-ci.org/html5lib/html5lib-python
|
|
||||||
|
|
||||||
html5lib is a pure-python library for parsing HTML. It is designed to
|
|
||||||
conform to the WHATWG HTML specification, as is implemented by all major
|
|
||||||
web browsers.
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
Simple usage follows this pattern:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
import html5lib
|
|
||||||
with open("mydocument.html", "rb") as f:
|
|
||||||
document = html5lib.parse(f)
|
|
||||||
|
|
||||||
or:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
import html5lib
|
|
||||||
document = html5lib.parse("<p>Hello World!")
|
|
||||||
|
|
||||||
By default, the ``document`` will be an ``xml.etree`` element instance.
|
|
||||||
Whenever possible, html5lib chooses the accelerated ``ElementTree``
|
|
||||||
implementation (i.e. ``xml.etree.cElementTree`` on Python 2.x).
|
|
||||||
|
|
||||||
Two other tree types are supported: ``xml.dom.minidom`` and
|
|
||||||
``lxml.etree``. To use an alternative format, specify the name of
|
|
||||||
a treebuilder:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
import html5lib
|
|
||||||
with open("mydocument.html", "rb") as f:
|
|
||||||
lxml_etree_document = html5lib.parse(f, treebuilder="lxml")
|
|
||||||
|
|
||||||
When using with ``urllib2`` (Python 2), the charset from HTTP should be
|
|
||||||
pass into html5lib as follows:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
from contextlib import closing
|
|
||||||
from urllib2 import urlopen
|
|
||||||
import html5lib
|
|
||||||
|
|
||||||
with closing(urlopen("http://example.com/")) as f:
|
|
||||||
document = html5lib.parse(f, encoding=f.info().getparam("charset"))
|
|
||||||
|
|
||||||
When using with ``urllib.request`` (Python 3), the charset from HTTP
|
|
||||||
should be pass into html5lib as follows:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
from urllib.request import urlopen
|
|
||||||
import html5lib
|
|
||||||
|
|
||||||
with urlopen("http://example.com/") as f:
|
|
||||||
document = html5lib.parse(f, encoding=f.info().get_content_charset())
|
|
||||||
|
|
||||||
To have more control over the parser, create a parser object explicitly.
|
|
||||||
For instance, to make the parser raise exceptions on parse errors, use:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
import html5lib
|
|
||||||
with open("mydocument.html", "rb") as f:
|
|
||||||
parser = html5lib.HTMLParser(strict=True)
|
|
||||||
document = parser.parse(f)
|
|
||||||
|
|
||||||
When you're instantiating parser objects explicitly, pass a treebuilder
|
|
||||||
class as the ``tree`` keyword argument to use an alternative document
|
|
||||||
format:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
import html5lib
|
|
||||||
parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder("dom"))
|
|
||||||
minidom_document = parser.parse("<p>Hello World!")
|
|
||||||
|
|
||||||
More documentation is available at http://html5lib.readthedocs.org/.
|
|
||||||
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
html5lib works on CPython 2.6+, CPython 3.2+ and PyPy. To install it,
|
|
||||||
use:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
$ pip install html5lib
|
|
||||||
|
|
||||||
|
|
||||||
Optional Dependencies
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
The following third-party libraries may be used for additional
|
|
||||||
functionality:
|
|
||||||
|
|
||||||
- ``datrie`` can be used to improve parsing performance (though in
|
|
||||||
almost all cases the improvement is marginal);
|
|
||||||
|
|
||||||
- ``lxml`` is supported as a tree format (for both building and
|
|
||||||
walking) under CPython (but *not* PyPy where it is known to cause
|
|
||||||
segfaults);
|
|
||||||
|
|
||||||
- ``genshi`` has a treewalker (but not builder); and
|
|
||||||
|
|
||||||
- ``charade`` can be used as a fallback when character encoding cannot
|
|
||||||
be determined; ``chardet``, from which it was forked, can also be used
|
|
||||||
on Python 2.
|
|
||||||
|
|
||||||
- ``ordereddict`` can be used under Python 2.6
|
|
||||||
(``collections.OrderedDict`` is used instead on later versions) to
|
|
||||||
serialize attributes in alphabetical order.
|
|
||||||
|
|
||||||
|
|
||||||
Bugs
|
|
||||||
----
|
|
||||||
|
|
||||||
Please report any bugs on the `issue tracker
|
|
||||||
<https://github.com/html5lib/html5lib-python/issues>`_.
|
|
||||||
|
|
||||||
|
|
||||||
Tests
|
|
||||||
-----
|
|
||||||
|
|
||||||
Unit tests require the ``nose`` library and can be run using the
|
|
||||||
``nosetests`` command in the root directory; ``ordereddict`` is
|
|
||||||
required under Python 2.6. All should pass.
|
|
||||||
|
|
||||||
Test data are contained in a separate `html5lib-tests
|
|
||||||
<https://github.com/html5lib/html5lib-tests>`_ repository and included
|
|
||||||
as a submodule, thus for git checkouts they must be initialized::
|
|
||||||
|
|
||||||
$ git submodule init
|
|
||||||
$ git submodule update
|
|
||||||
|
|
||||||
If you have all compatible Python implementations available on your
|
|
||||||
system, you can run tests on all of them using the ``tox`` utility,
|
|
||||||
which can be found on PyPI.
|
|
||||||
|
|
||||||
|
|
||||||
Questions?
|
|
||||||
----------
|
|
||||||
|
|
||||||
There's a mailing list available for support on Google Groups,
|
|
||||||
`html5lib-discuss <http://groups.google.com/group/html5lib-discuss>`_,
|
|
||||||
though you may get a quicker response asking on IRC in `#whatwg on
|
|
||||||
irc.freenode.net <http://wiki.whatwg.org/wiki/IRC>`_.
|
|
||||||
|
|
||||||
Change Log
|
|
||||||
----------
|
|
||||||
|
|
||||||
0.9999999/1.0b8
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Released on September 10, 2015
|
|
||||||
|
|
||||||
* Fix #195: fix the sanitizer to drop broken URLs (it threw an
|
|
||||||
exception between 0.9999 and 0.999999).
|
|
||||||
|
|
||||||
|
|
||||||
0.999999/1.0b7
|
|
||||||
~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Released on July 7, 2015
|
|
||||||
|
|
||||||
* Fix #189: fix the sanitizer to allow relative URLs again (as it did
|
|
||||||
prior to 0.9999/1.0b5).
|
|
||||||
|
|
||||||
|
|
||||||
0.99999/1.0b6
|
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Released on April 30, 2015
|
|
||||||
|
|
||||||
* Fix #188: fix the sanitizer to not throw an exception when sanitizing
|
|
||||||
bogus data URLs.
|
|
||||||
|
|
||||||
|
|
||||||
0.9999/1.0b5
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Released on April 29, 2015
|
|
||||||
|
|
||||||
* Fix #153: Sanitizer fails to treat some attributes as URLs. Despite how
|
|
||||||
this sounds, this has no known security implications. No known version
|
|
||||||
of IE (5.5 to current), Firefox (3 to current), Safari (6 to current),
|
|
||||||
Chrome (1 to current), or Opera (12 to current) will run any script
|
|
||||||
provided in these attributes.
|
|
||||||
|
|
||||||
* Pass error message to the ParseError exception in strict parsing mode.
|
|
||||||
|
|
||||||
* Allow data URIs in the sanitizer, with a whitelist of content-types.
|
|
||||||
|
|
||||||
* Add support for Python implementations that don't support lone
|
|
||||||
surrogates (read: Jython). Fixes #2.
|
|
||||||
|
|
||||||
* Remove localization of error messages. This functionality was totally
|
|
||||||
unused (and untested that everything was localizable), so we may as
|
|
||||||
well follow numerous browsers in not supporting translating technical
|
|
||||||
strings.
|
|
||||||
|
|
||||||
* Expose treewalkers.pprint as a public API.
|
|
||||||
|
|
||||||
* Add a documentEncoding property to HTML5Parser, fix #121.
|
|
||||||
|
|
||||||
|
|
||||||
0.999
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
Released on December 23, 2013
|
|
||||||
|
|
||||||
* Fix #127: add work-around for CPython issue #20007: .read(0) on
|
|
||||||
http.client.HTTPResponse drops the rest of the content.
|
|
||||||
|
|
||||||
* Fix #115: lxml treewalker can now deal with fragments containing, at
|
|
||||||
their root level, text nodes with non-ASCII characters on Python 2.
|
|
||||||
|
|
||||||
|
|
||||||
0.99
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
Released on September 10, 2013
|
|
||||||
|
|
||||||
* No library changes from 1.0b3; released as 0.99 as pip has changed
|
|
||||||
behaviour from 1.4 to avoid installing pre-release versions per
|
|
||||||
PEP 440.
|
|
||||||
|
|
||||||
|
|
||||||
1.0b3
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
Released on July 24, 2013
|
|
||||||
|
|
||||||
* Removed ``RecursiveTreeWalker`` from ``treewalkers._base``. Any
|
|
||||||
implementation using it should be moved to
|
|
||||||
``NonRecursiveTreeWalker``, as everything bundled with html5lib has
|
|
||||||
for years.
|
|
||||||
|
|
||||||
* Fix #67 so that ``BufferedStream`` to correctly returns a bytes
|
|
||||||
object, thereby fixing any case where html5lib is passed a
|
|
||||||
non-seekable RawIOBase-like object.
|
|
||||||
|
|
||||||
|
|
||||||
1.0b2
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
Released on June 27, 2013
|
|
||||||
|
|
||||||
* Removed reordering of attributes within the serializer. There is now
|
|
||||||
an ``alphabetical_attributes`` option which preserves the previous
|
|
||||||
behaviour through a new filter. This allows attribute order to be
|
|
||||||
preserved through html5lib if the tree builder preserves order.
|
|
||||||
|
|
||||||
* Removed ``dom2sax`` from DOM treebuilders. It has been replaced by
|
|
||||||
``treeadapters.sax.to_sax`` which is generic and supports any
|
|
||||||
treewalker; it also resolves all known bugs with ``dom2sax``.
|
|
||||||
|
|
||||||
* Fix treewalker assertions on hitting bytes strings on
|
|
||||||
Python 2. Previous to 1.0b1, treewalkers coped with mixed
|
|
||||||
bytes/unicode data on Python 2; this reintroduces this prior
|
|
||||||
behaviour on Python 2. Behaviour is unchanged on Python 3.
|
|
||||||
|
|
||||||
|
|
||||||
1.0b1
|
|
||||||
~~~~~
|
|
||||||
|
|
||||||
Released on May 17, 2013
|
|
||||||
|
|
||||||
* Implementation updated to implement the `HTML specification
|
|
||||||
<http://www.whatwg.org/specs/web-apps/current-work/>`_ as of 5th May
|
|
||||||
2013 (`SVN <http://svn.whatwg.org/webapps/>`_ revision r7867).
|
|
||||||
|
|
||||||
* Python 3.2+ supported in a single codebase using the ``six`` library.
|
|
||||||
|
|
||||||
* Removed support for Python 2.5 and older.
|
|
||||||
|
|
||||||
* Removed the deprecated Beautiful Soup 3 treebuilder.
|
|
||||||
``beautifulsoup4`` can use ``html5lib`` as a parser instead. Note that
|
|
||||||
since it doesn't support namespaces, foreign content like SVG and
|
|
||||||
MathML is parsed incorrectly.
|
|
||||||
|
|
||||||
* Removed ``simpletree`` from the package. The default tree builder is
|
|
||||||
now ``etree`` (using the ``xml.etree.cElementTree`` implementation if
|
|
||||||
available, and ``xml.etree.ElementTree`` otherwise).
|
|
||||||
|
|
||||||
* Removed the ``XHTMLSerializer`` as it never actually guaranteed its
|
|
||||||
output was well-formed XML, and hence provided little of use.
|
|
||||||
|
|
||||||
* Removed default DOM treebuilder, so ``html5lib.treebuilders.dom`` is no
|
|
||||||
longer supported. ``html5lib.treebuilders.getTreeBuilder("dom")`` will
|
|
||||||
return the default DOM treebuilder, which uses ``xml.dom.minidom``.
|
|
||||||
|
|
||||||
* Optional heuristic character encoding detection now based on
|
|
||||||
``charade`` for Python 2.6 - 3.3 compatibility.
|
|
||||||
|
|
||||||
* Optional ``Genshi`` treewalker support fixed.
|
|
||||||
|
|
||||||
* Many bugfixes, including:
|
|
||||||
|
|
||||||
* #33: null in attribute value breaks XML AttValue;
|
|
||||||
|
|
||||||
* #4: nested, indirect descendant, <button> causes infinite loop;
|
|
||||||
|
|
||||||
* `Google Code 215
|
|
||||||
<http://code.google.com/p/html5lib/issues/detail?id=215>`_: Properly
|
|
||||||
detect seekable streams;
|
|
||||||
|
|
||||||
* `Google Code 206
|
|
||||||
<http://code.google.com/p/html5lib/issues/detail?id=206>`_: add
|
|
||||||
support for <video preload=...>, <audio preload=...>;
|
|
||||||
|
|
||||||
* `Google Code 205
|
|
||||||
<http://code.google.com/p/html5lib/issues/detail?id=205>`_: add
|
|
||||||
support for <video poster=...>;
|
|
||||||
|
|
||||||
* `Google Code 202
|
|
||||||
<http://code.google.com/p/html5lib/issues/detail?id=202>`_: Unicode
|
|
||||||
file breaks InputStream.
|
|
||||||
|
|
||||||
* Source code is now mostly PEP 8 compliant.
|
|
||||||
|
|
||||||
* Test harness has been improved and now depends on ``nose``.
|
|
||||||
|
|
||||||
* Documentation updated and moved to http://html5lib.readthedocs.org/.
|
|
||||||
|
|
||||||
|
|
||||||
0.95
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
Released on February 11, 2012
|
|
||||||
|
|
||||||
|
|
||||||
0.90
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
Released on January 17, 2010
|
|
||||||
|
|
||||||
|
|
||||||
0.11.1
|
|
||||||
~~~~~~
|
|
||||||
|
|
||||||
Released on June 12, 2008
|
|
||||||
|
|
||||||
|
|
||||||
0.11
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
Released on June 10, 2008
|
|
||||||
|
|
||||||
|
|
||||||
0.10
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
Released on October 7, 2007
|
|
||||||
|
|
||||||
|
|
||||||
0.9
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Released on March 11, 2007
|
|
||||||
|
|
||||||
|
|
||||||
0.2
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Released on January 8, 2007
|
|
||||||
|
|
||||||
Platform: UNKNOWN
|
|
||||||
Classifier: Development Status :: 5 - Production/Stable
|
|
||||||
Classifier: Intended Audience :: Developers
|
|
||||||
Classifier: License :: OSI Approved :: MIT License
|
|
||||||
Classifier: Operating System :: OS Independent
|
|
||||||
Classifier: Programming Language :: Python
|
|
||||||
Classifier: Programming Language :: Python :: 2
|
|
||||||
Classifier: Programming Language :: Python :: 2.6
|
|
||||||
Classifier: Programming Language :: Python :: 2.7
|
|
||||||
Classifier: Programming Language :: Python :: 3
|
|
||||||
Classifier: Programming Language :: Python :: 3.2
|
|
||||||
Classifier: Programming Language :: Python :: 3.3
|
|
||||||
Classifier: Programming Language :: Python :: 3.4
|
|
||||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
||||||
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
|
@ -1,42 +0,0 @@
|
||||||
README.rst
|
|
||||||
html5lib/__init__.py
|
|
||||||
html5lib/constants.py
|
|
||||||
html5lib/html5parser.py
|
|
||||||
html5lib/ihatexml.py
|
|
||||||
html5lib/inputstream.py
|
|
||||||
html5lib/sanitizer.py
|
|
||||||
html5lib/tokenizer.py
|
|
||||||
html5lib/utils.py
|
|
||||||
html5lib.egg-info/PKG-INFO
|
|
||||||
html5lib.egg-info/SOURCES.txt
|
|
||||||
html5lib.egg-info/dependency_links.txt
|
|
||||||
html5lib.egg-info/requires.txt
|
|
||||||
html5lib.egg-info/top_level.txt
|
|
||||||
html5lib/filters/__init__.py
|
|
||||||
html5lib/filters/_base.py
|
|
||||||
html5lib/filters/alphabeticalattributes.py
|
|
||||||
html5lib/filters/inject_meta_charset.py
|
|
||||||
html5lib/filters/lint.py
|
|
||||||
html5lib/filters/optionaltags.py
|
|
||||||
html5lib/filters/sanitizer.py
|
|
||||||
html5lib/filters/whitespace.py
|
|
||||||
html5lib/serializer/__init__.py
|
|
||||||
html5lib/serializer/htmlserializer.py
|
|
||||||
html5lib/treeadapters/__init__.py
|
|
||||||
html5lib/treeadapters/sax.py
|
|
||||||
html5lib/treebuilders/__init__.py
|
|
||||||
html5lib/treebuilders/_base.py
|
|
||||||
html5lib/treebuilders/dom.py
|
|
||||||
html5lib/treebuilders/etree.py
|
|
||||||
html5lib/treebuilders/etree_lxml.py
|
|
||||||
html5lib/treewalkers/__init__.py
|
|
||||||
html5lib/treewalkers/_base.py
|
|
||||||
html5lib/treewalkers/dom.py
|
|
||||||
html5lib/treewalkers/etree.py
|
|
||||||
html5lib/treewalkers/genshistream.py
|
|
||||||
html5lib/treewalkers/lxmletree.py
|
|
||||||
html5lib/treewalkers/pulldom.py
|
|
||||||
html5lib/trie/__init__.py
|
|
||||||
html5lib/trie/_base.py
|
|
||||||
html5lib/trie/datrie.py
|
|
||||||
html5lib/trie/py.py
|
|
|
@ -1,78 +0,0 @@
|
||||||
../html5lib/__init__.py
|
|
||||||
../html5lib/constants.py
|
|
||||||
../html5lib/html5parser.py
|
|
||||||
../html5lib/ihatexml.py
|
|
||||||
../html5lib/inputstream.py
|
|
||||||
../html5lib/sanitizer.py
|
|
||||||
../html5lib/tokenizer.py
|
|
||||||
../html5lib/utils.py
|
|
||||||
../html5lib/filters/__init__.py
|
|
||||||
../html5lib/filters/_base.py
|
|
||||||
../html5lib/filters/alphabeticalattributes.py
|
|
||||||
../html5lib/filters/inject_meta_charset.py
|
|
||||||
../html5lib/filters/lint.py
|
|
||||||
../html5lib/filters/optionaltags.py
|
|
||||||
../html5lib/filters/sanitizer.py
|
|
||||||
../html5lib/filters/whitespace.py
|
|
||||||
../html5lib/serializer/__init__.py
|
|
||||||
../html5lib/serializer/htmlserializer.py
|
|
||||||
../html5lib/treeadapters/__init__.py
|
|
||||||
../html5lib/treeadapters/sax.py
|
|
||||||
../html5lib/treebuilders/__init__.py
|
|
||||||
../html5lib/treebuilders/_base.py
|
|
||||||
../html5lib/treebuilders/dom.py
|
|
||||||
../html5lib/treebuilders/etree.py
|
|
||||||
../html5lib/treebuilders/etree_lxml.py
|
|
||||||
../html5lib/treewalkers/__init__.py
|
|
||||||
../html5lib/treewalkers/_base.py
|
|
||||||
../html5lib/treewalkers/dom.py
|
|
||||||
../html5lib/treewalkers/etree.py
|
|
||||||
../html5lib/treewalkers/genshistream.py
|
|
||||||
../html5lib/treewalkers/lxmletree.py
|
|
||||||
../html5lib/treewalkers/pulldom.py
|
|
||||||
../html5lib/trie/__init__.py
|
|
||||||
../html5lib/trie/_base.py
|
|
||||||
../html5lib/trie/datrie.py
|
|
||||||
../html5lib/trie/py.py
|
|
||||||
../html5lib/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/constants.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/html5parser.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/ihatexml.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/inputstream.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/sanitizer.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/tokenizer.cpython-34.pyc
|
|
||||||
../html5lib/__pycache__/utils.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/_base.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/alphabeticalattributes.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/inject_meta_charset.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/lint.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/optionaltags.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/sanitizer.cpython-34.pyc
|
|
||||||
../html5lib/filters/__pycache__/whitespace.cpython-34.pyc
|
|
||||||
../html5lib/serializer/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/serializer/__pycache__/htmlserializer.cpython-34.pyc
|
|
||||||
../html5lib/treeadapters/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/treeadapters/__pycache__/sax.cpython-34.pyc
|
|
||||||
../html5lib/treebuilders/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/treebuilders/__pycache__/_base.cpython-34.pyc
|
|
||||||
../html5lib/treebuilders/__pycache__/dom.cpython-34.pyc
|
|
||||||
../html5lib/treebuilders/__pycache__/etree.cpython-34.pyc
|
|
||||||
../html5lib/treebuilders/__pycache__/etree_lxml.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/_base.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/dom.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/etree.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/genshistream.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/lxmletree.cpython-34.pyc
|
|
||||||
../html5lib/treewalkers/__pycache__/pulldom.cpython-34.pyc
|
|
||||||
../html5lib/trie/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../html5lib/trie/__pycache__/_base.cpython-34.pyc
|
|
||||||
../html5lib/trie/__pycache__/datrie.cpython-34.pyc
|
|
||||||
../html5lib/trie/__pycache__/py.cpython-34.pyc
|
|
||||||
./
|
|
||||||
top_level.txt
|
|
||||||
dependency_links.txt
|
|
||||||
PKG-INFO
|
|
||||||
requires.txt
|
|
||||||
SOURCES.txt
|
|
|
@ -1 +0,0 @@
|
||||||
six
|
|
|
@ -1,6 +1,6 @@
|
||||||
Metadata-Version: 1.1
|
Metadata-Version: 1.1
|
||||||
Name: ox
|
Name: ox
|
||||||
Version: 2.3.b-777-
|
Version: 2.3.b-783-
|
||||||
Summary: python-ox - the web in a dict
|
Summary: python-ox - the web in a dict
|
||||||
Home-page: https://wiki.0x2620.org/wiki/python-ox
|
Home-page: https://wiki.0x2620.org/wiki/python-ox
|
||||||
Author: 0x2620
|
Author: 0x2620
|
|
@ -26,21 +26,6 @@ ox.egg-info/SOURCES.txt
|
||||||
ox.egg-info/dependency_links.txt
|
ox.egg-info/dependency_links.txt
|
||||||
ox.egg-info/requires.txt
|
ox.egg-info/requires.txt
|
||||||
ox.egg-info/top_level.txt
|
ox.egg-info/top_level.txt
|
||||||
ox/django/__init__.py
|
|
||||||
ox/django/decorators.py
|
|
||||||
ox/django/fields.py
|
|
||||||
ox/django/http.py
|
|
||||||
ox/django/middleware.py
|
|
||||||
ox/django/monitor.py
|
|
||||||
ox/django/query.py
|
|
||||||
ox/django/shortcuts.py
|
|
||||||
ox/django/utils.py
|
|
||||||
ox/django/views.py
|
|
||||||
ox/django/widgets.py
|
|
||||||
ox/django/api/__init__.py
|
|
||||||
ox/django/api/actions.py
|
|
||||||
ox/django/api/urls.py
|
|
||||||
ox/django/api/views.py
|
|
||||||
ox/torrent/__init__.py
|
ox/torrent/__init__.py
|
||||||
ox/torrent/bencode.py
|
ox/torrent/bencode.py
|
||||||
ox/torrent/bencode3.py
|
ox/torrent/bencode3.py
|
|
@ -20,21 +20,6 @@
|
||||||
../ox/text.py
|
../ox/text.py
|
||||||
../ox/utils.py
|
../ox/utils.py
|
||||||
../ox/__version.py
|
../ox/__version.py
|
||||||
../ox/django/__init__.py
|
|
||||||
../ox/django/decorators.py
|
|
||||||
../ox/django/fields.py
|
|
||||||
../ox/django/http.py
|
|
||||||
../ox/django/middleware.py
|
|
||||||
../ox/django/monitor.py
|
|
||||||
../ox/django/query.py
|
|
||||||
../ox/django/shortcuts.py
|
|
||||||
../ox/django/utils.py
|
|
||||||
../ox/django/views.py
|
|
||||||
../ox/django/widgets.py
|
|
||||||
../ox/django/api/__init__.py
|
|
||||||
../ox/django/api/actions.py
|
|
||||||
../ox/django/api/urls.py
|
|
||||||
../ox/django/api/views.py
|
|
||||||
../ox/torrent/__init__.py
|
../ox/torrent/__init__.py
|
||||||
../ox/torrent/bencode.py
|
../ox/torrent/bencode.py
|
||||||
../ox/torrent/bencode3.py
|
../ox/torrent/bencode3.py
|
||||||
|
@ -100,21 +85,6 @@
|
||||||
../ox/__pycache__/text.cpython-34.pyc
|
../ox/__pycache__/text.cpython-34.pyc
|
||||||
../ox/__pycache__/utils.cpython-34.pyc
|
../ox/__pycache__/utils.cpython-34.pyc
|
||||||
../ox/__pycache__/__version.cpython-34.pyc
|
../ox/__pycache__/__version.cpython-34.pyc
|
||||||
../ox/django/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/decorators.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/fields.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/http.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/middleware.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/monitor.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/query.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/shortcuts.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/utils.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/views.cpython-34.pyc
|
|
||||||
../ox/django/__pycache__/widgets.cpython-34.pyc
|
|
||||||
../ox/django/api/__pycache__/__init__.cpython-34.pyc
|
|
||||||
../ox/django/api/__pycache__/actions.cpython-34.pyc
|
|
||||||
../ox/django/api/__pycache__/urls.cpython-34.pyc
|
|
||||||
../ox/django/api/__pycache__/views.cpython-34.pyc
|
|
||||||
../ox/torrent/__pycache__/__init__.cpython-34.pyc
|
../ox/torrent/__pycache__/__init__.cpython-34.pyc
|
||||||
../ox/torrent/__pycache__/bencode.cpython-34.pyc
|
../ox/torrent/__pycache__/bencode.cpython-34.pyc
|
||||||
../ox/torrent/__pycache__/bencode3.cpython-34.pyc
|
../ox/torrent/__pycache__/bencode3.cpython-34.pyc
|
||||||
|
@ -158,9 +128,8 @@
|
||||||
../ox/web/__pycache__/vimeo.cpython-34.pyc
|
../ox/web/__pycache__/vimeo.cpython-34.pyc
|
||||||
../ox/web/__pycache__/wikipedia.cpython-34.pyc
|
../ox/web/__pycache__/wikipedia.cpython-34.pyc
|
||||||
../ox/web/__pycache__/youtube.cpython-34.pyc
|
../ox/web/__pycache__/youtube.cpython-34.pyc
|
||||||
./
|
PKG-INFO
|
||||||
dependency_links.txt
|
dependency_links.txt
|
||||||
requires.txt
|
requires.txt
|
||||||
PKG-INFO
|
|
||||||
top_level.txt
|
top_level.txt
|
||||||
SOURCES.txt
|
SOURCES.txt
|
|
@ -1 +1 @@
|
||||||
VERSION="2.3.b'777'"
|
VERSION="2.3.b'783'"
|
|
@ -1 +0,0 @@
|
||||||
from actions import actions
|
|
|
@ -1,136 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from __future__ import division, with_statement
|
|
||||||
import inspect
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
from ..shortcuts import render_to_json_response, json_response
|
|
||||||
from ...utils import json
|
|
||||||
|
|
||||||
def autodiscover():
|
|
||||||
# Register api actions from all installed apps
|
|
||||||
from django.utils.importlib import import_module
|
|
||||||
from django.utils.module_loading import module_has_submodule
|
|
||||||
for app in settings.INSTALLED_APPS:
|
|
||||||
if app != 'api':
|
|
||||||
mod = import_module(app)
|
|
||||||
try:
|
|
||||||
import_module('%s.views'%app)
|
|
||||||
except:
|
|
||||||
if module_has_submodule(mod, 'views'):
|
|
||||||
raise
|
|
||||||
|
|
||||||
def trim(docstring):
|
|
||||||
if not docstring:
|
|
||||||
return ''
|
|
||||||
# Convert tabs to spaces (following the normal Python rules)
|
|
||||||
# and split into a list of lines:
|
|
||||||
lines = docstring.expandtabs().splitlines()
|
|
||||||
# Determine minimum indentation (first line doesn't count):
|
|
||||||
indent = sys.maxint
|
|
||||||
for line in lines[1:]:
|
|
||||||
stripped = line.lstrip()
|
|
||||||
if stripped:
|
|
||||||
indent = min(indent, len(line) - len(stripped))
|
|
||||||
# Remove indentation (first line is special):
|
|
||||||
trimmed = [lines[0].strip()]
|
|
||||||
if indent < sys.maxint:
|
|
||||||
for line in lines[1:]:
|
|
||||||
trimmed.append(line[indent:].rstrip())
|
|
||||||
# Strip off trailing and leading blank lines:
|
|
||||||
while trimmed and not trimmed[-1]:
|
|
||||||
trimmed.pop()
|
|
||||||
while trimmed and not trimmed[0]:
|
|
||||||
trimmed.pop(0)
|
|
||||||
# Return a single string:
|
|
||||||
return '\n'.join(trimmed)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiActions(dict):
|
|
||||||
properties = {}
|
|
||||||
versions = {}
|
|
||||||
def __init__(self):
|
|
||||||
|
|
||||||
def api(request, data):
|
|
||||||
'''
|
|
||||||
Returns a list of all api actions
|
|
||||||
takes {
|
|
||||||
code: boolean, // if true, return source code (optional)
|
|
||||||
docs: boolean // if true, return doc strings (optional)
|
|
||||||
}
|
|
||||||
returns {
|
|
||||||
actions: {
|
|
||||||
name: {
|
|
||||||
cache: boolean, // if false, don't cache results
|
|
||||||
code: string, // source code
|
|
||||||
doc: string // doc strings
|
|
||||||
},
|
|
||||||
... // more actions
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'''
|
|
||||||
docs = data.get('docs', False)
|
|
||||||
code = data.get('code', False)
|
|
||||||
version = getattr(request, 'version', None)
|
|
||||||
if version:
|
|
||||||
_actions = self.versions.get(version, {}).keys()
|
|
||||||
_actions = list(set(_actions + self.keys()))
|
|
||||||
else:
|
|
||||||
_actions = self.keys()
|
|
||||||
_actions.sort()
|
|
||||||
actions = {}
|
|
||||||
for a in _actions:
|
|
||||||
actions[a] = self.properties[a]
|
|
||||||
if docs:
|
|
||||||
actions[a]['doc'] = self.doc(a, version)
|
|
||||||
if code:
|
|
||||||
actions[a]['code'] = self.code(a, version)
|
|
||||||
response = json_response({'actions': actions})
|
|
||||||
return render_to_json_response(response)
|
|
||||||
self.register(api)
|
|
||||||
|
|
||||||
def doc(self, name, version=None):
|
|
||||||
if version:
|
|
||||||
f = self.versions[version].get(name, self.get(name))
|
|
||||||
else:
|
|
||||||
f = self[name]
|
|
||||||
return trim(f.__doc__)
|
|
||||||
|
|
||||||
def code(self, name, version=None):
|
|
||||||
if version:
|
|
||||||
f = self.versions[version].get(name, self.get(name))
|
|
||||||
else:
|
|
||||||
f = self[name]
|
|
||||||
if name != 'api' and hasattr(f, 'func_closure') and f.func_closure:
|
|
||||||
fc = filter(lambda c: hasattr(c.cell_contents, '__call__'), f.func_closure)
|
|
||||||
f = fc[len(fc)-1].cell_contents
|
|
||||||
info = f.func_code.co_filename[len(settings.PROJECT_ROOT)+1:]
|
|
||||||
info = u'%s:%s' % (info, f.func_code.co_firstlineno)
|
|
||||||
return info, trim(inspect.getsource(f))
|
|
||||||
|
|
||||||
def register(self, method, action=None, cache=True, version=None):
|
|
||||||
if not action:
|
|
||||||
action = method.func_name
|
|
||||||
if version:
|
|
||||||
if not version in self.versions:
|
|
||||||
self.versions[version] = {}
|
|
||||||
self.versions[version][action] = method
|
|
||||||
else:
|
|
||||||
self[action] = method
|
|
||||||
self.properties[action] = {'cache': cache}
|
|
||||||
|
|
||||||
def unregister(self, action):
|
|
||||||
if action in self:
|
|
||||||
del self[action]
|
|
||||||
|
|
||||||
actions = ApiActions()
|
|
||||||
|
|
||||||
def error(request, data):
|
|
||||||
'''
|
|
||||||
This action is used to test API error codes. It should return a 503 error.
|
|
||||||
'''
|
|
||||||
success = error_is_success
|
|
||||||
return render_to_json_response({})
|
|
||||||
actions.register(error)
|
|
|
@ -1,13 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
|
|
||||||
from django.conf.urls import patterns
|
|
||||||
|
|
||||||
import views
|
|
||||||
|
|
||||||
import actions
|
|
||||||
actions.autodiscover()
|
|
||||||
|
|
||||||
urlpatterns = patterns("",
|
|
||||||
(r'^$', views.api),
|
|
||||||
)
|
|
|
@ -1,54 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from __future__ import division, with_statement
|
|
||||||
|
|
||||||
import json
|
|
||||||
|
|
||||||
from django.shortcuts import render_to_response
|
|
||||||
from django.template import RequestContext
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
from ..shortcuts import render_to_json_response, json_response
|
|
||||||
|
|
||||||
from actions import actions
|
|
||||||
|
|
||||||
def api(request):
|
|
||||||
if request.META['REQUEST_METHOD'] == "OPTIONS":
|
|
||||||
response = render_to_json_response({'status': {'code': 200,
|
|
||||||
'text': 'use POST'}})
|
|
||||||
response['Access-Control-Allow-Origin'] = '*'
|
|
||||||
return response
|
|
||||||
if request.META['REQUEST_METHOD'] != "POST" or (
|
|
||||||
not 'action' in request.POST and request.META.get('CONTENT_TYPE') != 'application/json'
|
|
||||||
):
|
|
||||||
methods = actions.keys()
|
|
||||||
api = []
|
|
||||||
for f in sorted(methods):
|
|
||||||
api.append({'name': f,
|
|
||||||
'doc': actions.doc(f).replace('\n', '<br>\n')})
|
|
||||||
context = RequestContext(request, {
|
|
||||||
'api': api,
|
|
||||||
'settings': settings,
|
|
||||||
'sitename': settings.SITENAME
|
|
||||||
})
|
|
||||||
return render_to_response('api.html', context)
|
|
||||||
if request.META.get('CONTENT_TYPE') == 'application/json':
|
|
||||||
r = json.loads(request.body)
|
|
||||||
action = r['action']
|
|
||||||
data = r.get('data', {})
|
|
||||||
else:
|
|
||||||
action = request.POST['action']
|
|
||||||
data = json.loads(request.POST.get('data', '{}'))
|
|
||||||
version = getattr(request, 'version', None)
|
|
||||||
if version:
|
|
||||||
f = actions.versions.get(version, {}).get(action, actions.get(action))
|
|
||||||
else:
|
|
||||||
f = actions.get(action)
|
|
||||||
if f:
|
|
||||||
response = f(request, data)
|
|
||||||
else:
|
|
||||||
response = render_to_json_response(json_response(status=400,
|
|
||||||
text='Unknown action %s' % action))
|
|
||||||
response['Access-Control-Allow-Origin'] = '*'
|
|
||||||
return response
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
|
|
||||||
try:
|
|
||||||
from django.contrib.auth.decorators import wraps
|
|
||||||
except:
|
|
||||||
from django.utils.functional import wraps
|
|
||||||
from shortcuts import render_to_json_response
|
|
||||||
|
|
||||||
def login_required_json(function=None):
|
|
||||||
"""
|
|
||||||
Decorator for views that checks that the user is logged in
|
|
||||||
return json error if not logged in.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def _wrapped_view(request, *args, **kwargs):
|
|
||||||
if request.user.is_authenticated():
|
|
||||||
return function(request, *args, **kwargs)
|
|
||||||
return render_to_json_response({'status': {'code': 401, 'text': 'login required'}})
|
|
||||||
return wraps(function)(_wrapped_view)
|
|
||||||
|
|
||||||
def admin_required_json(function=None):
|
|
||||||
"""
|
|
||||||
Decorator for views that checks that the user is logged in
|
|
||||||
return json error if not logged in.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def _wrapped_view(request, *args, **kwargs):
|
|
||||||
if request.user.is_authenticated() and request.user.get_profile().get_level() == 'admin':
|
|
||||||
return function(request, *args, **kwargs)
|
|
||||||
return render_to_json_response({'status': {'code': 403, 'text': 'permission denied'}})
|
|
||||||
return wraps(function)(_wrapped_view)
|
|
|
@ -1,109 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
import time
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from django.db import models
|
|
||||||
from django.utils import datetime_safe
|
|
||||||
from six import string_types
|
|
||||||
|
|
||||||
from ox.utils import json
|
|
||||||
|
|
||||||
|
|
||||||
def to_json(python_object):
|
|
||||||
if isinstance(python_object, datetime.datetime):
|
|
||||||
if python_object.year < 1900:
|
|
||||||
tt = python_object.timetuple()
|
|
||||||
value = '%d-%02d-%02dT%02d:%02d%02dZ' % tuple(list(tt)[:6])
|
|
||||||
else:
|
|
||||||
value = python_object.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
||||||
return {'__class__': 'datetime.datetime',
|
|
||||||
'__value__': value}
|
|
||||||
if isinstance(python_object, datetime_safe.datetime):
|
|
||||||
return {'__class__': 'datetime.datetime',
|
|
||||||
'__value__': python_object.strftime('%Y-%m-%dT%H:%M:%SZ')}
|
|
||||||
if isinstance(python_object, time.struct_time):
|
|
||||||
return {'__class__': 'time.asctime',
|
|
||||||
'__value__': time.asctime(python_object)}
|
|
||||||
try:
|
|
||||||
if isinstance(python_object, bytes):
|
|
||||||
return {'__class__': 'bytes',
|
|
||||||
'__value__': list(python_object)}
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
raise TypeError(repr(python_object) + ' is not JSON serializable')
|
|
||||||
|
|
||||||
def from_json(json_object):
|
|
||||||
if '__class__' in json_object:
|
|
||||||
if json_object['__class__'] == 'bytes':
|
|
||||||
return bytes(json_object['__value__'])
|
|
||||||
if json_object['__class__'] == 'datetime_safe.datetime' \
|
|
||||||
or json_object['__class__'] == 'datetime.datetime':
|
|
||||||
return datetime_safe.datetime.strptime(json_object['__value__'], '%Y-%m-%dT%H:%M:%SZ')
|
|
||||||
if json_object['__class__'] == 'time.asctime':
|
|
||||||
return time.strptime(json_object['__value__'])
|
|
||||||
return json_object
|
|
||||||
|
|
||||||
class DictField(models.TextField):
|
|
||||||
"""DictField is a textfield that contains JSON-serialized dictionaries."""
|
|
||||||
|
|
||||||
# Used so to_python() is called
|
|
||||||
__metaclass__ = models.SubfieldBase
|
|
||||||
|
|
||||||
def to_python(self, value):
|
|
||||||
"""Convert our string value to python after we load it from the DB"""
|
|
||||||
if value == None:
|
|
||||||
return value
|
|
||||||
if isinstance(value, dict):
|
|
||||||
return value
|
|
||||||
try:
|
|
||||||
value = json.loads(value, object_hook=from_json)
|
|
||||||
except: #this is required to load fixtures
|
|
||||||
value = eval(value)
|
|
||||||
assert isinstance(value, dict)
|
|
||||||
return value
|
|
||||||
|
|
||||||
def get_db_prep_save(self, value, connection):
|
|
||||||
"""Convert our JSON object to a string before we save"""
|
|
||||||
if value == None:
|
|
||||||
return value
|
|
||||||
if isinstance(value, string_types):
|
|
||||||
value = eval(value)
|
|
||||||
assert isinstance(value, dict)
|
|
||||||
value = json.dumps(value, default=to_json)
|
|
||||||
return super(DictField, self).get_db_prep_save(value, connection=connection)
|
|
||||||
|
|
||||||
class TupleField(models.TextField):
|
|
||||||
"""TupleField is a textfield that contains JSON-serialized tuples."""
|
|
||||||
|
|
||||||
# Used so to_python() is called
|
|
||||||
__metaclass__ = models.SubfieldBase
|
|
||||||
|
|
||||||
def to_python(self, value):
|
|
||||||
"""Convert our string value to JSON after we load it from the DB"""
|
|
||||||
if isinstance(value, tuple):
|
|
||||||
return value
|
|
||||||
|
|
||||||
try:
|
|
||||||
value = json.loads(value, object_hook=from_json)
|
|
||||||
except: #this is required to load fixtures
|
|
||||||
value = eval(value)
|
|
||||||
assert isinstance(value, list)
|
|
||||||
return tuple(value)
|
|
||||||
|
|
||||||
def get_db_prep_save(self, value, connection):
|
|
||||||
"""Convert our JSON object to a string before we save"""
|
|
||||||
if isinstance(value, string_types):
|
|
||||||
value = eval(value)
|
|
||||||
if isinstance(value, list):
|
|
||||||
value = tuple(value)
|
|
||||||
assert isinstance(value, tuple)
|
|
||||||
value = json.dumps(value, default=to_json)
|
|
||||||
return super(TupleField, self).get_db_prep_save(value, connection=connection)
|
|
||||||
|
|
||||||
try:
|
|
||||||
from south.modelsinspector import add_introspection_rules
|
|
||||||
add_introspection_rules([], ["^ox.django\.fields\.DictField"])
|
|
||||||
add_introspection_rules([], ["^ox.django\.fields\.TupleField"])
|
|
||||||
except:
|
|
||||||
pass
|
|
|
@ -1,58 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
import os
|
|
||||||
import mimetypes
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
from six.moves.urllib.parse import quote
|
|
||||||
|
|
||||||
from django.http import HttpResponse, Http404
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
|
|
||||||
def HttpFileResponse(path, content_type=None, filename=None):
|
|
||||||
if not os.path.exists(path):
|
|
||||||
raise Http404
|
|
||||||
if not content_type:
|
|
||||||
content_type = mimetypes.guess_type(path)[0]
|
|
||||||
if not content_type:
|
|
||||||
content_type = 'application/octet-stream'
|
|
||||||
|
|
||||||
if getattr(settings, 'XACCELREDIRECT', False):
|
|
||||||
response = HttpResponse()
|
|
||||||
response['Content-Length'] = os.stat(path).st_size
|
|
||||||
|
|
||||||
for PREFIX in ('STATIC', 'MEDIA'):
|
|
||||||
root = getattr(settings, PREFIX+'_ROOT', '')
|
|
||||||
url = getattr(settings, PREFIX+'_URL', '')
|
|
||||||
if root and path.startswith(root):
|
|
||||||
path = url + path[len(root)+1:]
|
|
||||||
if not isinstance(path, bytes):
|
|
||||||
path = path.encode('utf-8')
|
|
||||||
response['X-Accel-Redirect'] = path
|
|
||||||
if content_type:
|
|
||||||
response['Content-Type'] = content_type
|
|
||||||
elif getattr(settings, 'XSENDFILE', False):
|
|
||||||
response = HttpResponse()
|
|
||||||
if not isinstance(path, bytes):
|
|
||||||
path = path.encode('utf-8')
|
|
||||||
response['X-Sendfile'] = path
|
|
||||||
if content_type:
|
|
||||||
response['Content-Type'] = content_type
|
|
||||||
response['Content-Length'] = os.stat(path).st_size
|
|
||||||
else:
|
|
||||||
response = HttpResponse(open(path), content_type=content_type)
|
|
||||||
if filename:
|
|
||||||
if not isinstance(filename, bytes):
|
|
||||||
filename = filename.encode('utf-8')
|
|
||||||
response['Content-Disposition'] = "attachment; filename*=UTF=8''%s" % quote(filename)
|
|
||||||
|
|
||||||
response['Expires'] = datetime.strftime(datetime.utcnow() + timedelta(days=1), "%a, %d-%b-%Y %H:%M:%S GMT")
|
|
||||||
|
|
||||||
def allow_access():
|
|
||||||
for key in ('X-Accel-Redirect', 'X-Sendfile'):
|
|
||||||
if key in response:
|
|
||||||
del response[key]
|
|
||||||
response['Access-Control-Allow-Origin'] = '*'
|
|
||||||
response.allow_access = allow_access
|
|
||||||
return response
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
|
|
||||||
from .shortcuts import HttpErrorJson, render_to_json_response
|
|
||||||
|
|
||||||
class ExceptionMiddleware(object):
|
|
||||||
def process_exception(self, request, exception):
|
|
||||||
if isinstance(exception, HttpErrorJson):
|
|
||||||
return render_to_json_response(exception.response)
|
|
||||||
return None
|
|
||||||
|
|
||||||
class ChromeFrameMiddleware(object):
|
|
||||||
def process_response(self, request, response):
|
|
||||||
response['X-UA-Compatible'] = 'chrome=1'
|
|
||||||
return response
|
|
|
@ -1,114 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import signal
|
|
||||||
import threading
|
|
||||||
import atexit
|
|
||||||
from six.moves.queue import Queue
|
|
||||||
|
|
||||||
_interval = 1.0
|
|
||||||
_times = {}
|
|
||||||
_files = []
|
|
||||||
|
|
||||||
_running = False
|
|
||||||
_queue = Queue()
|
|
||||||
_lock = threading.Lock()
|
|
||||||
|
|
||||||
def _restart(path):
|
|
||||||
_queue.put(True)
|
|
||||||
prefix = 'monitor (pid=%d):' % os.getpid()
|
|
||||||
print('%s Change detected to \'%s\'.' % (prefix, path), file=sys.stderr)
|
|
||||||
print('%s Triggering process restart.' % prefix, file=sys.stderr)
|
|
||||||
os.kill(os.getpid(), signal.SIGINT)
|
|
||||||
|
|
||||||
def _modified(path):
|
|
||||||
try:
|
|
||||||
# If path doesn't denote a file and were previously
|
|
||||||
# tracking it, then it has been removed or the file type
|
|
||||||
# has changed so force a restart. If not previously
|
|
||||||
# tracking the file then we can ignore it as probably
|
|
||||||
# pseudo reference such as when file extracted from a
|
|
||||||
# collection of modules contained in a zip file.
|
|
||||||
|
|
||||||
if not os.path.isfile(path):
|
|
||||||
return path in _times
|
|
||||||
|
|
||||||
# Check for when file last modified.
|
|
||||||
|
|
||||||
mtime = os.stat(path).st_mtime
|
|
||||||
if path not in _times:
|
|
||||||
_times[path] = mtime
|
|
||||||
|
|
||||||
# Force restart when modification time has changed, even
|
|
||||||
# if time now older, as that could indicate older file
|
|
||||||
# has been restored.
|
|
||||||
|
|
||||||
if mtime != _times[path]:
|
|
||||||
return True
|
|
||||||
except:
|
|
||||||
# If any exception occured, likely that file has been
|
|
||||||
# been removed just before stat(), so force a restart.
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def _monitor():
|
|
||||||
while 1:
|
|
||||||
# Check modification times on all files in sys.modules.
|
|
||||||
|
|
||||||
for module in list(sys.modules.values()):
|
|
||||||
if not hasattr(module, '__file__'):
|
|
||||||
continue
|
|
||||||
path = getattr(module, '__file__')
|
|
||||||
if not path:
|
|
||||||
continue
|
|
||||||
if os.path.splitext(path)[1] in ['.pyc', '.pyo', '.pyd']:
|
|
||||||
path = path[:-1]
|
|
||||||
if _modified(path):
|
|
||||||
return _restart(path)
|
|
||||||
|
|
||||||
# Check modification times on files which have
|
|
||||||
# specifically been registered for monitoring.
|
|
||||||
|
|
||||||
for path in _files:
|
|
||||||
if _modified(path):
|
|
||||||
return _restart(path)
|
|
||||||
|
|
||||||
# Go to sleep for specified interval.
|
|
||||||
|
|
||||||
try:
|
|
||||||
return _queue.get(timeout=_interval)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
_thread = threading.Thread(target=_monitor)
|
|
||||||
_thread.setDaemon(True)
|
|
||||||
|
|
||||||
def _exiting():
|
|
||||||
try:
|
|
||||||
_queue.put(True)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
_thread.join()
|
|
||||||
|
|
||||||
atexit.register(_exiting)
|
|
||||||
|
|
||||||
def track(path):
|
|
||||||
if not path in _files:
|
|
||||||
_files.append(path)
|
|
||||||
|
|
||||||
def start(interval=1.0):
|
|
||||||
global _interval
|
|
||||||
if interval < _interval:
|
|
||||||
_interval = interval
|
|
||||||
|
|
||||||
global _running
|
|
||||||
_lock.acquire()
|
|
||||||
if not _running:
|
|
||||||
_running = True
|
|
||||||
_thread.start()
|
|
||||||
_lock.release()
|
|
|
@ -1,73 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
|
|
||||||
from django.db.models.sql import Query
|
|
||||||
from django.db.models.sql.compiler import SQLCompiler
|
|
||||||
from django.db import connections
|
|
||||||
import django.db.models.query
|
|
||||||
|
|
||||||
'''
|
|
||||||
models.py:
|
|
||||||
-----------------------------------
|
|
||||||
from ox.django.query import QuerySet
|
|
||||||
|
|
||||||
class Manager(models.Manager):
|
|
||||||
def get_query_set(self):
|
|
||||||
return QuerySet(self.model)
|
|
||||||
|
|
||||||
class Model(models.Model):
|
|
||||||
...
|
|
||||||
objects = Manager()
|
|
||||||
'''
|
|
||||||
|
|
||||||
class SQLCompiler(SQLCompiler):
|
|
||||||
|
|
||||||
def get_ordering(self):
|
|
||||||
result, group_by = super(SQLCompiler, self).get_ordering()
|
|
||||||
if self.query.nulls_last and len(result):
|
|
||||||
if self.connection.vendor == 'sqlite':
|
|
||||||
_result = []
|
|
||||||
for r in result:
|
|
||||||
if r.endswith(' DESC'):
|
|
||||||
_r = r[:-len(' DESC')]
|
|
||||||
elif r.endswith(' ASC'):
|
|
||||||
_r = r[:-len(' ASC')]
|
|
||||||
_result.append(_r + ' IS NULL')
|
|
||||||
_result.append(r)
|
|
||||||
|
|
||||||
result = _result
|
|
||||||
else:
|
|
||||||
result = map(lambda e: e + ' NULLS LAST', result)
|
|
||||||
return result, group_by
|
|
||||||
|
|
||||||
class Query(Query):
|
|
||||||
nulls_last = False
|
|
||||||
|
|
||||||
def clone(self, *args, **kwargs):
|
|
||||||
obj = super(Query, self).clone(*args, **kwargs)
|
|
||||||
obj.nulls_last = self.nulls_last
|
|
||||||
return obj
|
|
||||||
|
|
||||||
def get_compiler(self, using=None, connection=None):
|
|
||||||
if using is None and connection is None:
|
|
||||||
raise ValueError("Need either using or connection")
|
|
||||||
if using:
|
|
||||||
connection = connections[using]
|
|
||||||
# Check that the compiler will be able to execute the query
|
|
||||||
for alias, aggregate in self.aggregate_select.items():
|
|
||||||
connection.ops.check_aggregate_support(aggregate)
|
|
||||||
|
|
||||||
return SQLCompiler(self, connection, using)
|
|
||||||
|
|
||||||
|
|
||||||
class QuerySet(django.db.models.query.QuerySet):
|
|
||||||
|
|
||||||
def __init__(self, model=None, query=None, using=None, **kwargs):
|
|
||||||
super(QuerySet, self).__init__(model=model, query=query, using=None, **kwargs)
|
|
||||||
self.query = query or Query(self.model)
|
|
||||||
|
|
||||||
def order_by(self, *args, **kwargs):
|
|
||||||
nulls_last = kwargs.pop('nulls_last', False)
|
|
||||||
obj = super(QuerySet, self).order_by(*args, **kwargs)
|
|
||||||
obj.query.nulls_last = nulls_last
|
|
||||||
return obj
|
|
|
@ -1,52 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from __future__ import print_function
|
|
||||||
import datetime
|
|
||||||
from django.utils import datetime_safe
|
|
||||||
from django.http import HttpResponse, Http404
|
|
||||||
try:
|
|
||||||
import simplejson as json
|
|
||||||
except ImportError:
|
|
||||||
from django.utils import simplejson as json
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
class HttpErrorJson(Http404):
|
|
||||||
def __init__(self, response):
|
|
||||||
self.response = response
|
|
||||||
|
|
||||||
def json_response(data=None, status=200, text='ok'):
|
|
||||||
if not data:
|
|
||||||
data = {}
|
|
||||||
return {'status': {'code': status, 'text': text}, 'data': data}
|
|
||||||
|
|
||||||
def _to_json(python_object):
|
|
||||||
if isinstance(python_object, datetime.datetime):
|
|
||||||
if python_object.year < 1900:
|
|
||||||
tt = python_object.timetuple()
|
|
||||||
return '%d-%02d-%02dT%02d:%02d%02dZ' % tuple(list(tt)[:6])
|
|
||||||
return python_object.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
||||||
if isinstance(python_object, datetime_safe.datetime):
|
|
||||||
return python_object.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
||||||
raise TypeError(u'%s %s is not JSON serializable' % (repr(python_object), type(python_object)))
|
|
||||||
|
|
||||||
def render_to_json_response(dictionary, content_type="text/json", status=200):
|
|
||||||
indent=None
|
|
||||||
if settings.DEBUG:
|
|
||||||
content_type = "text/javascript"
|
|
||||||
indent = 2
|
|
||||||
if getattr(settings, 'JSON_DEBUG', False):
|
|
||||||
print(json.dumps(dictionary, indent=2, default=_to_json, ensure_ascii=False).encode('utf-8'))
|
|
||||||
|
|
||||||
return HttpResponse(json.dumps(dictionary, indent=indent, default=_to_json,
|
|
||||||
ensure_ascii=False).encode('utf-8'), content_type=content_type, status=status)
|
|
||||||
|
|
||||||
def get_object_or_404_json(klass, *args, **kwargs):
|
|
||||||
from django.shortcuts import _get_queryset
|
|
||||||
queryset = _get_queryset(klass)
|
|
||||||
try:
|
|
||||||
return queryset.get(*args, **kwargs)
|
|
||||||
except queryset.model.DoesNotExist:
|
|
||||||
response = {'status': {'code': 404,
|
|
||||||
'text': '%s not found' % queryset.model._meta.object_name}}
|
|
||||||
raise HttpErrorJson(response)
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from django.utils.datetime_safe import datetime
|
|
||||||
from django.http import HttpResponse,Http404
|
|
||||||
from django.core.servers.basehttp import FileWrapper
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
import mimetypes
|
|
||||||
import os
|
|
||||||
|
|
||||||
def basic_sendfile(fname,download_name=None):
|
|
||||||
if not os.path.exists(fname):
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
wrapper = FileWrapper(open(fname,"r"))
|
|
||||||
|
|
||||||
content_type = mimetypes.guess_type(fname)[0]
|
|
||||||
response = HttpResponse(wrapper, content_type=content_type)
|
|
||||||
response['Content-Length'] = os.path.getsize(fname)
|
|
||||||
|
|
||||||
if download_name:
|
|
||||||
response['Content-Disposition'] = "attachment; filename=%s"%download_name
|
|
||||||
|
|
||||||
return response
|
|
||||||
|
|
||||||
def x_sendfile(fname,download_name=None):
|
|
||||||
if not os.path.exists(fname):
|
|
||||||
raise Http404
|
|
||||||
|
|
||||||
content_type = mimetypes.guess_type(fname)[0]
|
|
||||||
response = HttpResponse('', content_type=content_type)
|
|
||||||
response['Content-Length'] = os.path.getsize(fname)
|
|
||||||
response['X-Sendfile'] = fname
|
|
||||||
|
|
||||||
if download_name:
|
|
||||||
response['Content-Disposition'] = "attachment; filename=%s"%download_name
|
|
||||||
|
|
||||||
return response
|
|
||||||
|
|
||||||
try:
|
|
||||||
__sendfile = getattr(settings,'SENDFILE',False) == 'x_sendfile'
|
|
||||||
except:
|
|
||||||
__sendfile = False
|
|
||||||
if __sendfile == 'x_sendfile':
|
|
||||||
sendfile = x_sendfile
|
|
||||||
else:
|
|
||||||
sendfile = basic_sendfile
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vi:si:et:sw=4:sts=4:ts=4
|
|
||||||
from six import StringIO, PY2
|
|
||||||
from six.moves import urllib
|
|
||||||
from six.moves import http_cookiejar as cookielib
|
|
||||||
|
|
||||||
from celery.utils import get_full_cls_name
|
|
||||||
from celery.backends import default_backend
|
|
||||||
|
|
||||||
from django.http import HttpResponse
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
from shortcuts import json_response
|
|
||||||
import ox
|
|
||||||
|
|
||||||
|
|
||||||
def task_status(request, task_id):
|
|
||||||
response = json_response(status=200, text='ok')
|
|
||||||
status = default_backend.get_status(task_id)
|
|
||||||
res = default_backend.get_result(task_id)
|
|
||||||
response['data'] = {
|
|
||||||
'id': task_id,
|
|
||||||
'status': status,
|
|
||||||
'result': res
|
|
||||||
}
|
|
||||||
if status in default_backend.EXCEPTION_STATES:
|
|
||||||
traceback = default_backend.get_traceback(task_id)
|
|
||||||
response['data'].update({'result': str(res.args[0]),
|
|
||||||
'exc': get_full_cls_name(res.__class__),
|
|
||||||
'traceback': traceback})
|
|
||||||
return response
|
|
||||||
|
|
||||||
class SessionCookieJar(cookielib.LWPCookieJar):
|
|
||||||
def save(self):
|
|
||||||
return "#LWP-Cookies-2.0\n" + self.as_lwp_str()
|
|
||||||
|
|
||||||
def load(self, data, ignore_discard=True, ignore_expires=True):
|
|
||||||
f = StringIO(data)
|
|
||||||
self._really_load(f, 'memory', ignore_discard, ignore_expires)
|
|
||||||
|
|
||||||
def api_proxy(request):
|
|
||||||
'''
|
|
||||||
settings.OXAPI_URL =...
|
|
||||||
from ox.django.views import api_proxy
|
|
||||||
urlpatterns = patterns('',
|
|
||||||
url(r'^api/$', api_proxy)
|
|
||||||
'''
|
|
||||||
url = settings.OXAPI_URL
|
|
||||||
cj = SessionCookieJar()
|
|
||||||
if 'cj' in request.session:
|
|
||||||
cj.load(request.session['cj'])
|
|
||||||
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
|
|
||||||
opener.addheaders = [
|
|
||||||
('User-Agent', request.META.get('HTTP_USER_AGENT'))
|
|
||||||
]
|
|
||||||
form = ox.MultiPartForm()
|
|
||||||
for key in request.POST:
|
|
||||||
form.add_field(key, request.POST[key])
|
|
||||||
r = urllib.request.Request(url)
|
|
||||||
body = form.body()
|
|
||||||
r.add_header('Content-type', form.get_content_type())
|
|
||||||
r.add_header('Content-length', len(body))
|
|
||||||
r.add_data(body)
|
|
||||||
f = opener.open(r)
|
|
||||||
response = HttpResponse(f.read())
|
|
||||||
request.session['cj'] = cj.save()
|
|
||||||
return response
|
|
|
@ -1,9 +0,0 @@
|
||||||
import django.newforms as forms
|
|
||||||
from string import Template
|
|
||||||
from django.utils.safestring import mark_safe
|
|
||||||
|
|
||||||
class FirefoggWidget(forms.FileInput):
|
|
||||||
def render(self, name, value, attrs=None):
|
|
||||||
tpl = Template(u"""<h1>This should be a Firefogg widget for $name, current value: $value</h1>""")
|
|
||||||
return mark_safe(tpl.substitute(name=name, value=value))
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ from __future__ import print_function
|
||||||
|
|
||||||
import unicodedata
|
import unicodedata
|
||||||
|
|
||||||
from six import unichr, PY3
|
from six import unichr, PY2
|
||||||
|
|
||||||
__all__ = ['fix_bad_unicode']
|
__all__ = ['fix_bad_unicode']
|
||||||
|
|
||||||
|
@ -151,10 +151,10 @@ def text_badness(text):
|
||||||
- Improbable single-byte characters, such as ƒ or ¬
|
- Improbable single-byte characters, such as ƒ or ¬
|
||||||
- Letters in somewhat rare scripts
|
- Letters in somewhat rare scripts
|
||||||
'''
|
'''
|
||||||
if PY3:
|
if PY2:
|
||||||
assert isinstance(text, str)
|
|
||||||
else:
|
|
||||||
assert isinstance(text, unicode)
|
assert isinstance(text, unicode)
|
||||||
|
else:
|
||||||
|
assert isinstance(text, str)
|
||||||
errors = 0
|
errors = 0
|
||||||
very_weird_things = 0
|
very_weird_things = 0
|
||||||
weird_things = 0
|
weird_things = 0
|
||||||
|
|
|
@ -117,7 +117,7 @@ def clean_html(text):
|
||||||
* Removes stuff like "<p> </p>", but only if it's at the
|
* Removes stuff like "<p> </p>", but only if it's at the
|
||||||
bottom of the text.
|
bottom of the text.
|
||||||
"""
|
"""
|
||||||
from text import normalize_newlines
|
from .text import normalize_newlines
|
||||||
text = normalize_newlines(text)
|
text = normalize_newlines(text)
|
||||||
text = re.sub(r'<(/?)\s*b\s*>', '<\\1strong>', text)
|
text = re.sub(r'<(/?)\s*b\s*>', '<\\1strong>', text)
|
||||||
text = re.sub(r'<(/?)\s*i\s*>', '<\\1em>', text)
|
text = re.sub(r'<(/?)\s*i\s*>', '<\\1em>', text)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue